|
|
@@ -1,8 +1,11 @@
|
|
|
import { Component, OnInit } from '@angular/core';
|
|
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
+import { map, startWith } from 'rxjs/operators';
|
|
|
|
|
|
-import { NavMenuItem } from '../../providers/nav-builder/nav-builder-types';
|
|
|
+import { HealthCheckService } from '../../providers/health-check/health-check.service';
|
|
|
+import { JobQueueService } from '../../providers/job-queue/job-queue.service';
|
|
|
+import { NavMenuBadge, NavMenuItem } from '../../providers/nav-builder/nav-builder-types';
|
|
|
import { NavBuilderService } from '../../providers/nav-builder/nav-builder.service';
|
|
|
|
|
|
@Component({
|
|
|
@@ -15,6 +18,8 @@ export class MainNavComponent implements OnInit {
|
|
|
private route: ActivatedRoute,
|
|
|
private router: Router,
|
|
|
public navBuilderService: NavBuilderService,
|
|
|
+ private healthCheckService: HealthCheckService,
|
|
|
+ private jobQueueService: JobQueueService,
|
|
|
) {}
|
|
|
|
|
|
ngOnInit(): void {
|
|
|
@@ -160,6 +165,43 @@ export class MainNavComponent implements OnInit {
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
+ {
|
|
|
+ id: 'system',
|
|
|
+ label: _('nav.system'),
|
|
|
+ requiresPermission: 'ReadSettings',
|
|
|
+ collapsible: true,
|
|
|
+ collapsedByDefault: true,
|
|
|
+ items: [
|
|
|
+ {
|
|
|
+ id: 'job-queue',
|
|
|
+ label: _('nav.job-queue'),
|
|
|
+ routerLink: ['/settings', 'jobs'],
|
|
|
+ icon: 'tick-chart',
|
|
|
+ statusBadge: this.jobQueueService.activeJobs$.pipe(
|
|
|
+ startWith([]),
|
|
|
+ map(
|
|
|
+ jobs =>
|
|
|
+ ({
|
|
|
+ type: jobs.length === 0 ? 'none' : 'info',
|
|
|
+ propagateToSection: jobs.length > 0,
|
|
|
+ } as NavMenuBadge),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 'system-status',
|
|
|
+ label: _('nav.system-status'),
|
|
|
+ routerLink: ['/settings', 'system-status'],
|
|
|
+ icon: 'rack-server',
|
|
|
+ statusBadge: this.healthCheckService.status$.pipe(
|
|
|
+ map(status => ({
|
|
|
+ type: status === 'ok' ? 'success' : 'error',
|
|
|
+ propagateToSection: status === 'error',
|
|
|
+ })),
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
]);
|
|
|
}
|
|
|
|