]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
fixed linting errors
authorIvo Almeida <ialmeida@redhat.com>
Tue, 28 May 2024 14:05:25 +0000 (15:05 +0100)
committerIvo Almeida <ialmeida@redhat.com>
Thu, 30 May 2024 10:25:48 +0000 (11:25 +0100)
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/administration/administration.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/dashboard-help/dashboard-help.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/identity/identity.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/notifications/notifications.component.html

index e016f6e59ce4c9872864332c3da78850adc8ffd9..fdeda381562d7886ff6f4a8ea6095e3023dbca7e 100644 (file)
@@ -1,34 +1,18 @@
-<!-- <div ngbDropdown
-     placement="bottom-right"
-     *ngIf="userPermission.read">
-  <a ngbDropdownToggle
-     class="dropdown-toggle"
-     i18n-title
-     title="Dashboard Settings"
-     role="button">
-     <svg cdsIcon="settings" size="20" title="settings"></svg>
-    <span i18n
-          class="d-md-none">Dashboard Settings</span>
-  </a>
-  <div ngbDropdownMenu>
-    <button ngbDropdownItem
-            *ngIf="userPermission.read"
-            routerLink="/user-management"
-            i18n>User management</button>
-    <button ngbDropdownItem
-            *ngIf="configOptPermission.read"
-            routerLink="/telemetry"
-            i18n>Telemetry configuration</button>
-  </div>
-</div> -->
+<cds-overflow-menu [customTrigger]="customTrigger"
+                   [offset]="{y:0, x:-80}">
+  <cds-overflow-menu-option *ngIf="userPermission.read"
+                            routerLink="/user-management"
+                            i18n>User management</cds-overflow-menu-option>
+  <cds-overflow-menu-option *ngIf="configOptPermission.read"
+                            routerLink="/telemetry"
+                            i18n>Telemetry configuration</cds-overflow-menu-option>
+</cds-overflow-menu>
 
-<cds-overflow-menu [customTrigger]="customTrigger" [offset]="{y:0, x:-80}">
-        <cds-overflow-menu-option *ngIf="userPermission.read" routerLink="/user-management" i18n>User management</cds-overflow-menu-option>
-        <cds-overflow-menu-option *ngIf="configOptPermission.read" routerLink="/telemetry" i18n>Telemetry configuration</cds-overflow-menu-option>
-      </cds-overflow-menu>
-      
-      <ng-template #customTrigger>
-        <svg cdsIcon="settings" size="20" title="user" *ngIf="userPermission.read"></svg>
-        <span i18n
-          class="d-md-none">Dashboard Settings</span>
-      </ng-template>
\ No newline at end of file
+<ng-template #customTrigger>
+  <svg cdsIcon="settings"
+       size="20"
+       title="user"
+       *ngIf="userPermission.read"></svg>
+  <span i18n
+        class="d-md-none">Dashboard Settings</span>
+</ng-template>
index 0a31a6c132d82533f9dbbe2b877e367328c029c6..3c718961f72557a180a40a74a4b0a1e36f2b0c23 100644 (file)
@@ -1,55 +1,28 @@
-<!-- <div ngbDropdown
-     placement="bottom-right">
-  <a ngbDropdownToggle
-     i18n-title
-     title="Help"
-     role="button">
-     <svg cdsIcon="help" size="20" title="help"></svg>
-    <span i18n
-          class="d-md-none">Help</span>
-  </a>
-  <div ngbDropdownMenu>
-    <a ngbDropdownItem
-       [ngClass]="{'disabled': !docsUrl}"
-       href="{{ docsUrl }}"
-       target="_blank"
-       i18n>Documentation
-      <i class="fa fa-external-link"></i>
-    </a>
-    <a ngbDropdownItem
-       routerLink="/api-docs"
-       target="_blank"
-       i18n>API
-      <i class="fa fa-external-link"></i>
-    </a>
-    <button ngbDropdownItem
-            (click)="openAboutModal()"
-            i18n>About</button>
-    <button ngbDropdownItem
-            (click)="openFeedbackModal()"
-            i18n>Report an issue...</button>
-  </div>
-</div> -->
-
-<cds-overflow-menu [customTrigger]="customTrigger" [offset]="{y:0, x:-80}">
+<cds-overflow-menu [customTrigger]="customTrigger"
+                   [offset]="{y:0, x:-80}">
   <cds-overflow-menu-option [ngClass]="{'disabled': !docsUrl}"
