From eb6680049602455e802a8fce77dacb1370b71fcd Mon Sep 17 00:00:00 2001 From: Simon Howe Date: Thu, 10 Mar 2016 14:28:06 +0100 Subject: [PATCH] Adds metric formatting clientside - Bump non-zero metrics up to start at 10% fill so we can see them. --- client/app/scripts/utils/data-utils.js | 29 ++++++++++++++++++++---- client/app/scripts/utils/string-utils.js | 2 +- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/client/app/scripts/utils/data-utils.js b/client/app/scripts/utils/data-utils.js index d60bfff9c..8d57ba9d2 100644 --- a/client/app/scripts/utils/data-utils.js +++ b/client/app/scripts/utils/data-utils.js @@ -79,6 +79,19 @@ export function addMetrics(delta, prevNodes) { }); } +const METRIC_FORMATS = { + docker_cpu_total_usage: 'percent', + docker_memory_usage: 'filesize', + host_cpu_usage_percent: 'percent', + host_mem_usage_bytes: 'filesize', + load1: 'number', + load15: 'number', + load5: 'number', + open_files_count: 'number', + process_cpu_usage_percent: 'percent', + process_memory_usage_bytes: 'filesize' +}; + const openFilesScale = d3.scale.log().domain([1, 100000]).range([0, 1]); // // loadScale(1) == 0.5; E.g. a nicely balanced system :). @@ -91,21 +104,27 @@ export function getMetricValue(metric, size) { const max = metric.getIn(['max']); const value = metric.getIn(['samples', 0, 'value']); + const selectedMetric = AppStore.getSelectedMetric(); let valuePercentage = value === 0 ? 0 : value / max; - if (AppStore.getSelectedMetric() === 'open_files_count') { + if (selectedMetric === 'open_files_count') { valuePercentage = openFilesScale(value); - } else if (_.includes(['load1', 'load5', 'load15'], AppStore.getSelectedMetric())) { + } else if (_.includes(['load1', 'load5', 'load15'], selectedMetric)) { valuePercentage = loadScale(value); } - const baseline = 0.05; - const displayedValue = valuePercentage * (1 - baseline) + baseline; + let displayedValue = value; + if (displayedValue > 0) { + const baseline = 0.1; + displayedValue = valuePercentage * (1 - baseline) + baseline; + } const height = size * displayedValue; + const metricWithFormat = Object.assign( + {}, {format: METRIC_FORMATS[selectedMetric]}, metric.toJS()); return { height: height, value: value, - formattedValue: formatMetric(value, metric.toJS(), true) + formattedValue: formatMetric(value, metricWithFormat, true) }; } diff --git a/client/app/scripts/utils/string-utils.js b/client/app/scripts/utils/string-utils.js index 046efb71c..98ed1703f 100644 --- a/client/app/scripts/utils/string-utils.js +++ b/client/app/scripts/utils/string-utils.js @@ -17,7 +17,7 @@ function renderHtml(text, unit) { function makeFormatters(renderFn) { const formatters = { filesize(value) { - const obj = filesize(value, {output: 'object'}); + const obj = filesize(value, {output: 'object', round: 1}); return renderFn(obj.value, obj.suffix); },