datasource.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. define([
  2. 'angular',
  3. 'lodash',
  4. 'kbn',
  5. ],
  6. function (angular, _, kbn) {
  7. 'use strict';
  8. var module = angular.module('grafana.services');
  9. module.factory('MixedDatasource', function($q, backendSrv, datasourceSrv) {
  10. function MixedDatasource() {
  11. }
  12. MixedDatasource.prototype.query = function(options) {
  13. var sets = _.groupBy(options.targets, 'datasource');
  14. var promises = _.map(sets, function(targets) {
  15. return datasourceSrv.get(targets[0].datasource).then(function(ds) {
  16. var opt = angular.copy(options);
  17. opt.targets = targets;
  18. return ds.query(opt);
  19. });
  20. });
  21. return $q.all(promises).then(function(results) {
  22. return { data: _.flatten(_.pluck(results, 'data')) };
  23. });
  24. // console.log(options.targets);
  25. // // get from & to in seconds
  26. // var from = kbn.parseDate(options.range.from).getTime();
  27. // var to = kbn.parseDate(options.range.to).getTime();
  28. //
  29. // return backendSrv.get('/api/metrics/test', { from: from, to: to, maxDataPoints: options.maxDataPoints });
  30. };
  31. return MixedDatasource;
  32. });
  33. });