async function seed_jira_stats()

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);
}