From dc11f1da81fb4dfa7758813d4dbc90c8e33ef9cb Mon Sep 17 00:00:00 2001 From: Andrzej Ressel Date: Sun, 8 Apr 2018 20:00:18 +0200 Subject: [PATCH 1/3] Make dashboard JSON editable --- public/app/features/dashboard/dashboard_srv.ts | 6 +++++- public/app/features/dashboard/settings/settings.ts | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/public/app/features/dashboard/dashboard_srv.ts b/public/app/features/dashboard/dashboard_srv.ts index 9d766fdfc3f..0ce448b6e88 100644 --- a/public/app/features/dashboard/dashboard_srv.ts +++ b/public/app/features/dashboard/dashboard_srv.ts @@ -100,7 +100,7 @@ export class DashboardSrv { .catch(this.handleSaveDashboardError.bind(this, clone, options)); } - saveDashboard(options, clone) { + saveDashboard(options?, clone?) { if (clone) { this.setCurrent(this.create(clone, this.dash.meta)); } @@ -120,6 +120,10 @@ export class DashboardSrv { return this.save(this.dash.getSaveModelClone(), options); } + saveJSONDashboard(json: string) { + return this.save(JSON.parse(json), {}); + } + showSaveAsModal() { this.$rootScope.appEvent('show-modal', { templateHtml: '', diff --git a/public/app/features/dashboard/settings/settings.ts b/public/app/features/dashboard/settings/settings.ts index e9d5c6180be..9949b52dd45 100755 --- a/public/app/features/dashboard/settings/settings.ts +++ b/public/app/features/dashboard/settings/settings.ts @@ -134,7 +134,13 @@ export class SettingsCtrl { } saveDashboard() { - this.dashboardSrv.saveDashboard(); + if (this.viewId === 'view_json') { + this.dashboardSrv.saveJSONDashboard(this.json).then(() => { + window.location.reload(); + }); + } else { + this.dashboardSrv.saveDashboard(); + } } onPostSave() { From bff174dba90a5467ecef62961d49fdd13b53f512 Mon Sep 17 00:00:00 2001 From: Andrzej Ressel Date: Wed, 11 Apr 2018 22:59:29 +0200 Subject: [PATCH 2/3] PR comments --- .../features/dashboard/settings/settings.html | 8 ++++-- .../features/dashboard/settings/settings.ts | 27 ++++++++++++------- .../sass/components/_dashboard_settings.scss | 4 +++ 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/public/app/features/dashboard/settings/settings.html b/public/app/features/dashboard/settings/settings.html index 5103fab8b75..3e9796239dc 100644 --- a/public/app/features/dashboard/settings/settings.html +++ b/public/app/features/dashboard/settings/settings.html @@ -87,12 +87,16 @@ -
-

View JSON

+
+

Dashboard JSON

+ +
diff --git a/public/app/features/dashboard/settings/settings.ts b/public/app/features/dashboard/settings/settings.ts index 9949b52dd45..0f940c422e1 100755 --- a/public/app/features/dashboard/settings/settings.ts +++ b/public/app/features/dashboard/settings/settings.ts @@ -17,7 +17,14 @@ export class SettingsCtrl { hasUnsavedFolderChange: boolean; /** @ngInject */ - constructor(private $scope, private $location, private $rootScope, private backendSrv, private dashboardSrv) { + constructor( + private $scope, + private $route, + private $location, + private $rootScope, + private backendSrv, + private dashboardSrv + ) { // temp hack for annotations and variables editors // that rely on inherited scope $scope.dashboard = this.dashboard; @@ -93,8 +100,8 @@ export class SettingsCtrl { } this.sections.push({ - title: 'View JSON', - id: 'view_json', + title: 'Dashboard JSON', + id: 'dashboard_json', icon: 'gicon gicon-json', }); @@ -134,13 +141,13 @@ export class SettingsCtrl { } saveDashboard() { - if (this.viewId === 'view_json') { - this.dashboardSrv.saveJSONDashboard(this.json).then(() => { - window.location.reload(); - }); - } else { - this.dashboardSrv.saveDashboard(); - } + this.dashboardSrv.saveDashboard(); + } + + saveDashboardJson() { + this.dashboardSrv.saveJSONDashboard(this.json).then(() => { + this.$route.reload(); + }); } onPostSave() { diff --git a/public/sass/components/_dashboard_settings.scss b/public/sass/components/_dashboard_settings.scss index 11d943eb13c..873da7f4935 100644 --- a/public/sass/components/_dashboard_settings.scss +++ b/public/sass/components/_dashboard_settings.scss @@ -80,3 +80,7 @@ margin-bottom: 10px; } } + +.dashboard-settings__json-save-button { + margin-top: $spacer; +} From eb3aa7b19324cb24af30994a8ad9d56cb2d0ecc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 8 May 2018 11:24:20 +0200 Subject: [PATCH 3/3] PR: ux changes to #11528 --- .../app/features/dashboard/settings/settings.html | 14 ++++++++++---- public/app/features/dashboard/settings/settings.ts | 2 +- public/sass/components/_dashboard_settings.scss | 7 +++++++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/public/app/features/dashboard/settings/settings.html b/public/app/features/dashboard/settings/settings.html index 3e9796239dc..46d84a7a2fd 100644 --- a/public/app/features/dashboard/settings/settings.html +++ b/public/app/features/dashboard/settings/settings.html @@ -88,15 +88,21 @@
-

Dashboard JSON

+

JSON Model

+
+ The JSON Model below is data structure that defines the dashboard. Including settings, panel settings & layout, + queries etc. +
- +
+ +
diff --git a/public/app/features/dashboard/settings/settings.ts b/public/app/features/dashboard/settings/settings.ts index 0d24dc7c7cf..5acbbcf29c5 100755 --- a/public/app/features/dashboard/settings/settings.ts +++ b/public/app/features/dashboard/settings/settings.ts @@ -100,7 +100,7 @@ export class SettingsCtrl { } this.sections.push({ - title: 'Dashboard JSON', + title: 'JSON Model', id: 'dashboard_json', icon: 'gicon gicon-json', }); diff --git a/public/sass/components/_dashboard_settings.scss b/public/sass/components/_dashboard_settings.scss index 49154b0b485..5e17e025196 100644 --- a/public/sass/components/_dashboard_settings.scss +++ b/public/sass/components/_dashboard_settings.scss @@ -53,6 +53,13 @@ margin-bottom: $spacer*2; } +.dashboard-settings__subheader { + color: $text-muted; + font-style: italic; + position: relative; + top: -1.5rem; +} + .dashboard-settings__nav-item { padding: 7px 12px; color: $text-color;