feat: clicking arquivo-fonte opens the original document, row click opens the résumé

This commit is contained in:
2026-09-13 14:07:26 +02:00
parent f8d07bfd20
commit c7c7d32ab5
+33 -9
View File
@@ -267,6 +267,8 @@
border-radius:999px; padding:2px 9px; 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{ 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{ .resumo-processo-btn{
width:100%; text-align:center; font:inherit; font-size:12.5px; font-weight:600; color:var(--accent); 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:hover{ color:var(--ink); }
thead th .arrow{ opacity:.5; margin-left:3px; } 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 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); } 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.date{ font-family:"IBM Plex Mono",monospace; font-size:12px; white-space:nowrap; color:var(--ink); }
td.lane{ white-space:nowrap; } td.lane{ white-space:nowrap; }
@@ -367,9 +370,10 @@
td.text{ color:var(--ink); max-width:520px; } td.text{ color:var(--ink); max-width:520px; }
td.file{ td.file{
font-family:"IBM Plex Mono",monospace; font-size:10.5px; color:var(--ink-3); max-width:220px; 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{ display:flex; align-items:center; justify-content:center; gap:12px; padding:14px; }
.table-foot button{ .table-foot button{
border:1px solid var(--border); background:var(--page); color:var(--ink); border:1px solid var(--border); background:var(--page); color:var(--ink);
@@ -1309,7 +1313,13 @@
document.getElementById("resumoId").textContent = p.id; document.getElementById("resumoId").textContent = p.id;
document.getElementById("resumoType").textContent = p.type; document.getElementById("resumoType").textContent = p.type;
document.getElementById("resumoText").textContent = p.text; 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 peopleBlock = document.getElementById("resumoPeopleBlock");
var peopleWrap = document.getElementById("resumoPeople"); var peopleWrap = document.getElementById("resumoPeople");
@@ -1410,6 +1420,13 @@
return out.join("\n"); 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 var processoCache = {}; // process number -> rendered HTML, or null if not found
// resumos/parte1/ and resumos/parte2/ live one level above web/ in the // resumos/parte1/ and resumos/parte2/ live one level above web/ in the
// intended (repo-root) deployment, but a local server started from inside // intended (repo-root) deployment, but a local server started from inside
@@ -1668,6 +1685,11 @@
slice.forEach(function(r){ slice.forEach(function(r){
var lane = LANES[laneIndex[r.lane]]; var lane = LANES[laneIndex[r.lane]];
var tr = document.createElement("tr"); 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"); var tdDate = document.createElement("td");
tdDate.className = "date"; tdDate.className = "date";
@@ -1694,12 +1716,14 @@
tdPeople.textContent = (r.people && r.people.length) ? r.people.join(", ") : "—"; tdPeople.textContent = (r.people && r.people.length) ? r.people.join(", ") : "—";
tr.appendChild(tdPeople); tr.appendChild(tdPeople);
var tdFile = document.createElement("td"); tdFile.className="file"; tdFile.textContent = r.file; var tdFile = document.createElement("td"); tdFile.className="file";
tdFile.title = "Ver resumo deste documento"; tdFile.title = "Abrir o documento original";
tdFile.addEventListener("click", function(){ var fileLink = document.createElement("a");
setView("chart"); fileLink.href = originalMdUrl(r.file);
openResumo(r, laneIndex[r.lane]); fileLink.target = "_blank"; fileLink.rel = "noopener noreferrer";
}); fileLink.textContent = r.file;
fileLink.addEventListener("click", function(e){ e.stopPropagation(); });
tdFile.appendChild(fileLink);
tr.appendChild(tdFile); tr.appendChild(tdFile);
frag.appendChild(tr); frag.appendChild(tr);