feat: mobilanpassad UI för Players och Courses (kortlayout) #16
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Beskrivning
Det finns en ny mobil-handoff i
docs/design_handoff_pdga_rating_mobile/som specificerar en dedikerad mobilanpassad UI för både Players och Courses. Mobilen är inte den responsiva desktop-tabellen nedskalad — det är en kortbaserad omdesign, eftersom 5-kolumners-tabeller inte fungerar på ~390px-bred skärm.Den här issue:n implementerar mobil-vyn enligt specen så att appen är användbar på telefon utan att rubba desktop-utseendet.
Design
Referens:
docs/design_handoff_pdga_rating_mobile/README.md(avsnitt "Mobile pages", raderna 232–294).Mockuper:
Mobile.html— båda sidor i iPhone 15 Pro-frames (402×874)mobile.css— alla mobil-stilar, scopade under.m(återanvänder tokens frånstyles.css)mobile.jsx— React-komponenter för båda mobil-sidornaBreakpoint:
880px. Under denna växlar både Players och Courses till kortlayout (idag har vi blandat 768px/880px — standardisera till 880px).Tekniska noteringar
Nuvarande tillstånd
views/partials/ratings-table.ejsochcourse-table.ejsanvänder strikt<table>-markup. Mobil-CSS idag (shared.css:284–291, 781–798) döljer bara kolumner via.mobile-hide/.col-predicted { display: none }.views/pages/index.ejs:3–24) ligger i flow överst på sidan, blir stacked på 768px (shared.css:711–725) men är inte sticky längst ner som specen kräver för mobil.views/partials/topbar.ejs) är redan sticky och döljer meta + nav på 880px, men spec:en kräver att navet är synligt som segmented pill även på mobil (rad 2 av topbar enligt specen).public/js/players.js(togglePlayerHistory) ochpublic/js/courses.js— kan återanvändas, bara visuell presentation skiljer sig.public/js/chart.js) är hårdkodad till 880×240 viewBox. Specen kräver 360×160 + 3 y-grid-ticks på mobil.ratings-table.ejs:2–29) är 96×28 idag; specen kräver 70×26 på mobil.Arkitekturbeslut: markup-strategi
Eftersom mobil och desktop visar fundamentalt olika layout (kort-stack vs. tabell-rader), inte bara omflöde, rekommenderar jag att:
<table>-markup för desktop (ingen regression-risk).ratings-mobile.ejs,course-mobile.ejs) som rendrar sammaplayers/courses-data som kortlista.@media (max-width: 880px)— desktop-tabellen fårdisplay: noneunder 880px, mobil-listan fårdisplay: blocköver 880px döljs.Alternativet (transformera tabellraderna med CSS) är hackigt och försämrar a11y. EJS-duplicering i markup är priset, men data-loopen är liten.
Tokens & komponenter att återanvända
public/css/shared.css,:root— matcharmobile.css).views/partials/delta-pill.ejs— fungerar oförändrat på mobil, ev. mindre padding.public/js/players.jstoggle-state-logik (openPdgaNumber-mönstret).chart.js— generalisera till att ta viewBox + grid-ticks som parametrar så samma kod kan rita både 880×240 (desktop) och 360×160 (mobil).Scope
Inkluderat:
position: sticky; bottom: 0+env(safe-area-inset-bottom)+ 90px bottenpadding på listan ovanförlocalStorage(samma key som desktop)Exkluderat (medvetet, från specen):
Relaterat
feat: Courses-redesign + återinförande av Tjing-import) — angränsande men oberoende. Den issue:n fokuserar på Tjing-import + desktop-courses; den här på mobil-vy. Om de jobbas på samtidigt bör de koordineras (delarviews/pages/courses.ejs).Test-plan
Mobile.html