grafana/src/app/services/datasourceSrv.js

53 lines
1.2 KiB
JavaScript
Raw Normal View History

define([
'angular',
'underscore',
'config',
'./graphite/graphiteDatasource',
'./influxdb/influxdbDatasource',
],
function (angular, _, config) {
'use strict';
var module = angular.module('kibana.services');
module.service('datasourceSrv', function($q, filterSrv, $http, GraphiteDatasource, InfluxDatasource) {
this.init = function() {
var defaultDatasource = _.findWhere(_.values(config.datasources), { default: true } );
this.default = this.datasourceFactory(defaultDatasource);
};
this.datasourceFactory = function(ds) {
switch(ds.type) {
case 'graphite':
return new GraphiteDatasource(ds);
case 'influxdb':
return new InfluxDatasource(ds);
}
};
this.get = function(name) {
if (!name) { return this.default; }
var ds = config.datasources[name];
2014-03-02 06:26:08 -06:00
if (!ds) {
return null;
}
return this.datasourceFactory(ds);
};
this.listOptions = function() {
return _.map(config.datasources, function(value, key) {
return {
name: value.default ? key + ' (default)' : key,
value: value.default ? null : key
};
});
};
this.init();
});
});