From: Lady Date: Sun, 17 Dec 2023 03:36:50 +0000 (-0500) Subject: Use titles in prev & next links on statuses X-Git-Tag: 0.3.2^0 X-Git-Url: https://git.ladys.computer/x_status_git/commitdiff_plain/7ecd84bf3f8e1f7c9b3f3780a3083e5151f455b8?ds=inline;hp=5d3d36f31fdfd8ad151fa2b2c4ca0f6e1301db8e Use titles in prev & next links on statuses --- diff --git a/status.html b/status.html index e1c68ad..dbc899c 100644 --- a/status.html +++ b/status.html @@ -65,50 +65,60 @@ fetch(index) nav.appendChild(document.createTextNode("; Previous: ")) const prevLink = nav.appendChild(document.createElement("a")) prevLink.href = items[n - 1]["@id"] - const prevText = (() => { - try { - const prevD = parser.parseFromString(items[n - 1].content, "application/xhtml+xml") - const div = document.createElement("div") - div.appendChild(document.importNode(prevD.documentElement, true)) - Object.assign(div.style, - { position: "absolute" - , top: "-2px" - , height: "1px" - , width: "1px" - , overflow: "hidden" }) - document.body.appendChild(div) - const text = div.innerText - document.body.removeChild(div) - return text } - catch { } })() ?? items[n + 1].created; - const prevChars = Array.from(prevText.trim().replaceAll(/\s+/gu, " ")) - prevLink.textContent = prevChars.length > 28 - ? "".concat(...prevChars.slice(0, 27), "…") - : prevText } + const { title: prevTitle } = items[n - 1] + if (prevTitle) prevLink.textContent = prevTitle.length > 28 + ? "".concat(...prevTitle.slice(0, 27), "…") + : prevTitle + else { + const prevText = (() => { + try { + const prevD = parser.parseFromString(items[n - 1].content, "application/xhtml+xml") + const div = document.createElement("div") + div.appendChild(document.importNode(prevD.documentElement, true)) + Object.assign(div.style, + { position: "absolute" + , top: "-2px" + , height: "1px" + , width: "1px" + , overflow: "hidden" }) + document.body.appendChild(div) + const text = div.innerText + document.body.removeChild(div) + return text } + catch { } })() ?? items[n + 1].created; + const prevChars = Array.from(prevText.trim().replaceAll(/\s+/gu, " ")) + prevLink.textContent = prevChars.length > 28 + ? "".concat(...prevChars.slice(0, 27), "…") + : prevText } } if (n < items.length - 1) { nav.appendChild(document.createTextNode("; Next: ")) const nextLink = nav.appendChild(document.createElement("a")) nextLink.href = items[n + 1]["@id"] - const nextText = (() => { - try { - const nextD = parser.parseFromString(items[n + 1].content, "application/xhtml+xml") - const div = document.createElement("div") - div.appendChild(document.importNode(nextD.documentElement, true)) - Object.assign(div.style, - { position: "absolute" - , top: "-2px" - , height: "1px" - , width: "1px" - , overflow: "hidden" }) - document.body.appendChild(div) - const text = div.innerText - document.body.removeChild(div) - return text } - catch { } })() ?? items[n + 1].created; - const nextChars = Array.from(nextText.trim().replaceAll(/\s+/gu, " ")) - nextLink.textContent = nextChars.length > 28 - ? "".concat(...nextChars.slice(0, 27), "…") - : nextText } + const { title: nextTitle } = items[n + 1] + if (nextTitle) nextLink.textContent = nextTitle.length > 28 + ? "".concat(...nextTitle.slice(0, 27), "…") + : nextTitle + else { + const nextText = (() => { + try { + const nextD = parser.parseFromString(items[n + 1].content, "application/xhtml+xml") + const div = document.createElement("div") + div.appendChild(document.importNode(nextD.documentElement, true)) + Object.assign(div.style, + { position: "absolute" + , top: "-2px" + , height: "1px" + , width: "1px" + , overflow: "hidden" }) + document.body.appendChild(div) + const text = div.innerText + document.body.removeChild(div) + return text } + catch { } })() ?? items[n + 1].created; + const nextChars = Array.from(nextText.trim().replaceAll(/\s+/gu, " ")) + nextLink.textContent = nextChars.length > 28 + ? "".concat(...nextChars.slice(0, 27), "…") + : nextText } } nav.appendChild(document.createTextNode(".")) if (title) { const wrapper = document.createElement("article")