-  href="{{ docsUrl }}"
-  target="_blank"
-  i18n>Documentation<svg cdsIcon="launch" size="16"></svg></cds-overflow-menu-option>
+                            href="{{ docsUrl }}"
+                            target="_blank"
+                            i18n>Documentation<svg cdsIcon="launch"
+                                                   size="16"></svg></cds-overflow-menu-option>
   <cds-overflow-menu-option routerLink="/api-docs"
-  target="_blank"
-  i18n>API
-  <svg cdsIcon="launch" size="16"></svg></cds-overflow-menu-option>
+                            target="_blank"
+                            i18n>API
+    <svg cdsIcon="launch"
+         size="16"></svg>
+  </cds-overflow-menu-option>
   <cds-overflow-menu-option (click)="openAboutModal()"
-  i18n>About</cds-overflow-menu-option>
+                            i18n>About</cds-overflow-menu-option>
   <cds-overflow-menu-option (click)="openFeedbackModal()"
-  i18n>Report an issue...</cds-overflow-menu-option>
+                            i18n>Report an issue...</cds-overflow-menu-option>
 </cds-overflow-menu>
 
 <ng-template #customTrigger>
-  <svg cdsIcon="help" size="20" i18n-title
-     title="Help"
-     role="button"></svg>
-     <span i18n
-     class="d-md-none">Help</span>
-</ng-template>
\ No newline at end of file
+  <svg cdsIcon="help"
+       size="20"
+       i18n-title
+       title="Help"
+       role="button"></svg>
+  <span i18n
+        class="d-md-none">Help</span>
+</ng-template>
index 2343e24c82b347954f8a5eb667955d1766f66ba2..04e008553060c47fdb6fa70232aa1a1bc29ad31e 100644 (file)
@@ -1,40 +1,17 @@
-<!-- <div ngbDropdown
-     placement="bottom-right">
-  <a ngbDropdownToggle
-     i18n-title
-     title="Logged in user"
-     role="button">
-     <svg cdsIcon="user--filled" size="20" title="user"></svg>
-    <span i18n
-          class="d-md-none">Logged in user</span>
-  </a>
-  <div ngbDropdownMenu>
-    <button ngbDropdownItem
-            disabled
-            i18n>Signed in as <strong>{{ username }}</strong></button>
-    <hr class="dropdown-divider" />
-    <button ngbDropdownItem
-            *ngIf="!sso"
-            routerLink="/user-profile/edit">
-      <i [ngClass]="[icons.lock]"></i>
-      <span i18n>Change password</span>
-    </button>
-    <button ngbDropdownItem
-            (click)="logout()">
-      <i [ngClass]="[icons.signOut]"></i>
-      <span i18n>Sign out</span>
-    </button>
-  </div>
-</div> -->
-<cds-overflow-menu [customTrigger]="customTrigger" [offset]="{y:0, x:-80}">
+<cds-overflow-menu [customTrigger]="customTrigger"
+                   [offset]="{y:0, x:-80}">
   <cds-overflow-menu-option i18n>Logged in user</cds-overflow-menu-option>
   <cds-overflow-menu-option i18n>Signed in as<strong>{{ username }}</strong></cds-overflow-menu-option>
   <cds-overflow-menu-option *ngIf="!sso"
-  routerLink="/user-profile/edit" i18n>Change password</cds-overflow-menu-option>
-  <cds-overflow-menu-option (click)="logout()" i18n>Sign out</cds-overflow-menu-option>
+                            routerLink="/user-profile/edit"
+                            i18n>Change password</cds-overflow-menu-option>
+  <cds-overflow-menu-option (click)="logout()"
+                            i18n>Sign out</cds-overflow-menu-option>
 </cds-overflow-menu>
 <ng-template #customTrigger>
