diff --git a/jstrr.js b/jstrr.js index 6fb3bfd..f5e342e 100644 --- a/jstrr.js +++ b/jstrr.js @@ -352,10 +352,27 @@ } switchToArea(0); } + function filterSameTeam(e) { + e.stopPropagation(); + let tbl = document.getElementById("ranking-table"); + let team = e.target.textContent, body = document.body; + mystate.collapsed = !mystate.collapsed; + let visible = mystate.collapsed ? "collapse" : "visible"; + for (let tr of document.querySelectorAll("tr")) { + tr.style.visibility = + tr.classList.contains(team) ? "visible" : visible; + } + if (mystate.collapsed) + tbl.addEventListener("click", filterSameTeam); + else + tbl.removeEventListener("click", filterSameTeam); + } function showRank(list) { - mystate["ranklist"] = list; + mystate.ranklist = list; + mystate.collapsed = false; // user, max(score), max(step), count(score), sum(time)/60, max(at) - let tbl = document.getElementById("ranking-table"), me; + let tbl = document.getElementById("ranking-table"), me, teamcol, + rankinteam = {}; if (false) { for (let i=0; i<40; i++) { let tr = document.createElement("tr") @@ -366,15 +383,31 @@ for (let i in list) { let tr = document.createElement("tr"), rank = document.createElement("th"); - if (i>0) rank.textContent = parseInt(i); + if (i==0) { // Header row + if (list.mode == null) { + for (let c in list[i]) + if (list[i][c] == "Team") { + teamcol = c + break; + } + } + } else { + rank.textContent = parseInt(i); // for contents rows + } tr.appendChild(rank); for (let j=0; j