From 7f21788ad6f82661dc54d6efba72af8ede498869 Mon Sep 17 00:00:00 2001 From: Ghassan Yusuf Date: Wed, 15 Apr 2026 12:12:50 +0300 Subject: [PATCH] feature: operator panel redesigned to match mockup style --- resources/views/operator/dashboard.blade.php | 768 +++++++------------ 1 file changed, 298 insertions(+), 470 deletions(-) diff --git a/resources/views/operator/dashboard.blade.php b/resources/views/operator/dashboard.blade.php index ec65aa4..6e91c96 100644 --- a/resources/views/operator/dashboard.blade.php +++ b/resources/views/operator/dashboard.blade.php @@ -5,152 +5,90 @@ @push('styles') @endpush @section('content') {{-- ══════════════════════════════════════════════════════════════════════ - LOT PICKER — shown when no lot is selected + LOT PICKER — no lot selected ══════════════════════════════════════════════════════════════════════ --}} @if(!$selectedLot) @@ -162,7 +100,6 @@ {{ $parkingLots->count() }} موقف متاح -{{-- Search bar --}}
@@ -175,46 +112,38 @@
- - {{-- ── Cards column ──────────────────────────────────────────────── --}}
- @forelse($parkingLots as $lot) @php $pct = $lot['total'] > 0 ? round($lot['occupied'] / $lot['total'] * 100) : 0; $avail = $lot['avail']; - if ($avail === 0) { $badgeCls = 'badge-soft-danger'; $badgeTxt = 'ممتلئ'; $barCol = '#ef4444'; } - elseif ($avail < $lot['total'] * 0.2) { $badgeCls = 'badge-soft-warning'; $badgeTxt = $avail.' محدود'; $barCol = '#f59e0b'; } - else { $badgeCls = 'badge-soft-success'; $badgeTxt = $avail.' متاح'; $barCol = '#10b981'; } + if ($avail === 0) { $badgeCls='badge-soft-danger'; $badgeTxt='ممتلئ'; $barCol='#ef4444'; } + elseif ($avail < $lot['total'] * 0.2) { $badgeCls='badge-soft-warning'; $badgeTxt=$avail.' محدود'; $barCol='#f59e0b'; } + else { $badgeCls='badge-soft-success'; $badgeTxt=$avail.' متاح'; $barCol='#10b981'; } @endphp
-
- +
-
{{ $lot['name'] }}
+
{{ $lot['name'] }}
{{ $lot['address'] }}
{{ $badgeTxt }}
-
-
{{ $lot['total'] }} مكان {{ number_format($lot['price']) }}/ساعة {{ $lot['hours'] }}
- @@ -226,7 +155,6 @@ لا توجد مواقف نشطة
@endforelse -
- {{-- ── Map column ─────────────────────────────────────────────────── --}}
@@ -246,10 +173,8 @@
-
-{{-- Mobile tab toggle --}}
- -
- - {{ $reservations->count() }} حجز مسبق - - - {{ $activeCars->count() }} داخل الآن - -
- -
-{{-- ── Booking cards grid ───────────────────────────────────────────── --}} -
+{{-- Section heading --}} +
+ قائمة الحجوزات والسيارات النشطة +
- {{-- Reservation cards (not yet arrived) --}} +{{-- Cards grid --}} +
+ + {{-- Reservation cards --}} @foreach($reservations as $res) -
-
-
+
+
+
حجز مسبق #{{ $res->id }}
- -
{{ $res->vehicle_plate ?? '—' }}
- -
-
+
+
{{ $res->vehicle_plate ?? '—' }}
+

{{ $res->customer_name ?? 'غير محدد' }} - @if($res->phone) -

{{ $res->phone }}
- @endif -
- -
- +

+ @if($res->phone) +

{{ $res->phone }}

+ @endif +

+ {{ $res->start_time->format('H:i') }} — {{ $res->end_time->format('H:i') }} - {{ $res->start_time->format('d/m') }} -

- -
- - -
@@ -394,59 +281,44 @@
@endforeach - {{-- Walk-in cards (already inside) --}} + {{-- Walk-in cards --}} @foreach($activeCars as $car) @php $elapsedMin = $car->start_time->diffInMinutes(now()); $remainMins = now()->diffInMinutes($car->end_time, false); $isOverdue = $remainMins < 0; @endphp -
-
-
+ data-search="{{ mb_strtolower(($car->vehicle_plate ?? '').' '.($car->customer_name ?? '')) }}"> +
+
داخل الموقف
- -
{{ $car->vehicle_plate ?? '—' }}
- -
-
+
+
{{ $car->vehicle_plate ?? '—' }}
+

{{ $car->customer_name ?? 'غير محدد' }} - @if($car->phone) -

{{ $car->phone }}
- @endif -
- -
- - دخل {{ $car->start_time->format('H:i') }} -  ·  - {{ floor($elapsedMin/60) }}س {{ $elapsedMin%60 }}د -
- +

+

+ + دخل {{ $car->start_time->format('H:i') }} — + مرّ {{ floor($elapsedMin/60) }}س {{ $elapsedMin%60 }}د +

@if($isOverdue) -
- - - تجاوز {{ floor(abs($remainMins)/60) }}س {{ abs($remainMins)%60 }}د - -
+

+ + تجاوز {{ floor(abs($remainMins)/60) }}س {{ abs($remainMins)%60 }}د +

@else -
- - متبقي {{ floor($remainMins/60) }}س {{ $remainMins%60 }}د - -
+

+ + متبقي {{ floor($remainMins/60) }}س {{ $remainMins%60 }}د +

@endif - -
- -
@@ -455,33 +327,23 @@ @endforeach {{-- Empty state --}} - @if($totalCards === 0) -
-
- -

لا توجد سيارات أو حجوزات نشطة

-

سجّل دخول سيارة جديدة للبدء

- -
+ @if($activeCars->isEmpty() && $reservations->isEmpty()) +
+ +

لا توجد سيارات أو حجوزات نشطة

+
@endif {{-- No search results --}} - -{{-- Auto-refresh countdown --}} -
-
@endif {{-- end selectedLot --}} @@ -491,16 +353,13 @@ DIRECT ENTRY MODAL ══════════════════════════════════════════════════════════════════════ --}}