From a10e695d7cce09b4c5a6fbd552f9b93bf41a6ba9 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Fri, 7 Aug 2026 14:28:01 -0400 Subject: [PATCH] shopfloor dashboard: show upcoming cards, state chips, mixed-row headings Scheduled notifications with a special display style rendered nowhere at all. styledGroups only read notifications.current, so anything upcoming fell through to the standard Upcoming list, which drops banner/carousel/grid styles. A scheduled banner was therefore invisible until the moment it went live. Upcoming items now join the styled groups, tagged so they can be told apart, and each row sorts live cards ahead of not-yet-started ones. State chips name what a card is doing: UPCOMING with its start time, or RESOLVED for the tail a type's grace window buys it. Pending cards also dim to 0.72 so a glance never mistakes one for live. The dim rule is scoped to .recognition-card.active.pending on purpose: inactive carousel cards sit at opacity 0, and an unscoped .pending outranks that, which stacks the whole carousel back into view at once. Rows keyed by board category can hold more than one type, and the heading then speaks for none of them. Such rows keep a neutral heading instead of wearing the first type's colour, and each card carries its own type chip. The chip is named rather than only coloured, since colour alone does not survive a colourblind reader at board distance. Carousel rows gain one pip per card, so a reader can see how many are in the rotation and how long until theirs returns. --- frontend/src/views/ShopfloorDashboard.vue | 148 +++++++++++++++++++++- 1 file changed, 143 insertions(+), 5 deletions(-) diff --git a/frontend/src/views/ShopfloorDashboard.vue b/frontend/src/views/ShopfloorDashboard.vue index 2527e33..d182cb9 100644 --- a/frontend/src/views/ShopfloorDashboard.vue +++ b/frontend/src/views/ShopfloorDashboard.vue @@ -37,8 +37,10 @@ v-for="n in group.items" :key="n.notificationid" class="banner-strip" + :class="{ pending: n.upcoming || n.resolved }" :style="{ backgroundColor: getTypeColor(n.typecolor) }" > + {{ stateLabel(n) }} {{ n.notification }} @@ -47,14 +49,15 @@
{{ group.typename }}
+ +
{{ group.typename }} ({{ group.items.length }}) {{ gridRangeLabel(group) }} @@ -105,7 +132,7 @@ v-for="rec in gridPageItems(group)" :key="`grid-${rec.notificationid}-${rec.employeesso}`" class="recert-tile" - :class="{ 'message-tile': !hasEmployee(rec) }" + :class="{ 'message-tile': !hasEmployee(rec), pending: rec.upcoming || rec.resolved }" :style="{ '--accent': getTypeColor(rec.typecolor) }" >