datasource.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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('GrafanaDatasource', function($q, backendSrv, datasourceSrv) {
  10. function GrafanaDatasource() {
  11. }
  12. GrafanaDatasource.prototype.getDashboard = function(slug, isTemp) {
  13. var url = '/dashboards/' + slug;
  14. if (isTemp) {
  15. url = '/temp/' + slug;
  16. }
  17. return backendSrv.get('/api/dashboards/db/' + slug);
  18. };
  19. GrafanaDatasource.prototype.query = function(options) {
  20. return datasourceSrv.get(options.targets[0].datasource).then(function(ds) {
  21. options.targets = [options.targets[0]];
  22. return ds.query(options);
  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. GrafanaDatasource.prototype.metricFindQuery = function() {
  32. return $q.when([]);
  33. };
  34. GrafanaDatasource.prototype.starDashboard = function(dashId) {
  35. return backendSrv.post('/api/user/stars/dashboard/' + dashId);
  36. };
  37. GrafanaDatasource.prototype.unstarDashboard = function(dashId) {
  38. return backendSrv.delete('/api/user/stars/dashboard/' + dashId);
  39. };
  40. GrafanaDatasource.prototype.saveDashboard = function(dashboard) {
  41. return backendSrv.post('/api/dashboards/db/', { dashboard: dashboard })
  42. .then(function(data) {
  43. return { title: dashboard.title, url: '/dashboard/db/' + data.slug };
  44. }, function(err) {
  45. err.isHandled = true;
  46. err.data = err.data || {};
  47. throw err.data.message || "Unknown error";
  48. });
  49. };
  50. GrafanaDatasource.prototype.deleteDashboard = function(id) {
  51. return backendSrv.delete('/api/dashboards/db/' + id);
  52. };
  53. GrafanaDatasource.prototype.searchDashboards = function(query) {
  54. return backendSrv.get('/api/search/', query)
  55. .then(function(data) {
  56. return data;
  57. });
  58. };
  59. return GrafanaDatasource;
  60. });
  61. });