From eb6099a93fa685d9cdc47ff8dcab0ccfe20668d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 7 Aug 2014 16:04:44 +0200 Subject: [PATCH] Began work on pro modification --- src/app/components/require.config.js | 2 +- src/app/services/datasourceSrv.js | 5 +- src/app/services/grafana/grafanaDatasource.js | 48 +++++++++++++++++++ 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 src/app/services/grafana/grafanaDatasource.js diff --git a/src/app/components/require.config.js b/src/app/components/require.config.js index 0dff1bed099..7c488565525 100644 --- a/src/app/components/require.config.js +++ b/src/app/components/require.config.js @@ -2,7 +2,7 @@ * Bootstrap require with the needed config, then load the app.js module. */ require.config({ - baseUrl: 'app', + baseUrl: 'public/app', paths: { config: ['../config', '../config.sample'], diff --git a/src/app/services/datasourceSrv.js b/src/app/services/datasourceSrv.js index a3af1ae9590..0560becc0ee 100644 --- a/src/app/services/datasourceSrv.js +++ b/src/app/services/datasourceSrv.js @@ -3,6 +3,7 @@ define([ 'lodash', 'config', './graphite/graphiteDatasource', + './grafana/grafanaDatasource', './influxdb/influxdbDatasource', './opentsdb/opentsdbDatasource', './elasticsearch/es-datasource', @@ -64,8 +65,8 @@ function (angular, _, config) { case 'opentsdb': Datasource = $injector.get('OpenTSDBDatasource'); break; - case 'elasticsearch': - Datasource = $injector.get('ElasticDatasource'); + case 'grafana': + Datasource = $injector.get('GrafanaDatasource'); break; } return new Datasource(ds); diff --git a/src/app/services/grafana/grafanaDatasource.js b/src/app/services/grafana/grafanaDatasource.js new file mode 100644 index 00000000000..a744082c29a --- /dev/null +++ b/src/app/services/grafana/grafanaDatasource.js @@ -0,0 +1,48 @@ +define([ + 'angular', + 'lodash', + 'jquery', + 'config', + 'kbn', + 'moment' +], +function (angular, _, $, config, kbn, moment) { + 'use strict'; + + var module = angular.module('grafana.services'); + + module.factory('GrafanaDatasource', function($q, $http) { + + function GrafanaDatasource(datasource) { + this.type = 'grafana'; + this.grafanaDB = true; + } + + GrafanaDatasource.prototype.getDashboard = function(id, isTemp) { + var url = '/dashboard/' + id; + + if (isTemp) { + url = '/temp/' + id; + } + + return $http.get('/api/dashboards/' + id) + .then(function(result) { + if (result.data) { + return angular.fromJson(result.data); + } else { + return false; + } + }, function(data) { + if(data.status === 0) { + throw "Could not contact Elasticsearch. Please ensure that Elasticsearch is reachable from your browser."; + } else { + throw "Could not find dashboard " + id; + } + }); + }; + + return GrafanaDatasource; + + }); + +});