From 956d93e871a8a87fe9ebe5a4ebe36488639f4496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Fri, 17 Oct 2014 10:36:04 -0400 Subject: [PATCH] StatsPanel: fine tuning colors --- src/app/panels/stats/module.js | 75 ++++++++++++++++++++++++++- src/app/panels/stats/statsEditor.html | 56 +++++++++++++------- 2 files changed, 109 insertions(+), 22 deletions(-) diff --git a/src/app/panels/stats/module.js b/src/app/panels/stats/module.js index 470faa5f0c4..5cb84ecffb3 100644 --- a/src/app/panels/stats/module.js +++ b/src/app/panels/stats/module.js @@ -44,6 +44,12 @@ function (angular, app, _, TimeSeries, kbn) { avg: true, template: '{{value}} {{func}}' }, + coloring: { + thresholds: '', + background: false, + value: false, + colors: ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"] + }, table: { show: true, } @@ -51,6 +57,7 @@ function (angular, app, _, TimeSeries, kbn) { _.defaults($scope.panel, _d); _.defaults($scope.panel.stats, _d.stats); + _.defaults($scope.panel.coloring, _d.coloring); $scope.init = function() { panelSrv.init($scope); @@ -115,6 +122,25 @@ function (angular, app, _, TimeSeries, kbn) { return series; }; + $scope.setColoring = function(options) { + if (options.background) { + $scope.panel.coloring.value = false; + $scope.panel.coloring.colors = ['rgba(71, 212, 59, 0.4)', 'rgba(245, 150, 40, 0.73)', 'rgba(225, 40, 40, 0.59)']; + } + else { + $scope.panel.coloring.background = false; + $scope.panel.coloring.colors = ['rgba(50, 172, 45, 0.97)', 'rgba(237, 129, 40, 0.89)', 'rgba(245, 54, 54, 0.9)']; + } + $scope.render(); + }; + + $scope.invertColorOrder = function() { + var tmp = $scope.panel.coloring.colors[0]; + $scope.panel.coloring.colors[0] = $scope.panel.coloring.colors[2]; + $scope.panel.coloring.colors[2] = tmp; + $scope.render(); + }; + $scope.render = function() { var i, series; var data = { @@ -127,6 +153,12 @@ function (angular, app, _, TimeSeries, kbn) { series.updateLegendValues(kbn.valueFormats[$scope.panel.format], 2, -7); } + data.thresholds = $scope.panel.coloring.thresholds.split(',').map(function(strVale) { + return Number(strVale.trim()); + }); + + data.colorMap = $scope.panel.coloring.colors; + $scope.data = data; $scope.$emit('render'); }; @@ -144,6 +176,7 @@ function (angular, app, _, TimeSeries, kbn) { scope.$on('render', function() { data = scope.data; + data.mainValue = null; if (!data || data.series.length === 0) { elem.html('no data'); @@ -153,10 +186,33 @@ function (angular, app, _, TimeSeries, kbn) { render(); }); + function applyColoringThresholds(value, valueString) { + if (!scope.panel.coloring.value) { + return valueString; + } + + var color = getColorForValue(value); + if (color) { + return ''+ valueString + ''; + } + + return valueString; + } + + function getColorForValue(value) { + for (var i = data.thresholds.length - 1; i >= 0 ; i--) { + if (value > data.thresholds[i]) { + return data.colorMap[i]; + } + } + return null; + } + function valueTemplateReplaceFunc(match, statType) { var stats = data.series[0].stats; - var value = scope.formatValue(stats[statType]); - return value; + data.mainValue = stats[statType]; + var valueFormated = scope.formatValue(data.mainValue); + return applyColoringThresholds(data.mainValue, valueFormated); } function smallValueTextReplaceFunc(match, text) { @@ -177,6 +233,21 @@ function (angular, app, _, TimeSeries, kbn) { body += ''; } + if (panel.coloring.background && data.mainValue) { + var color = getColorForValue(data.mainValue); + if (color) { + elem.parents('.panel-container').css('background-color', color); + if (scope.fullscreen) { + elem.css('background-color', color); + } else { + elem.css('background-color', ''); + } + } + } else { + elem.parents('.panel-container').css('background-color', ''); + elem.css('background-color', ''); + } + if (panel.table.show) { body += ''; body += ''; diff --git a/src/app/panels/stats/statsEditor.html b/src/app/panels/stats/statsEditor.html index 98df3dda258..c947e331370 100644 --- a/src/app/panels/stats/statsEditor.html +++ b/src/app/panels/stats/statsEditor.html @@ -18,28 +18,44 @@ - - -
-
Series options
-
-
-
    -
  • - -
  • - -
  • - {{series.info.alias}} -
  • - -
  • -
  • -
-
-
+
Coloring
+ + +
+ + +
+
+ + + + + invert order
+ + + + + + + + + + + + + + + + + + + + + + +