analytics: Fix pie chart sorting computations in stats.js.

This commit is contained in:
Rishi Gupta
2017-02-02 18:16:19 -08:00
parent 621e3f68ba
commit aafb1c70f0

View File

@@ -385,36 +385,43 @@ function round_percentages(values) {
} }
function get_labels_and_data(names, data_subgroup, time_frame_integer) { function get_labels_and_data(names, data_subgroup, time_frame_integer) {
var labels = []; var data = [];
var values = [];
for (var key in data_subgroup) { for (var key in data_subgroup) {
if (data_subgroup.hasOwnProperty(key)) { if (data_subgroup[key].length < time_frame_integer) {
time_frame_integer = data_subgroup[key].length;
}
var sum = 0; var sum = 0;
for (var i = time_frame_integer - 1; i >= 0; i-=1) { for (var i=1; i<=time_frame_integer; i+=1) {
sum += data_subgroup[key][i]; sum += data_subgroup[key][data_subgroup[key].length-i];
} }
if (sum > 0) { if (sum > 0) {
values.push(sum); data.push({
labels.push(names[key]); value: sum,
} label: names.hasOwnProperty(key) ? names[key] : key,
}
}
labels = labels.sort(function (a, b) {
return values[labels.indexOf(b)] - values[labels.indexOf(a)];
}); });
// Sort descending, using numeric comparison instead of the default string }
// comparison }
values = values.sort(function (a, b) { data.sort(function (a, b) {
return b - a; return b.value - a.value;
}); });
if (values.length > 6) { var labels = [];
labels = labels.slice(0, 5); var values = [];
labels.push("Other"); var j;
if (data.length <= 6) {
for (j=0; j<data.length; j+=1) {
labels.push(data[j].label);
values.push(data[j].value);
}
} else {
for (j=0; j<5; j+=1) {
labels.push(data[j].label);
values.push(data[j].value);
}
var sum_remaining = 0; var sum_remaining = 0;
for (var j=5; j<values.length; j+=1) { for (j=5; j<data.length; j+=1) {
sum_remaining += values[j]; sum_remaining += data[j].value;
} }
values = values.slice(0, 5); labels.push("Other");
values.push(sum_remaining); values.push(sum_remaining);
} }
return [labels, values]; return [labels, values];