diff --git a/Plugin/unraid/css/varaverk.css b/Plugin/unraid/css/varaverk.css index 4f3b68f..76f724e 100644 --- a/Plugin/unraid/css/varaverk.css +++ b/Plugin/unraid/css/varaverk.css @@ -739,10 +739,14 @@ body.vv-fullscreen #displaybox { padding-left: 1rem !important; padding-top: .5r .vv-info-divider { font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: #444; padding: 10px 12px 4px; border-top: 1px solid #2a2a2a; margin-top: 2px; } -/* How do I use this — pinned at top of suggestions panel */ +/* How do I use this — pinned directly beneath the notification board. + top is the board's measured height, not a constant: the board wraps to a second line in + Advanced mode, where the conf buttons and Git Pull join it. A hardcoded offset would let this + slide underneath it at exactly the width where the wrap happens. vvFitRight() keeps the + variable in step; the fallback is the board's own min-height. */ #vv-how-to-use { position: sticky; - top: 0; + top: var(--vv-nb-h, 34px); z-index: 3; background: #1e1e1e; border-bottom: 1px solid #333; @@ -873,10 +877,13 @@ mark { background: #5d4037; color: #ffcc80; border-radius: 2px; } .vv-disabled-name { color: #888; flex: 1; } .vv-disabled-grp { color: #444; font-size: 10px; font-family: monospace; white-space: nowrap; } -/* Notification board */ +/* Notification board. Pinned above the help block: what is running and what is scheduled is the + one thing on this panel worth seeing while reading anything else on it. Highest z-index of the + two pinned rows because it is the topmost — #vv-how-to-use sticks directly beneath it. */ .vv-nb-board { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 7px 10px; background: #141414; border-bottom: 1px solid #222; - font-size: 12px; min-height: 34px; } + font-size: 12px; min-height: 34px; + position: sticky; top: 0; z-index: 4; } .vv-nb-stat { color: #aaa; } .vv-nb-sep { color: #444; } .vv-nb-running { color: #f0a040; } diff --git a/Plugin/unraid/pages/scheduler.php b/Plugin/unraid/pages/scheduler.php index c0ee62a..b48a446 100644 --- a/Plugin/unraid/pages/scheduler.php +++ b/Plugin/unraid/pages/scheduler.php @@ -137,14 +137,22 @@ $_childManuals = array_values(array_filter($_repoFiles, function($f) { })); sort($_childManuals); -// Job stats for notification board -$totalJobs = 0; $scheduledJobs = 0; +// Job stats for notification board. +// +// Counted against orchestrators, not against every script. A schedule here is normally expressed +// as one cron on an orchestrator that then calls its steps in order, so the steps are deliberately +// cronless — counting them as unscheduled reported a fully-scheduled system as almost entirely +// unscheduled, "10 / 82", which is alarming and wrong. +// +// Steps that do carry their own cron are counted separately. That happens when an orchestrator is +// off and its steps have been given schedules of their own, which is the exception — and the +// number of exceptions is the figure actually worth knowing. +$orchTotal = 0; $orchScheduled = 0; $soloScheduled = 0; foreach ($tree as $orch) { - $totalJobs++; - if (!empty($orch['cron']) && $orch['enabled']) $scheduledJobs++; + $orchTotal++; + if (!empty($orch['cron']) && $orch['enabled']) $orchScheduled++; foreach (($orch['children'] ?? []) as $child) { - $totalJobs++; - if (!empty($child['cron']) && $child['enabled']) $scheduledJobs++; + if (!empty($child['cron']) && $child['enabled']) $soloScheduled++; } } $runningScripts = []; @@ -493,7 +501,11 @@ $runningScripts = array_unique($runningScripts);