Scheduler: two-panel responsive layout with running indicator
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.
This commit is contained in:
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user