From 706ef2dd72a77b6acb3b8d80ba22e5c1bb54271c Mon Sep 17 00:00:00 2001 From: Gmer4Lfe Date: Sat, 23 May 2026 17:59:51 -0400 Subject: [PATCH] Scheduler: two-panel responsive layout with running indicator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Scripts list on left, persistent log panel on right. On screens ≤880px falls back to stacked single-column. Right panel stays open until page refresh or another selection. Running dot pulses green on the job row and in the log header while script executes, clears when log goes stale. --- .../emhttp/plugins/varaverk/css/varaverk.css | 29 +- .../plugins/varaverk/pages/scheduler.php | 333 ++++++++++-------- 2 files changed, 212 insertions(+), 150 deletions(-) diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/css/varaverk.css b/Plugin/usr/local/emhttp/plugins/varaverk/css/varaverk.css index 6d46a29..3425231 100644 --- a/Plugin/usr/local/emhttp/plugins/varaverk/css/varaverk.css +++ b/Plugin/usr/local/emhttp/plugins/varaverk/css/varaverk.css @@ -38,8 +38,8 @@ .vv-script { background: #161616; border: 1px solid #333; border-radius: 4px; padding: 6px 10px; margin: 4px 0; margin-left: 20px; } .vv-job-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } -.vv-job-label { flex: 1; font-size: 14px; min-width: 160px; } -.vv-cron { width: 150px; background: #111; border: 1px solid #444; color: #ddd; +.vv-job-label { flex: 1; font-size: 14px; min-width: 120px; } +.vv-cron { width: 140px; background: #111; border: 1px solid #444; color: #ddd; padding: 4px 8px; border-radius: 4px; font-family: monospace; font-size: 13px; } .vv-children { padding-top: 8px; border-top: 1px solid #333; margin-top: 8px; } .vv-advanced-toggle { background: none; border: 1px solid #555; color: #aaa; @@ -51,6 +51,31 @@ .vv-btn-sm:hover { border-color: #888; color: #fff; } .vv-btn-sm.active { border-color: #4caf50; color: #4caf50; } +/* Running dot */ +.vv-job-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex-shrink: 0; } +.vv-dot-running { background: #4caf50; animation: vv-pulse-dot 1s ease-in-out infinite; } +#vv-log-dot { animation: vv-pulse-dot 1s ease-in-out infinite; } +@keyframes vv-pulse-dot { 0%, 100% { opacity: 1; } 50% { opacity: 0.2; } } + +/* Selected job row */ +.vv-row-selected { background: rgba(255,255,255,0.05); border-radius: 4px; + outline: 1px solid #555; } + +/* Two-panel layout */ +#vv-sched-layout { display: flex; gap: 16px; align-items: flex-start; } +#vv-sched-left { flex: 0 0 500px; min-width: 0; } +#vv-sched-right { display: none; flex: 1; min-width: 0; position: sticky; top: 16px; } +#vv-sched-right.vv-panel-visible { display: block; } +.vv-log-right-pre { min-height: 360px; max-height: calc(100vh - 200px); } + +/* Mobile: stack vertically, right panel full-width below cards */ +@media (max-width: 880px) { + #vv-sched-layout { flex-direction: column; } + #vv-sched-left { flex: none; width: 100%; } + #vv-sched-right { position: static; width: 100%; } + .vv-log-right-pre { min-height: 200px; max-height: 340px; } +} + /* Card footer */ .vv-card-footer { display: flex; align-items: center; gap: 10px; margin-top: 12px; padding-top: 10px; border-top: 1px solid #333; } diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/pages/scheduler.php b/Plugin/usr/local/emhttp/plugins/varaverk/pages/scheduler.php index 68df535..c39ef14 100644 --- a/Plugin/usr/local/emhttp/plugins/varaverk/pages/scheduler.php +++ b/Plugin/usr/local/emhttp/plugins/varaverk/pages/scheduler.php @@ -4,86 +4,99 @@ $tree = vv_job_tree(); ?>
-

Toggle enables/saves immediately. Edit cron expressions then hit - Save at the bottom of the card. Run fires the script - now and opens its log.

+

Toggle saves immediately. Edit cron then Save. + Run fires now; Dry Run sets DRY_RUN=1. + Log opens on the right.

- -
+
- -
- - - - - - - - - - -
+ +
- - + +
- - -