READY page: drop the MICS and STAGE keys
BOH MIX is the one tap key left. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -106,7 +106,7 @@ HyperDeck is recording). **STATUS PAGE** (bottom left) goes back.
|
|||||||
|--------|-------|-------|-------|-------|-------|
|
|--------|-------|-------|-------|-------|-------|
|
||||||
| row 0 (Ableton) | TRACKS | FOH MIX | BOH MIX (tap) | LIGHTS | MIDI |
|
| row 0 (Ableton) | TRACKS | FOH MIX | BOH MIX (tap) | LIGHTS | MIDI |
|
||||||
| row 1 (ProP / Resolume) | PROP | TIMECODE | BKGDS | LED CROSS | |
|
| row 1 (ProP / Resolume) | PROP | TIMECODE | BKGDS | LED CROSS | |
|
||||||
| row 2 (backstage, stage) | LINEUP TV | | MICS (tap) | STAGE (tap) | |
|
| row 2 (backstage) | LINEUP TV | | | | |
|
||||||
| row 3 (outgoing) | TRACKS OUT | PROP OUT | | | |
|
| row 3 (outgoing) | TRACKS OUT | PROP OUT | | | |
|
||||||
|
|
||||||
The READY key at row 3 col 7 (and the one on the status page) shows how many keys still have something to do and
|
The READY key at row 3 col 7 (and the one on the status page) shows how many keys still have something to do and
|
||||||
@@ -116,9 +116,8 @@ the first of them.
|
|||||||
still missing turns **blinking red**. A song that is not mixed stays amber, because it is only a guess. These keys
|
still missing turns **blinking red**. A song that is not mixed stays amber, because it is only a guess. These keys
|
||||||
are not part of ALL, so an unfinished checklist on a Tuesday never turns the page-number keys red.
|
are not part of ALL, so an unfinished checklist on a Tuesday never turns the page-number keys red.
|
||||||
|
|
||||||
**Tap keys** (BOH MIX, MICS, STAGE) are things only a person can see. Tap once when it is done; the key
|
**BOH MIX** is a tap key: only a person can judge it. Tap once when it is done; the key shows `DONE THU 14:02`.
|
||||||
shows `DONE THU 14:02`. Tap again to take it back. Everything resets on Monday at midnight. MICS also says which mics
|
Tap again to take it back. It resets on Monday at midnight.
|
||||||
this weekend needs, from Planning Center (`4 VOX MC TIM`).
|
|
||||||
|
|
||||||
**Hold any key for 2 s** to fix what can be fixed, or to look again now if there is no fix. **Hold READY** to fix
|
**Hold any key for 2 s** to fix what can be fixed, or to look again now if there is no fix. **Hold READY** to fix
|
||||||
everything on the page at once.
|
everything on the page at once.
|
||||||
|
|||||||
-30
@@ -1186,36 +1186,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "rd_mics",
|
|
||||||
"label": "MICS",
|
|
||||||
"pos": [
|
|
||||||
2,
|
|
||||||
3
|
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready_manual",
|
|
||||||
"item": "mics",
|
|
||||||
"msg": "TAP WHEN SET"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "rd_stage",
|
|
||||||
"label": "STAGE",
|
|
||||||
"pos": [
|
|
||||||
2,
|
|
||||||
4
|
|
||||||
],
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"type": "ready_manual",
|
|
||||||
"item": "stage",
|
|
||||||
"msg": "HELIX, RISERS: TAP"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "rd_trk_out",
|
"id": "rd_trk_out",
|
||||||
"label": "TRACKS OUT",
|
"label": "TRACKS OUT",
|
||||||
|
|||||||
Binary file not shown.
@@ -316,7 +316,7 @@ field("ready.due", "list", [], "From when gaps are red instead of amber.", "Read
|
|||||||
field("ready.due[].days", "days", None, "", "Ready", required=True)
|
field("ready.due[].days", "days", None, "", "Ready", required=True)
|
||||||
field("ready.due[].start", "hhmm", None, "", "Ready", required=True)
|
field("ready.due[].start", "hhmm", None, "", "Ready", required=True)
|
||||||
field("ready.due[].end", "hhmm", None, "", "Ready", required=True)
|
field("ready.due[].end", "hhmm", None, "", "Ready", required=True)
|
||||||
field("ready.reset_day", "enum", "mon", "Taps (BOH mix, mics, stage) count from midnight on this day.", "Ready",
|
field("ready.reset_day", "enum", "mon", "Taps (BOH mix) count from midnight on this day.", "Ready",
|
||||||
options=list(sp.DAYS))
|
options=list(sp.DAYS))
|
||||||
field("ready.pco_credentials", "path", "~/Library/Application Support/ProdDash/modules.json", "ProdDash's settings "
|
field("ready.pco_credentials", "path", "~/Library/Application Support/ProdDash/modules.json", "ProdDash's settings "
|
||||||
"file, which holds the Planning Center login.", "Ready", advanced=True)
|
"file, which holds the Planning Center login.", "Ready", advanced=True)
|
||||||
|
|||||||
+1
-1
@@ -506,7 +506,7 @@
|
|||||||
const snap = await api("/api/snapshot").catch(() => ({}));
|
const snap = await api("/api/snapshot").catch(() => ({}));
|
||||||
const r = snap.ready || {};
|
const r = snap.ready || {};
|
||||||
const plan = r.plan ? `<p class="small muted">Plan: ${esc(r.plan.title || "")} ${esc(r.plan.dates || "")}${r.time ? ` · looked ${esc(new Date(r.time * 1000).toLocaleTimeString())}` : ""}</p>` : `<p class="small muted">Not looked yet.</p>`;
|
const plan = r.plan ? `<p class="small muted">Plan: ${esc(r.plan.title || "")} ${esc(r.plan.dates || "")}${r.time ? ` · looked ${esc(new Date(r.time * 1000).toLocaleTimeString())}` : ""}</p>` : `<p class="small muted">Not looked yet.</p>`;
|
||||||
if (i < 0) return `<div class="card"><h2 style="margin-top:4px">The weekly checklist</h2>${plan}<p class="small">Amber: still to do. Blinking red: still missing once it is due (${esc(((c.ready || {}).due || []).map((w) => w.days.join("/") + " " + w.start + "-" + w.end).join(", "))}). Tap keys (BOH MIX, MICS, STAGE) are tapped done on the deck and reset every ${esc((c.ready || {}).reset_day || "mon")}. Hold any key ${esc(hold)} to fix it or look again; hold READY to fix everything.</p><p class="small muted">Click a key to see what it checks and why it is amber or red.</p></div>`;
|
if (i < 0) return `<div class="card"><h2 style="margin-top:4px">The weekly checklist</h2>${plan}<p class="small">Amber: still to do. Blinking red: still missing once it is due (${esc(((c.ready || {}).due || []).map((w) => w.days.join("/") + " " + w.start + "-" + w.end).join(", "))}). BOH MIX is tapped done on the deck and reset every ${esc((c.ready || {}).reset_day || "mon")}. Hold any key ${esc(hold)} to fix it or look again; hold READY to fix everything.</p><p class="small muted">Click a key to see what it checks and why it is amber or red.</p></div>`;
|
||||||
const k = c.ready_page.keys[i], chk = (k.checks || [])[0] || {};
|
const k = c.ready_page.keys[i], chk = (k.checks || [])[0] || {};
|
||||||
const item = r.items && chk.item ? r.items[chk.item] : null;
|
const item = r.items && chk.item ? r.items[chk.item] : null;
|
||||||
const fix = chk.fix && c.fixes[chk.fix];
|
const fix = chk.fix && c.fixes[chk.fix];
|
||||||
|
|||||||
+1
-1
@@ -553,7 +553,7 @@ def check_ready(chk, snap, ctx):
|
|||||||
|
|
||||||
|
|
||||||
def check_ready_manual(chk, snap, ctx):
|
def check_ready_manual(chk, snap, ctx):
|
||||||
"""A checklist line only a person can see (BOH mix, stage): a tap marks it done for the week."""
|
"""A checklist line only a person can judge (BOH mix): a tap marks it done for the week."""
|
||||||
done = ctx.get("ready_done", {}).get(chk["item"])
|
done = ctx.get("ready_done", {}).get(chk["item"])
|
||||||
if done:
|
if done:
|
||||||
return [("done", Result(OK, info="DONE " + datetime.fromtimestamp(done).strftime("%a %H:%M").upper()))]
|
return [("done", Result(OK, info="DONE " + datetime.fromtimestamp(done).strftime("%a %H:%M").upper()))]
|
||||||
|
|||||||
@@ -354,7 +354,6 @@ class TestWatchdog(unittest.TestCase):
|
|||||||
self.assertEqual(tiles["rd_trk_out"]["x"], "TRACKS OUT\nNOT SENT SC")
|
self.assertEqual(tiles["rd_trk_out"]["x"], "TRACKS OUT\nNOT SENT SC")
|
||||||
self.assertEqual(tiles["rd_trk_out"]["b"], sp.COLORS["warn"][0][0])
|
self.assertEqual(tiles["rd_trk_out"]["b"], sp.COLORS["warn"][0][0])
|
||||||
self.assertEqual(tiles["rd_boh"]["x"], "BOH MIX\nTAP WHEN DONE")
|
self.assertEqual(tiles["rd_boh"]["x"], "BOH MIX\nTAP WHEN DONE")
|
||||||
self.assertEqual(tiles["rd_mics"]["x"], "MICS\n2 VOX MC TIM\nTAP WHEN SET")
|
|
||||||
self.assertEqual(tiles["rd_cross"]["b"], sp.COLORS["ok"][0][0])
|
self.assertEqual(tiles["rd_cross"]["b"], sp.COLORS["ok"][0][0])
|
||||||
self.assertTrue(tiles["ready"]["x"].startswith("READY\n"))
|
self.assertTrue(tiles["ready"]["x"].startswith("READY\n"))
|
||||||
self.assertIn("TO DO", tiles["ready"]["x"])
|
self.assertIn("TO DO", tiles["ready"]["x"])
|
||||||
|
|||||||
Reference in New Issue
Block a user