From aafb1c70f0030e9b830b12d34b00d34b39720573 Mon Sep 17 00:00:00 2001 From: Rishi Gupta Date: Thu, 2 Feb 2017 18:16:19 -0800 Subject: [PATCH] analytics: Fix pie chart sorting computations in stats.js. --- static/js/portico/stats.js | 57 +++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/static/js/portico/stats.js b/static/js/portico/stats.js index 3837464fe3..597d13eec9 100644 --- a/static/js/portico/stats.js +++ b/static/js/portico/stats.js @@ -385,36 +385,43 @@ function round_percentages(values) { } function get_labels_and_data(names, data_subgroup, time_frame_integer) { - var labels = []; - var values = []; + var data = []; for (var key in data_subgroup) { - if (data_subgroup.hasOwnProperty(key)) { - var sum = 0; - for (var i = time_frame_integer - 1; i >= 0; i-=1) { - sum += data_subgroup[key][i]; - } - if (sum > 0) { - values.push(sum); - labels.push(names[key]); - } + if (data_subgroup[key].length < time_frame_integer) { + time_frame_integer = data_subgroup[key].length; + } + var sum = 0; + for (var i=1; i<=time_frame_integer; i+=1) { + sum += data_subgroup[key][data_subgroup[key].length-i]; + } + if (sum > 0) { + data.push({ + value: sum, + label: names.hasOwnProperty(key) ? names[key] : key, + }); } } - labels = labels.sort(function (a, b) { - return values[labels.indexOf(b)] - values[labels.indexOf(a)]; + data.sort(function (a, b) { + return b.value - a.value; }); - // Sort descending, using numeric comparison instead of the default string - // comparison - values = values.sort(function (a, b) { - return b - a; - }); - if (values.length > 6) { - labels = labels.slice(0, 5); - labels.push("Other"); - var sum_remaining = 0; - for (var j=5; j