-  <svg cdsIcon="user--filled" size="20" title="user"></svg>
+  <svg cdsIcon="user--filled"
+       size="20"
+       title="user"></svg>
   <span i18n
         class="d-md-none">Logged in user</span>
-</ng-template>
\ No newline at end of file
+</ng-template>
index 24982639c0e1f0bd6c292cc205a41a4e245f342b..02d5175f5d2a23c2856fd5e49dc7753f7129b1fe 100644 (file)
@@ -3,8 +3,8 @@
 <!-- ************************ -->
 <ng-template #header>
 <cds-header name="Ceph Dashboard">
-  <cds-hamburger [active]="showMenuSidebar" (selected)="showMenuSidebar = !showMenuSidebar"></cds-hamburger>
-  
+  <cds-hamburger [active]="showMenuSidebar"
+                 (selected)="showMenuSidebar = !showMenuSidebar"></cds-hamburger>
   <cds-header-global>
     <cds-header-navigation>
       <cd-language-selector class="d-flex"></cd-language-selector>
 <cd-telemetry-notification></cd-telemetry-notification>
 <cd-motd></cd-motd>
 <cd-notifications-sidebar></cd-notifications-sidebar>
-<!-- ************************ -->
-<!-- OLD TOP NAVBAR -->
-<!-- ************************ -->
-<!-- <div class="cd-navbar-top">
-  <nav class="navbar navbar-expand-md navbar-dark cd-navbar-brand">
-    <button class="btn btn-link py-0"
-            (click)="showMenuSidebar = !showMenuSidebar"
-            aria-label="toggle sidebar visibility">
-      <i [ngClass]="[icons.bars, icons.large2x]"
-          aria-hidden="true"></i>
-    </button>
-
-    <a class="navbar-brand ms-2"
-        routerLink="/dashboard">
-      <img src="assets/Ceph_Ceph_Logo_with_text_white.svg"
-            alt="Ceph" />
-    </a>
-
-    <button type="button"
-            class="navbar-toggler"
-            (click)="toggleRightSidebar()">
-      <span i18n
-            class="sr-only">Toggle navigation</span>
-      <span>
-        <i [ngClass]="[icons.navicon, icons.large]"></i>
-      </span>
-    </button>
-
-    <div class="collapse navbar-collapse"
-          [ngClass]="{'show': rightSidebarOpen}">
-      <ng-container *ngIf="clustersMap?.size > 1">
-        <div ngbDropdown
-              placement="bottom-left"
-              class="d-inline-block ms-5">
-          <button ngbDropdownToggle
-                  class="btn btn-outline-light cd-context-bar"
-                  i18n-title
-                  title="Selected Cluster:">
-            <span class="dropdown-text"> {{ selectedCluster?.name }} </span>
-            <span>- {{ selectedCluster?.cluster_alias }} - {{ selectedCluster?.user }}</span>
-          </button>
-          <div ngbDropdownMenu>
-            <ng-container *ngFor="let cluster of clustersMap | keyvalue">
-              <button ngbDropdownItem
-                      (click)="onClusterSelection(cluster.value)"
-                      [disabled]="cluster.value.cluster_connection_status === 1">
-                <div class="dropdown-text">{{ cluster.value.name }}</div>
-                <div *ngIf="cluster.value.cluster_alias"
-                      class="text-secondary">{{ cluster.value.cluster_alias }} - {{ cluster.value.user }}</div>
-              </button>
-            </ng-container>
-          </div>
-        </div>
-      </ng-container>
-      <ul class="nav navbar-nav cd-navbar-utility my-2 my-md-0">
-        <ng-container *ngTemplateOutlet="cd_utilities"> </ng-container>
-      </ul>
-    </div>
-  </nav>
-</div> -->
 
 <!-- ************************ -->
 <!-- WRAPPER AROUND SIDENAV AND MAIN CONTAINT -->
 <div class="wrapper">
   <!-- Content -->
   <nav id="sidebar"
-        [ngClass]="{'active': !showMenuSidebar}">
+       [ngClass]="{'active': !showMenuSidebar}">
     <ng-container *ngTemplateOutlet="cd_menu"></ng-container>
   </nav>
