Просмотр исходного кода

feat(export): more progress on dashboard export

Torkel Ödegaard 9 лет назад
Родитель
Сommit
79a8017fe9

+ 14 - 0
public/app/features/dashboard/exporter.ts

@@ -16,6 +16,7 @@ export class DashboardExporter {
     dynSrv.process(dash, {cleanUpOnly: true});
 
     var inputs = [];
+    var requires = {};
     var datasources = {};
     var promises = [];
 
@@ -30,6 +31,13 @@ export class DashboardExporter {
               pluginId: ds.meta.id,
             };
             panel.datasource = '${' + refName  +'}';
+
+            requires['datasource' + ds.meta.id] = {
+              type: 'datasource',
+              id: ds.meta.id,
+              name: ds.meta.name,
+              version: ds.meta.info.version
+            };
           }));
         }
       });
@@ -40,7 +48,13 @@ export class DashboardExporter {
         inputs.push(value);
       });
 
+      requires = _.map(requires, req =>  {
+        return req;
+      });
+
       dash["__inputs"] = inputs;
+      dash["__requires"] = requires;
+
       return dash;
     });
   }

+ 8 - 1
public/app/features/dashboard/specs/exporter_specs.ts

@@ -2,7 +2,7 @@ import {describe, beforeEach, it, sinon, expect, angularMocks} from 'test/lib/co
 
 import {DashboardExporter} from '../exporter';
 
-describe('given dashboard with repeated panels', function() {
+describe.only('given dashboard with repeated panels', function() {
   var dash, exported;
 
   beforeEach((done) => {
@@ -39,6 +39,7 @@ describe('given dashboard with repeated panels', function() {
     exporter.makeExportable(dash).then(clean => {
       exported = clean;
       done();
+      console.log('done');
     });
   });
 
@@ -56,5 +57,11 @@ describe('given dashboard with repeated panels', function() {
     expect(panel.datasource).to.be("${DS_GFDB}");
   });
 
+  it('should add datasource as input', function() {
+    expect(exported.__inputs[0].name).to.be("DS_GFDB");
+    expect(exported.__inputs[0].pluginId).to.be("testdb");
+    expect(exported.__inputs[0].type).to.be("datasource");
+  });
+
 });