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 { PrometheusAlertService } from '../../../../shared/services/prometheus-alert.service';
10 selector: 'cd-monitoring-list',
11 templateUrl: './monitoring-list.component.html',
12 styleUrls: ['./monitoring-list.component.scss']
14 export class MonitoringListComponent implements OnInit {
16 public prometheusAlertService: PrometheusAlertService,
17 private prometheusService: PrometheusService,
18 private route: ActivatedRoute,
19 private router: Router
21 @ViewChild('tabs', { static: true })
22 tabs: TabsetComponent;
24 isPrometheusConfigured = false;
25 isAlertmanagerConfigured = false;
28 this.prometheusService.ifAlertmanagerConfigured(() => {
29 this.isAlertmanagerConfigured = true;
31 this.prometheusService.ifPrometheusConfigured(() => {
32 this.isPrometheusConfigured = true;
35 // Activate tab according to given fragment
36 if (this.route.snapshot.fragment) {
37 const tab = this.tabs.tabs.find(
38 (t) => t.elementRef.nativeElement.id === this.route.snapshot.fragment
43 // Ensure fragment is not removed, so page can always be reloaded with the same tab open.
44 this.router.navigate([], { fragment: this.route.snapshot.fragment });
48 setFragment(element: TabDirective) {
49 this.router.navigate([], { fragment: element.id });