-
-
+
{{if .Purpose}}
{{.Purpose}}
{{end}}
@@ -259,10 +259,10 @@
// --- Chart.js dark theme defaults ---
var colors = {
- cpu: {border: '#0088cc', bg: 'rgba(0,136,204,0.1)'},
- memory: {border: '#238636', bg: 'rgba(35,134,54,0.1)'},
- temp: {border: '#d29922', bg: 'rgba(210,153,34,0.1)'},
- load: {border: '#db6d28', bg: 'rgba(219,109,40,0.1)'}
+ cpu: {border: '#2EA8F5', bg: 'rgba(46,168,245,0.1)'},
+ memory: {border: '#8E7CE8', bg: 'rgba(142,124,232,0.1)'},
+ temp: {border: '#E0A93E', bg: 'rgba(224,169,62,0.1)'},
+ load: {border: '#5EC4B6', bg: 'rgba(94,196,182,0.1)'}
};
// --- Range helper: returns milliseconds for a range string ---
@@ -294,10 +294,10 @@
plugins: {
legend: {display: false},
tooltip: {
- backgroundColor: '#1c2128',
- titleColor: '#e6edf3',
- bodyColor: '#8b949e',
- borderColor: '#30363d',
+ backgroundColor: '#0F1B2E',
+ titleColor: '#EDF2F9',
+ bodyColor: '#94A6BF',
+ borderColor: '#22344F',
borderWidth: 1,
callbacks: {
title: function(items) {
@@ -319,9 +319,9 @@
type: 'linear',
min: now - defaultRangeMs,
max: now,
- grid: {color: 'rgba(48,54,61,0.5)'},
+ grid: {color: 'rgba(34,52,79,0.5)'},
ticks: {
- color: '#8b949e',
+ color: '#94A6BF',
maxTicksLimit: 8,
callback: function(v) {
return formatTimeLabel(v);
@@ -329,10 +329,10 @@
}
},
y: {
- grid: {color: 'rgba(48,54,61,0.5)'},
- ticks: {color: '#8b949e'},
+ grid: {color: 'rgba(34,52,79,0.5)'},
+ ticks: {color: '#94A6BF'},
beginAtZero: beginAtZero !== false,
- title: {display: !!yLabel, text: yLabel || '', color: '#6e7681', font: {size: 11}}
+ title: {display: !!yLabel, text: yLabel || '', color: '#5E7392', font: {size: 11}}
}
}
};
@@ -481,23 +481,23 @@
plugins: {
legend: {display: false},
tooltip: {
- backgroundColor: '#1c2128',
- titleColor: '#e6edf3',
- bodyColor: '#8b949e',
- borderColor: '#30363d',
+ backgroundColor: '#0F1B2E',
+ titleColor: '#EDF2F9',
+ bodyColor: '#94A6BF',
+ borderColor: '#22344F',
borderWidth: 1
}
},
scales: {
x: {
- grid: {color: 'rgba(48,54,61,0.5)'},
- ticks: {color: '#8b949e'},
+ grid: {color: 'rgba(34,52,79,0.5)'},
+ ticks: {color: '#94A6BF'},
beginAtZero: true,
- title: {display: true, text: xLabel, color: '#6e7681', font: {size: 11}}
+ title: {display: true, text: xLabel, color: '#5E7392', font: {size: 11}}
},
y: {
grid: {display: false},
- ticks: {color: '#8b949e', font: {size: 12}}
+ ticks: {color: '#94A6BF', font: {size: 12}}
}
},
onClick: function(evt, elements) {
@@ -513,12 +513,12 @@
chartContainerCPU = new Chart(document.getElementById('chart-container-cpu'), {
type: 'bar',
- data: {labels: [], datasets: [{data: [], backgroundColor: '#0088cc', borderRadius: 4}]},
+ data: {labels: [], datasets: [{data: [], backgroundColor: '#2EA8F5', borderRadius: 2}]},
options: barOpts('%')
});
chartContainerMem = new Chart(document.getElementById('chart-container-mem'), {
type: 'bar',
- data: {labels: [], datasets: [{data: [], backgroundColor: '#238636', borderRadius: 4}]},
+ data: {labels: [], datasets: [{data: [], backgroundColor: '#8E7CE8', borderRadius: 2}]},
options: barOpts('MB')
});
}
@@ -560,7 +560,7 @@
}
}
- var memDistPalette = ['#238636','#0088cc','#d29922','#da3633','#8b5cf6','#ec6547','#2ea043','#1f6feb','#e3b341','#f47067'];
+ var memDistPalette = ['#2EA8F5','#8E7CE8','#5EC4B6','#E0A93E','#D67BB5','#7FA6E8','#59B88C','#E8935E','#6FCADF','#B3A1F0'];
async function buildMemoryDistributionBar(containers) {
var totalMB = {{.SystemInfo.TotalMemMB}};
@@ -608,12 +608,12 @@
// OS / system overhead
if (osMB > 10) {
var osPct = (osMB / totalMB * 100).toFixed(2);
- html += '
';
- legendHtml += '
Rendszer (' + fmtMB(osMB) + ')
';
+ html += '
';
+ legendHtml += '
Rendszer (' + fmtMB(osMB) + ')
';
}
// Free space legend only
- legendHtml += '
Szabad (' + fmtMB(freeMB) + ')
';
+ legendHtml += '
Szabad (' + fmtMB(freeMB) + ')
';
bar.innerHTML = html;
legend.innerHTML = legendHtml;
@@ -688,9 +688,9 @@
// HOST (PROXMOX BOX) HEALTH — slice 9, proxied from the host agent
// =============================================
function usageColorClass(pct) {
- if (pct >= 85) return 'system-bar-red';
- if (pct >= 70) return 'system-bar-yellow';
- return 'system-bar-green';
+ if (pct >= 85) return 'crit';
+ if (pct >= 70) return 'warn';
+ return 'nominal';
}
function fmtBytesGB(bytes) {
@@ -745,21 +745,21 @@
var bars = document.getElementById('host-storage-bars');
var targets = Array.isArray(d.storage_targets) ? d.storage_targets : [];
if (!targets.length) {
- bars.innerHTML = '
Nincs tároló adat.
';
+ bars.innerHTML = '
Nincs tároló adat.
';
} else {
var html = '';
targets.forEach(function(t) {
// 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 ? '
(' + rawId + ') ' : '';
+ var idHtml = rawId ? '
(' + rawId + ') ' : '';
var label = friendly + idHtml;
var purposeHtml = t.purpose ? '
' + escapeHtml(t.purpose) + '
' : '';
if (t.state && t.state !== 'attached') {
- html += '
' +
+ html += '
' +
'' +
- '
' + purposeHtml + '
';
+ '
— Nem elérhető ' +
+ '
' + purposeHtml + '
';
return;
}
var pct = (t.used_fraction != null ? t.used_fraction * 100 : 0);
@@ -772,13 +772,13 @@
if (t.smart.temperature_c != null) extra.push(t.smart.temperature_c + ' °C');
if (t.smart.percentage_used != null) extra.push('kopás: ' + t.smart.percentage_used + '%');
}
- var extraHtml = extra.length ? '
' +
+ var extraHtml = extra.length ? '
· ' + escapeHtml(extra.join(' · ')) + ' ' : '';
+ html += '
' +
'' +
- '
';
});
bars.innerHTML = html;
diff --git a/controller/internal/web/templates/settings.html b/controller/internal/web/templates/settings.html
index cd48171..5eb5476 100644
--- a/controller/internal/web/templates/settings.html
+++ b/controller/internal/web/templates/settings.html
@@ -242,8 +242,8 @@ pollUntilBack();
Kiváltva
{{else}}
{{if .IsDefault}}
Alapértelmezett {{end}}
- {{if .Schedulable}}
Aktív {{else}}
Inaktív {{end}}
- {{if .IsUSB}}
USB {{end}}
+ {{if .Schedulable}}
Aktív {{else}}
Inaktív {{end}}
+ {{if .IsUSB}}
USB {{end}}
{{if not .IsMounted}}
Rendszermeghajtón {{end}}
{{end}}
@@ -296,7 +296,7 @@ pollUntilBack();
{{end}}
{{if .StoppedApps}}
- Újraindításra váró alkalmazások: {{range $i, $name := .StoppedApps}}{{if $i}}, {{end}}{{$name}}{{end}}
+ Újraindításra váró alkalmazások: {{range $i, $name := .StoppedApps}}{{if $i}}, {{end}}{{$name}}{{end}}
Alkalmazások indítása
{{end}}
@@ -471,7 +471,7 @@ pollUntilBack();
}
-
+
diff --git a/controller/internal/web/templates/storage_init.html b/controller/internal/web/templates/storage_init.html
index 1cf1815..697679e 100644
--- a/controller/internal/web/templates/storage_init.html
+++ b/controller/internal/web/templates/storage_init.html
@@ -134,7 +134,7 @@ async function submitInit(ev){
// SYSTEM/BACKUP (shouldn't reach here — filtered out — but surface the opsign if it does).
if(res.status===409 && res.j.data && res.j.data.refused){
out.innerHTML='
Operátori aláírás szükséges. Ez a meghajtó védett (rendszer/biztonsági mentés).'
- +(res.j.data.opsign?('
'+esc(res.j.data.opsign)+' '):'')+'
';
+ +(res.j.data.opsign?('
'+esc(res.j.data.opsign)+' '):'')+'
';
btn.disabled=false; return false;
}
finishInit(res.j, out);
diff --git a/controller/internal/web/templates/style.css b/controller/internal/web/templates/style.css
index ef6f112..be9fc77 100644
--- a/controller/internal/web/templates/style.css
+++ b/controller/internal/web/templates/style.css
@@ -854,60 +854,38 @@ select.form-control option { background: var(--bg-2); color: var(--text-1); }
color: var(--text-3);
font-family: var(--font-data);
}
-.memory-bar-stacked {
- width: 100%;
- height: 10px;
- border-radius: var(--radius);
+/* Deploy-page memory meter — two segments on the meter track:
+ committed = solid blue, new app = blue at 35% opacity (v2). */
+.meter-track-stacked {
+ height: 3px;
display: flex;
- overflow: hidden;
+ overflow: visible;
position: relative;
- background: linear-gradient(to right,
- var(--blue-dim) 0%, var(--blue-dim) 70%,
- var(--warn-dim) 70%, var(--warn-dim) 85%,
- var(--crit-dim) 85%, var(--crit-dim) 100%
- );
+ background: var(--line-soft);
}
-.memory-bar-stacked::before {
+.meter-track-stacked::before,
+.meter-track-stacked::after {
content: '';
position: absolute;
- left: 70%;
- top: -1px;
- bottom: -1px;
- width: 2px;
- background: var(--warn);
- border-radius: 0;
- opacity: 0.5;
- z-index: 2;
-}
-.memory-bar-stacked::after {
- content: '';
- position: absolute;
- left: 85%;
- top: -1px;
- bottom: -1px;
- width: 2px;
- background: var(--crit);
- border-radius: 0;
- opacity: 0.5;
+ top: -2px;
+ bottom: -2px;
+ width: 1px;
+ background: var(--line);
z-index: 2;
}
+.meter-track-stacked::before { left: 70%; }
+.meter-track-stacked::after { left: 85%; }
.memory-bar-segment {
height: 100%;
position: relative;
z-index: 1;
transition: width 0.3s ease;
}
-.memory-bar-segment:not([style*="width:0%"]) {
- min-width: 3px;
-}
.memory-bar-committed {
background: var(--blue);
- border-radius: 0;
}
.memory-bar-new {
- background: var(--blue-dim);
- border-right: 2px solid var(--blue-bright);
- border-radius: 0;
+ background: rgba(0,131,216,.35);
}
.memory-bar-legend {
display: flex;
@@ -920,7 +898,7 @@ select.form-control option { background: var(--bg-2); color: var(--text-1); }
align-items: center;
gap: 0.35rem;
font-size: .75rem;
- color: var(--text-2);
+ color: var(--text-3);
white-space: nowrap;
}
.memory-legend-dot {
@@ -934,8 +912,7 @@ select.form-control option { background: var(--bg-2); color: var(--text-1); }
background: var(--blue);
}
.memory-legend-new {
- background: var(--blue-dim);
- border: 1px solid var(--blue-bright);
+ background: rgba(0,131,216,.35);
}
.memory-dist-bar {
width: 100%;
@@ -3252,3 +3229,8 @@ span.mono, .mono { font-family: var(--font-data); }
.list .row.state-run::before,
.list .row.state-progress::before { background: var(--blue); }
.list .row.state-warn::before { background: var(--warn); }
+
+/* Spinning progress icon (deploy steps, async tasks) */
+.ico-spin { animation: ico-spin 1s linear infinite; }
+@keyframes ico-spin { to { transform: rotate(360deg); } }
+@media (prefers-reduced-motion: reduce) { .ico-spin { animation: none; } }
diff --git a/controller/internal/web/templates/tier2_config.html b/controller/internal/web/templates/tier2_config.html
index b55192a..16fb215 100644
--- a/controller/internal/web/templates/tier2_config.html
+++ b/controller/internal/web/templates/tier2_config.html
@@ -11,7 +11,7 @@
{{with .Tier2}}
-
+
A 2. mentés egy másik fizikai meghajtóra készít másolatot az alkalmazás
helyreállítási csomagjáról és adatairól. Ez az egyetlen off-drive védelem a böngészhető
felhasználói fájlokhoz (a teljes rendszermentés/PBS nem éri el ezeket).
@@ -38,7 +38,7 @@
Megjegyzés
- {{.NoTargetReason}}
+ {{.NoTargetReason}}
{{else}}
@@ -47,7 +47,7 @@
Kiválasztás módja
- {{if .Preferred}}kézi választás{{else}}automatikus{{end}} — {{.EffectiveDesc}}
+ {{if .Preferred}}kézi választás{{else}}automatikus{{end}} — {{.EffectiveDesc}}
{{end}}
@@ -77,7 +77,7 @@
{{end}}
{{if not .Alternatives}}
-