From a85326f17eab3f1f4491a2b6e30704f9b9670a40 Mon Sep 17 00:00:00 2001 From: rozetko Date: Wed, 5 Feb 2020 00:59:41 +0300 Subject: [PATCH] "Export analytic units" button (#403) --- .../graph_panel/controllers/analytic_controller.ts | 4 ++++ src/panel/graph_panel/graph_ctrl.ts | 11 ++++++++++- src/panel/graph_panel/services/analytic_service.ts | 8 ++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/panel/graph_panel/controllers/analytic_controller.ts b/src/panel/graph_panel/controllers/analytic_controller.ts index 0195edd..e4cc505 100644 --- a/src/panel/graph_panel/controllers/analytic_controller.ts +++ b/src/panel/graph_panel/controllers/analytic_controller.ts @@ -115,6 +115,10 @@ export class AnalyticController { this._creatingNewAnalyticUnit = false; } + async exportAnalyticUnits(): Promise { + return this._analyticService.exportAnalyticUnits(this._panelId); + } + async saveNew(metric: MetricExpanded, datasource: DatasourceRequest) { this._savingNewAnalyticUnit = true; const newAnalyticUnit = createAnalyticUnit(this._newAnalyticUnit.toJSON()); diff --git a/src/panel/graph_panel/graph_ctrl.ts b/src/panel/graph_panel/graph_ctrl.ts index ced9849..bf2dce5 100644 --- a/src/panel/graph_panel/graph_ctrl.ts +++ b/src/panel/graph_panel/graph_ctrl.ts @@ -302,9 +302,10 @@ class GraphCtrl extends MetricsPanelCtrl { this.subTabIndex = 0; } - onInitPanelActions(actions) { + onInitPanelActions(actions: { text: string, click: string }[]): void { actions.push({ text: 'Export CSV', click: 'ctrl.exportCsv()' }); actions.push({ text: 'Toggle legend', click: 'ctrl.toggleLegend()' }); + actions.push({ text: 'Export analytic units', click: 'ctrl.exportAnalyticUnits()' }); } async onHasticDatasourceChange() { @@ -552,6 +553,14 @@ class GraphCtrl extends MetricsPanelCtrl { }); } + async exportAnalyticUnits(): Promise { + const json = await this.analyticsController.exportAnalyticUnits(); + this.publishAppEvent('show-modal', { + src: 'public/app/partials/edit_json.html', + model: { object: json, enableCopy: true } + }); + } + // getAnnotationsByTag(tag) { // var res = []; // for (var annotation of this.annotations) { diff --git a/src/panel/graph_panel/services/analytic_service.ts b/src/panel/graph_panel/services/analytic_service.ts index 64d1340..e23568f 100644 --- a/src/panel/graph_panel/services/analytic_service.ts +++ b/src/panel/graph_panel/services/analytic_service.ts @@ -61,6 +61,14 @@ export class AnalyticService { return resp.analyticUnits; } + async exportAnalyticUnits(panelId: string): Promise { + const resp = await this.get('/panels/template', { panelId }); + if(resp === undefined) { + return {}; + } + return resp; + } + async postNewAnalyticUnit( analyticUnit: AnalyticUnit, metric: MetricExpanded,