diff --git a/src/app/controllers/graphiteTarget.js b/src/app/controllers/graphiteTarget.js index 8db92c3111e..747d430c5f1 100644 --- a/src/app/controllers/graphiteTarget.js +++ b/src/app/controllers/graphiteTarget.js @@ -210,6 +210,21 @@ function (angular, _, config, graphiteFuncs, Parser) { $scope.targetChanged(); }; + $scope.setYAxis = function() { + if ($scope.target.yaxis) { + delete $scope.target.yaxis; + } else { + $scope.target.yaxis = 2; + } + + $scope.get_data(); + }; + + $scope.duplicate = function() { + var clone = angular.copy($scope.target); + $scope.panel.targets.push(clone); + }; + }); module.directive('focusMe', function($timeout, $parse) { diff --git a/src/app/panels/graphite/editor.html b/src/app/panels/graphite/editor.html index 6130cf54476..11984fbe122 100644 --- a/src/app/panels/graphite/editor.html +++ b/src/app/panels/graphite/editor.html @@ -9,10 +9,27 @@ -
  • - +
  • diff --git a/src/app/panels/graphite/graphiteSrv.js b/src/app/panels/graphite/graphiteSrv.js index 938c2c28cbf..712f59e6038 100644 --- a/src/app/panels/graphite/graphiteSrv.js +++ b/src/app/panels/graphite/graphiteSrv.js @@ -1,9 +1,10 @@ define([ 'jquery', 'rq', + 'underscore', 'config' ], -function ($, RQ, config) { +function ($, RQ, _, config) { 'use strict'; @@ -90,7 +91,24 @@ function ($, RQ, config) { }); } + function match(targets, graphiteTargetStr) { + var found = targets[0]; + + for (var i = 0; i < targets.length; i++) { + if (targets[i].target == graphiteTargetStr) { + found = targets[i]; + break; + } + if(targets[i].target.match("'" + graphiteTargetStr + "'")) { + found = targets[i]; + } + }; + + return found; + } + return { - loadGraphiteData: loadGraphiteData + loadGraphiteData: loadGraphiteData, + match: match }; }); \ No newline at end of file diff --git a/src/app/panels/graphite/module.js b/src/app/panels/graphite/module.js index 8ab3c26abe5..373d66f4844 100644 --- a/src/app/panels/graphite/module.js +++ b/src/app/panels/graphite/module.js @@ -211,7 +211,7 @@ function (angular, app, $, _, kbn, moment, timeSeries, graphiteSrv, RQ) { $scope.init = function() { - //$scope.openConfigureModal({preventDefault: function() {}, stopPropagation: function() {} }); + $scope.openConfigureModal({preventDefault: function() {}, stopPropagation: function() {} }); // Hide view options by default $scope.options = false; @@ -369,17 +369,23 @@ function (angular, app, $, _, kbn, moment, timeSeries, graphiteSrv, RQ) { } }); + var target = graphiteSrv.match($scope.panel.targets, targetData.target); + var seriesInfo = { alias: targetData.target, color: $scope.colors[data.length], - enable: true + enable: true, + yaxis: target.yaxis || 1 }; $scope.legend.push(seriesInfo); + data.hasSecondY = (target.yaxis || 1) > 1; + data.push({ info: seriesInfo, - time_series: time_series + time_series: time_series, + yaxis: target.yaxis || 1 }); }); @@ -468,6 +474,7 @@ function (angular, app, $, _, kbn, moment, timeSeries, graphiteSrv, RQ) { if (!data) { return; } + // IE doesn't work without this elem.css({height:scope.panel.height || scope.row.height}); @@ -512,11 +519,14 @@ function (angular, app, $, _, kbn, moment, timeSeries, graphiteSrv, RQ) { }, shadowSize: 1 }, - yaxis: { - show: scope.panel['y-axis'], - min: scope.panel.grid.min, - max: scope.panel.percentage && scope.panel.stack ? 100 : scope.panel.grid.max - }, + yaxes: [ + { + position: 'left', + show: scope.panel['y-axis'], + min: scope.panel.grid.min, + max: scope.panel.percentage && scope.panel.stack ? 100 : scope.panel.grid.max + } + ], xaxis: { timezone: scope.panel.timezone, show: scope.panel['x-axis'], @@ -586,6 +596,15 @@ function (angular, app, $, _, kbn, moment, timeSeries, graphiteSrv, RQ) { data[i].data = _d; } + if (data.hasSecondY) { + options.yaxes.push({ + position: 'right', + show: scope.panel['y-axis'], + min: scope.panel.grid.min, + max: scope.panel.percentage && scope.panel.stack ? 100 : scope.panel.grid.max + }); + } + /* var totalDataPoints = _.reduce(data, function(num, series) { return series.data.length + num; }, 0); console.log('Datapoints[0] count:', data[0].data.length); console.log('Datapoints.Total count:', totalDataPoints);*/