# HG changeset patch # User HIROSE Yuuji # Date 1709685472 -32400 # Node ID e8f73df7ed5da52465c5022bd68e1eb789b9c2a5 # Parent 17e21e7dcfaa2dc814147c56906ab90385ed3307 Add "sort by uid" button to blog table diff -r 17e21e7dcfaa -r e8f73df7ed5d s4-main.js --- a/s4-main.js Wed Mar 06 09:32:51 2024 +0900 +++ b/s4-main.js Wed Mar 06 09:37:52 2024 +0900 @@ -894,8 +894,11 @@ } } function initBlogs() { - // Auto-complete #xxxx + // (1)Auto-complete #xxxx, (2)Prepare sort + + // (1)Complete #xxxx let i, check = collectElementsByAttr("input", "name", "notifyto"); + let blogheadtd = document.querySelector("table.bloghead tr td"); if (check) for (i of check) { i.addEventListener("click", insertRedirect, false); @@ -924,8 +927,7 @@ i = document.getElementById("reload"); if (i) i.addEventListener("click", ajaxPost, false); // Add CSV download button - let td = document.querySelector("table.bloghead tr td"); - if (td) { + if (blogheadtd) { let btn = document.createElement("button"); btn.innerText = "CSVget"; btn.type = "button"; @@ -936,7 +938,7 @@ Excelで利用する場合は Ctrl を押しながらクリックして下さい。 Get seen TEXT content as CSV.`; btn.addEventListener("click", getTextContentCSV, false); - let artlink = td.querySelector('a[accesskey="f"]'); + let artlink = blogheadtd.querySelector('a[accesskey="f"]'); let spacer = document.createElement("span"); if (artlink) { spacer.innerText = "|"; @@ -944,8 +946,8 @@ artlink.insertAdjacentElement('beforebegin', spacer); } else { spacer.innerText = " "; - td.appendChild(spacer); - td.appendChild(btn); + blogheadtd.appendChild(spacer); + blogheadtd.appendChild(btn); } } } @@ -960,6 +962,53 @@ // Hack article_m links registPjaxViewers(document.querySelectorAll("a[href]")); atMarkView(document); + /*****************************************************************/ + //(2) Prepare sort + let warn = document.querySelector("tr.warn span.warn"); + if (blogheadtd && warn==null) { + let umode = "UserSORT", amode = "ArticleSort"; + let sbtn = document.createElement("button"); + sbtn.textContent = umode; + sbtn.type = 'button'; + let spacer = document.createElement("span"); + spacer.textContent = " "; + let hide = document.getElementById("hideauth"); + if (hide) { + hide.insertAdjacentElement('afterend', sbtn); + hide.insertAdjacentElement('afterend', spacer); + } else { + blogheadtd.appendChild(spacer); + blogheadtd.appendChild(sbtn); + } + function compareRowsByUid(a, b) { + if (a.key1 < b.key1) return -1; + if (a.key1 > b.key1) return 1; + if (a.key2 < b.key2) return -1; + if (a.key2 > b.key2) return 1; + return 0; + } + function compareRowsByAid(a, b) { + if (a.key2 < b.key2) return -1; + if (a.key2 > b.key2) return 1; + return 0; + } + sbtn.addEventListener("click", (e)=>{ + let uidsort = (sbtn.textContent.indexOf(umode) >= 0); + let rows = [], elm, + tbl = document.querySelector("table.blog_replies"); + for (let tr of tbl.rows) { + elm = {}; + elm.tr = tr; + elm.key1 = tr.querySelector("a.author").title; // userid + tr.innerHTML.match(/\1