1 import { Component, OnInit, ViewChild } from '@angular/core';
2 import { ActivatedRoute, Router } from '@angular/router';
4 import { TabDirective, TabsetComponent } from 'ngx-bootstrap/tabs';
6 import { PrometheusService } from '../../../../shared/api/prometheus.service';
7 import { CephReleaseNamePipe } from '../../../../shared/pipes/ceph-release-name.pipe';
8 import { PrometheusAlertService } from '../../../../shared/services/prometheus-alert.service';
9 import { SummaryService } from '../../../../shared/services/summary.service';
12 selector: 'cd-monitoring-list',
13 templateUrl: './monitoring-list.component.html',
14 styleUrls: ['./monitoring-list.component.scss']
16 export class MonitoringListComponent implements OnInit {
18 public prometheusAlertService: PrometheusAlertService,
19 private prometheusService: PrometheusService,
20 private route: ActivatedRoute,
21 private router: Router,
22 private summaryService: SummaryService,
23 private cephReleaseNamePipe: CephReleaseNamePipe
25 @ViewChild('tabs', { static: true })
26 tabs: TabsetComponent;
28 isPrometheusConfigured = false;
29 isAlertmanagerConfigured = false;
34 this.prometheusService.ifAlertmanagerConfigured(() => {
35 this.isAlertmanagerConfigured = true;
37 this.prometheusService.ifPrometheusConfigured(() => {
38 this.isPrometheusConfigured = true;
41 const subs = this.summaryService.subscribe((summary: any) => {
46 const releaseName = this.cephReleaseNamePipe.transform(summary.version);
47 this.docsUrl = `https://docs.ceph.com/docs/${releaseName}/mgr/dashboard/#enabling-prometheus-alerting`;
54 // Activate tab according to given fragment
55 if (this.route.snapshot.fragment) {
56 const tab = this.tabs.tabs.find(
57 (t) => t.elementRef.nativeElement.id === this.route.snapshot.fragment
62 // Ensure fragment is not removed, so page can always be reloaded with the same tab open.
63 this.router.navigate([], { fragment: this.route.snapshot.fragment });
67 setFragment(element: TabDirective) {
68 this.router.navigate([], { fragment: element.id });