diff --git a/src/panel/graph_panel/graph_ctrl.ts b/src/panel/graph_panel/graph_ctrl.ts index 95fd7cd..8743310 100644 --- a/src/panel/graph_panel/graph_ctrl.ts +++ b/src/panel/graph_panel/graph_ctrl.ts @@ -9,7 +9,7 @@ import { MetricExpanded } from './models/metric'; import { DatasourceRequest } from './models/datasource'; import { AnalyticUnitId, AnalyticUnit, LabelingMode } from './models/analytic_units/analytic_unit'; import { BOUND_TYPES } from './models/analytic_units/anomaly_analytic_unit'; -import { AnalyticService } from './services/analytic_service'; +import { AnalyticService, HasticDatasourceConnectionStatus } from './services/analytic_service'; import { AnalyticController } from './controllers/analytic_controller'; import { HasticPanelInfo } from './models/hastic_panel_info'; import { PanelTemplate, TemplateVariables } from './models/panel'; @@ -363,6 +363,10 @@ class GraphCtrl extends MetricsPanelCtrl { this.refresh(); } + get connectionStatus(): HasticDatasourceConnectionStatus { + return this.analyticService.connectionStatus; + } + issueQueries(datasource) { // this.annotationsPromise = this.annotationsSrv.getAnnotations({ // dashboard: this.dashboard, diff --git a/src/panel/graph_panel/partials/reconnect_to_datasource.html b/src/panel/graph_panel/partials/reconnect_to_datasource.html index 1d56393..b1cbe6e 100644 --- a/src/panel/graph_panel/partials/reconnect_to_datasource.html +++ b/src/panel/graph_panel/partials/reconnect_to_datasource.html @@ -1,7 +1,20 @@
-
Hastic server at "{{ctrl.hasticDatasource.url}}" is not available
- +
+
+
+ + + +
+
+
+
+
+
+ +
+
diff --git a/src/panel/graph_panel/partials/tab_webhooks.html b/src/panel/graph_panel/partials/tab_webhooks.html index 13d6e0d..d340d3a 100644 --- a/src/panel/graph_panel/partials/tab_webhooks.html +++ b/src/panel/graph_panel/partials/tab_webhooks.html @@ -1,5 +1,3 @@ - -
Please create at least 1 analytic unit to enable webhooks
diff --git a/src/panel/graph_panel/services/analytic_service.ts b/src/panel/graph_panel/services/analytic_service.ts index 51abb66..a3337ff 100644 --- a/src/panel/graph_panel/services/analytic_service.ts +++ b/src/panel/graph_panel/services/analytic_service.ts @@ -25,16 +25,22 @@ export type TableTimeSeries = { }; export enum HasticDatasourceStatus { - AVAILABLE, - NOT_AVAILABLE + AVAILABLE = 'success', + NOT_AVAILABLE = 'error', + CONNECTING = 'info' }; -const STATUS_TO_ALERT_TYPE_MAPPING = new Map([ - [HasticDatasourceStatus.AVAILABLE, 'alert-success'], - [HasticDatasourceStatus.NOT_AVAILABLE, 'alert-error'] -]); +export type HasticDatasourceConnectionStatus = { + status: HasticDatasourceStatus, + message: string +} export class AnalyticService { + public connectionStatus: HasticDatasourceConnectionStatus = { + status: HasticDatasourceStatus.CONNECTING, + message: 'Connecting...' + }; + private _isUp: boolean = false; constructor( @@ -268,6 +274,9 @@ export class AnalyticService { } async checkDatasourceAvailability(): Promise { + this.connectionStatus.status = HasticDatasourceStatus.CONNECTING; + this.connectionStatus.message = 'Connecting...'; + this._isUp = await this._isDatasourceAvailable(); return this._isUp; } @@ -393,6 +402,9 @@ export class AnalyticService { } private _displayConnectionAlert(status: HasticDatasourceStatus, message: string[]): void { + this.connectionStatus.status = status; + this.connectionStatus.message = message.join('
'); + const statusChanged = this._updateHasticUrlStatus(status); if(!statusChanged) { @@ -400,7 +412,7 @@ export class AnalyticService { } appEvents.emit( - STATUS_TO_ALERT_TYPE_MAPPING.get(status), + `alert-${status}`, message ); }