export: provide more help regarding export format

this will provide the user with more info about
the export format and default to not use the format
for sharing on grafana.com etc.

ref #13781
This commit is contained in:
bergquist
2018-11-05 17:33:42 +01:00
parent 26cbc6be81
commit 17adb58d80
2 changed files with 40 additions and 12 deletions
@@ -15,11 +15,19 @@
You can share dashboards on <a class="external-link" href="https://grafana.com">Grafana.com</a>
</p>
<gf-form-switch
class="gf-form"
label="Export for sharing externally"
label-class="width-16"
checked="ctrl.shareExternally"
tooltip="Useful for sharing dashboard publicly on grafana.com. Will templatize data source names. Can then only be used with the specific dashboard import API.">
</gf-form-switch>
<div class="gf-form-button-row">
<button type="button" class="btn gf-form-btn width-10 btn-success" ng-click="ctrl.save()">
<button type="button" class="btn gf-form-btn width-10 btn-success" ng-click="ctrl.saveDashboardAsFile()">
<i class="fa fa-save"></i> Save to file
</button>
<button type="button" class="btn gf-form-btn width-10 btn-secondary" ng-click="ctrl.saveJson()">
<button type="button" class="btn gf-form-btn width-10 btn-secondary" ng-click="ctrl.viewJson()">
<i class="fa fa-file-text-o"></i> View JSON
</button>
<a class="btn btn-link" ng-click="ctrl.dismiss()">Cancel</a>
@@ -8,27 +8,47 @@ export class DashExportCtrl {
dash: any;
exporter: DashboardExporter;
dismiss: () => void;
shareExternally: boolean;
/** @ngInject */
constructor(private dashboardSrv, datasourceSrv, private $scope, private $rootScope) {
this.exporter = new DashboardExporter(datasourceSrv);
this.exporter.makeExportable(this.dashboardSrv.getCurrent()).then(dash => {
this.$scope.$apply(() => {
this.dash = dash;
});
});
this.dash = this.dashboardSrv.getCurrent();
}
save() {
const blob = new Blob([angular.toJson(this.dash, true)], {
saveDashboardAsFile() {
if (this.shareExternally) {
this.exporter.makeExportable(this.dash).then((dashboardJson: any) => {
this.$scope.$apply(() => {
this._saveFile(dashboardJson);
});
});
} else {
this._saveFile(this.dash.getSaveModelClone());
}
}
viewJson() {
if (this.shareExternally) {
this.exporter.makeExportable(this.dash).then((dashboardJson: any) => {
this.$scope.$apply(() => {
this._viewJson(dashboardJson);
});
});
} else {
this._viewJson(this.dash.getSaveModelClone());
}
}
_saveFile(dash: any) {
const blob = new Blob([angular.toJson(dash, true)], {
type: 'application/json;charset=utf-8',
});
saveAs(blob, this.dash.title + '-' + new Date().getTime() + '.json');
saveAs(blob, dash.title + '-' + new Date().getTime() + '.json');
}
saveJson() {
const clone = this.dash;
_viewJson(clone: any) {
const editScope = this.$rootScope.$new();
editScope.object = clone;
editScope.enableCopy = true;