]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/dashboard: Change side navigation to `Overview`
authorAfreen Misbah <afreen@ibm.com>
Fri, 16 Jan 2026 14:17:53 +0000 (19:47 +0530)
committerAfreen Misbah <afreen@ibm.com>
Sat, 31 Jan 2026 14:50:30 +0000 (20:20 +0530)
Fixes https://tracker.ceph.com/issues/73318

Signed-off-by: Afreen Misbah <afreen@ibm.com>
(cherry picked from commit 828802d21a1b5eb4d99e4b461bcd50b30538eb17)

 Conflicts:
src/pybind/mgr/dashboard/frontend/cypress/e2e/a11y/dashboard.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/04-osds.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/dashboard-v3.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/enum/cell-template.enum.ts
src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_spacings.scss

40 files changed:
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/10501135011127341749 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/12707214466441736553 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/13106400625475788256 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/13685585831439463788 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/1758954290910463637 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/2801012194694874285 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/4379954223956111510 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/5698680818973360491 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/6554461255961944329 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/7234210859985966681 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/741499322021383751 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/9919571031428218619 [deleted file]
src/pybind/mgr/dashboard/frontend/.nx/workspace-data/project-graph.lock [deleted file]
src/pybind/mgr/dashboard/frontend/cypress/e2e/a11y/dashboard.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/common/urls.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/04-osds.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/orchestrator/workflow/01-create-cluster-welcome.feature
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/dashboard-v3.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/dashboard-v3.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/dashboard.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/language.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/login.e2e-spec.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/login.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/ui/navigation.po.ts
src/pybind/mgr/dashboard/frontend/cypress/e2e/visualTests/dashboard.vrt-spec.ts
src/pybind/mgr/dashboard/frontend/src/app/app-routing.module.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/create-cluster/create-cluster.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/dashboard/dashboard.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/overview/overview.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/overview/overview.component.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/shared/health-checks/health-checks.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.ts
src/pybind/mgr/dashboard/frontend/src/app/core/error/error.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/layouts/workbench-layout/workbench-layout.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/layouts/workbench-layout/workbench-layout.component.scss
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.html
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.spec.ts
src/pybind/mgr/dashboard/frontend/src/app/shared/services/feature-toggles.service.ts
src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_spacings.scss [new file with mode: 0644]

diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/10501135011127341749 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/10501135011127341749
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/12707214466441736553 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/12707214466441736553
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/13106400625475788256 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/13106400625475788256
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/13685585831439463788 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/13685585831439463788
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/1758954290910463637 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/1758954290910463637
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/2801012194694874285 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/2801012194694874285
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/4379954223956111510 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/4379954223956111510
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/5698680818973360491 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/5698680818973360491
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/6554461255961944329 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/6554461255961944329
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/7234210859985966681 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/7234210859985966681
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/741499322021383751 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/741499322021383751
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/9919571031428218619 b/src/pybind/mgr/dashboard/frontend/.nx/cache/terminalOutputs/9919571031428218619
deleted file mode 100644 (file)
index 00c1226..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Linting "ceph-dashboard"...
-
-All files pass linting.
-
diff --git a/src/pybind/mgr/dashboard/frontend/.nx/workspace-data/project-graph.lock b/src/pybind/mgr/dashboard/frontend/.nx/workspace-data/project-graph.lock
deleted file mode 100644 (file)
index e69de29..0000000
index 39a2dbf14cbd0064053d171201804e4a288d110d..29a32ea1ee9f95971cac4d317c48a662d7197537 100644 (file)
@@ -1,11 +1,11 @@
 import { DashboardPageHelper } from '../ui/dashboard.po';
 
 describe('Dashboard Main Page', { retries: 0 }, () => {
-  const dashboard = new DashboardPageHelper();
+  const overview = new DashboardPageHelper();
 
   beforeEach(() => {
     cy.login();
-    dashboard.navigateTo();
+    overview.navigateTo();
   });
 
   describe('Dashboard accessibility', () => {
index 455fdf2cf939f7b19c2b23a32229177f9c4b7e5e..fc56fe7a9a1e21ada186b1d0e8a38b2f70a2591b 100644 (file)
@@ -6,7 +6,7 @@ export class UrlsCollection extends PageHelper {
     welcome: { url: '#/expand-cluster?welcome=true', id: 'cd-create-cluster' },
 
     // Landing page
-    dashboard: { url: '#/dashboard', id: 'cd-dashboard' },
+    overview: { url: '#/overview', id: 'cd-dashboard' },
 
     // Hosts
     hosts: { url: '#/hosts', id: 'cd-hosts' },
index 74b46054afd2f879a3b55467d8a11e064e2e5f8f..83b799e9b97c0008f79c362edaa56289831921f8 100644 (file)
@@ -4,13 +4,13 @@ import { ManagerModulesPageHelper } from '../cluster/mgr-modules.po';
 
 describe('OSDs page', () => {
   const osds = new OSDsPageHelper();
-  const dashboard = new DashboardPageHelper();
+  const overview = new DashboardPageHelper();
   const mgrmodules = new ManagerModulesPageHelper();
 
   before(() => {
     cy.login();
     mgrmodules.navigateTo();
-    mgrmodules.navigateEdit('dashboard');
+    mgrmodules.navigateEdit('overview');
     cy.get('#FEATURE_TOGGLE_DASHBOARD').uncheck();
     cy.contains('button', 'Update').click();
   });
@@ -34,10 +34,10 @@ describe('OSDs page', () => {
           osds.expectTableCount('total', expectedCount);
 
           // landing page is easier to check OSD status
-          dashboard.navigateTo();
-          dashboard.infoCardBody('OSDs').should('contain.text', `${expectedCount} total`);
-          dashboard.infoCardBody('OSDs').should('contain.text', `${expectedCount} up`);
-          dashboard.infoCardBody('OSDs').should('contain.text', `${expectedCount} in`);
+          overview.navigateTo();
+          overview.infoCardBody('OSDs').should('contain.text', `${expectedCount} total`);
+          overview.infoCardBody('OSDs').should('contain.text', `${expectedCount} up`);
+          overview.infoCardBody('OSDs').should('contain.text', `${expectedCount} in`);
 
           cy.wait(30000);
           expect(Number(newCount)).to.be.gte(2);
index 3ffdc40f2490ce541561a456499842934e6047c2..a5809537fc6c399bf0f3b6e1606febdec1abf67c 100644 (file)
@@ -23,4 +23,4 @@ Feature: Cluster expansion welcome screen
         And I should see a button to "Skip"
         When I click on "Skip" button
         And I confirm to "Continue" on carbon modal
-        Then I should be on the "dashboard" page
+        Then I should be on the "overview" page
index 3815011a1859a90ac2cd39643c65498818e42560..18b989312f649b95f66607515e9bbcda0bee790e 100644 (file)
@@ -2,7 +2,7 @@ import { ManagerModulesPageHelper } from '../cluster/mgr-modules.po';
 import { DashboardV3PageHelper } from './dashboard-v3.po';
 
 describe('Dashboard-v3 Main Page', () => {
-  const dashboard = new DashboardV3PageHelper();
+  const overview = new DashboardV3PageHelper();
   const mgrmodules = new ManagerModulesPageHelper();
 
   before(() => {
@@ -15,7 +15,7 @@ describe('Dashboard-v3 Main Page', () => {
 
   beforeEach(() => {
     cy.login();
-    dashboard.navigateTo();
+    overview.navigateTo();
   });
 
   describe('Check that all hyperlinks on inventory card lead to the correct page and fields exist', () => {
@@ -29,20 +29,20 @@ describe('Dashboard-v3 Main Page', () => {
       };
 
       for (const [linkText, breadcrumbText] of Object.entries(expectationMap)) {
-        cy.location('hash').should('eq', '#/dashboard');
-        dashboard.clickInventoryCardLink(linkText);
-        dashboard.expectBreadcrumbText(breadcrumbText);
-        dashboard.navigateBack();
+        cy.location('hash').should('eq', '#/overview');
+        overview.clickInventoryCardLink(linkText);
+        overview.expectBreadcrumbText(breadcrumbText);
+        overview.navigateBack();
       }
     });
 
-    it('should verify that cards exist on dashboard in proper order', () => {
-      // Ensures that cards are all displayed on the dashboard tab while being in the proper
+    it('should verify that cards exist on overview in proper order', () => {
+      // Ensures that cards are all displayed on the overview tab while being in the proper
       // order, checks for card title and position via indexing into a list of all cards.
       const order = ['Details', 'Inventory', 'Status', 'Capacity', 'Cluster Utilization'];
 
       for (let i = 0; i < order.length; i++) {
-        dashboard.card(i).should('contain.text', order[i]);
+        overview.card(i).should('contain.text', order[i]);
       }
     });
   });
index 597d2db9b50884cbb0edcd7ba651cdc8ce2bc5c6..943815eda96ee35b55d570081c57db9c9d156e4f 100644 (file)
@@ -1,7 +1,7 @@
 import { PageHelper } from '../page-helper.po';
 
 export class DashboardV3PageHelper extends PageHelper {
-  pages = { index: { url: '#/dashboard', id: 'cd-dashboard-v3' } };
+  pages = { index: { url: '#/overview', id: 'cd-dashboard-v3' } };
 
   cardTitle(index: number) {
     return cy.get('.card-title').its(index).text();
index 170555f735c9040af2fb6f576a5c38d02e1d5dfa..03b80caa2b6972925d20082ce72b03e6e38e236b 100644 (file)
@@ -1,7 +1,7 @@
 import { PageHelper } from '../page-helper.po';
 
 export class DashboardPageHelper extends PageHelper {
-  pages = { index: { url: '#/dashboard', id: 'cd-dashboard' } };
+  pages = { index: { url: '#/overview', id: 'cd-dashboard' } };
 
   infoGroupTitle(index: number) {
     return cy.get('[data-testid=group-title]').its(index).text();
index fc443f28ffdc9adbb5d645cf3ddde326d87bba5d..72987b699b71d2622e11659aec968035cefa16a5 100644 (file)
@@ -2,7 +2,7 @@ import { PageHelper } from '../page-helper.po';
 
 export class LanguagePageHelper extends PageHelper {
   pages = {
-    index: { url: '#/dashboard', id: 'cd-dashboard' }
+    index: { url: '#/overview', id: 'cd-dashboard' }
   };
 
   getLanguageBtn() {
index bec37e46f62ceaf561eb8ea35902d62dcea4b196..72e75bbc11f7dc52410293ea9ae61f404568536f 100644 (file)
@@ -3,7 +3,7 @@ import { LoginPageHelper } from './login.po';
 describe('Login page', () => {
   const login = new LoginPageHelper();
 
-  it('should login and navigate to dashboard page', () => {
+  it('should login and navigate to overview page', () => {
     login.navigateTo();
     login.doLogin();
   });
index b275133f01523dec7d32b3cea8bc6172d65423ba..7746ac1a0c3182f818f00d5c582ad62f248d07fc 100644 (file)
@@ -3,7 +3,7 @@ import { PageHelper } from '../page-helper.po';
 export class LoginPageHelper extends PageHelper {
   pages = {
     index: { url: '#/login', id: 'cd-login' },
-    dashboard: { url: '#/dashboard', id: 'cd-dashboard' }
+    overview: { url: '#/overview', id: 'cd-dashboard' }
   };
 
   doLogin() {
index ae0e5b64f25d0178a9c96315cc7930d59179c0b3..791525bfcf755c59d2673a8cb777a58e1e9b4975 100644 (file)
@@ -2,11 +2,11 @@ import { PageHelper } from '../page-helper.po';
 
 export class NavigationPageHelper extends PageHelper {
   pages = {
-    index: { url: '#/dashboard', id: 'cd-dashboard' }
+    index: { url: '#/overview', id: 'cd-dashboard' }
   };
 
   navigations = [
-    { menu: 'Dashboard', component: 'cd-dashboard' },
+    { menu: 'Overview', component: 'cd-dashboard' },
     {
       menu: 'Multi-Cluster',
       submenus: [
index 13802982041dda908493064ce53b0eb3c883b90a..12cea1ead370d297281b6ed596ae28c8b747694e 100644 (file)
@@ -1,11 +1,11 @@
 import { LoginPageHelper } from '../ui/login.po';
 
-describe.skip('Dashboard Landing Page', () => {
+describe.skip('Overview Landing Page', () => {
   const login = new LoginPageHelper();
 
   beforeEach(() => {
     cy.eyesOpen({
-      testName: 'Dashboard Component'
+      testName: 'Overview Component'
     });
   });
 
@@ -13,12 +13,12 @@ describe.skip('Dashboard Landing Page', () => {
     cy.eyesClose();
   });
 
-  it('should take screenshot of dashboard landing page', () => {
+  it('should take screenshot of overview landing page', () => {
     login.navigateTo();
     login.doLogin();
     cy.get('[aria-label="Status card"]').should('be.visible');
     cy.get('[aria-label="Inventory card"]').should('be.visible');
     cy.get('[aria-label="Cluster utilization card"]').should('be.visible');
-    cy.eyesCheckWindow({ tag: 'Dashboard landing page' });
+    cy.eyesCheckWindow({ tag: 'Overview landing page' });
   });
 });
index fc2dd0b56109972efb92d360c9606767b7cc9652..ea8714b90c2bd53fde3a136d99bd34a53edd263a 100644 (file)
@@ -93,8 +93,8 @@ export class StartCaseBreadcrumbsResolver extends BreadcrumbsResolver {
 }
 
 const routes: Routes = [
-  // Dashboard
-  { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
+  // Overview
+  { path: '', redirectTo: 'overview', pathMatch: 'full' },
   { path: 'api-docs', component: ApiDocsComponent },
   {
     path: '',
@@ -102,7 +102,7 @@ const routes: Routes = [
     canActivate: [AuthGuardService, ChangePasswordGuardService],
     canActivateChild: [AuthGuardService, ChangePasswordGuardService],
     children: [
-      { path: 'dashboard', component: DashboardComponent },
+      { path: 'overview', component: DashboardComponent },
       { path: 'error', component: ErrorComponent },
 
       // Cluster
@@ -113,7 +113,7 @@ const routes: Routes = [
         data: {
           moduleStatusGuardConfig: {
             uiApiPath: 'orchestrator',
-            redirectTo: 'dashboard',
+            redirectTo: 'overview',
             backend: 'cephadm'
           },
           breadcrumbs: 'Cluster/Expand Cluster'
index 892bd3fe49f7c25e3a593ec910e48edb595bf7ee..eb53bdfdd4e129f5f1c3f86072a4d1fef6a581fb 100644 (file)
@@ -150,7 +150,7 @@ export class CreateClusterComponent implements OnInit, OnDestroy, AfterViewInit
               NotificationType.info,
               $localize`Cluster expansion skipped by user`
             );
-            this.router.navigate(['/dashboard']);
+            this.router.navigate(['/overview']);
             this.modalService.dismissAll();
           }
         });
@@ -178,7 +178,7 @@ export class CreateClusterComponent implements OnInit, OnDestroy, AfterViewInit
                   NotificationType.success,
                   $localize`Cluster expansion was successful`
                 );
-                this.router.navigate(['/dashboard']);
+                this.router.navigate(['/overview']);
               })
             )
           )
index 87b8c3376dc8114e5cd9f9202d348fe49a2c59d7..b55baf32f1dde415f83a984cce8ffa80ec2667e8 100644 (file)
@@ -1,4 +1,4 @@
-<main aria-label="Dashboard">
+<main aria-label="Overview">
   <a href="#main"
      class="sr-only">skip to content</a>
 
index d3b4f5e8bb97b836b7a6fb4ee2386fc08a092970..55b2152e1751e320d92dd5ffb71975205526494c 100644 (file)
@@ -1,7 +1,6 @@
 import { HttpClientTestingModule } from '@angular/common/http/testing';
 import { NO_ERRORS_SCHEMA } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { By } from '@angular/platform-browser';
 
 import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
 import { FeatureTogglesService } from '~/app/shared/services/feature-toggles.service';
@@ -12,7 +11,6 @@ import { DashboardComponent } from './dashboard.component';
 describe('DashboardComponent', () => {
   let component: DashboardComponent;
   let fixture: ComponentFixture<DashboardComponent>;
-  let featureTogglesService: FeatureTogglesService;
 
   configureTestBed({
     imports: [NgbNavModule, HttpClientTestingModule],
@@ -22,70 +20,12 @@ describe('DashboardComponent', () => {
   });
 
   beforeEach(() => {
-    featureTogglesService = TestBed.inject(FeatureTogglesService);
     fixture = TestBed.createComponent(DashboardComponent);
     component = fixture.componentInstance;
   });
 
   it('should create', () => {
-    spyOn(featureTogglesService, 'isFeatureEnabled').and.returnValue(true);
-
     fixture.detectChanges();
     expect(component).toBeTruthy();
   });
-
-  it('should call featureTogglesService.isFeatureEnabled() on initialization', () => {
-    const spy = spyOn(featureTogglesService, 'isFeatureEnabled').and.returnValue(true);
-    fixture.detectChanges();
-    expect(spy).toHaveBeenCalled();
-    expect(spy).toHaveBeenCalledWith('dashboard');
-  });
-
-  it('should set useDeprecated based on feature toggle', () => {
-    spyOn(featureTogglesService, 'isFeatureEnabled').and.returnValue(true);
-    fixture.detectChanges();
-    expect(component.useDeprecated).toBe(true);
-  });
-
-  describe('when dashboard feature is enabled (new dashboard)', () => {
-    beforeEach(() => {
-      spyOn(featureTogglesService, 'isFeatureEnabled').and.returnValue(true);
-      fixture.detectChanges();
-    });
-
-    it('should show cd-dashboard-v3 in template when dashboard feature is enabled', () => {
-      const overviewElement = fixture.debugElement.query(By.css('[data-testid="cd-overview"]'));
-      const dashboardV3Element = fixture.debugElement.query(
-        By.css('[data-testid="cd-dashboard-v3"]')
-      );
-
-      expect(overviewElement).toBeNull();
-      expect(dashboardV3Element).toBeTruthy();
-    });
-
-    it('should set useDeprecated to false when feature is enabled', () => {
-      expect(component.useDeprecated).toBe(true);
-    });
-  });
-
-  describe('when dashboard feature is disabled (old dashboard)', () => {
-    beforeEach(() => {
-      spyOn(featureTogglesService, 'isFeatureEnabled').and.returnValue(false);
-      fixture.detectChanges();
-    });
-
-    it('should show cd-overview in template when dashboard feature is disabled', () => {
-      const overviewElement = fixture.debugElement.query(By.css('[data-testid="cd-overview"]'));
-      const dashboardV3Element = fixture.debugElement.query(
-        By.css('[data-testid="cd-dashboard-v3"]')
-      );
-
-      expect(overviewElement).toBeTruthy();
-      expect(dashboardV3Element).toBeNull();
-    });
-
-    it('should set useDeprecated to true when feature is disabled', () => {
-      expect(component.useDeprecated).toBe(false);
-    });
-  });
 });
index d736a3df24b1b735ba63190f8c56d0d4cc4a6f31..70d5d3908a127c436b97217c61a838bca88f5316 100644 (file)
@@ -2,34 +2,37 @@
      [narrow]="true"
      [condensed]="false"
      [fullWidth]="true"
-     class="overview">
+     class="cds-mt-5 cds-mb-5">
   <div cdsRow
-       [narrow]="true"
-       class="overview-row">
+       [narrow]="true">
     <div cdsCol
-         [columnNumbers]="{md: 16, lg: 11}">
+         class="cds-mb-5"
+         [columnNumbers]="{lg: 11}">
       <cds-tile>Health card</cds-tile>
     </div>
     <div cdsCol
-         [columnNumbers]="{md: 16, lg: 5}">
+         class="cds-mb-5"
+         [columnNumbers]="{lg: 5}">
       <cds-tile>Alerts card</cds-tile>
     </div>
   </div>
   <div cdsRow
-       [narrow]="true"
-       class="overview-row">
+       [narrow]="true">
     <div cdsCol
-         [columnNumbers]="{md: 16, lg: 11}">
+         class="cds-mb-5"
+         [columnNumbers]="{lg: 11}">
       <cds-tile>Storage card</cds-tile>
     </div>
     <div cdsCol
-         [columnNumbers]="{md: 16, lg: 5}">
+         class="cds-mb-5"
+         [columnNumbers]="{lg: 5}">
       <cds-tile>Docs card</cds-tile>
     </div>
   </div>
   <div cdsRow>
     <div cdsCol
-         [columnNumbers]="{md: 16, lg: 16}">
+         class="cds-mb-5"
+         [columnNumbers]="{lg: 16}">
       <cds-tile>Performance card</cds-tile>
     </div>
   </div>
index a84b2ba119ccc4bb7f732391e555929039bf0632..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,8 +0,0 @@
-.overview {
-  margin-top: var(--cds-spacing-05);
-  margin-bottom: var(--cds-spacing-05);
-}
-
-.overview-row {
-  margin-bottom: var(--cds-spacing-05);
-}
index cd1105e1284c4bf3b6aa04615ba2e0cb41f23034..41e8d5c40faf36fe2c5b1345a2f2bf47ef499876 100644 (file)
@@ -7,6 +7,6 @@
   <li *ngFor="let check of healthData |  keyvalue">
     <span [ngStyle]="check.value.severity | healthColor"
           [class.health-warn-description]="check.value.severity === 'HEALTH_WARN'">
-    {{ check.key }}</span>: {{ check.value.summary.message }} <br>
+    {{ check?.key }}</span>: {{ check?.value?.summary?.message }} <br>
   </li>
 </ul>
index 8bfda90c9e71be184b712a6ecbc78c75b4dc2204..8524f53c2f7728bcb8e4a3e78090b1ea59057df2 100644 (file)
@@ -68,7 +68,7 @@ export class LoginComponent implements OnInit {
     this.authService.login(this.model).subscribe(() => {
       const urlPath = this.postInstalled ? '/' : '/expand-cluster';
       let url = _.get(this.route.snapshot.queryParams, 'returnUrl', urlPath);
-      if (!this.postInstalled && this.route.snapshot.queryParams['returnUrl'] === '/dashboard') {
+      if (!this.postInstalled && this.route.snapshot.queryParams['returnUrl'] === '/overview') {
         url = '/expand-cluster';
       }
       if (url == '/expand-cluster') {
index 5cc3fcd9e35dd50b03693796ef259a3a14936bd0..0496931bb19ff4afef8551ae191c0e9e1732bd82 100644 (file)
@@ -62,8 +62,8 @@
   <div class="mt-4 text-center"
        *ngIf="!module_name; else enableButton">
     <button class="btn btn-primary"
-            [routerLink]="'/dashboard'"
-            i18n>Go To Dashboard</button>
+            [routerLink]="'/overview'"
+            i18n>Go To Overview</button>
   </div>
 </ng-template>
 
index aace1638ce6a9191b95dcb619bc999093c575c07..30075594d4014819da79481f8a24f729efc09631 100644 (file)
@@ -1,12 +1,12 @@
 <block-ui name="global">
   <cd-navigation>
     <div class="container-fluid h-100"
-         [ngClass]="{'dashboard': (router.url == '/dashboard' || router.url == '/dashboard_3' || router.url == '/multi-cluster/overview'), 'rgw-dashboard': (router.url == '/rgw/overview')}">
+         [ngClass]="{'overview': (router.url == '/overview' || router.url == '/dashboard_3' || router.url == '/multi-cluster/overview'), 'rgw-dashboard': (router.url == '/rgw/overview')}">
       <!-- ************************ -->
       <!-- ALERTS BANNER     -->
       <!-- ************************ -->
       <div class="cd-alert-container"
-           [ngClass]="{'ms-4 me-4': (router.url == '/dashboard' || router.url == '/dashboard_3' || router.url == '/multi-cluster/overview'), 'm-3': (router.url == '/rgw/overview')}">
+           [ngClass]="{'ms-4 me-4': (router.url == '/overview' || router.url == '/dashboard_3' || router.url == '/multi-cluster/overview'), 'm-3': (router.url == '/rgw/overview')}">
         <cd-pwd-expiration-notification></cd-pwd-expiration-notification>
         <cd-telemetry-notification></cd-telemetry-notification>
         <cd-motd></cd-motd>
index bb405a75fc4df8e6ec6cd4fbb2ed93642fdaa0d2..9cd7e009418ac69fca98289289e7c73d1e8416f9 100644 (file)
@@ -1,6 +1,6 @@
 @use './src/styles/vendor/variables' as vv;
 
-.dashboard {
+.overview {
   background-color: vv.$body-bg-alt;
   margin: 0;
   padding: 0;
index 31160159b7832e4a6e0022bfeae0aeb57bb10133..25527d9c0224585aef001d981962b2dccfd84cae 100644 (file)
@@ -54,7 +54,7 @@
   <!-- ***************************** -->
   <ng-template #brandTemplate>
     <a class="cds--header__name navbar-brand ms-3"
-       routerLink="/dashboard">
+       routerLink="/overview">
       <img src="assets/Ceph_Ceph_Logo_with_text_white.svg"
            alt="Ceph" />
     </a>
     <ng-container *ngIf="enabledFeature$ | async as enabledFeature">
       <cds-sidenav [expanded]="showMenuSidebar"
                    class="mt-5">
-        <!-- Dashboard -->
-        <cds-sidenav-item route="/dashboard"
+        <!-- Overview -->
+        <cds-sidenav-item route="/overview"
                           [useRouter]="true"
-                          title="Dashboard"
+                          title="Overview"
                           i18n-title
-                          class="nav-item tc_menuitem_dashboard">
+                          class="nav-item tc_menuitem_overview">
           <svg cdsIcon="template"
                icon
                size="20"></svg>
           <span i18n>
-            Dashboard</span>
+            Overview</span>
         </cds-sidenav-item>
         <!-- Multi-cluster Dashboard -->
         <cds-sidenav-menu title="Multi-cluster"
index df414feea018dd6e1b9aa2b801a53ce320811eef..9ee956f4bdf772194d19288661bc80583b9909dd 100644 (file)
@@ -227,7 +227,7 @@ describe('NavigationComponent', () => {
       fixture.detectChanges();
 
       const expectedTexts = {
-        '.tc_menuitem_dashboard': 'Dashboard',
+        '.tc_menuitem_overview': 'Overview',
         '.tc_submenuitem_multiCluster_overview': 'Overview',
         '.tc_submenuitem_multiCluster_manage_clusters': 'Manage clusters',
         '.tc_submenuitem_cluster_pool': 'Pools',
index 03577681e1a786a6e6d978b2c769677de4daf490..039ca9dd183ca8e63792a0d900390f89c91b5370 100644 (file)
@@ -12,7 +12,7 @@ export class FeatureTogglesMap {
   cephfs = true;
   rgw = true;
   nfs = true;
-  dashboardV3 = true;
+  dashboard = true;
 }
 export type Features = keyof FeatureTogglesMap;
 export type FeatureTogglesMap$ = Observable<FeatureTogglesMap>;
diff --git a/src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_spacings.scss b/src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_spacings.scss
new file mode 100644 (file)
index 0000000..12abe38
--- /dev/null
@@ -0,0 +1,33 @@
+@use '@carbon/layout';
+
+.cds-p-0 {
+  padding: 0;
+}
+
+.cds-pt-3 {
+  padding-top: layout.$spacing-03;
+}
+
+.cds-ml-3 {
+  margin-left: layout.$spacing-03;
+}
+
+.cds-mr-3 {
+  margin-right: layout.$spacing-03;
+}
+
+.cds-mb-2 {
+  margin-bottom: layout.$spacing-02;
+}
+
+.cds-mb-3 {
+  margin-bottom: layout.$spacing-03;
+}
+
+.cds-mb-5 {
+  margin-bottom: layout.$spacing-05;
+}
+
+.cds-mt-5 {
+  margin-top: layout.$spacing-05;
+}