feat(calendar): render dispatch board appointments (PMC-50) #32

Closed
David wants to merge 0 commits from feat/pmc-50-calendar-dispatch into main
Owner

Summary

Closes PMC-50 (Calendar/dispatch UI). PMC-52/PMC-54 closed in audit; PMC-51 closed without code (next/prev chevrons already wired; Week/Day toggles intentionally disabled-stubs).

PMC-53: Render appointment blocks on the dispatch board. TechnicianRow was throwing the appointments vec away and rendering empty time-slot divs. Now positions each appointment as an absolutely-placed colored block across the 8am-5pm timeline with kind-based colors (onsite/remote/meeting/internal).

Test plan

  • cargo check --features web clean
  • /dispatch shows colored blocks for each technician's appointments instead of empty hour cells
  • Hover shows "start - end: label" tooltip
  • Appointment widths look right (e.g. an 8-12 block fills 4/9ths of the row)

🤖 Generated with Claude Code

## Summary Closes PMC-50 (Calendar/dispatch UI). PMC-52/PMC-54 closed in audit; PMC-51 closed without code (next/prev chevrons already wired; Week/Day toggles intentionally disabled-stubs). PMC-53: Render appointment blocks on the dispatch board. TechnicianRow was throwing the `appointments` vec away and rendering empty time-slot divs. Now positions each appointment as an absolutely-placed colored block across the 8am-5pm timeline with kind-based colors (onsite/remote/meeting/internal). ## Test plan - [ ] `cargo check --features web` clean - [ ] /dispatch shows colored blocks for each technician's appointments instead of empty hour cells - [ ] Hover shows "start - end: label" tooltip - [ ] Appointment widths look right (e.g. an 8-12 block fills 4/9ths of the row) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(calendar): render dispatch board appointments (PMC-53)
Some checks failed
Check / clippy + fmt + tests (pull_request) Failing after 4s
Create release / Create release from merged PR (pull_request) Has been skipped
78c9d85696
TechnicianRow on /dispatch was receiving an `appointments` vec but rendering 9 empty time-slot divs and silently ignoring the data. Replace the empty cells with a single relative-positioned grid area spanning the 9 hour columns, drop the hour divider lines into it as a background grid, and absolutely-position one colored block per appointment using start/end percent offsets within the 8am-5pm range.

`parse_dispatch_time` handles the "H:MM AM/PM" shape used by the seed data and gracefully degrades to a 1-hour block at first-hour if the input doesn't match, so a typo doesn't crash the page. `dispatch_color` maps the existing `onsite` / `remote` / `meeting` / `internal` kinds to badge colors.

#PMC-53 State Done
vas2000-work closed this pull request 2026-05-21 01:21:56 +02:00
Some checks failed
Check / clippy + fmt + tests (pull_request) Failing after 4s
Required
Details
Create release / Create release from merged PR (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!32
No description provided.