in static/plugins/jira_stats.js [69:107]
async function seed_jira_stats() {
jira_json = await (await fetch("/api/jira?action=stats")).json();
const outer_chart_area = document.getElementById('chart_area');
outer_chart_area.innerText = "";
const qs = new URLSearchParams(document.location.hash);
const num_days = qs.has('days') ? parseInt(qs.get('days')) : default_timespan_days;
// Top 10 folks, past three months
const d = new Date();
const now = d.getTime()/1000;
d.setDate(d.getDate()-num_days);
const deadline = d.getTime()/1000;
const top10 = {};
for (const [key, data] of Object.entries(jira_json)) {
if (!data.created_at) continue // No creation date, invalid data
if (data.assignee && data.created_at >= deadline) {
top10[data.assignee] = top10[data.assignee] ? top10[data.assignee]+1 : 1;
}
}
let toplist = Object.keys(top10);
toplist.sort((a,b) => top10[b]-top10[a]);
toplist.splice(10);
let navitems = {
undefined: "(Everyone)"
};
Object.assign(navitems, Object.fromEntries(toplist.map(x => [x,x])));
const [navmenu, chart_area] = navtab(
navitems,
(val) => render_jira_stats(val, num_days)
);
outer_chart_area.appendChild(navmenu);
outer_chart_area.appendChild(chart_area);
jira_panel = chart_area;
render_jira_stats(null, num_days);
}