import { ServiceFormComponent } from './ceph/cluster/services/service-form/service-form.component';
import { ServicesComponent } from './ceph/cluster/services/services.component';
import { TelemetryComponent } from './ceph/cluster/telemetry/telemetry.component';
-import { DashboardComponent } from './ceph/dashboard/dashboard/dashboard.component';
-import { NewDashboardComponent } from './ceph/new-dashboard/dashboard/dashboard.component';
+import { DeprecatedDashboardComponent } from './ceph/dashboard/dashboard/dashboard.component';
+import { DashboardComponent } from './ceph/new-dashboard/dashboard/dashboard.component';
import { NfsFormComponent } from './ceph/nfs/nfs-form/nfs-form.component';
import { NfsListComponent } from './ceph/nfs/nfs-list/nfs-list.component';
import { PerformanceCounterComponent } from './ceph/performance-counter/performance-counter/performance-counter.component';
canActivate: [AuthGuardService, ChangePasswordGuardService],
canActivateChild: [AuthGuardService, ChangePasswordGuardService],
children: [
- { path: 'dashboard', component: DashboardComponent },
- { path: 'dashboard_3', component: NewDashboardComponent },
+ { path: 'dashboard', component: DeprecatedDashboardComponent },
+ { path: 'dashboard_3', component: DashboardComponent },
{ path: 'error', component: ErrorComponent },
// Cluster
import { SharedModule } from '~/app/shared/shared.module';
import { CephSharedModule } from '../shared/ceph-shared.module';
import { FeedbackComponent } from '../shared/feedback/feedback.component';
-import { DashboardComponent } from './dashboard/dashboard.component';
+import { DeprecatedDashboardComponent } from './dashboard/dashboard.component';
import { HealthPieComponent } from './health-pie/health-pie.component';
import { HealthComponent } from './health/health.component';
import { InfoCardComponent } from './info-card/info-card.component';
declarations: [
HealthComponent,
- DashboardComponent,
+ DeprecatedDashboardComponent,
MonSummaryPipe,
OsdSummaryPipe,
MgrSummaryPipe,
import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';
import { configureTestBed } from '~/testing/unit-test-helper';
-import { DashboardComponent } from './dashboard.component';
+import { DeprecatedDashboardComponent } from './dashboard.component';
describe('DashboardComponent', () => {
- let component: DashboardComponent;
- let fixture: ComponentFixture<DashboardComponent>;
+ let component: DeprecatedDashboardComponent;
+ let fixture: ComponentFixture<DeprecatedDashboardComponent>;
configureTestBed({
imports: [NgbNavModule],
- declarations: [DashboardComponent],
+ declarations: [DeprecatedDashboardComponent],
schemas: [NO_ERRORS_SCHEMA]
});
beforeEach(() => {
- fixture = TestBed.createComponent(DashboardComponent);
+ fixture = TestBed.createComponent(DeprecatedDashboardComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
templateUrl: './dashboard.component.html',
styleUrls: ['./dashboard.component.scss']
})
-export class DashboardComponent {
+export class DeprecatedDashboardComponent {
hasGrafana = false; // TODO: Temporary var, remove when grafana is implemented
}
-<div class="card shadow-sm"
- [ngClass]="cardClass">
- <div class="card-body align-items-center justify-content-center">
- <h4 class="card-title m-4">
- <a *ngIf="link; else noLinkTitle"
- [routerLink]="link">{{ cardTitle }}</a>
-
- <ng-template #noLinkTitle>
- {{ cardTitle }}
- </ng-template>
+<div class="card shadow-sm">
+ <div class="card-body">
+ <h4 class="card-title m-2">
+ {{ title }}
</h4>
-
- <div class="card-text text-center"
- [ngClass]="contentClass">
+ <div class="card-text">
<ng-content></ng-content>
</div>
</div>
-@use './src/styles/vendor/variables' as vv;
-@use './src/styles/defaults/mixins';
-
-$card-font-min-width: 320px;
-$card-font-max-width: 2048px;
-$card-font-min-size: 12px;
-$card-font-max-size: 21px;
-
-.card {
- @include mixins.fluid-font-size(
- $card-font-min-width,
- $card-font-max-width,
- $card-font-min-size,
- $card-font-max-size
- );
- border: 0.5px solid vv.$gray-300;
- border-radius: 3px;
- height: 100%;
-
- .card-body {
- padding-top: 40px !important;
-
- .card-title {
- left: -0.6rem;
- position: absolute;
- top: -0.3rem;
- }
- }
-}
-
-.no-center {
- left: unset;
- position: unset;
- top: unset;
- transform: unset;
-}
-
-.content-highlight {
- font-weight: bold;
-}
it('should create', () => {
expect(component).toBeTruthy();
});
+
+ it('Setting cards title makes title visible', () => {
+ const title = 'Card Title';
+ component.title = title;
+ fixture.detectChanges();
+ const titleDiv = fixture.debugElement.nativeElement.querySelector('.card-title');
+
+ expect(titleDiv.textContent).toContain(title);
+ });
});
})
export class CardComponent {
@Input()
- cardTitle: string;
- @Input()
- link: string;
- @Input()
- cardClass = '';
- @Input()
- contentClass: string;
+ title: string;
}
import { SharedModule } from '~/app/shared/shared.module';
import { CephSharedModule } from '../shared/ceph-shared.module';
import { CardComponent } from './card/card.component';
-import { NewDashboardComponent } from './dashboard/dashboard.component';
+import { DashboardComponent } from './dashboard/dashboard.component';
@NgModule({
imports: [
ReactiveFormsModule
],
- declarations: [NewDashboardComponent, CardComponent]
+ declarations: [DashboardComponent, CardComponent]
})
export class NewDashboardModule {}
<div class="container-fluid">
<div class="row mx-0">
- <cd-card cardTitle="Details"
- i18n-cardTitle
+ <cd-card title="Details"
+ i18n-title
class="col-sm-3 px-3">
Text
</cd-card>
- <cd-card cardTitle="Status"
- i18n-cardTitle
+ <cd-card title="Status"
+ i18n-title
class="col-sm-6 px-3">
Text
</cd-card>
- <cd-card cardTitle="Capacity"
- i18n-cardTitle
+ <cd-card title="Capacity"
+ i18n-title
class="col-sm-3 px-3">
Text
</cd-card>
</div>
<div class="row mx-0">
- <cd-card cardTitle="Inventory"
- i18n-cardTitle
+ <cd-card title="Inventory"
+ i18n-title
class="col-sm-3 px-3">
Text
</cd-card>
- <cd-card cardTitle="Capacity utilization"
- i18n-cardTitle
+ <cd-card title="Capacity utilization"
+ i18n-title
class="col-sm-6 px-3">
Text
</cd-card>
- <cd-card cardTitle="Events"
- i18n-cardTitle
+ <cd-card title="Events"
+ i18n-title
class="col-sm-3 px-3">
Text
</cd-card>
--- /dev/null
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+
+import { configureTestBed } from '~/testing/unit-test-helper';
+import { CardComponent } from '../card/card.component';
+import { DashboardComponent } from './dashboard.component';
+
+describe('CardComponent', () => {
+ let component: DashboardComponent;
+ let fixture: ComponentFixture<DashboardComponent>;
+
+ configureTestBed({
+ imports: [RouterTestingModule],
+ declarations: [DashboardComponent, CardComponent]
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DashboardComponent);
+ component = fixture.componentInstance;
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+
+ it('should render all cards', () => {
+ const dashboardCards = fixture.debugElement.nativeElement.querySelectorAll('cd-card');
+ expect(dashboardCards.length).toBe(6);
+ });
+});
import { Component } from '@angular/core';
@Component({
- selector: 'cd-new-dashboard',
+ selector: 'cd-dashboard',
templateUrl: './dashboard.component.html',
styleUrls: ['./dashboard.component.scss']
})
-export class NewDashboardComponent {}
+export class DashboardComponent {}