@if (hwEnabled && hwSections) {
<div class="overview-health-card-hardware-sections">
- @for (section of sections; track $index; let isLast = $last) {
- <div
- class="overview-health-card-hardware-section"
- [class.border-subtle-right]="!isLast"
- >
- @for (row of section; track row.key) {
- <div class="overview-health-card-hardware-row">
- <span class="overview-health-card-icon-and-text">
- <cd-icon [type]="row.key"></cd-icon>
- <span class="cds--type-body-compact-01">
- {{ row.label }}
- </span>
- </span>
+ @for (section of hwSections; track $index; let isLast = $last) {
+ <div class="overview-health-card-hardware-section"
+ [class.border-subtle-right]="!isLast">
+ @for (row of section; track row.key) {
+ <div class="overview-health-card-hardware-row">
+ <span class="overview-health-card-icon-and-text">
+ <cd-icon [type]="row.icon"></cd-icon>
+ <span class="cds--type-body-compact-01">
+ {{ row.label }}
+ </span>
+ </span>
<span class="overview-health-card-hardware-status">
@if (row.error > 0) {
type HwRowVM = {
key: HwKey;
label: string;
+ icon: string;
ok: number;
error: number;
};
+const HW_ICON_MAP: Record<HwKey, string> = {
+ memory: 'dataEnrichment',
+ storage: 'vmdkDisk',
+ processors: 'chip',
+ network: 'network1',
+ power: 'plug',
+ fans: 'ibmStreamSets',
+};
+
@Component({
selector: 'cd-overview-health-card',
imports: [
return (Object.keys(HardwareNameMapping) as HwKey[]).map((key) => ({
key,
label: HardwareNameMapping[key],
+ icon: HW_ICON_MAP[key],
ok: Number(category?.[key]?.ok ?? 0),
error: Number(category?.[key]?.error ?? 0)
}));