mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 16:15:42 -06:00
82 lines
2.4 KiB
JavaScript
82 lines
2.4 KiB
JavaScript
define([
|
|
'angular',
|
|
'lodash',
|
|
],
|
|
function (angular, _) {
|
|
'use strict';
|
|
|
|
var module = angular.module('grafana.controllers');
|
|
|
|
module.controller('DashboardImportCtrl', function($scope, $http, backendSrv, datasourceSrv) {
|
|
|
|
$scope.init = function() {
|
|
$scope.datasources = [];
|
|
$scope.sourceName = 'grafana';
|
|
$scope.destName = 'grafana';
|
|
$scope.imported = [];
|
|
$scope.dashboards = [];
|
|
$scope.infoText = '';
|
|
$scope.importing = false;
|
|
|
|
_.each(datasourceSrv.getAll(), function(ds, key) {
|
|
if (ds.type === 'influxdb_08' || ds.type === 'elasticsearch') {
|
|
$scope.sourceName = key;
|
|
$scope.datasources.push(key);
|
|
}
|
|
});
|
|
};
|
|
|
|
$scope.startImport = function() {
|
|
datasourceSrv.get($scope.sourceName).then(function(ds) {
|
|
$scope.dashboardSource = ds;
|
|
$scope.dashboardSource.searchDashboards('title:').then(function(results) {
|
|
$scope.dashboards = results.dashboards;
|
|
|
|
if ($scope.dashboards.length === 0) {
|
|
$scope.infoText = 'No dashboards found';
|
|
return;
|
|
}
|
|
|
|
$scope.importing = true;
|
|
$scope.imported = [];
|
|
$scope.next();
|
|
}, function(err) {
|
|
var resp = err.message || err.statusText || 'Unknown error';
|
|
var message = "Failed to load dashboards from selected data source, response from server was: " + resp;
|
|
$scope.appEvent('alert-error', ['Import failed', message]);
|
|
});
|
|
});
|
|
};
|
|
|
|
$scope.next = function() {
|
|
if ($scope.dashboards.length === 0) {
|
|
$scope.infoText = "Done! Imported " + $scope.imported.length + " dashboards";
|
|
}
|
|
|
|
var dash = $scope.dashboards.shift();
|
|
if (!dash.title) {
|
|
console.log(dash);
|
|
return;
|
|
}
|
|
|
|
var infoObj = {name: dash.title, info: 'Importing...'};
|
|
$scope.imported.push(infoObj);
|
|
$scope.infoText = "Importing " + $scope.imported.length + '/' + ($scope.imported.length + $scope.dashboards.length);
|
|
|
|
$scope.dashboardSource.getDashboard(dash.id).then(function(loadedDash) {
|
|
backendSrv.saveDashboard(loadedDash).then(function() {
|
|
infoObj.info = "Done!";
|
|
$scope.next();
|
|
}, function(err) {
|
|
err.isHandled = true;
|
|
infoObj.info = "Error: " + (err.data || { message: 'Unknown' }).message;
|
|
$scope.next();
|
|
});
|
|
});
|
|
};
|
|
|
|
$scope.init();
|
|
|
|
});
|
|
});
|