-
   <!-- Page Content -->
   <div id="content"
-        [ngClass]="{'active': !showMenuSidebar}">
+       [ngClass]="{'active': !showMenuSidebar}">
     <ng-content></ng-content>
   </div>
 </div>
 <ng-template #cd_menu>
   <ng-container *ngIf="enabledFeature$ | async as enabledFeature">
   <div cdsTheme="theme">
-    <cds-sidenav [expanded]="showMenuSidebar" class="mt-5">
+    <cds-sidenav [expanded]="showMenuSidebar"
+                 class="mt-5">
       <!-- Dashboard -->
-      <cds-sidenav-item route="/dashboard" [useRouter]="true" class="nav-item tc_menuitem_dashboard">
-        <svg cdsIcon="template" icon size="20"></svg>
+      <cds-sidenav-item route="/dashboard"
+                        [useRouter]="true"
+                        class="nav-item tc_menuitem_dashboard">
+        <svg cdsIcon="template"
+             icon
+             size="20"></svg>
         <span i18n>
           Dashboard</span>
       </cds-sidenav-item>
       <!-- Multi-cluster Dashboard -->
       <cds-sidenav-menu title="Multi-Cluster">
-        <svg cdsIcon="edge-cluster" icon size="20"></svg>
-        <cds-sidenav-item route="/multi-cluster/overview" [useRouter]="true" class="tc_submenuitem tc_submenuitem_multiCluster_overview"><span i18n >Overview</span></cds-sidenav-item>
-        <cds-sidenav-item route="/multi-cluster/manage-clusters" [useRouter]="true" class="tc_submenuitem tc_submenuitem_multiCluster_manage_clusters"><span i18n >Manager Cluster</span></cds-sidenav-item>
+        <svg cdsIcon="edge-cluster"
+             icon
+             size="20"></svg>
+        <cds-sidenav-item route="/multi-cluster/overview"
+                          [useRouter]="true"
+                          class="tc_submenuitem tc_submenuitem_multiCluster_overview"><span i18n >Overview</span></cds-sidenav-item>
+        <cds-sidenav-item route="/multi-cluster/manage-clusters"
+                          [useRouter]="true"
+                          class="tc_submenuitem tc_submenuitem_multiCluster_manage_clusters"><span i18n >Manager Cluster</span></cds-sidenav-item>
       </cds-sidenav-menu>
       <!-- Cluster -->
