Files
karma/assets/static/summary.js
Łukasz Mierzwa f1e90e054d Rewrite clientside-haml-js templates using underscore
Drop haml templates in favor of underscore. Haml templates are harder to maintain and require extra dependencies, we already have underscore.js included and it provides a fast templating engine. Rewrite all client side templates using it.
Performance with underscore is pretty much the same as with haml (with 10k alerts).
2017-04-10 11:38:34 -07:00

84 lines
1.8 KiB
JavaScript

var Summary = (function() {
var summary, templates;
render = function() {
var top_tags = [];
$.each(summary, function(k, v) {
top_tags.push({
name: k,
val: v
});
});
top_tags.sort(function(a, b) {
if (a.val > b.val) return 1;
if (a.val < b.val) return -1;
if (a.name > b.name) return -1;
if (a.name < b.name) return 1;
return 0;
}).reverse();
var tags = [];
$.each(top_tags.slice(0, 10), function(i, tag) {
var label_key = tag.name.split(': ')[0];
var label_val = tag.name.split(': ')[1];
tag.style = Colors.Get(label_key, label_val);
tag.cls = Colors.GetClass(label_key, label_val);
tags.push(tag);
});
return Templates.Render('breakdownContent', {tags: tags});
}
init = function() {
summary = {};
$('.navbar-header').popover({
trigger: 'hover',
container: 'body',
html: true,
placement: 'bottom',
title: 'Top labels',
content: render,
template: Templates.Render('breakdown', {})
});
}
update = function(data) {
summary = data;
}
reset = function() {
summary = {};
render();
}
push = function(labelKey, labelVal) {
var l = labelKey + ': ' + labelVal;
if (summary[l] == undefined) {
summary[l] = 1;
} else {
summary[l]++;
}
}
getCount = function(labelKey, labelVal) {
var l = labelKey + ': ' + labelVal;
return summary[l];
}
return {
Init: init,
Update: update,
Reset: reset,
Push: push,
Get: getCount
}
}());