v0.57.0: stable host-storage list + per-app Tier-2 config panel
Part A of the UI-fixes/storage-spike spec.
A1: enrichHostStorageTargets sorts /api/host-metrics storage_targets
server-side and attaches friendly Hungarian labels + purpose, fixing the
#host-storage-bars reorder-on-poll bug. Display labels only — PVE storage
ids are never renamed.
A2: new GET/POST /stacks/{name}/backup Tier-2 config panel; the "2. mentés"
Beállítás button is repointed there from the dead-end deploy page. Customer
can pin a target drive or disable Tier 2; preference is preserved across the
runner's status writes. Always visible (single-SSD + non-HDD apps included).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -749,12 +749,17 @@
|
||||
} else {
|
||||
var html = '';
|
||||
targets.forEach(function(t) {
|
||||
var label = escapeHtml(t.name || '') + (t.type ? ' (' + escapeHtml(t.type) + ')' : '');
|
||||
// Friendly label (server-supplied) with the raw PVE storage id shown muted for clarity.
|
||||
var friendly = escapeHtml(t.label || t.name || '');
|
||||
var rawId = escapeHtml(t.name || '');
|
||||
var idHtml = rawId ? ' <span style="color:var(--text-muted);font-size:.72rem">(' + rawId + ')</span>' : '';
|
||||
var label = friendly + idHtml;
|
||||
var purposeHtml = t.purpose ? '<div class="storage-purpose" style="font-size:.72rem;opacity:.65;margin-top:.2rem">' + escapeHtml(t.purpose) + '</div>' : '';
|
||||
if (t.state && t.state !== 'attached') {
|
||||
html += '<div class="storage-item storage-disconnected">' +
|
||||
'<div class="storage-header"><span class="storage-label">' + label + '</span>' +
|
||||
'<span class="storage-value badge-error" style="font-size:.75rem">Nem elérhető</span></div>' +
|
||||
'<div class="system-bar"><div class="system-bar-disconnected"></div></div></div>';
|
||||
'<div class="system-bar"><div class="system-bar-disconnected"></div></div>' + purposeHtml + '</div>';
|
||||
return;
|
||||
}
|
||||
var pct = (t.used_fraction != null ? t.used_fraction * 100 : 0);
|
||||
@@ -774,7 +779,7 @@
|
||||
'<span class="storage-value">' + fmtBytesGB(t.used_bytes) + ' / ' + fmtBytesGB(t.total_bytes) +
|
||||
' (' + Math.round(pct) + '%)</span></div>' +
|
||||
'<div class="system-bar"><div class="system-bar-fill ' + usageColorClass(pct) +
|
||||
'" style="width:' + Math.min(100, pct).toFixed(1) + '%"></div></div></div>';
|
||||
'" style="width:' + Math.min(100, pct).toFixed(1) + '%"></div></div>' + purposeHtml + '</div>';
|
||||
});
|
||||
bars.innerHTML = html;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user