-      <cds-sidenav-menu title="Cluster" *ngIf="permissions.hosts.read || permissions.monitor.read ||
-      permissions.osd.read || permissions.pool.read" class="tc_menuitem_cluster">
-        <svg cdsIcon="web-services--cluster" icon size="20"></svg>
-        <cds-sidenav-item route="/pool" [useRouter]="true" *ngIf="permissions.pool.read" class="tc_submenuitem tc_submenuitem_cluster_pool"><span i18n >Pools</span></cds-sidenav-item>
-        <cds-sidenav-item route="/hosts" [useRouter]="true" *ngIf="permissions.hosts.read" class="tc_submenuitem tc_submenuitem_cluster_hosts"><span i18n >Hosts</span></cds-sidenav-item>
-        <cds-sidenav-item route="/osd" [useRouter]="true" *ngIf="permissions.osd.read" class="tc_submenuitem tc_submenuitem_cluster_osds"><span i18n >OSDs</span></cds-sidenav-item>
-        <cds-sidenav-item route="/inventory" [useRouter]="true" *ngIf="permissions.hosts.read" class="tc_submenuitem tc_submenuitem_cluster_inventory"><span i18n >Physical Disks</span></cds-sidenav-item>
-        <cds-sidenav-item route="/crush-map" [useRouter]="true" *ngIf="permissions.osd.read" class="tc_submenuitem tc_submenuitem_cluster_crush"><span i18n>CRUSH Map</span></cds-sidenav-item>
-        <cds-sidenav-item route="/monitor" [useRouter]="true" *ngIf="permissions.monitor.read" class="tc_submenuitem tc_submenuitem_cluster_monitor"><span i18n >Monitors</span></cds-sidenav-item>
+      <cds-sidenav-menu title="Cluster"
+                        *ngIf="permissions.hosts.read || permissions.monitor.read || permissions.osd.read || permissions.pool.read"
+                        class="tc_menuitem_cluster">
+        <svg cdsIcon="web-services--cluster"
+             icon
+             size="20"></svg>
+        <cds-sidenav-item route="/pool"
+                          [useRouter]="true"
+                          *ngIf="permissions.pool.read"
+                          class="tc_submenuitem tc_submenuitem_cluster_pool"><span i18n >Pools</span></cds-sidenav-item>
+        <cds-sidenav-item route="/hosts"
+                          [useRouter]="true"
+                          *ngIf="permissions.hosts.read"
+                          class="tc_submenuitem tc_submenuitem_cluster_hosts"><span i18n >Hosts</span></cds-sidenav-item>
+        <cds-sidenav-item route="/osd"
+                          [useRouter]="true"
+                          *ngIf="permissions.osd.read"
+                          class="tc_submenuitem tc_submenuitem_cluster_osds"><span i18n >OSDs</span></cds-sidenav-item>
+        <cds-sidenav-item route="/inventory"
+                          [useRouter]="true"
+                          *ngIf="permissions.hosts.read"
+                          class="tc_submenuitem tc_submenuitem_cluster_inventory"><span i18n >Physical Disks</span></cds-sidenav-item>
+        <cds-sidenav-item route="/crush-map"
+                          [useRouter]="true"
+                          *ngIf="permissions.osd.read"
+                          class="tc_submenuitem tc_submenuitem_cluster_crush"><span i18n>CRUSH Map</span></cds-sidenav-item>
+        <cds-sidenav-item route="/monitor"
+                          [useRouter]="true"
+                          *ngIf="permissions.monitor.read"
+                          class="tc_submenuitem tc_submenuitem_cluster_monitor"><span i18n >Monitors</span></cds-sidenav-item>
       </cds-sidenav-menu>
       <!-- Block Storage -->
-      <cds-sidenav-menu title="Block" *ngIf="(permissions.rbdImage.read || permissions.rbdMirroring.read|| permissions.iscsi.read) && (enabledFeature.rbd || enabledFeature.mirroring || enabledFeature.iscsi)" class="tc_menuitem_block">
-        <svg cdsIcon="datastore" icon size="20"></svg>
-        <cds-sidenav-item route="/block/rbd" [useRouter]="true" *ngIf="permissions.rbdImage.read && enabledFeature.rbd" class="tc_submenuitem tc_submenuitem_block_images"><span i18n>Images</span></cds-sidenav-item>
-        <cds-sidenav-item route="/block/mirroring" [useRouter]="true" *ngIf="permissions.rbdMirroring.read && enabledFeature.mirroring" class="tc_submenuitem tc_submenuitem_block_mirroring"><span i18n>Mirroring
-          <small *ngIf="summaryData?.rbd_mirroring?.warnings !== 0"
-                    class="badge badge-warning">{{ summaryData?.rbd_mirroring?.warnings }}</small>
+      <cds-sidenav-menu title="Block"
+                        *ngIf="(permissions.rbdImage.read || permissions.rbdMirroring.read|| permissions.iscsi.read) && (enabledFeature.rbd || enabledFeature.mirroring || enabledFeature.iscsi)"
+                        class="tc_menuitem_block">
+        <svg cdsIcon="datastore"
+             icon
+             size="20"></svg>
+        <cds-sidenav-item route="/block/rbd"
+                          [useRouter]="true"
+                          *ngIf="permissions.rbdImage.read && enabledFeature.rbd"
+                          class="tc_submenuitem tc_submenuitem_block_images"><span i18n>Images</span></cds-sidenav-item>
+        <cds-sidenav-item route="/block/mirroring"
+                          [useRouter]="true"
+                          *ngIf="permissions.rbdMirroring.read && enabledFeature.mirroring"
+                          class="tc_submenuitem tc_submenuitem_block_mirroring">
+          <span i18n>Mirroring
+            <small *ngIf="summaryData?.rbd_mirroring?.warnings !== 0"
+                   class="badge badge-warning">{{ summaryData?.rbd_mirroring?.warnings }}</small>
             <small *ngIf="summaryData?.rbd_mirroring?.errors !== 0"
