8.3 KiB
8.3 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | patterns-established | duration | started | completed | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 09-finalizacja | 07 | ui |
|
|
|
|
|
|
|
|
~50min | 2026-05-10T00:00:00Z | 2026-05-10T00:50:00Z |
Phase 09 Plan 07: Kolory per jacht w kalendarzu zbiorczym
Admin może wybrać kolor jachtu w panelu, eventy z globalnego GCal dopasowują się do jachtu po nazwie/aliasie w tytule. Layout /rezerwacja/ przeskalowany 2:1 na korzyść kalendarza.
Performance
| Metric | Value |
|---|---|
| Duration | ~50 min |
| Started | 2026-05-10 |
| Completed | 2026-05-10 |
| Tasks | 3 auto + 1 checkpoint approved |
| Files modified | 9 |
Acceptance Criteria Results
| Criterion | Status | Notes |
|---|---|---|
| AC-1: Admin może wybrać kolor jachtu | Pass | _yacht_color zapisywane przez Yacht::update_color(), walidacja regex #rrggbb, color picker przez wp-color-picker |
| AC-2: Kolor admina ma priorytet w widgecie zbiorczym | Pass | get_yacht_color_palette() honoruje meta przed paletą, legenda używa tej samej funkcji |
| AC-3: Fallback z palety dla jachtów bez koloru | Pass | Brak meta → palette[i % count] po posortowanym ID (deterministycznie) |
| AC-4: Globalne eventy GCal kolorowane po nazwie | Pass | name_map z post_title + _yacht_gcal_alias, sort DESC po długości, mb_strpos case-insensitive |
Accomplishments
- Color picker WP w formularzu jachtu z meta
_yacht_color(sanityzacja#rrggbb, pusta wartość usuwa meta) - Backend z dwupoziomową logiką kolorów: per-yacht event → admin color/paleta; global event (yacht_id=0) → match po nazwie w tytule (longest-match-first)
- Legenda widgetu zbiorczego pokazuje teraz wszystkie jachty z ich kolorami, niezależnie od trybu sync (+ "Inne" jako fallback w trybie global)
- Layout
/rezerwacja/przeskalowany do 2fr:1fr — więcej miejsca dla kalendarza - Paski eventów: padding zredukowany (
2px 4px→0 1px), tytuł wyśrodkowany w poziomie (text-align:center) i w pionie (display:flex; align-items:centerna.fc-eventi.fc-event-main)
Files Created/Modified
| File | Change | Purpose |
|---|---|---|
includes/class-yacht.php |
Modified | Dodane get_color() / update_color() ze sanityzacją hex |
admin/views/yacht-edit.php |
Modified | Pole color picker + label + opis |
admin/class-admin.php |
Modified | save_yacht() zapisuje meta _yacht_color |
includes/class-yacht-booking.php |
Modified | Enqueue wp-color-picker + inline init na stronie edycji jachtu |
api/class-rest-controller.php |
Modified | get_yacht_color_palette() honoruje admin color; get_all_availability() dopasowuje globalne eventy po nazwie |
frontend/class-calendar-widget-all.php |
Modified | Legenda zawsze per-yacht; "Inne" jako fallback w trybie global |
frontend/assets/css/calendar.scss |
Modified | .yacht-inquiry-layout 1fr 1fr → 2fr 1fr |
frontend/assets/css/calendar.css |
Modified | Skompilowane CSS (calendar.scss) |
frontend/assets/css/calendar-all.css |
Modified | Padding eventów + flex-center poziomo i pionowo |
.paul/ROADMAP.md |
Modified | 09-07 nowy plan, security przesunięty na 09-08, docs na 09-09 |
Decisions Made
| Decision | Rationale | Impact |
|---|---|---|
| Fallback z palety zachowany | Niski próg wejścia — admin nie musi ustawiać koloru by system działał | Spójność wsteczna z 09-04 |
| Matching globalnych eventów: substring + longest-match | Klient: "naprostsze wyszukiwanie nazwy w tytule" — nazwa może być w dowolnym miejscu, najdłuższe trafienie wygrywa (np. "Maja Bis" > "Maja") | Eventy z wspólnego GCal automatycznie kolorowane bez zmian w schemacie DB |
Drop is_global_mode override |
Wcześniej w trybie global wszystkie eventy szły GLOBAL_EVENT_COLOR ignorując yacht_id; klient chce kolory zawsze |
Tryb global = pełna kolorystyka (bonus poza pierwotnym scope) |
| Layout 2fr:1fr | Klient: "kalendarz 2/3, formularz 1/3" | Mobile breakpoint @992px nadal stackuje |
Deviations from Plan
Summary
| Type | Count | Impact |
|---|---|---|
| Auto-fixed | 0 | — |
| Scope additions | 4 | Bonus UX poprawki, niski risk |
| Deferred | 0 | — |
Total impact: Plan zrealizowany w pełni + 4 dodatkowe poprawki UX zgłoszone w trakcie checkpoint review (proporcje 2:1, padding pasków, wyrównanie poziome i pionowe tekstu).
Scope Additions
1. Layout proportions 2fr:1fr (/rezerwacja/)
- Found during: Po approve checkpoint
- Change:
.yacht-inquiry-layoutz1fr 1frna2fr 1frw SCSS i skompilowanym CSS - Files:
calendar.scss,calendar.css - Verification: Wzrokowo na
/rezerwacja/po deploy
2. Padding pasków eventów
- Found during: Po approve checkpoint
- Change:
.fc-event2px 4px→0 1px,.yc-event-title1px 6px→0 2px, margin pasków1px 2px→1px 0 - Files:
calendar-all.css - Verification: Więcej miejsca na tekst tytułu rezerwacji
3. Tekst tytułu wyśrodkowany poziomo
- Found during: Po zmianie paddingu
- Change:
text-align: center+width: 100%na.yc-event-title - Files:
calendar-all.css
4. Tekst tytułu wyśrodkowany pionowo
- Found during: Po zmianie poziomej
- Change:
display:flex; align-items:centerna.fc-eventi.fc-event-main - Files:
calendar-all.css
Deferred Items
None.
Issues Encountered
None — wszystkie zmiany przeszły php -l bez błędów, layout zachowany.
Next Phase Readiness
Ready:
- Plan 09-08 (Security audit) — endpoint
/availability/allma teraz dodatkową logikę matchingu nazw, do oceny w audycie (escapowanie tytułów, performance pętlimb_strpos) - Plan 09-09 (Testy + tłumaczenia + docs) — nowe stringi w yacht-edit.php (label, description) wymagają wpisów w .pot
Concerns:
- Skompilowany
calendar.cssjest plikiem ręcznie edytowanym (brak workflow build) — zmiany w SCSS i CSS muszą być synchronizowane manualnie. Do udokumentowania w 09-09. name_mapwget_all_availability()budowana per-request — przy dużej liczbie jachtów + długim oknie czasowym może wpłynąć na performance. Aktualnie pomijalne (kilka jachtów).
Blockers: None.
Phase: 09-finalizacja, Plan: 07 Completed: 2026-05-10