Skip to content

Design logged-in seating layout preview webpage with CSV import and interactive editing - #90

Open
cycomachead wants to merge 2 commits into
mainfrom
cycomachead/3-design-seating-layout-preview/1
Open

Design logged-in seating layout preview webpage with CSV import and interactive editing#90
cycomachead wants to merge 2 commits into
mainfrom
cycomachead/3-design-seating-layout-preview/1

Conversation

@cycomachead

Copy link
Copy Markdown

Add logged-in seating layout preview with CSV import and interactive editing

Adds a standalone page (/layouts/preview/) where a logged-in user can upload or paste a room CSV, see the seating layout rendered without saving anything to the database, highlight seats by layout or attribute, and toggle seats individually to build and export a new layout. Also scaffolds a dev login for non-staging/production environments and fixes an icon-rendering bug in the header.

Changes

  • New preview page (/layouts/preview/, login required): accepts CSV upload or pasted text, parsed through the same parse_csv/prepare_seat path as the room import flow. Nothing is persisted.
  • Rendering — fixed seats drawn in a mirrored grid matching the existing room view; movable seats grouped by attribute set.
  • Highlight dropdown grouped into Layouts / Handedness / Condition / Placement & Use, with per-attribute seat counts.
  • Schema clarity (server/services/core/layout_preview.py) — introduces a closed vocabulary of canonical seat attributes (physical properties like lefty, broken, aisle, dsp, etc.); every other column is treated as a named layout, labelled using the file's own header spelling.
  • Berkeley color palette — Berkeley Blue for selected seats, light gray for inactive, Rose Garden + slash for broken, California Gold for hover/focus and a "restricted use" marker dot. L label shown only for lefty-only seats (righty is the unlabelled default; broken/both-handed seats get no letter) to reduce visual noise.
  • Edit mode — toggle seats individually to build a new layout; new layouts start with all seats selected; Select all / Clear / Invert / Deselect broken; right-click (or menu key) opens a per-seat attribute toggle menu; live-updating legend and counts.
  • CSV export — writes the layout back out in the file's original column order plus a new, editable-named boolean column; verified to re-import cleanly.
  • Legend covers seat state, markings, and every attribute/layout present in the uploaded file, with counts and descriptions, split by the layout/attribute distinction.
  • Styling — reused existing MDL components (mdl-tabs, mdl-textfield, mdl-button, seat chart containers) to match app conventions; only seat colors depart from the app palette.
  • Dev loginMOCK_CANVAS now defaults to true in DevelopmentConfig (env-overridable), explicitly false in StagingConfig (closing a hole where it previously inherited from env). Dev login page now lists seeded users with Canvas ID and enrollments for one-click login.
  • Bug fix — replaced the header's expand_more Material Icons ligature with a CSS-drawn caret, since it rendered as literal text when the icon font was slow/blocked/unavailable.
  • Tests — new unit test files for layout preview (test_layout_preview.py) and dev login gating/roster (test_dev_login.py).

Screenshots

A wiki page draft describing the feature is also available: Seating-Layout-Preview.md (not pushed — the wiki repo isn't reachable from this environment; needs to be added manually alongside the screenshots above).


Superconductor Ticket Implementation | App Preview | Guided Review

cycomachead and others added 2 commits September 8, 2026 07:16
…ive editing

- Add logged-in layout preview at `/layouts/preview/` accepting CSV upload or pasted text
- Render layout grids and movable seat groups using Berkeley Blue/gray/rose/gold palette
- Include a grouped highlight dropdown, legend, per-seat toggle editor, and layout CSV export

https://www.superconductor.com/tickets/bWcKjzNFNNCd/implementations/8tDmncWWfc6c#message_rFzMgMTc8DTf

Co-authored-by: Claude Code <noreply@anthropic.com>
…preview

Add support for TSV file uploads and direct pasting of tab-separated ranges from Google Sheets in the seating layout preview. Implement header-based delimiter sniffing to handle mixed formats, decode files using UTF-8 with BOM support, and fix input handling and validation bugs in the dev login flow.

https://www.superconductor.com/tickets/bWcKjzNFNNCd/implementations/8tDmncWWfc6c#message_wTkh8bQCwrcG

Co-authored-by: Claude Code <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant