]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: replace fork-awesome size classes with Carbon sizes
authorAfreen Misbah <afreen@ibm.com>
Sun, 17 May 2026 09:19:06 +0000 (14:49 +0530)
committerAfreen Misbah <afreen@ibm.com>
Tue, 19 May 2026 13:10:15 +0000 (18:40 +0530)
Replace icons.large/large2x/large3x with Carbon icon sizes:
- icons.large -> icons.size24
- icons.large2x -> icons.size32
- icons.large3x -> icons.size32

Signed-off-by: Afreen Misbah <afreen@ibm.com>
Assisted-by: Claude
Fixes: https://tracker.ceph.com/issues/76631
 Conflicts:
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-overview-dashboard/rgw-overview-dashboard.component.html
     - rebase conflicts

12 files changed:
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/iscsi-target-details/iscsi-target-details.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-directories/cephfs-directories.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-snapshotschedule-list/cephfs-snapshotschedule-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-subvolume-list/cephfs-subvolume-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/crushmap/crushmap.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/multi-cluster/multi-cluster-list/multi-cluster-list.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/multi-cluster/multi-cluster.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-multisite-details/rgw-multisite-details.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-sync-primary-zone/rgw-sync-primary-zone.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/notifications-sidebar/notifications-sidebar.component.html [new file with mode: 0644]
src/pybind/mgr/dashboard/frontend/src/app/shared/components/progress/progress.component.html

index 64913109abe2763218f9da375387b5eaefc821f0..33c08351c043d1184832ea9e37150d337b53a2b6 100644 (file)
@@ -97,25 +97,25 @@ export class IscsiTargetDetailsComponent implements OnChanges, OnInit {
       target: {
         expanded: _.join(
           this.selectedItem.cdExecuting
-            ? [Icons.large, Icons.spinner, Icons.spin]
-            : [Icons.large, Icons.bullseye],
+            ? [Icons.size24, Icons.spinner, Icons.spin]
+            : [Icons.size24, Icons.bullseye],
           ' '
         )
       },
       initiators: {
-        expanded: _.join([Icons.large, Icons.user], ' '),
+        expanded: _.join([Icons.size24, Icons.user], ' '),
         leaf: _.join([Icons.user], ' ')
       },
       groups: {
-        expanded: _.join([Icons.large, Icons.users], ' '),
+        expanded: _.join([Icons.size24, Icons.users], ' '),
         leaf: _.join([Icons.users], ' ')
       },
       disks: {
-        expanded: _.join([Icons.large, Icons.disk], ' '),
+        expanded: _.join([Icons.size24, Icons.disk], ' '),
         leaf: _.join([Icons.disk], ' ')
       },
       portals: {
-        expanded: _.join([Icons.large, Icons.server], ' '),
+        expanded: _.join([Icons.size24, Icons.server], ' '),
         leaf: _.join([Icons.server], ' ')
       }
     };
index a1a74471b37caa1e49fa2529f247dec4804dc884..82d5f5a1dfc40040e74d7753d962407dafd6d3e0 100644 (file)
@@ -6,7 +6,7 @@
                 [class.disabled]="loadingIndicator"
                 class="btn btn-light pull-right"
                 (click)="refreshAllDirectories()">
-          <i [ngClass]="[icons.large, icons.refresh]"
+          <i [ngClass]="[icons.size24, icons.refresh]"
              [class.fa-spin]="loadingIndicator"></i>
         </button>
       </div>
index 46d6c0f1848a390b51b1e8f8ba6d46ea6c6ec6c9..04800e44ac2831111ee68eac325734aa704fe7c9 100644 (file)
@@ -23,7 +23,7 @@
   <span
   *ngIf="row.active; else inactiveStatusTpl">
     <i
-      [ngClass]="[icons.success, icons.large]"
+      [ngClass]="[icons.success, icons.size24]"
       ngbTooltip="{{ row.pathForSelection?.split?.('@')?.[0] }} is active"
       class="text-success"
     ></i>
@@ -31,7 +31,7 @@
 
   <ng-template #inactiveStatusTpl>
     <i
-      [ngClass]="[icons.warning, icons.large]"
+      [ngClass]="[icons.warning, icons.size24]"
       class="text-warning"
       ngbTooltip="{{ row.pathForSelection?.split?.('@')?.[0] }} has been deactivated"
     ></i>
index 4cec98e31c6bb87b47d295dc9dbb5a6c17f2b73b..ea5e7ce80800485e8eeb6b5945def36f576b306a 100644 (file)
   <span class="fw-bold">{{row.name}}</span>
 
   <span *ngIf="row?.info?.state === 'complete'; else snapshotRetainedTpl">
-    <i [ngClass]="[icons.success, icons.large]"
+    <i [ngClass]="[icons.success, icons.size24]"
        ngbTooltip="{{row.name}} is ready to use"
        class="text-success"></i>
   </span>
 
   <ng-template #snapshotRetainedTpl>
-    <i [ngClass]="[icons.warning, icons.large]"
+    <i [ngClass]="[icons.warning, icons.size24]"
        class="text-warning"
        ngbTooltip="{{row.name}} is removed after retaining the snapshots"></i>
   </ng-template>
index 9143272803599cfccb9e3beecfb2ac303d543af1..d59ca849a10a74e14e1317fa8ca90a7491b7f85d 100644 (file)
@@ -7,7 +7,7 @@
         <div class="row">
           <div class="col-sm-6 col-lg-6 tree-container">
             <i *ngIf="loadingIndicator"
-               [ngClass]="[icons.large, icons.spinner, icons.spin]"></i>
+               [ngClass]="[icons.size24, icons.spinner, icons.spin]"></i>
             <cds-tree-view #tree
                            [isMultiSelect]="false"
                            (select)="onNodeSelected($event)">
index c7e4c2e65a359efe9aa45ed3da775d4c08d402c0..1ccc51fdb059b8399ec46d9a28627bf912ff364a 100644 (file)
@@ -4,7 +4,7 @@
     <div class="row h-100 justify-content-center align-items-center">
       <div class="blank-page">
         <i class="mx-auto d-block"
-           [ngClass]="[icons.large, icons.wrench]">
+           [ngClass]="[icons.size24, icons.wrench]">
         </i>
       <div class="mt-4 text-center">
         <h4 class="mt-3">This cluster is already managed by cluster -
index 44a082a2850b1523d6b869bb260d428fdbe0e5a6..bbdadd9d0ee67e4f5ef6f48ac2528a8e2c0e9fc9 100644 (file)
@@ -53,7 +53,7 @@
     <div class="row h-100 justify-content-center align-items-center">
       <div class="blank-page">
         <i class="mx-auto d-block"
-           [ngClass]="[icons.large3x, icons.spinner, icons.spin]">
+           [ngClass]="[icons.size32, icons.spinner, icons.spin]">
         </i>
         <p class="text-center mt-3"
            i18n>Loading data, Please wait...</p>
index 8574b23cba232308e739b206777eb06eba13d8e1..36b3fab23fb7fb537c117b171de05464c4af3ec6 100644 (file)
@@ -48,7 +48,7 @@
   <div class="row">
     <div class="col-sm-6 col-lg-6 tree-container">
       <i *ngIf="loadingIndicator"
-         [ngClass]="[icons.large, icons.spinner, icons.spin]"></i>
+         [ngClass]="[icons.size24, icons.spinner, icons.spin]"></i>
       <cds-tree-view #tree
                      [isMultiSelect]="false"
                      (select)="onNodeSelected($event)">
index 658594f5d3e1dd618abfa76366a578ae7d8304a2..9f4c71bbdccb430ef76b1c85c72a79d17b4b1f8b 100644 (file)
@@ -10,7 +10,7 @@
          class=" cds-icon--size-07"></svg>
   </li>
   <li>
-    <i [ngClass]="[icons.large2x, icons.cubes]"
+    <i [ngClass]="[icons.size32, icons.cubes]"
        class="mt-2"></i>
   </li>
   <p class="mt-2"> <cds-tag class="tag-info">{{zonegroup}}</cds-tag></p>
index 2db4f505f70f174a96c22bf46069217059021cff..cdb38fcf55531486d8d026518833388c0773f695 100644 (file)
@@ -30,7 +30,7 @@
                 i18n-title
                 title="Show hidden information"
                 (click)="showMessage = !showMessage">
-          <i [ngClass]="[icons.infoCircle, icons.large]"></i>
+          <i [ngClass]="[icons.infoCircle, icons.size24]"></i>
         </button>
       </div>
     </div>
diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/components/notifications-sidebar/notifications-sidebar.component.html b/src/pybind/mgr/dashboard/frontend/src/app/shared/components/notifications-sidebar/notifications-sidebar.component.html
new file mode 100644 (file)
index 0000000..e17d79a
--- /dev/null
@@ -0,0 +1,149 @@
+<ng-template #tasksTpl>
+  <!-- Executing -->
+  <div *ngFor="let executingTask of executingTasks; trackBy:trackByFn">
+    <div class="card tc_task border-0">
+      <div class="row no-gutters">
+        <div class="col-md-2 text-center">
+          <span class="text-info">
+            <svg [cdsIcon]="icons.circle"
+                 [size]="icons.size16"
+                 ></svg>
+          </span>
+        </div>
+        <div class="col-md-9">
+          <div class="card-body p-1">
+            <h6 class="card-title bold">{{ executingTask.description }}</h6>
+            <div class="mb-1">
+              <ngb-progressbar type="info"
+                               [value]="executingTask?.progress"
+                               [striped]="true"
+                               [animated]="true"></ngb-progressbar>
+            </div>
+            <p class="card-text text-muted">
+              <small class="date float-start">
+                {{ executingTask.begin_time | cdDate }}
+              </small>
+
+              <span class="float-end">
+                {{ executingTask.progress || 0 }} %
+              </span>
+            </p>
+
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <hr>
+  </div>
+</ng-template>
+
+<ng-template #notificationsTpl>
+  <ng-container *ngIf="notifications.length > 0">
+    <button type="button"
+            class="btn btn-light btn-block"
+            (click)="removeAll(); $event.stopPropagation()">
+      <svg [cdsIcon]="icons.trash"
+           [size]="icons.size16"
+           ></svg>
+      &nbsp;
+      <ng-container i18n>Clear notifications</ng-container>
+    </button>
+
+    <hr>
+
+    <div *ngFor="let notification of notifications; let i = index"
+         [ngClass]="notification.borderClass">
+      <div class="card tc_notification border-0">
+        <div class="row no-gutters">
+          <div class="col-md-2 text-center">
+            <span [ngClass]="[icons.stack, icons.size24,  notification.textClass]">
+              <i [ngClass]="[icons.circle, icons.stack2x]"></i>
+              <i [ngClass]="[icons.stack1x, icons.inverse, notification.iconClass]"></i>
+            </span>
+          </div>
+          <div class="col-md-10">
+            <div class="card-body p-1">
+              <button class="btn btn-link float-end mt-0 pt-0"
+                      title="Remove notification"
+                      i18n-title
+                      (click)="remove(i); $event.stopPropagation()">
+                <svg [cdsIcon]="icons.trash"
+                     [size]="icons.size16"
+                     ></svg>
+              </button>
+              <button *ngIf="notification.application === 'Prometheus' && notification.type !== 2 && !notification.alertSilenced"
+                      class="btn btn-link float-end text-muted mute m-0 p-0"
+                      title="Silence Alert"
+                      i18n-title
+                      (click)="silence(notification)">
+                <svg [cdsIcon]="icons.mute"
+                     [size]="icons.size16"
+                     ></svg>
+              </button>
+              <button *ngIf="notification.application === 'Prometheus' && notification.type !== 2 && notification.alertSilenced"
+                      class="btn btn-link float-end text-muted mute m-0 p-0"
+                      title="Expire Silence"
+                      i18n-title
+                      (click)="expire(notification)">
+                <svg [cdsIcon]="icons.bell"
+                     [size]="icons.size16"
+                     ></svg>
+              </button>
+
+
+              <h6 class="card-title bold">{{ notification.title }}</h6>
+              <p class="card-text"
+                 [innerHtml]="notification.message"></p>
+              <p class="card-text text-muted">
+                <ng-container *ngIf="notification.duration">
+                  <small>
+                    <ng-container i18n>Duration:</ng-container> {{ notification.duration | duration }}
+                  </small>
+                  <br>
+                </ng-container>
+                <small class="date"
+                       [title]="notification.timestamp | cdDate">{{ notification.timestamp | relativeDate }}</small>
+                <i class="float-end custom-icon"
+                   [ngClass]="[notification.applicationClass]"
+                   [title]="notification.application"></i>
+              </p>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <hr>
+    </div>
+  </ng-container>
+</ng-template>
+
+<ng-template #emptyTpl>
+  <div *ngIf="notifications.length === 0 && executingTasks.length === 0">
+    <div class="message text-center"
+         i18n>There are no notifications.</div>
+  </div>
+</ng-template>
+
+<div class="card"
+     (clickOutside)="closeSidebar()"
+     [clickOutsideEnabled]="isSidebarOpened">
+  <div class="card-header">
+    <ng-container i18n>Tasks and Notifications</ng-container>
+
+    <button class="btn-close float-end"
+            tabindex="-1"
+            type="button"
+            title="close"
+            (click)="closeSidebar()">
+    </button>
+  </div>
+
+  <ngx-simplebar [options]="simplebar">
+    <div class="card-body">
+      <ng-container *ngTemplateOutlet="tasksTpl"></ng-container>
+      <ng-container *ngTemplateOutlet="notificationsTpl"></ng-container>
+      <ng-container *ngTemplateOutlet="emptyTpl"></ng-container>
+    </div>
+  </ngx-simplebar>
+</div>
index 38dcb13a574cdbb4c0212f22114f97ae26e79bd6..52f37ea57c24f2c20845e931b2f8ad3dec638786 100644 (file)
@@ -4,9 +4,9 @@
         [ngClass]="{ 'mt-3': status === 'in-progress' && isPaused }"
         *ngIf="!value || actionName === 'upgrading'">
       <i *ngIf="status === 'in-progress' && isPaused; else spinningIcon"
-         [ngClass]="[icons.large, icons.spinner]"></i>
+         [ngClass]="[icons.size24, icons.spinner]"></i>
       <ng-template #spinningIcon>
-        <i [ngClass]="[icons.large, icons.spin, icons.spinner]"></i>
+        <i [ngClass]="[icons.size24, icons.spin, icons.spinner]"></i>
       </ng-template>
     </h3>