diff --git a/modules/pco-plan/module.json b/modules/pco-plan/module.json index bbab98a..9ab9699 100644 --- a/modules/pco-plan/module.json +++ b/modules/pco-plan/module.json @@ -16,7 +16,7 @@ "help": "Create a Personal Access Token at api.planningcenteronline.com and paste its Client ID + Secret here, or paste an OAuth 2.0 access token instead. Saved secrets never reach browsers." }, "Service timing": { - "help": "A plan's services (9:00, 11:00…) take turns owning the service clock: the next one takes over Pre-roll minutes before its scheduled start, once the previous one has ended or was due to end, and the elapsed clock, item timing and countdown start afresh for it. A service starts at its scheduled time unless Service start is set to a ProPresenter document — then it starts the moment that document goes live in ProPresenter (the document that opens the service; from Pre-roll before the scheduled start), falling back to the scheduled time if the document has not appeared Start failsafe minutes after it. It ends when the End document goes live (the document that closes the service — a post-service loop, say), or, without one, when the next service takes over or an hour after the last one's scheduled end. Documents are matched by name the way plan items are, so a renamed \"Post-Service Loop\" still counts as \"Post Service Loop\". The document lists hold what the ProPresenter module has shown or listed since ProdDash started plus what is saved here; a saved name stays selectable even when ProPresenter is off." + "help": "Each service in the plan takes its turn owning the service clock: the next one takes over Pre-roll minutes before its scheduled start, and the elapsed clock, item timing and countdown start afresh for it. A service starts at its scheduled time — or, with document triggers on, the moment the chosen Start document goes live in ProPresenter (falling back to the schedule after the start failsafe) — and ends when the End document goes live, or when the next service takes over. The document lists hold what ProPresenter has shown or listed since ProdDash started plus what is saved here; names are matched loosely, so a renamed \"Post-Service Loop\" still counts." } }, "configSchema": { diff --git a/public/admin/admin.css b/public/admin/admin.css index 3421ef7..ebd7b54 100644 --- a/public/admin/admin.css +++ b/public/admin/admin.css @@ -295,12 +295,15 @@ details.field-group > summary.field-group-title:hover { color: var(--text); } } .field.switch-field .switch-label { font-size: 13px; } +/* status on the left, Apply on the right */ .module-actions { display: flex; align-items: center; gap: 10px; margin-top: 4px; } +.module-actions .admin-status { flex: 1; margin-top: 0; } +.module-actions .btn { margin-left: auto; } .admin-status { min-height: 16px; font-size: 12px; color: var(--muted); margin-top: 8px; } .admin-status.error { color: var(--danger); } diff --git a/public/admin/admin.js b/public/admin/admin.js index 497ebd0..da62c31 100644 --- a/public/admin/admin.js +++ b/public/admin/admin.js @@ -586,10 +586,10 @@ function buildModuleCard(mod) { actions.className = 'module-actions'; const save = document.createElement('button'); save.className = 'btn primary'; - save.textContent = 'Save & re-init'; + save.textContent = 'Apply'; const status = document.createElement('span'); status.className = 'admin-status'; - actions.append(save, status); + actions.append(status, save); form.appendChild(actions); card.appendChild(form); @@ -597,14 +597,14 @@ function buildModuleCard(mod) { const config = {}; for (const [key, read] of readers) config[key] = read(); save.disabled = true; - status.textContent = 'Saving…'; + status.textContent = 'Applying…'; status.className = 'admin-status'; try { await api(`/api/admin/modules/${encodeURIComponent(mod.id)}/config`, { method: 'PUT', body: JSON.stringify({ config }), }); - status.textContent = 'Saved — module re-initialised. Open tiles reconnect on their own.'; + status.textContent = 'Applied — module re-initialised. Open tiles reconnect on their own.'; status.className = 'admin-status ok'; refreshStatus(); // What the module can list may have changed (credentials just