-                    class="badge badge-danger">{{ summaryData?.rbd_mirroring?.errors }}</small>
-        </span></cds-sidenav-item>
-        <cds-sidenav-item route="/block/iscsi" [useRouter]="true" *ngIf="permissions.iscsi.read && enabledFeature.iscsi" class="tc_submenuitem tc_submenuitem_block_iscsi"><span i18n>iSCSI</span></cds-sidenav-item>
+                   class="badge badge-danger">{{ summaryData?.rbd_mirroring?.errors }}</small>
+          </span>
+        </cds-sidenav-item>
+        <cds-sidenav-item route="/block/iscsi"
+                          [useRouter]="true"
+                          *ngIf="permissions.iscsi.read && enabledFeature.iscsi"
+                          class="tc_submenuitem tc_submenuitem_block_iscsi"><span i18n>iSCSI</span></cds-sidenav-item>
       </cds-sidenav-menu>
       <!-- Object Storage -->
-      <cds-sidenav-menu title="Object" *ngIf="permissions.rgw.read && enabledFeature.rgw" class="tc_menuitem_rgw">
-        <svg cdsIcon="object-storage" icon size="20"></svg>
-        <cds-sidenav-item route="/rgw/overview" [userouter]="true" class="tc_submenuitem tc_submenuitem_rgw_overview"><span i18n>Overview</span></cds-sidenav-item>
-        <cds-sidenav-item route="/rgw/bucket" [userouter]="true" class="tc_submenuitem tc_submenuitem_rgw_buckets"><span i18n>Buckets</span></cds-sidenav-item>
-        <cds-sidenav-item route="/rgw/user" [userouter]="true" class="tc_submenuitem tc_submenuitem_rgw_users"><span i18n>Users</span></cds-sidenav-item>
-        <cds-sidenav-item route="/rgw/multisite" [userouter]="true" class="tc_submenuitem tc_submenuitem_rgw_buckets"><span i18n>Multi-site</span></cds-sidenav-item>
-        <cds-sidenav-item route="/rgw/daemon" [userouter]="true" class="tc_submenuitem tc_submenuitem_rgw_daemons"><span i18n>Gateways</span></cds-sidenav-item>
-        <cds-sidenav-item route="/nfs" [useRouter]="true" *ngIf="permissions.nfs.read && enabledFeature.nfs" class="tc_submenuitem tc_submenuitem_rgw_nfs"><span i18n>NFS</span></cds-sidenav-item>
+      <cds-sidenav-menu title="Object"
+                        *ngIf="permissions.rgw.read && enabledFeature.rgw"
+                        class="tc_menuitem_rgw">
+        <svg cdsIcon="object-storage"
+             icon
+             size="20"></svg>
+        <cds-sidenav-item route="/rgw/overview"
+                          [userouter]="true"
+                          class="tc_submenuitem tc_submenuitem_rgw_overview"><span i18n>Overview</span></cds-sidenav-item>
+        <cds-sidenav-item route="/rgw/bucket"
+                          [userouter]="true"
+                          class="tc_submenuitem tc_submenuitem_rgw_buckets"><span i18n>Buckets</span></cds-sidenav-item>
+        <cds-sidenav-item route="/rgw/user"
+                          [userouter]="true"
+                          class="tc_submenuitem tc_submenuitem_rgw_users"><span i18n>Users</span></cds-sidenav-item>
+        <cds-sidenav-item route="/rgw/multisite"
+                          [userouter]="true"
+                          class="tc_submenuitem tc_submenuitem_rgw_buckets"><span i18n>Multi-site</span></cds-sidenav-item>
+        <cds-sidenav-item route="/rgw/daemon"
+                          [userouter]="true"
+                          class="tc_submenuitem tc_submenuitem_rgw_daemons"><span i18n>Gateways</span></cds-sidenav-item>
+        <cds-sidenav-item route="/nfs"
+                          [useRouter]="true"
+                          *ngIf="permissions.nfs.read && enabledFeature.nfs"
+                          class="tc_submenuitem tc_submenuitem_rgw_nfs"><span i18n>NFS</span></cds-sidenav-item>
       </cds-sidenav-menu>
       <!-- Filesystem -->
