From f874326812301f9138c04b5c54a34375ccb6f76b Mon Sep 17 00:00:00 2001 From: rafapolo Date: Sun, 13 Sep 2026 14:07:26 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20clicking=20arquivo-fonte=20opens=20the?= =?UTF-8?q?=20original=20document,=20row=20click=20opens=20the=20r=C3=A9su?= =?UTF-8?q?m=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/index.html | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/web/index.html b/web/index.html index be60f7e..670f182 100644 --- a/web/index.html +++ b/web/index.html @@ -267,6 +267,8 @@ border-radius:999px; padding:2px 9px; } .resumo-file{ font-size:10.5px; color:var(--ink-3); line-height:1.5; overflow-wrap:anywhere; } + .resumo-file a{ color:inherit; text-decoration:none; } + .resumo-file a:hover{ color:var(--accent); text-decoration:underline; } .resumo-processo-btn{ width:100%; text-align:center; font:inherit; font-size:12.5px; font-weight:600; color:var(--accent); @@ -357,6 +359,7 @@ thead th:hover{ color:var(--ink); } thead th .arrow{ opacity:.5; margin-left:3px; } tbody td{ padding:9px 12px; border-bottom:1px solid var(--grid); vertical-align:top; color:var(--ink-2); } + tbody tr{ cursor:pointer; } tbody tr:hover td{ background:var(--accent-wash); } td.date{ font-family:"IBM Plex Mono",monospace; font-size:12px; white-space:nowrap; color:var(--ink); } td.lane{ white-space:nowrap; } @@ -367,9 +370,10 @@ td.text{ color:var(--ink); max-width:520px; } td.file{ font-family:"IBM Plex Mono",monospace; font-size:10.5px; color:var(--ink-3); max-width:220px; - overflow-wrap:anywhere; cursor:pointer; + overflow-wrap:anywhere; } - td.file:hover{ color:var(--accent); text-decoration:underline; } + td.file a{ color:inherit; text-decoration:none; } + td.file a:hover{ color:var(--accent); text-decoration:underline; } .table-foot{ display:flex; align-items:center; justify-content:center; gap:12px; padding:14px; } .table-foot button{ border:1px solid var(--border); background:var(--page); color:var(--ink); @@ -1309,7 +1313,13 @@ document.getElementById("resumoId").textContent = p.id; document.getElementById("resumoType").textContent = p.type; document.getElementById("resumoText").textContent = p.text; - document.getElementById("resumoFile").textContent = p.file; + var fileEl = document.getElementById("resumoFile"); + fileEl.innerHTML = ""; + var fileLink = document.createElement("a"); + fileLink.href = originalMdUrl(p.file); + fileLink.target = "_blank"; fileLink.rel = "noopener noreferrer"; + fileLink.textContent = p.file; + fileEl.appendChild(fileLink); var peopleBlock = document.getElementById("resumoPeopleBlock"); var peopleWrap = document.getElementById("resumoPeople"); @@ -1410,6 +1420,13 @@ return out.join("\n"); } + // r.file (docs.json) is always a path under originals/Parte2/ — every lane + // in docs.json has a matching folder there (verified: no lane needs Parte1). + function originalMdUrl(file){ + return "https://git.rodado.xyz/rodado/pet16704/src/branch/main/originals/Parte2/" + + file.split("/").map(encodeURIComponent).join("/"); + } + var processoCache = {}; // process number -> rendered HTML, or null if not found // resumos/parte1/ and resumos/parte2/ live one level above web/ in the // intended (repo-root) deployment, but a local server started from inside @@ -1668,6 +1685,11 @@ slice.forEach(function(r){ var lane = LANES[laneIndex[r.lane]]; var tr = document.createElement("tr"); + tr.title = "Ver resumo deste documento"; + tr.addEventListener("click", function(){ + setView("chart"); + openResumo(r, laneIndex[r.lane]); + }); var tdDate = document.createElement("td"); tdDate.className = "date"; @@ -1694,12 +1716,14 @@ tdPeople.textContent = (r.people && r.people.length) ? r.people.join(", ") : "—"; tr.appendChild(tdPeople); - var tdFile = document.createElement("td"); tdFile.className="file"; tdFile.textContent = r.file; - tdFile.title = "Ver resumo deste documento"; - tdFile.addEventListener("click", function(){ - setView("chart"); - openResumo(r, laneIndex[r.lane]); - }); + var tdFile = document.createElement("td"); tdFile.className="file"; + tdFile.title = "Abrir o documento original"; + var fileLink = document.createElement("a"); + fileLink.href = originalMdUrl(r.file); + fileLink.target = "_blank"; fileLink.rel = "noopener noreferrer"; + fileLink.textContent = r.file; + fileLink.addEventListener("click", function(e){ e.stopPropagation(); }); + tdFile.appendChild(fileLink); tr.appendChild(tdFile); frag.appendChild(tr);