Commit graph

6 commits

Author SHA1 Message Date
kianiadee
9393491869 Trip panel UI: click vehicle → side panel, trip list, animated playback
Some checks are pending
build / lint-test (push) Waiting to run
build / build-push (push) Blocked by required conditions
Click any vehicle on the map to open a 360px slide-in panel showing:
  - reporting time (first ACC_ON of the day)
  - day totals: trip count, distance, drive/idle/stop minutes
  - per-trip rows with start/end/duration/distance/idling, click to
    select; selected trip renders its polyline + animates a marker
    along it over 10 seconds
  - end-reason badge per trip (work stop, reporting silence, long gap,
    day end) with colour-coded accent
  - date picker (defaults to today EAT)
  - CSV download button → /trips.csv?date=...

Map clicks query rendered features across circle/arrow/label layers and
take the topmost — single click handler, no per-layer duplicates. The
existing hover popup remains untouched.

Wraps #map in #map-container so the panel can absolute-position over
the right side without disturbing the existing left-aside grid layout.
authClient gets a getToken() helper so the CSV download path can attach
the Authorization header for a plain fetch (apiFetch returns JSON only).
2026-05-27 14:14:06 +03:00
kianiadee
26ce35e8eb UX: zoom-scaled vehicle markers + hide labels at city overview
Some checks are pending
build / lint-test (push) Waiting to run
build / build-push (push) Blocked by required conditions
At z=10 (Nairobi overview) the constant 13px circles + always-on plate
labels overlapped into an unreadable blob. Markers now interpolate
across zoom:

  circle:  2px @ z5 → 7px @ z12 → 13px @ z15 → 20px @ z18
  arrow:   0.2 @ z5 → 0.45 @ z12 → 0.7 @ z15 → 1.0 @ z18
  label:   minzoom 11; text 8px @ z11 → 14px @ z17

text-offset is in ems so it scales with text-size automatically.
2026-05-27 12:07:50 +03:00
kianiadee
9852eff985 Popup: pre-emptive driver-name extraction from device_name (until P3 roster lands)
Some checks are pending
build / lint-test (push) Waiting to run
build / build-push (push) Blocked by required conditions
2026-05-23 23:13:46 +03:00
kianiadee
45974b3810 Geocoder: cron job + state.geocoded_positions; label uses device_name last 4 (fallback plate); popup address row
Some checks are pending
build / lint-test (push) Waiting to run
build / build-push (push) Blocked by required conditions
2026-05-23 23:06:25 +03:00
kianiadee
6c5ba3b22b UI: arrow + plate-short label + cost-centre marker palette + hover popup; richer state.live_positions + serve.fn_live_view v2; multi-target poll plumbing
Some checks are pending
build / lint-test (push) Waiting to run
build / build-push (push) Blocked by required conditions
2026-05-23 09:29:04 +03:00
kianiadee
1fb2a5be5e Phase 1 — foundation, push gateway, parser, projector, live view, frontend 2026-05-23 00:53:42 +03:00