From 82da75bc0ce970e3d3e7599a4f2bd7e4601644e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Fri, 24 Jan 2014 06:49:19 +0100 Subject: [PATCH] began work on adding support for native graphite png renderer support (#22) --- src/app/panels/graphite/module.js | 18 ++++++++++++++---- src/app/panels/graphite/styleEditor.html | 5 +++++ src/app/services/graphite/graphiteSrv.js | 16 ++++++++++++---- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/app/panels/graphite/module.js b/src/app/panels/graphite/module.js index 108958058c6..f643b38a343 100644 --- a/src/app/panels/graphite/module.js +++ b/src/app/panels/graphite/module.js @@ -82,6 +82,10 @@ function (angular, app, $, _, kbn, moment, timeSeries) { // Set and populate defaults var _d = { + /** @scratch /panels/histogram/3 + * renderer:: sets client side (flot) or native graphite png renderer (png) + */ + renderer: 'flot', /** @scratch /panels/histogram/3 * x-axis:: Show the x-axis */ @@ -240,10 +244,6 @@ function (angular, app, $, _, kbn, moment, timeSeries) { } }; - $scope.typeAheadSource = function () { - return ["test", "asd", "testing2"]; - }; - $scope.remove_panel_from_row = function(row, panel) { if ($scope.fullscreen) { $rootScope.$emit('panel-fullscreen-exit'); @@ -307,6 +307,7 @@ function (angular, app, $, _, kbn, moment, timeSeries) { var graphiteQuery = { range: filterSrv.timeRange(false), targets: $scope.panel.targets, + renderer: $scope.panel.renderer, maxDataPoints: $scope.panel.span * 50 }; @@ -319,6 +320,10 @@ function (angular, app, $, _, kbn, moment, timeSeries) { $scope.receiveGraphiteData = function(results) { $scope.panelMeta.loading = false; + if (_.isString(results)) { + $scope.render(results); + return; + } results = results.data; $scope.legend = []; @@ -474,5 +479,10 @@ function (angular, app, $, _, kbn, moment, timeSeries) { }); + + if (_.isString(data)) { + elem.html(''); + return; + } }); diff --git a/src/app/panels/graphite/styleEditor.html b/src/app/panels/graphite/styleEditor.html index e61bda19c4d..d950ac7f0c3 100644 --- a/src/app/panels/graphite/styleEditor.html +++ b/src/app/panels/graphite/styleEditor.html @@ -1,6 +1,11 @@ + +
Chart Options
+
+ +
diff --git a/src/app/services/graphite/graphiteSrv.js b/src/app/services/graphite/graphiteSrv.js index a5145bf1b38..75d119ffdec 100644 --- a/src/app/services/graphite/graphiteSrv.js +++ b/src/app/services/graphite/graphiteSrv.js @@ -12,6 +12,7 @@ function (angular, _, $, config, kbn, moment) { var module = angular.module('kibana.services'); module.service('graphiteSrv', function($http, $q, filterSrv) { + var graphiteRenderUrl = config.graphiteUrl + "/render"; this.query = function(options) { try { @@ -19,14 +20,19 @@ function (angular, _, $, config, kbn, moment) { from: this.translateTime(options.range.from), until: this.translateTime(options.range.to), targets: options.targets, + renderer: options.renderer, maxDataPoints: options.maxDataPoints }; - var params = buildGraphitePostParams(graphOptions); + var params = buildGraphiteParams(graphOptions); + + if (options.renderer === 'png') { + return $q.when(graphiteRenderUrl + '?' + params.join('&')); + } return doGraphiteRequest({ method: 'POST', - url: config.graphiteUrl + '/render/', + url: graphiteRenderUrl, data: params.join('&'), headers: { 'Content-Type': 'application/x-www-form-urlencoded', @@ -122,11 +128,13 @@ function (angular, _, $, config, kbn, moment) { return $http(options); } - function buildGraphitePostParams(options) { + function buildGraphiteParams(options) { var clean_options = []; var graphite_options = ['target', 'targets', 'from', 'until', 'rawData', 'format', 'maxDataPoints']; - options['format'] = 'json'; + if (options.renderer === 'flot') { + options['format'] = 'json'; + } $.each(options, function (key, value) { if ($.inArray(key, graphite_options) === -1) {