datasource.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import _ from 'lodash';
  2. class GrafanaDatasource {
  3. /** @ngInject */
  4. constructor(private backendSrv, private $q) {}
  5. query(options) {
  6. return this.backendSrv
  7. .get('/api/tsdb/testdata/random-walk', {
  8. from: options.range.from.valueOf(),
  9. to: options.range.to.valueOf(),
  10. intervalMs: options.intervalMs,
  11. maxDataPoints: options.maxDataPoints,
  12. })
  13. .then(res => {
  14. var data = [];
  15. if (res.results) {
  16. _.forEach(res.results, queryRes => {
  17. for (let series of queryRes.series) {
  18. data.push({
  19. target: series.name,
  20. datapoints: series.points,
  21. });
  22. }
  23. });
  24. }
  25. return { data: data };
  26. });
  27. }
  28. metricFindQuery(options) {
  29. return this.$q.when({ data: [] });
  30. }
  31. annotationQuery(options) {
  32. const params: any = {
  33. from: options.range.from.valueOf(),
  34. to: options.range.to.valueOf(),
  35. limit: options.annotation.limit,
  36. tags: options.annotation.tags,
  37. };
  38. if (options.annotation.type === 'dashboard') {
  39. // if no dashboard id yet return
  40. if (!options.dashboard.id) {
  41. return this.$q.when([]);
  42. }
  43. // filter by dashboard id
  44. params.dashboardId = options.dashboard.id;
  45. // remove tags filter if any
  46. delete params.tags;
  47. } else {
  48. // require at least one tag
  49. if (!_.isArray(options.annotation.tags) || options.annotation.tags.length === 0) {
  50. return this.$q.when([]);
  51. }
  52. }
  53. return this.backendSrv.get('/api/annotations', params);
  54. }
  55. }
  56. export { GrafanaDatasource };