1 import { Component, Input, OnChanges, OnInit } from '@angular/core';
2 import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
4 import { SettingsService } from '~/app/shared/api/settings.service';
5 import { Icons } from '~/app/shared/enum/icons.enum';
8 selector: 'cd-grafana',
9 templateUrl: './grafana.component.html',
10 styleUrls: ['./grafana.component.scss']
12 export class GrafanaComponent implements OnInit, OnChanges {
22 datasource = 'Dashboard1';
24 styles: Record<string, string> = {};
25 dashboardExist = true;
29 readonly DEFAULT_TIME: string = 'from=now-1h&to=now';
38 constructor(private sanitizer: DomSanitizer, private settingsService: SettingsService) {
41 name: $localize`Last 5 minutes`,
42 value: 'from=now-5m&to=now'
45 name: $localize`Last 15 minutes`,
46 value: 'from=now-15m&to=now'
49 name: $localize`Last 30 minutes`,
50 value: 'from=now-30m&to=now'
53 name: $localize`Last 1 hour (Default)`,
54 value: 'from=now-1h&to=now'
57 name: $localize`Last 3 hours`,
58 value: 'from=now-3h&to=now'
61 name: $localize`Last 6 hours`,
62 value: 'from=now-6h&to=now'
65 name: $localize`Last 12 hours`,
66 value: 'from=now-12h&to=now'
69 name: $localize`Last 24 hours`,
70 value: 'from=now-24h&to=now'
73 name: $localize`Yesterday`,
74 value: 'from=now-1d%2Fd&to=now-1d%2Fd'
77 name: $localize`Today so far`,
78 value: 'from=now%2Fd&to=now'
81 name: $localize`Day before yesterday`,
82 value: 'from=now-2d%2Fd&to=now-2d%2Fd'
85 name: $localize`Last 2 days`,
86 value: 'from=now-2d&to=now'
89 name: $localize`This day last week`,
90 value: 'from=now-7d%2Fd&to=now-7d%2Fd'
93 name: $localize`Previous week`,
94 value: 'from=now-1w%2Fw&to=now-1w%2Fw'
97 name: $localize`This week so far`,
98 value: 'from=now%2Fw&to=now'
101 name: $localize`Last 7 days`,
102 value: 'from=now-7d&to=now'
105 name: $localize`Previous month`,
106 value: 'from=now-1M%2FM&to=now-1M%2FM'
109 name: $localize`This month so far`,
110 value: 'from=now%2FM&to=now'
113 name: $localize`Last 30 days`,
114 value: 'from=now-30d&to=now'
117 name: $localize`Last 90 days`,
118 value: 'from=now-90d&to=now'
121 name: $localize`Last 6 months`,
122 value: 'from=now-6M&to=now'
125 name: $localize`Last 1 year`,
126 value: 'from=now-1y&to=now'
129 name: $localize`Previous year`,
130 value: 'from=now-1y%2Fy&to=now-1y%2Fy'
133 name: $localize`This year so far`,
134 value: 'from=now%2Fy&to=now'
137 name: $localize`Last 2 years`,
138 value: 'from=now-2y&to=now'
141 name: $localize`Last 5 years`,
142 value: 'from=now-5y&to=now'
148 this.time = this.DEFAULT_TIME;
152 three: 'grafana_three',
156 this.settingsService.ifSettingConfigured('api/grafana/url', (url) => {
157 this.grafanaExist = true;
158 this.loading = false;
159 this.baseUrl = url + '/d/';
162 this.panelStyle = this.styles[this.grafanaStyle];
167 .validateGrafanaDashboardUrl(this.uid)
168 .subscribe((data: any) => (this.dashboardExist = data === 200));
175 `&var-datasource=${this.datasource}` +
179 this.grafanaSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.url);
182 onTimepickerChange() {
183 if (this.grafanaExist) {
189 this.time = this.DEFAULT_TIME;
190 if (this.grafanaExist) {
196 if (this.grafanaExist) {