v0.35.2
This commit is contained in:
1 parent
09414dfb09
commit
f4606cce18
36 files changed
+641
-74
No files matched your search
@@ -165,7 +165,7 @@ function setPanel(name, navigate = true) {
|
||||
if (name === "filelogs") void window.rustProxyFileLogs?.refresh();
|
||||
if (name === "tls") void refreshCertificateInventory().then(() => { if (authenticated && currentPanel === "tls") renderCertificates(); });
|
||||
}
|
||||
function bytes(value) { if (value < 1024) return `${value} B`; for (const unit of ["KiB", "MiB", "GiB", "TiB"]) { value /= 1024; if (value < 1024 || unit === "TiB") return `${value.toFixed(value < 10 ? 1 : 0)} ${unit}`; } }
|
||||
function bytes(value) { if (value < 1024) return `${Math.round(value)} B`; for (const unit of ["KiB", "MiB", "GiB", "TiB"]) { value /= 1024; if (value < 1024 || unit === "TiB") return `${value.toFixed(value < 10 ? 1 : 0)} ${unit}`; } }
|
||||
function uptime(value) {
|
||||
let seconds = Math.max(0, Math.floor(Number(value) || 0));
|
||||
if (seconds < 60) return `${seconds}s`;
|
||||
@@ -232,7 +232,23 @@ window.rustProxyOverviewSamples.onChange(() => {
|
||||
}
|
||||
redrawOverviewHistoryCharts();
|
||||
});
|
||||
function renderStatus(s, systemSample = false) {
|
||||
// Safari has no CSS scroll anchoring: keep the element under the viewport centre in place
|
||||
// when a live refresh changes the height of content above it.
|
||||
const nativeScrollAnchoring = typeof CSS !== "undefined" && CSS.supports?.("overflow-anchor", "auto");
|
||||
function preserveScrollAnchor(render) {
|
||||
if (nativeScrollAnchoring || window.scrollY <= 0) return render();
|
||||
const probe = document.elementFromPoint(window.innerWidth / 2, window.innerHeight / 2);
|
||||
const anchor = probe?.closest?.("article, tr, .mini-live-chart, .network-interface-row") || probe;
|
||||
const before = anchor?.isConnected ? anchor.getBoundingClientRect().top : null;
|
||||
const result = render();
|
||||
if (before !== null && anchor.isConnected) {
|
||||
const shift = anchor.getBoundingClientRect().top - before;
|
||||
if (Math.abs(shift) >= 1) window.scrollBy(0, shift);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function renderStatus(s, systemSample = false) { return preserveScrollAnchor(() => renderStatusNow(s, systemSample)); }
|
||||
function renderStatusNow(s, systemSample = false) {
|
||||
const firstStatus = latestStatus === null;
|
||||
latestStatus = {
|
||||
...(latestStatus || {}), ...s,
|
||||
|
||||
Reference in new issue
Block a user