-      <cds-sidenav-menu title="File" *ngIf="permissions.nfs.read && enabledFeature.nfs || permissions.cephfs.read && enabledFeature.cephfs" class="tc_menuitem_file">
-        <svg cdsIcon="file-storage" icon size="20"></svg>
-        <cds-sidenav-item route="/cephfs" [useRouter]="true" *ngIf="permissions.cephfs.read && enabledFeature.cephfs" class="tc_submenuitem tc_submenuitem_file_cephfs"><span i18n>File Systems</span></cds-sidenav-item>
-        <cds-sidenav-item route="/nfs" [useRouter]="true" *ngIf="permissions.nfs.read && enabledFeature.nfs" class="tc_submenuitem tc_submenuitem_file_nfs"><span i18n>NFS</span></cds-sidenav-item>
+      <cds-sidenav-menu title="File"
+                        *ngIf="permissions.nfs.read && enabledFeature.nfs || permissions.cephfs.read && enabledFeature.cephfs"
+                        class="tc_menuitem_file">
+        <svg cdsIcon="file-storage"
+             icon
+             size="20"></svg>
+        <cds-sidenav-item route="/cephfs"
+                          [useRouter]="true"
+                          *ngIf="permissions.cephfs.read && enabledFeature.cephfs"
+                          class="tc_submenuitem tc_submenuitem_file_cephfs"><span i18n>File Systems</span></cds-sidenav-item>
+        <cds-sidenav-item route="/nfs"
+                          [useRouter]="true"
+                          *ngIf="permissions.nfs.read && enabledFeature.nfs"
+                          class="tc_submenuitem tc_submenuitem_file_nfs"><span i18n>NFS</span></cds-sidenav-item>
       </cds-sidenav-menu>
       <!-- Observability -->
-      <cds-sidenav-menu title="Observability" *ngIf="permissions.log.read || permissions.prometheus.read" class="tc_menuitem_observe">
-        <svg cdsIcon="observed--hail" icon size="20"></svg>
-        <cds-sidenav-item route="/logs" [useRouter]="true" *ngIf="permissions.log.read" class="tc_submenuitem tc_submenuitem_observe_log"><span i18n>Logs</span></cds-sidenav-item>
-        <cds-sidenav-item route="/monitoring" [useRouter]="true" *ngIf="permissions.prometheus.read" class="tc_submenuitem tc_submenuitem_observe_monitoring"><span i18n>
-          <ng-container>Alerts</ng-container>
-              <small *ngIf="prometheusAlertService.activeCriticalAlerts > 0"
-                    class="badge badge-danger ms-1">{{ prometheusAlertService.activeCriticalAlerts }}</small>
-              <small *ngIf="prometheusAlertService.activeWarningAlerts > 0"
-                    class="badge badge-warning ms-1">{{ prometheusAlertService.activeWarningAlerts }}</small>
-        </span></cds-sidenav-item>
+      <cds-sidenav-menu title="Observability"
+                        *ngIf="permissions.log.read || permissions.prometheus.read"
+                        class="tc_menuitem_observe">
+        <svg cdsIcon="observed--hail"
+             icon
+             size="20"></svg>
+        <cds-sidenav-item route="/logs"
+                          [useRouter]="true"
+                          *ngIf="permissions.log.read"
+                          class="tc_submenuitem tc_submenuitem_observe_log"><span i18n>Logs</span></cds-sidenav-item>
+        <cds-sidenav-item route="/monitoring"
+                          [useRouter]="true"
+                          *ngIf="permissions.prometheus.read"
+                          class="tc_submenuitem tc_submenuitem_observe_monitoring">
+          <span i18n>
+            <ng-container>Alerts</ng-container>
+            <small *ngIf="prometheusAlertService.activeCriticalAlerts > 0"
+                   class="badge badge-danger ms-1">{{ prometheusAlertService.activeCriticalAlerts }}</small>
+            <small *ngIf="prometheusAlertService.activeWarningAlerts > 0"
+                   class="badge badge-warning ms-1">{{ prometheusAlertService.activeWarningAlerts }}</small>
+          </span>
+        </cds-sidenav-item>
       </cds-sidenav-menu>
       <!-- Administration -->
