| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- define([
- 'angular',
- 'lodash',
- 'kbn',
- ],
- function (angular, _, kbn) {
- 'use strict';
- var module = angular.module('grafana.services');
- module.factory('GrafanaDatasource', function($q, backendSrv) {
- function GrafanaDatasource() {
- this.type = 'grafana';
- this.grafanaDB = true;
- this.name = "grafana";
- this.supportMetrics = true;
- this.editorSrc = 'app/features/grafanaDatasource/partials/query.editor.html';
- }
- GrafanaDatasource.prototype.getDashboard = function(slug, isTemp) {
- var url = '/dashboard/' + slug;
- if (isTemp) {
- url = '/temp/' + slug;
- }
- return backendSrv.get('/api/dashboard/' + slug)
- .then(function(data) {
- if (data && data.dashboard) {
- return data.dashboard;
- } else {
- return false;
- }
- });
- };
- GrafanaDatasource.prototype.query = function(options) {
- // get from & to in seconds
- var from = kbn.parseDate(options.range.from).getTime();
- var to = kbn.parseDate(options.range.to).getTime();
- return backendSrv.get('/api/metrics/test', { from: from, to: to, maxDataPoints: options.maxDataPoints });
- };
- GrafanaDatasource.prototype.saveDashboard = function(dashboard) {
- // remove id if title has changed
- if (dashboard.title !== dashboard.originalTitle) {
- dashboard.id = null;
- }
- return backendSrv.post('/api/dashboard/', { dashboard: dashboard })
- .then(function(data) {
- return { title: dashboard.title, url: '/dashboard/db/' + data.slug };
- }, function(err) {
- err.isHandled = true;
- err.data = err.data || {};
- throw err.data.message || "Unknown error";
- });
- };
- GrafanaDatasource.prototype.deleteDashboard = function(id) {
- return backendSrv.delete('/api/dashboard/' + id)
- .then(function(data) {
- return data.title;
- });
- };
- GrafanaDatasource.prototype.searchDashboards = function(query) {
- return backendSrv.get('/api/search/', {q: query})
- .then(function(data) {
- _.each(data.dashboards, function(item) {
- item.id = item.slug;
- });
- return data;
- });
- };
- return GrafanaDatasource;
- });
- });
|