File size: 1,195 Bytes
602851d
 
 
 
 
 
bf28b11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
602851d
bf28b11
 
 
 
602851d
bf28b11
 
602851d
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<section class="dashboard">
  <header class="dashboard-header">
    <h1 class="dashboard-title">PulseFabric Monitor</h1>
    <p class="dashboard-subtitle">Real-time infrastructure monitoring dashboard</p>
  </header>

  @if (loading()) {
    <div class="state-container">
      <mat-spinner diameter="48" />
    </div>
  } @else if (error()) {
    <div class="state-container state-error">
      <span class="error-message">{{ error() }}</span>
    </div>
  } @else {
    <div class="kpi-grid">
      @for (kpi of kpis(); track kpi.title) {
        <app-kpi-card
          [title]="kpi.title"
          [value]="kpi.value"
          [unit]="kpi.unit ?? ''"
          [trend]="kpi.trend"
          [trendLabel]="kpi.trendLabel"
          [icon]="kpi.icon"
        />
      }
    </div>

    <div class="chart-grid">
      <app-chart-widget title="24h Traffic / Latency Trend" [options]="trafficChartOptions()" />
      <app-chart-widget title="Incident Severity by Region" [options]="incidentChartOptions()" />
    </div>

    <app-alert-list [alerts]="alerts()" />
  }

  <div id="ai-dropzone" class="ai-dropzone">
    <span class="dropzone-label">AI Widget Drop Zone</span>
  </div>
</section>