|
@@ -1,95 +0,0 @@
|
|
|
-define([
|
|
|
|
|
- 'angular',
|
|
|
|
|
- 'lodash',
|
|
|
|
|
- 'app/core/utils/kbn'
|
|
|
|
|
-],
|
|
|
|
|
-function (angular, _, kbn) {
|
|
|
|
|
- 'use strict';
|
|
|
|
|
-
|
|
|
|
|
- var module = angular.module('grafana.controllers');
|
|
|
|
|
-
|
|
|
|
|
- module.controller('GraphiteImportCtrl', function($scope, datasourceSrv, dashboardSrv, $location) {
|
|
|
|
|
- $scope.options = {};
|
|
|
|
|
-
|
|
|
|
|
- $scope.init = function() {
|
|
|
|
|
- $scope.datasources = [];
|
|
|
|
|
- _.each(datasourceSrv.getAll(), function(ds) {
|
|
|
|
|
- if (ds.type === 'graphite') {
|
|
|
|
|
- $scope.options.sourceName = ds.name;
|
|
|
|
|
- $scope.datasources.push(ds.name);
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- $scope.listAll = function() {
|
|
|
|
|
- datasourceSrv.get($scope.options.sourceName).then(function(datasource) {
|
|
|
|
|
- $scope.datasource = datasource;
|
|
|
|
|
- $scope.datasource.listDashboards('').then(function(results) {
|
|
|
|
|
- $scope.dashboards = results;
|
|
|
|
|
- }, function(err) {
|
|
|
|
|
- var message = err.message || err.statusText || 'Error';
|
|
|
|
|
- $scope.appEvent('alert-error', ['Failed to load dashboard list from graphite', message]);
|
|
|
|
|
- });
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- $scope.import = function(dashName) {
|
|
|
|
|
- $scope.datasource.loadDashboard(dashName).then(function(results) {
|
|
|
|
|
- if (!results.data || !results.data.state) {
|
|
|
|
|
- throw { message: 'no dashboard state received from graphite' };
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- graphiteToGrafanaTranslator(results.data.state, $scope.datasource.name);
|
|
|
|
|
- }, function(err) {
|
|
|
|
|
- var message = err.message || err.statusText || 'Error';
|
|
|
|
|
- $scope.appEvent('alert-error', ['Failed to load dashboard from graphite', message]);
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- function graphiteToGrafanaTranslator(state, datasource) {
|
|
|
|
|
- var graphsPerRow = 2;
|
|
|
|
|
- var rowHeight = 300;
|
|
|
|
|
- var rowTemplate;
|
|
|
|
|
- var currentRow;
|
|
|
|
|
- var panel;
|
|
|
|
|
-
|
|
|
|
|
- rowTemplate = {
|
|
|
|
|
- title: '',
|
|
|
|
|
- panels: [],
|
|
|
|
|
- height: rowHeight
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- currentRow = angular.copy(rowTemplate);
|
|
|
|
|
-
|
|
|
|
|
- var newDashboard = dashboardSrv.create({});
|
|
|
|
|
- newDashboard.rows = [];
|
|
|
|
|
- newDashboard.title = state.name;
|
|
|
|
|
- newDashboard.rows.push(currentRow);
|
|
|
|
|
-
|
|
|
|
|
- _.each(state.graphs, function(graph, index) {
|
|
|
|
|
- if (currentRow.panels.length === graphsPerRow) {
|
|
|
|
|
- currentRow = angular.copy(rowTemplate);
|
|
|
|
|
- newDashboard.rows.push(currentRow);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- panel = {
|
|
|
|
|
- type: 'graph',
|
|
|
|
|
- span: 12 / graphsPerRow,
|
|
|
|
|
- title: graph[1].title,
|
|
|
|
|
- targets: [],
|
|
|
|
|
- datasource: datasource,
|
|
|
|
|
- id: index + 1
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- _.each(graph[1].target, function(target) {
|
|
|
|
|
- panel.targets.push({ target: target });
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- currentRow.panels.push(panel);
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- window.grafanaImportDashboard = newDashboard;
|
|
|
|
|
- $location.path('/dashboard-import/' + kbn.slugifyForUrl(newDashboard.title));
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
-});
|
|
|