try to take over the world!
// ==UserScript==
// @name sum story-points
// @namespace http://tampermonkey.net/
// @version 0.2
// @description try to take over the world!
// @author You
// @match https://trello.com/*
// @grant none
// ==/UserScript==
const FIRST_CALL_DELAY = 500;
const INTERVAL = 4000;
const SP_SEARCH_PREFIX = "Story Points⏰: ";
const SP_PRINT_PREFIX = "⏰";
const main = () => {
if (document.hidden) return;
const lists = document.getElementsByClassName('list');
for(var i = 0; i < lists.length; i++) {
var list = lists[i];
const listCards = list.querySelectorAll(".list-card");
const sum = Array.prototype.reduce.call(listCards, (acc, listCard) => {
const customFields = listCard.querySelectorAll(".custom-field-front-badges .badge .badge-text");
const foundElement = Array.prototype.find.call(customFields, f => f.innerText.startsWith(SP_SEARCH_PREFIX));
var sp = 0;
if(foundElement) {
const spText = foundElement.innerText.substr(SP_SEARCH_PREFIX.length);
sp = Number.parseFloat(spText);
}
return acc + sp;
}, 0);
const listHeaderTarget = list.querySelector(".list-header");
var listHeaderSpSum = listHeaderTarget.querySelector(".list-header-spsum");
if(sum > 0) {
if(!listHeaderSpSum) {
listHeaderSpSum = document.createElement("span");
listHeaderSpSum.classList.add("list-header-spsum");
listHeaderSpSum.style.opacity = 0.3;
listHeaderSpSum.style.marginLeft = "8px";
listHeaderTarget.appendChild(listHeaderSpSum);
}
const newSpSum = SP_PRINT_PREFIX + sum;
if(listHeaderSpSum.innerText !== newSpSum) {
listHeaderSpSum.innerText = newSpSum;
}
} else {
if(listHeaderSpSum) {
listHeaderTarget.remove();
}
}
}
};
$(document).ready(() => {
setTimeout(() => {
const interval = setInterval(main, INTERVAL);
}, FIRST_CALL_DELAY)
});