107 lines
3.4 KiB
Markdown
107 lines
3.4 KiB
Markdown
---
|
|
phase: 101-aged-orders-row-highlight
|
|
plan: 01
|
|
subsystem: ui
|
|
tags: [orders-list, scss, php, visual-alert]
|
|
|
|
requires:
|
|
- phase: 44-inline-status-change
|
|
provides: table-list component used for /orders/list
|
|
|
|
provides:
|
|
- Wizualna flaga wiekowa na liscie zamowien (4-7+ dni)
|
|
- Opcjonalny `_row_class` na wierszach `components/table-list.php`
|
|
|
|
affects: []
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns:
|
|
- "Row-level class propagowana z controllera przez `_row_class` w danych wiersza `table-list`"
|
|
|
|
key-files:
|
|
created: []
|
|
modified:
|
|
- resources/views/components/table-list.php
|
|
- src/Modules/Orders/OrdersController.php
|
|
- resources/scss/app.scss
|
|
- public/assets/css/app.css
|
|
|
|
key-decisions:
|
|
- "Wiek liczony z `ordered_at` (to pole uzywa juz sortowanie/kolumna listy)"
|
|
- "Poziomy ramki 4..7 hardcoded, starsze niz 7 dni = poziom 7 (nie dalsza eskalacja)"
|
|
- "Ramka realizowana przez border na <td> — kompatybilna z kolorem tla statusu"
|
|
|
|
patterns-established:
|
|
- "Kontroler listy moze dodac `_row_class` do rekordu w danych `rows` — `table-list.php` honoruje to jako klase <tr>"
|
|
|
|
duration: ~10min
|
|
started: 2026-04-13
|
|
completed: 2026-04-13
|
|
---
|
|
|
|
# Phase 101 Plan 01: Aged Orders Row Highlight Summary
|
|
|
|
**Wiersze zamowien na `/orders/list` starszych niz 4 dni dostaja czerwona ramke o rosnacej intensywnosci (4d=jasna → 7+d=bordowa).**
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|---|---|---|
|
|
| AC-1: <4 dni brak ramki | Pass | `agedRowClass()` zwraca `''` dla `$ageDays < 4` |
|
|
| AC-2: 4-7 dni rosnaca intensywnosc | Pass | Klasy `order-row-aged-4..7` z 4 odcieniami czerwieni (#f8b4b4 → #991b1b) |
|
|
| AC-3: >7 dni = poziom 7 | Pass | `$level = $ageDays >= 7 ? 7 : $ageDays` |
|
|
| AC-4: Wiek liczony z `ordered_at` | Pass | `floor((time() - strtotime($orderedAt)) / 86400)` |
|
|
|
|
## Accomplishments
|
|
|
|
- Dodano mechanizm row-class w uniwersalnym `components/table-list.php` (opcjonalny, nie lamie innych list)
|
|
- OrdersController liczy wiek zamowienia i wystawia klase na wierszu
|
|
- 4 poziomy SCSS + przebudowany `public/assets/css/app.css`
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|---|---|---|
|
|
| `resources/views/components/table-list.php` | Modified | `<tr>` honoruje `$row['_row_class']` |
|
|
| `src/Modules/Orders/OrdersController.php` | Modified | `agedRowClass()` + wpiecie w `toTableRow` |
|
|
| `resources/scss/app.scss` | Modified | Reguly `.order-row-aged-{4..7}` na `<td>` |
|
|
| `public/assets/css/app.css` | Rebuild | `npm run build:css` |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|---|---|---|
|
|
| Border na `<td>` zamiast `<tr>` | `<tr>` nie rysuje borderu spolnie z `border-collapse`; trzeba na komorkach | Wizualnie spojne, kompatybilne z tlem statusow |
|
|
| Klasy `order-row-aged-N` zamiast inline style | Zgodne z CLAUDE.md (brak styli w widokach) | Styl zyje w SCSS |
|
|
| Pole `ordered_at` jako data referencyjna | Uzywane juz w kolumnie listy i sortowaniu | Zero dodatkowego I/O |
|
|
|
|
## Deviations from Plan
|
|
|
|
| Type | Count | Impact |
|
|
|---|---|---|
|
|
| Auto-fixed | 0 | - |
|
|
| Scope additions | 0 | - |
|
|
| Deferred | 0 | - |
|
|
|
|
Plan wykonany 1:1.
|
|
|
|
## Issues Encountered
|
|
|
|
None.
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- Lista zamowien z wizualnym sygnalem zalegajacych zamowien
|
|
- Wzorzec `_row_class` dostepny dla innych list w table-list.php
|
|
|
|
**Concerns:**
|
|
- Weryfikacja wizualna pozostaje po stronie uzytkownika (manualny test w przegladarce)
|
|
|
|
**Blockers:** None
|
|
|
|
---
|
|
*Phase: 101-aged-orders-row-highlight, Plan: 01*
|
|
*Completed: 2026-04-13*
|