datasource.js 802 B

1234567891011121314151617181920212223242526272829303132333435
  1. define([
  2. 'angular',
  3. 'lodash',
  4. ],
  5. function (angular, _) {
  6. 'use strict';
  7. var module = angular.module('grafana.services');
  8. module.factory('MixedDatasource', function($q, backendSrv, datasourceSrv) {
  9. function MixedDatasource() {
  10. }
  11. MixedDatasource.prototype.query = function(options) {
  12. var sets = _.groupBy(options.targets, 'datasource');
  13. var promises = _.map(sets, function(targets) {
  14. return datasourceSrv.get(targets[0].datasource).then(function(ds) {
  15. var opt = angular.copy(options);
  16. opt.targets = targets;
  17. return ds.query(opt);
  18. });
  19. });
  20. return $q.all(promises).then(function(results) {
  21. return { data: _.flatten(_.pluck(results, 'data')) };
  22. });
  23. };
  24. return MixedDatasource;
  25. });
  26. });