Live Tracking page upgrades:
- **Heading rotation** on each truck marker via CSS transform driven by
the heading_degrees broadcast field.
- **Click-to-detail** opens a slide-over showing trip number, status,
route, started-at, current load, an ordered stop list color-coded by
status, and the last 20 timeline events.
- **Route overlay** draws planned-route polyline (stops in order →
dumpsite, dashed), stop markers (pending/arrived/completed/skipped
colors), a diamond marker for the dumpsite, and a translucent
geofence polygon when the dumpsite has one configured.
- **Breadcrumb trail** of the last 60 minutes of GPS pings rendered
as a polyline; new pings tack on incrementally while the panel is
open.
- **Real-time push via Reverb** with polling fallback. Subscribes to
private-admin.live, listens for `.truck.location`, and updates
marker position + the trucks-online list immediately. When Reverb
isn't configured or fails, falls back to 10s polling. Status pill
shows live (push) / polling / offline.
Backend additions:
- GET /admin/live/trucks/{uuid}/trail — recent location pings
- GET /admin/live/trucks/{uuid}/active-trip — full trip + stops +
dumpsite + boundary + recent timeline
- Broadcasting auth route now accepts Sanctum bearer tokens (admin
web posts them via Echo's authorizer callback)
Frontend wiring:
- npm: laravel-echo + pusher-js
- window.Verde.getEcho() lazily inits Echo with bearer-token authorizer
- Layout exposes window.VERDE_BROADCAST with reverb config
196 tests passing.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
22 lines
476 B
JSON
22 lines
476 B
JSON
{
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"build": "vite build",
|
|
"dev": "vite"
|
|
},
|
|
"devDependencies": {
|
|
"autoprefixer": "^10.4.20",
|
|
"axios": "^1.7.4",
|
|
"concurrently": "^9.0.1",
|
|
"laravel-vite-plugin": "^1.2.0",
|
|
"postcss": "^8.4.47",
|
|
"tailwindcss": "^3.4.13",
|
|
"vite": "^6.0.11"
|
|
},
|
|
"dependencies": {
|
|
"laravel-echo": "^2.3.4",
|
|
"pusher-js": "^8.5.0"
|
|
}
|
|
}
|