-      <cds-sidenav-menu title="Administration" *ngIf="permissions.configOpt.read || permissions.hosts.read" class="tc_menuitem_admin">
-        <svg cdsIcon="network--admin-control" icon size="20"></svg>
-        <cds-sidenav-item route="/services/" [useRouter]="true" *ngIf="permissions.hosts.read" class="tc_submenuitem tc_submenuitem_admin_services"><span i18n>Services</span></cds-sidenav-item>
-        <cds-sidenav-item route="/upgrade" [useRouter]="true" *ngIf="permissions.configOpt.read" class="tc_submenuitem tc_submenuitem_admin_upgrade"><span i18n>Upgrade</span></cds-sidenav-item>
-        <cds-sidenav-item route="/ceph-users" [useRouter]="true" *ngIf="permissions.configOpt.read" class="tc_submenuitem tc_submenuitem_admin_users"><span i18n>Ceph Users</span></cds-sidenav-item>
-        <cds-sidenav-item route="/mgr-modules" [useRouter]="true" *ngIf="permissions.configOpt.read" class="tc_submenuitem tc_submenuitem_admin_modules"><span i18n>Manager Modules</span></cds-sidenav-item>
-        <cds-sidenav-item route="/configuration" [useRouter]="true" *ngIf="permissions.configOpt.read" class="tc_submenuitem tc_submenuitem_admin_configuration"><span i18n>Configuration</span></cds-sidenav-item>
+      <cds-sidenav-menu title="Administration"
+                        *ngIf="permissions.configOpt.read || permissions.hosts.read"
+                        class="tc_menuitem_admin">
+        <svg cdsIcon="network--admin-control"
+             icon
+             size="20"></svg>
+        <cds-sidenav-item route="/services/"
+                          [useRouter]="true"
+                          *ngIf="permissions.hosts.read"
+                          class="tc_submenuitem tc_submenuitem_admin_services"><span i18n>Services</span></cds-sidenav-item>
+        <cds-sidenav-item route="/upgrade"
+                          [useRouter]="true"
+                          *ngIf="permissions.configOpt.read"
+                          class="tc_submenuitem tc_submenuitem_admin_upgrade"><span i18n>Upgrade</span></cds-sidenav-item>
+        <cds-sidenav-item route="/ceph-users"
+                          [useRouter]="true"
+                          *ngIf="permissions.configOpt.read"
+                          class="tc_submenuitem tc_submenuitem_admin_users"><span i18n>Ceph Users</span></cds-sidenav-item>
+        <cds-sidenav-item route="/mgr-modules"
+                          [useRouter]="true"
+                          *ngIf="permissions.configOpt.read"
+                          class="tc_submenuitem tc_submenuitem_admin_modules"><span i18n>Manager Modules</span></cds-sidenav-item>
+        <cds-sidenav-item route="/configuration"
+                          [useRouter]="true"
+                          *ngIf="permissions.configOpt.read"
+                          class="tc_submenuitem tc_submenuitem_admin_configuration"><span i18n>Configuration</span></cds-sidenav-item>
       </cds-sidenav-menu>
-    </cds-sidenav>        
+    </cds-sidenav>
   </div>
   </ng-container>
 </ng-template>
index edadc7a7203c5e7e13bf033a848574f516db5e76..f120234b9cd5d58e8acc3f0ed8904e700b235fc8 100644 (file)
@@ -2,10 +2,12 @@
    title="Tasks and Notifications"
    [ngClass]="{ 'running': hasRunningTasks }"
    (click)="toggleSidebar()">
-   <svg cdsIcon="notification" size="20" title="notification"></svg>
+  <svg cdsIcon="notification"
+       size="20"
+       title="notification"></svg>
   <span class="dot"
         *ngIf="hasNotifications">
   </span>
   <span class="d-md-none"
         i18n>Tasks and Notifications</span>
-</a>
\ No newline at end of file
+</a>