in webui/js/ponymail.js [4519:4595]
async function sidebar_stats(json) {
let obj = document.getElementById('sidebar_stats');
if (!obj) {
return;
}
obj.innerHTML = ""; // clear stats bar
// Subscribe button
if (prefs && prefs.subscribeLinks) {
let sb = document.getElementById('sidebar_subscribe');
if (sb) sb.textContent = "";
if (sb && json.list && !json.list.match(/\*/)) {
sb.textContent = "";
let sublink = json.list.replace("@", "-subscribe@");
let subbutton = new HTML("a", {href: `mailto:${sublink}`, id: "subscribe_button"}, "Subscribe to list");
sb.inject(subbutton);
}
}
let wc = document.getElementById('sidebar_wordcloud');
if (!json.emails || isHash(json.emails) || json.emails.length == 0) {
obj.innerText = "No emails found...";
if (wc) {
wc.innerHTML = "";
}
return;
}
// Top 10 participants
obj.inject("Found %u emails by %u authors, divided into %u topics.".format(json.emails.length, json.numparts, json.no_threads));
obj.inject(new HTML('h5', {}, "Most active authors: "));
for (let i = 0; i < json.participants.length; i++) {
if (i >= 5) {
break;
}
let par = json.participants[i];
if (par.name.length > 24) {
par.name = par.name.substring(0, 23) + "...";
}
if (par.name.length == 0) {
par.name = par.email;
}
let pdiv = new HTML('div', {
class: "sidebar_stats_participant"
});
let pimg = new HTML('img', {
class: "gravatar_sm",
src: GRAVATAR_URL.format(par.gravatar)
})
pdiv.inject(pimg);
pdiv.inject(new HTML('b', {}, par.name + ": "));
pdiv.inject(new HTML('br'));
pdiv.inject("%u emails sent".format(par.count));
obj.inject(pdiv);
}
// Word cloud, if applicable
if (wc && json.cloud) {
wc.innerHTML = "";
wc.inject(new HTML('h5', {}, "Popular topics:"));
// word cloud is delayed by 50ms to let the rest render first
// this is a chrome-specific slowdown we're addressing.
window.setTimeout(function() {
if (G_current_month) {
daterange = G_current_year + '-' + G_current_month
} else {
daterange = G_current_year
}
wordCloud(json.cloud, 220, 100, wc, daterange);
}, 50);
}
if (G_show_stats_sidebar === false) {
obj.style.display = "none";
wc.style.display = "none";
}
}