From d965d0b00f27481bf96a78d570e6f5bfb7c7dfc8 Mon Sep 17 00:00:00 2001 From: rozetko Date: Mon, 20 May 2019 11:52:04 +0300 Subject: [PATCH] UI improvements (#310) * disable Add Analytic Unit button * width fixes * cancel word instead of icon * Save button * Cancel creation * Disable Detect if not saved --- .../controllers/analytic_controller.ts | 18 +- src/panel/graph_panel/graph_ctrl.ts | 10 +- .../models/analytic_units/analytic_unit.ts | 4 + .../graph_panel/partials/tab_analytics.html | 162 ++++++++++-------- 4 files changed, 119 insertions(+), 75 deletions(-) diff --git a/src/panel/graph_panel/controllers/analytic_controller.ts b/src/panel/graph_panel/controllers/analytic_controller.ts index ba7e1f6..0312108 100644 --- a/src/panel/graph_panel/controllers/analytic_controller.ts +++ b/src/panel/graph_panel/controllers/analytic_controller.ts @@ -103,6 +103,11 @@ export class AnalyticController { } } + cancelCreation() { + delete this._newAnalyticUnit; + this._creatingNewAnalyticUnit = false; + } + async saveNew(metric: MetricExpanded, datasource: DatasourceRequest) { this._savingNewAnalyticUnit = true; const newAnalyticUnit = createAnalyticUnit(this._newAnalyticUnit.toJSON()); @@ -215,7 +220,7 @@ export class AnalyticController { } else { analyticUnit.labeledColor = value; } - await this.saveAnalyticUnit(analyticUnit); + analyticUnit.changed = true; } fetchAnalyticUnitsStatuses() { @@ -474,6 +479,10 @@ export class AnalyticController { await this._analyticService.setAnalyticUnitAlert(analyticUnit); } + toggleAnalyticUnitChange(analyticUnit: AnalyticUnit, value: boolean): void { + analyticUnit.changed = value; + } + async saveAnalyticUnit(analyticUnit: AnalyticUnit): Promise { if(analyticUnit.id === null || analyticUnit.id === undefined) { throw new Error('Cannot save analytic unit without id'); @@ -482,6 +491,7 @@ export class AnalyticController { analyticUnit.saving = true; await this._analyticService.updateAnalyticUnit(analyticUnit.toJSON()); analyticUnit.saving = false; + analyticUnit.changed = false; } async getAnalyticUnits(): Promise { @@ -671,14 +681,14 @@ export class AnalyticController { return this._tempIdCounted.toString(); } - public async toggleVisibility(id: AnalyticUnitId, value?: boolean) { + public toggleVisibility(id: AnalyticUnitId, value?: boolean) { const analyticUnit = this._analyticUnitsSet.byId(id); if(value !== undefined) { analyticUnit.visible = value; } else { analyticUnit.visible = !analyticUnit.visible; } - await this.saveAnalyticUnit(analyticUnit); + analyticUnit.changed = true; } public toggleInspect(id: AnalyticUnitId) { @@ -692,7 +702,7 @@ export class AnalyticController { if(value !== undefined) { analyticUnit.seasonalityPeriod.value = value; } - await this.saveAnalyticUnit(analyticUnit); + analyticUnit.changed = true; } public onAnalyticUnitDetectorChange(analyticUnitTypes: any) { diff --git a/src/panel/graph_panel/graph_ctrl.ts b/src/panel/graph_panel/graph_ctrl.ts index 53106fe..0f06577 100644 --- a/src/panel/graph_panel/graph_ctrl.ts +++ b/src/panel/graph_panel/graph_ctrl.ts @@ -562,6 +562,10 @@ class GraphCtrl extends MetricsPanelCtrl { this.analyticsController.createNew(); } + cancelCreation() { + this.analyticsController.cancelCreation(); + } + redetectAll() { this.analyticsController.redetectAll(); } @@ -600,7 +604,11 @@ class GraphCtrl extends MetricsPanelCtrl { await this.analyticsController.toggleAnalyticUnitAlert(analyticUnit); } - async onAnalyticUnitChange(analyticUnit: AnalyticUnit) { + onAnalyticUnitChange(analyticUnit: AnalyticUnit) { + this.analyticsController.toggleAnalyticUnitChange(analyticUnit, true); + } + + async onAnalyticUnitSave(analyticUnit: AnalyticUnit) { await this.analyticsController.saveAnalyticUnit(analyticUnit); this.refresh(); } diff --git a/src/panel/graph_panel/models/analytic_units/analytic_unit.ts b/src/panel/graph_panel/models/analytic_units/analytic_unit.ts index 1d39cc1..491b822 100644 --- a/src/panel/graph_panel/models/analytic_units/analytic_unit.ts +++ b/src/panel/graph_panel/models/analytic_units/analytic_unit.ts @@ -60,6 +60,7 @@ export class AnalyticUnit { private _segmentSet = new SegmentArray(); private _detectionSpans: DetectionSpan[]; private _inspect = false; + private _changed = false; private _status: string; private _error: string; @@ -117,6 +118,9 @@ export class AnalyticUnit { get saving(): boolean { return this._saving; } set saving(value: boolean) { this._saving = value; } + get changed(): boolean { return this._changed; } + set changed(value: boolean) { this._changed = value; } + get inspect(): boolean { return this._inspect; } set inspect(value: boolean) { this._inspect = value; } diff --git a/src/panel/graph_panel/partials/tab_analytics.html b/src/panel/graph_panel/partials/tab_analytics.html index 624e1b8..0f14006 100644 --- a/src/panel/graph_panel/partials/tab_analytics.html +++ b/src/panel/graph_panel/partials/tab_analytics.html @@ -37,7 +37,7 @@
- -
-
+
-
-
+
-
+
@@ -277,28 +242,75 @@
+ +
+
+
+ +
+ + +
+ +
+ +
+ +
+
-
+
+
+
-
+
- + + +
-
-