Files
appchk-web/out/static/ranking.js
2020-09-26 21:32:44 +02:00

59 lines
2.1 KiB
JavaScript

function th(cur_col, cur_asc, names) {
var txt = '<tr>';
for (var i = 0; i < names.length; i++) {
var v = names[i];
txt += '\n<th>' + v;
if (v) {
let cls = (i == cur_col) ? ' class="active"' : '';
txt += ' <span><a' + (cur_asc == -1 ? cls : '') + ' onClick="sort_by('+i+', -1)">';
txt += '<svg viewBox="0 0 16 14" width="12"><g><polygon points="8,14 0,0 16,0"/></g></svg>';
txt += '</a><a' + (cur_asc == 1 ? cls : '') + ' onClick="sort_by('+i+', 1)">';
txt += '<svg viewBox="0 0 16 14" width="12"><g><polygon points="8,0 0,14 16,14"/></g></svg>';
txt += '</a></span>';
}
txt += '</th>';
}
return txt + '</tr>';
}
function td(cols, id) {
var txt = '\n<tr id="' + id + '">';
for (var i = 0; i < cols.length; i++) {
txt += '<td>' + cols[i] + '</td>';
}
return txt + '</tr>';
}
function prep(x, i) {
return [
i+1 + '. <img class="lozad" data-src="/app/'+x[0]+'/icon.png"/>', '<a href="/app/'+x[0]+'/">' + x[1] + '</a>',
x[2], HHmmss(x[3]), HHmmss(x[4]), as_pm(x[5]), as_pm(x[6]), x[7], x[8],
as_percent(x[9]), x[10], dot1(x[11]), new Date(x[12] * 1000).toISOString().slice(0, 16).replace('T',' ')
];
}
function update(col, asc) {
let table = document.getElementById('rank-list');
let len = _data.length;
let txt = '';
for (var i = 0; i < len; i++) {
txt += td(prep(_data[i], i), _data[i][0])
}
table.innerHTML = th(col, asc, [
'', 'Application', 'Number of recordings', 'Average recording time',
'Cumulative recording time', 'Average requests per minute',
'Total requests per minute', 'Number of domains', 'Number of subdomains',
'Tracker percentage', 'Total number of requests', 'Average number of requests',
'Last Update'
]) + txt;
const observer = lozad(); observer.observe();
}
function sort_by(col, asc) {
let i = col;
let o = asc;
_data.sort(function(a, b){ return a[i] < b[i] ? -o : a[i] > b[i] ? o : 0; });
update(col, asc);
}
function rank_js(fname, column, order) {
loadJSON(fname, function(response) {
_data = JSON.parse(response);
update(column, order);
});
}