feat(dossiers-ngi): sticky bar vs-parent loc-on-roots split plus/minus 45rem

This commit is contained in:
Hernâni Marques 2026-09-30 23:45:02 +02:00
parent da6f384399
commit 7397cddb83
No known key found for this signature in database
6 changed files with 148 additions and 85 deletions

View file

@ -59,20 +59,30 @@
return sec || at;
}
function diffHtml(row) {
var plus = row.vs_main_plus;
var minus = row.vs_main_minus;
if (plus == null && minus == null) return "";
var p = plus == null ? 0 : Number(plus);
var m = minus == null ? 0 : Number(minus);
if (!isFinite(p) || !isFinite(m)) return "";
return (
'<span class="diff-plus">+' +
esc(String(p)) +
'</span> <span class="diff-minus">−' +
esc(String(m)) +
"</span>"
);
function plusHtml(row) {
if (row.vs_parent_plus != null) {
var p = Number(row.vs_parent_plus);
if (!isFinite(p)) return "";
return '<span class="diff-plus">+' + esc(String(p)) + "</span>";
}
if (row.loc != null) {
var n = Number(row.loc);
if (!isFinite(n)) return "";
return '<span class="diff-loc">' + esc(String(n)) + "</span>";
}
return "";
}
function minusHtml(row) {
if (row.vs_parent_minus != null) {
var m = Number(row.vs_parent_minus);
if (!isFinite(m)) return "";
return '<span class="diff-minus">−' + esc(String(m)) + "</span>";
}
if (row.loc != null) {
return '<span class="diff-loc-unit">LOC</span>';
}
return "";
}
function setText(el, text) {
@ -84,15 +94,15 @@
function rowTitle(row) {
var tip = row.tip || "";
var tipTime = row.tip_time || "";
var plus = row.vs_main_plus;
var minus = row.vs_main_minus;
var vs = "";
if (plus != null || minus != null) {
if (row.vs_parent_plus != null || row.vs_parent_minus != null) {
vs =
" vs main +" +
String(plus == null ? 0 : plus) +
" vs parent +" +
String(row.vs_parent_plus == null ? 0 : row.vs_parent_plus) +
"/−" +
String(minus == null ? 0 : minus);
String(row.vs_parent_minus == null ? 0 : row.vs_parent_minus);
} else if (row.loc != null) {
vs = " loc=" + String(row.loc);
}
var built = builtText(row);
return (
@ -181,10 +191,15 @@
else a.removeAttribute("data-default");
setText(a.querySelector(".cascade-when"), shortTime(row.tip_time || ""));
setText(a.querySelector(".cascade-built"), builtText(row));
var diffEl = a.querySelector(".cascade-diff");
if (diffEl) {
var dh = diffHtml(row);
if (diffEl.innerHTML !== dh) diffEl.innerHTML = dh;
var plusEl = a.querySelector(".cascade-plus");
if (plusEl) {
var ph = plusHtml(row);
if (plusEl.innerHTML !== ph) plusEl.innerHTML = ph;
}
var minusEl = a.querySelector(".cascade-minus");
if (minusEl) {
var mh = minusHtml(row);
if (minusEl.innerHTML !== mh) minusEl.innerHTML = mh;
}
a.setAttribute("title", rowTitle(row));
}
@ -252,8 +267,11 @@
'<span class="cascade-built">' +
esc(builtText(row)) +
"</span>" +
'<span class="cascade-diff">' +
diffHtml(row) +
'<span class="cascade-plus">' +
plusHtml(row) +
"</span>" +
'<span class="cascade-minus">' +
minusHtml(row) +
"</span>" +
"</a>"
);