mirror of
https://github.com/grafana/grafana.git
synced 2026-08-19 01:34:54 -05:00
DirectInput: new alpha datasource that lets you enter data via CSV
Initial alpha datasource that saves data directly in a panel or in the shared datasource configs.
This commit is contained in:
@@ -1,19 +1,21 @@
|
||||
import angular from 'angular';
|
||||
import _ from 'lodash';
|
||||
|
||||
class MixedDatasource {
|
||||
/** @ngInject */
|
||||
constructor(private $q, private datasourceSrv) {}
|
||||
import { DataSourceApi, DataQuery, DataQueryOptions } from '@grafana/ui';
|
||||
import DatasourceSrv from 'app/features/plugins/datasource_srv';
|
||||
|
||||
query(options) {
|
||||
class MixedDatasource implements DataSourceApi<DataQuery> {
|
||||
/** @ngInject */
|
||||
constructor(private datasourceSrv: DatasourceSrv) {}
|
||||
|
||||
query(options: DataQueryOptions<DataQuery>) {
|
||||
const sets = _.groupBy(options.targets, 'datasource');
|
||||
const promises = _.map(sets, targets => {
|
||||
const promises = _.map(sets, (targets: DataQuery[]) => {
|
||||
const dsName = targets[0].datasource;
|
||||
if (dsName === '-- Mixed --') {
|
||||
return this.$q([]);
|
||||
return Promise.resolve([]);
|
||||
}
|
||||
|
||||
const filtered = _.filter(targets, t => {
|
||||
const filtered = _.filter(targets, (t: DataQuery) => {
|
||||
return !t.hide;
|
||||
});
|
||||
|
||||
@@ -22,16 +24,20 @@ class MixedDatasource {
|
||||
}
|
||||
|
||||
return this.datasourceSrv.get(dsName).then(ds => {
|
||||
const opt = angular.copy(options);
|
||||
const opt = _.cloneDeep(options);
|
||||
opt.targets = filtered;
|
||||
return ds.query(opt);
|
||||
});
|
||||
});
|
||||
|
||||
return this.$q.all(promises).then(results => {
|
||||
return Promise.all(promises).then(results => {
|
||||
return { data: _.flatten(_.map(results, 'data')) };
|
||||
});
|
||||
}
|
||||
|
||||
testDatasource() {
|
||||
return Promise.resolve({});
|
||||
}
|
||||
}
|
||||
|
||||
export { MixedDatasource, MixedDatasource as Datasource };
|
||||
|
||||
Reference in New Issue
Block a user