From 6f757b457980efadf895f45bedc5ee30f34acbf0 Mon Sep 17 00:00:00 2001 From: rozetko Date: Wed, 26 Feb 2020 15:37:41 +0300 Subject: [PATCH 01/11] rm reconnect button from webhooks tab --- src/panel/graph_panel/partials/tab_webhooks.html | 2 -- 1 file changed, 2 deletions(-) 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
From ca6cb8a201aa739c1b3511f6ccd00d1c002dd6ed Mon Sep 17 00:00:00 2001 From: rozetko Date: Wed, 26 Feb 2020 15:38:02 +0300 Subject: [PATCH 02/11] add alert to reconnect to datasource html --- .../partials/reconnect_to_datasource.html | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/panel/graph_panel/partials/reconnect_to_datasource.html b/src/panel/graph_panel/partials/reconnect_to_datasource.html index 1d56393..b8751cf 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
- +
+
+
+ + + +
+
+
+
+
+
+ +
+
From d2f4222e513ef89d941dea76c7603cee2d76aa9b Mon Sep 17 00:00:00 2001 From: rozetko Date: Wed, 26 Feb 2020 15:44:59 +0300 Subject: [PATCH 03/11] set hastic datasource availability on status change --- src/panel/graph_panel/graph_ctrl.ts | 6 +- .../graph_panel/services/analytic_service.ts | 58 ++++++++++++------- 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/src/panel/graph_panel/graph_ctrl.ts b/src/panel/graph_panel/graph_ctrl.ts index dd879e3..007f991 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, HasticDatasourceStatus } from './services/analytic_service'; import { AnalyticController } from './controllers/analytic_controller'; import { HasticPanelInfo } from './models/hastic_panel_info'; import { PanelTemplate, TemplateVariables } from './models/panel'; @@ -353,6 +353,10 @@ class GraphCtrl extends MetricsPanelCtrl { this.refresh(); } + get hasticDatasourceStatus(): HasticDatasourceStatus { + return this.analyticService.hasticDatasourceStatus; + } + issueQueries(datasource) { // this.annotationsPromise = this.annotationsSrv.getAnnotations({ // dashboard: this.dashboard, diff --git a/src/panel/graph_panel/services/analytic_service.ts b/src/panel/graph_panel/services/analytic_service.ts index 7888f38..e9bd017 100644 --- a/src/panel/graph_panel/services/analytic_service.ts +++ b/src/panel/graph_panel/services/analytic_service.ts @@ -15,7 +15,7 @@ import * as _ from 'lodash'; declare global { - interface Window { hasticDatasourcesStatuses: { [key: string]: HasticDatasourceStatus } } + interface Window { hasticDatasourcesAvailability: { [key: string]: HasticDatasourceAvailability } } } // TODO: TableTimeSeries is bad name @@ -24,17 +24,24 @@ export type TableTimeSeries = { columns: string[]; }; -export enum HasticDatasourceStatus { - AVAILABLE, - NOT_AVAILABLE +export enum HasticDatasourceAvailability { + AVAILABLE = 'success', + NOT_AVAILABLE = 'error' }; -const STATUS_TO_ALERT_TYPE_MAPPING = new Map([ - [HasticDatasourceStatus.AVAILABLE, 'alert-success'], - [HasticDatasourceStatus.NOT_AVAILABLE, 'alert-error'] -]); +export type HasticDatasourceStatus = { + testing: boolean, + availability: string, + message: string +} export class AnalyticService { + public hasticDatasourceStatus: HasticDatasourceStatus = { + testing: false, + availability: HasticDatasourceAvailability.NOT_AVAILABLE, + message: '' + }; + private _isUp: boolean = false; constructor( @@ -130,7 +137,7 @@ export class AnalyticService { 'Connected to Hastic Datasource', `Hastic datasource URL: "${this._hasticDatasourceURL}"` ]; - this._displayConnectionAlert(HasticDatasourceStatus.AVAILABLE, message); + this._displayConnectionAlert(HasticDatasourceAvailability.AVAILABLE, message); return true; } catch(e) { @@ -267,7 +274,11 @@ export class AnalyticService { } async checkDatasourceAvailability(): Promise { + this.hasticDatasourceStatus.testing = true; + this._isUp = await this._isDatasourceAvailable(); + + this.hasticDatasourceStatus.testing = false; return this._isUp; } @@ -357,7 +368,7 @@ export class AnalyticService { `No connection to Hastic Server. Status: ${statusText}`, `Hastic Datasource URL: "${this._hasticDatasourceURL}"`, ] - this._displayConnectionAlert(HasticDatasourceStatus.NOT_AVAILABLE, message); + this._displayConnectionAlert(HasticDatasourceAvailability.NOT_AVAILABLE, message); } private _displayConnectionTimeoutAlert(statusText: string): void { @@ -365,7 +376,7 @@ export class AnalyticService { `Timeout when connecting to Hastic Server. Status: ${statusText}`, `Hastic Datasource URL: "${this._hasticDatasourceURL}"`, ] - this._displayConnectionAlert(HasticDatasourceStatus.NOT_AVAILABLE, message); + this._displayConnectionAlert(HasticDatasourceAvailability.NOT_AVAILABLE, message); } private displayWrongUrlAlert(): void { @@ -373,7 +384,7 @@ export class AnalyticService { 'Please check Hastic Server URL', `Something is working at "${this._hasticDatasourceURL}" but it's not Hastic Server`, ] - this._displayConnectionAlert(HasticDatasourceStatus.NOT_AVAILABLE, message); + this._displayConnectionAlert(HasticDatasourceAvailability.NOT_AVAILABLE, message); } private displayUnsupportedVersionAlert(actual: string): void { @@ -381,14 +392,17 @@ export class AnalyticService { 'Unsupported Hastic Server version', `Hastic Server at "${this._hasticDatasourceURL}" has unsupported version (got ${actual}, should be ${SUPPORTED_SERVER_VERSION})`, ] - this._displayConnectionAlert(HasticDatasourceStatus.NOT_AVAILABLE, message); + this._displayConnectionAlert(HasticDatasourceAvailability.NOT_AVAILABLE, message); } public get isUp(): boolean { return this._isUp; } - private _displayConnectionAlert(status: HasticDatasourceStatus, message: string[]): void { + private _displayConnectionAlert(status: HasticDatasourceAvailability, message: string[]): void { + this.hasticDatasourceStatus.availability = status; + this.hasticDatasourceStatus.message = message.join('
'); + const statusChanged = this._updateHasticUrlStatus(status); if(!statusChanged) { @@ -396,7 +410,7 @@ export class AnalyticService { } appEvents.emit( - STATUS_TO_ALERT_TYPE_MAPPING.get(status), + `alert-${status}`, message ); } @@ -405,17 +419,17 @@ export class AnalyticService { * Updates hastic datasource status * @returns true if status has been changed */ - private _updateHasticUrlStatus(status: HasticDatasourceStatus): boolean { - if(!window.hasOwnProperty('hasticDatasourcesStatuses')) { - window.hasticDatasourcesStatuses = {}; + private _updateHasticUrlStatus(status: HasticDatasourceAvailability): boolean { + if(!window.hasOwnProperty('hasticDatasourcesAvailability')) { + window.hasticDatasourcesAvailability = {}; } - if(!window.hasticDatasourcesStatuses.hasOwnProperty(this._hasticDatasourceURL)) { - window.hasticDatasourcesStatuses[this._hasticDatasourceURL] = status; + if(!window.hasticDatasourcesAvailability.hasOwnProperty(this._hasticDatasourceURL)) { + window.hasticDatasourcesAvailability[this._hasticDatasourceURL] = status; return true; } - if(window.hasticDatasourcesStatuses[this._hasticDatasourceURL] !== status) { + if(window.hasticDatasourcesAvailability[this._hasticDatasourceURL] !== status) { appEvents.emit('hastic-datasource-status-changed', this._hasticDatasourceURL); - window.hasticDatasourcesStatuses[this._hasticDatasourceURL] = status; + window.hasticDatasourcesAvailability[this._hasticDatasourceURL] = status; return true; } return false; From ecafa79a100884f32fafa0326885ab6f63afd4a1 Mon Sep 17 00:00:00 2001 From: rozetko Date: Wed, 26 Feb 2020 15:45:26 +0300 Subject: [PATCH 04/11] fix --- src/panel/graph_panel/services/analytic_service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panel/graph_panel/services/analytic_service.ts b/src/panel/graph_panel/services/analytic_service.ts index e9bd017..c99d6a2 100644 --- a/src/panel/graph_panel/services/analytic_service.ts +++ b/src/panel/graph_panel/services/analytic_service.ts @@ -31,7 +31,7 @@ export enum HasticDatasourceAvailability { export type HasticDatasourceStatus = { testing: boolean, - availability: string, + availability: HasticDatasourceAvailability, message: string } From dff23a4649045265acb1ab41820e46a5a087f710 Mon Sep 17 00:00:00 2001 From: rozetko Date: Wed, 26 Feb 2020 15:48:15 +0300 Subject: [PATCH 05/11] fix --- src/panel/graph_panel/graph_ctrl.ts | 6 ++-- .../partials/reconnect_to_datasource.html | 12 +++---- .../graph_panel/services/analytic_service.ts | 34 +++++++++---------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/panel/graph_panel/graph_ctrl.ts b/src/panel/graph_panel/graph_ctrl.ts index 007f991..dc0047c 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, HasticDatasourceStatus } from './services/analytic_service'; +import { AnalyticService, HasticDatasourceTestingStatus } from './services/analytic_service'; import { AnalyticController } from './controllers/analytic_controller'; import { HasticPanelInfo } from './models/hastic_panel_info'; import { PanelTemplate, TemplateVariables } from './models/panel'; @@ -353,8 +353,8 @@ class GraphCtrl extends MetricsPanelCtrl { this.refresh(); } - get hasticDatasourceStatus(): HasticDatasourceStatus { - return this.analyticService.hasticDatasourceStatus; + get testingStatus(): HasticDatasourceTestingStatus { + return this.analyticService.testingStatus; } issueQueries(datasource) { diff --git a/src/panel/graph_panel/partials/reconnect_to_datasource.html b/src/panel/graph_panel/partials/reconnect_to_datasource.html index b8751cf..c671a1b 100644 --- a/src/panel/graph_panel/partials/reconnect_to_datasource.html +++ b/src/panel/graph_panel/partials/reconnect_to_datasource.html @@ -1,16 +1,16 @@
-
+
- - - + + +
-
+
-
+