diff --git a/src/Web/StellaOps.Web/src/app/features/integrations/advisory-vex-sources/advisory-source-catalog.component.ts b/src/Web/StellaOps.Web/src/app/features/integrations/advisory-vex-sources/advisory-source-catalog.component.ts index 40ba3e062..aa97cf441 100644 --- a/src/Web/StellaOps.Web/src/app/features/integrations/advisory-vex-sources/advisory-source-catalog.component.ts +++ b/src/Web/StellaOps.Web/src/app/features/integrations/advisory-vex-sources/advisory-source-catalog.component.ts @@ -1,5 +1,6 @@ import { ChangeDetectionStrategy, Component, computed, inject, OnInit, signal } from '@angular/core'; import { Router, RouterModule } from '@angular/router'; +import { PlatformContextStore } from '../../../core/context/platform-context.store'; import { forkJoin } from 'rxjs'; import { take } from 'rxjs/operators'; @@ -13,6 +14,7 @@ import { SourceCatalogItem, SourceStatusItem, SourceConnectivityResultDto, + AdvisorySourceMetrics, } from './source-management.api'; import { buildMirrorCommands, getAdvisoryVexNavigationExtras } from './advisory-vex-route-helpers'; @@ -130,6 +132,13 @@ interface CategoryGroup { {{ enabledCount() }} enabled {{ healthyCount() }} healthy {{ failedCount() }} failed + @if (totalAdvisoryCount() > 0) { + {{ totalAdvisoryCount().toLocaleString() }} advisories + {{ sourcesWithData() }} with data + } + @if (staleSourceCount() > 0) { + {{ staleSourceCount() }} stale + } @if (mirrorHealth() && mirrorHealth()!.totalDomains > 0) { {{ mirrorHealth()!.totalDomains }} mirror domains {{ mirrorHealth()!.totalAdvisoryCount }} bundled advisories @@ -144,16 +153,7 @@ interface CategoryGroup { [value]="searchTerm()" (input)="onSearchInput($event)" /> - + @for (group of groupedByCategory(); track group.category) { @@ -217,6 +217,16 @@ interface CategoryGroup { + @if (getSourceMetric(source.id); as m) { + + {{ m.totalAdvisories.toLocaleString() }} advisories + + + {{ formatRelativeTime(m.lastSuccessAt) }} + + } +