diff --git a/app/Filament/Tenant/Pages/CalendarBoard.php b/app/Filament/Tenant/Pages/CalendarBoard.php index 7a79270..d35b1ba 100644 --- a/app/Filament/Tenant/Pages/CalendarBoard.php +++ b/app/Filament/Tenant/Pages/CalendarBoard.php @@ -527,6 +527,23 @@ class CalendarBoard extends Page return Vehicle::where('client_id', $clientId)->pluck('plate', 'id')->toArray(); } + public function getAllVehicleOptions(): array + { + return Vehicle::orderBy('plate') + ->limit(300) + ->get(['id', 'make', 'model', 'plate', 'client_id']) + ->mapWithKeys(fn ($v) => [ + $v->id => trim($v->plate . ' — ' . $v->make . ' ' . $v->model), + ])->toArray(); + } + + public function updatedNewApptVehicleId($value): void + { + if ($value && $vehicle = Vehicle::find($value)) { + $this->newAppt['client_id'] = $vehicle->client_id; + } + } + private function calcHours(?string $start, ?string $end): float { if (! $start || ! $end) return 1.0; diff --git a/resources/views/filament/tenant/pages/calendar.blade.php b/resources/views/filament/tenant/pages/calendar.blade.php index d9ef620..b779830 100644 --- a/resources/views/filament/tenant/pages/calendar.blade.php +++ b/resources/views/filament/tenant/pages/calendar.blade.php @@ -86,7 +86,7 @@ .cv-notes strong { display:block; margin-bottom:4px; } /* Matrix */ -.cv-matrix-wrap { background:var(--cv-surface); border-radius:8px; padding:16px; box-shadow:var(--cv-shadow); overflow-x:auto; } +.cv-matrix-wrap { background:var(--cv-surface); border-radius:8px; padding:16px; box-shadow:var(--cv-shadow); overflow-x:auto; scroll-behavior:smooth; } .cv-grid { display:grid; grid-template-columns:140px repeat(7, minmax(160px, 1fr)); gap:1px; background:var(--cv-border); border-radius:6px; overflow:hidden; min-width:1240px; } .cv-cell { background:var(--cv-surface); padding:10px 8px; min-height:90px; position:relative; } .cv-header-cell { background:var(--cv-row-bg); text-align:center; font-weight:600; font-size:13px; padding:10px; } @@ -113,13 +113,14 @@ .cv-load.warn { background:var(--cv-orange-bg); color:var(--cv-orange-text); } .cv-load.full { background:var(--cv-red-bg); color:var(--cv-red-text); } -.cv-event { background:#EBF5FF; border-left:3px solid var(--cv-blue); padding:6px 8px; margin-bottom:4px; border-radius:4px; cursor:grab; font-size:12px; transition:all .15s; } +.cv-event { background:#EBF5FF; border-left:3px solid var(--cv-blue); padding:5px 7px; margin-bottom:4px; border-radius:4px; cursor:grab; font-size:11px; transition:all .15s; line-height:1.35; } .cv-event:hover { transform:translateY(-1px); box-shadow:0 2px 6px rgba(0,0,0,0.08); } .cv-event:active { cursor:grabbing; } .cv-event.dragging { opacity:0.4; } -.cv-event-title { font-weight:600; color:var(--cv-blue-text); } -.cv-event-meta { color:var(--cv-text-2); font-size:11px; margin-top:2px; } -.cv-event-time { font-weight:500; color:var(--cv-text); font-size:11px; margin-top:2px; } +.cv-event-title { font-weight:700; color:var(--cv-blue-text); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } +.cv-event-client { color:var(--cv-text); font-size:11px; margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } +.cv-event-vehicle { color:var(--cv-text-2); font-size:11px; margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } +.cv-event-time { font-weight:600; color:var(--cv-text-3); font-size:10px; margin-top:2px; } .cv-add { position:absolute; bottom:4px; right:4px; width:24px; height:24px; border-radius:50%; background:var(--cv-blue); color:white; border:none; cursor:pointer; font-size:16px; line-height:22px; opacity:0; transition:opacity .15s; box-shadow:0 2px 4px rgba(0,0,0,0.15); } .cv-cell:hover .cv-add { opacity:1; } @@ -346,9 +347,10 @@ wire:click="openEvent({{ $e['id'] }})" @dragstart="dragEventId = {{ $e['id'] }}; $el.classList.add('dragging')" @dragend="$el.classList.remove('dragging')"> -
{{ $e['client_name'] ?: $e['title'] }}
-
{{ $e['vehicle'] ?: '—' }}@if($e['plate']) · {{ $e['plate'] }}@endif
-
{{ $e['time'] }}@if($e['master_initial']) · {{ $e['master_initial'] }}@endif
+ @if($e['title'])
{{ $e['title'] }}
@endif + @if($e['client_name'])
👤 {{ $e['client_name'] }}
@endif + @if($e['vehicle'] || $e['plate'])
🚗 {{ $e['vehicle'] }}@if($e['plate']) · {{ $e['plate'] }}@endif
@endif +
🕐 {{ $e['time'] }}@if($e['master_initial']) · {{ $e['master_initial'] }}@endif
@endforeach @@ -419,7 +421,7 @@ @endif
- + {{ __('↗ Editare') }}
@endif @@ -450,8 +452,16 @@
-
- + + @foreach ($this->getAllVehicleOptions() as $id => $label) + + @endforeach + +
+
+