From 8598360f2ea7dbcc105783a78e5987f720d8bb31 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 10 Feb 2016 11:50:23 -0800 Subject: [PATCH] allow string values to be graphable in DS stats --- assignment-client/src/audio/AudioMixer.cpp | 9 +++++++-- assignment-client/src/audio/AudioMixer.h | 2 +- domain-server/resources/web/css/style.css | 6 ++++++ domain-server/resources/web/header.html | 3 ++- domain-server/resources/web/stats/js/stats.js | 16 +++++++++++++--- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index 47f9204d36..242b0b0d7a 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -489,8 +489,13 @@ void AudioMixer::removeHRTFsForFinishedInjector(const QUuid& streamID) { } } -float AudioMixer::percentageForMixStats(int counter) { - return (_totalMixes > 0) ? (float(counter) / _totalMixes) * 100.0f : 0; +QString AudioMixer::percentageForMixStats(int counter) { + if (_totalMixes > 0) { + float mixPercentage = (float(counter) / _totalMixes) * 100.0f; + return QString::number(mixPercentage, 'f', 2); + } else { + return QString("0.0"); + } } void AudioMixer::sendStatsPacket() { diff --git a/assignment-client/src/audio/AudioMixer.h b/assignment-client/src/audio/AudioMixer.h index ee9e5b4eb9..0407c2860c 100644 --- a/assignment-client/src/audio/AudioMixer.h +++ b/assignment-client/src/audio/AudioMixer.h @@ -71,7 +71,7 @@ private: void perSecondActions(); - float percentageForMixStats(int counter); + QString percentageForMixStats(int counter); bool shouldMute(float quietestFrame); diff --git a/domain-server/resources/web/css/style.css b/domain-server/resources/web/css/style.css index 1ed2594c11..efb9e907c5 100644 --- a/domain-server/resources/web/css/style.css +++ b/domain-server/resources/web/css/style.css @@ -92,6 +92,12 @@ tr.new-row { background-color: #dff0d8; } +.graphable-stat { + text-align: center; + color: #5286BC; + cursor: pointer; +} + .highchart-modal .modal-dialog { width: 650px; } diff --git a/domain-server/resources/web/header.html b/domain-server/resources/web/header.html index f3cacf4b21..b4eee406f2 100644 --- a/domain-server/resources/web/header.html +++ b/domain-server/resources/web/header.html @@ -5,10 +5,11 @@ + - + diff --git a/domain-server/resources/web/stats/js/stats.js b/domain-server/resources/web/stats/js/stats.js index 3fed1ad29f..6ea233a6e6 100644 --- a/domain-server/resources/web/stats/js/stats.js +++ b/domain-server/resources/web/stats/js/stats.js @@ -1,5 +1,5 @@ $(document).ready(function(){ - + var currentHighchart; // setup a function to grab the nodeStats @@ -17,12 +17,22 @@ $(document).ready(function(){ var stats = JsonHuman.format(json); $('#stats-container').html(stats); + + // add the clickable class to anything that looks like a number + $('.jh-value span').each(function(val){ + console.log(val); + if (!isNaN($(this).text())) { + // this looks like a number - give it the clickable class so we can get graphs for it + $(this).addClass('graphable-stat'); + } + }); + if (currentHighchart) { // get the current time to set with the point var x = (new Date()).getTime(); // get the last value using underscore-keypath - var y = _(json).valueForKeyPath(graphKeypath); + var y = Number(_(json).valueForKeyPath(graphKeypath)); // start shifting the chart once we hit 20 data points var shift = currentHighchart.series[0].data.length > 20; @@ -91,7 +101,7 @@ $(document).ready(function(){ } // handle clicks on numerical values - this lets the user show a line graph in a modal - $('#stats-container').on('click', '.jh-type-number', function(){ + $('#stats-container').on('click', '.graphable-stat', function(){ graphKeypath = $(this).data('keypath'); // setup the new graph modal