39498-vm/app/Filament/Widgets/LatestRidesTable.php
2026-04-06 07:35:25 +00:00

47 lines
1.6 KiB
PHP

<?php
namespace App\Filament\Widgets;
use App\Models\Ride;
use Filament\Tables;
use Filament\Tables\Table;
use Filament\Widgets\TableWidget as BaseWidget;
class LatestRidesTable extends BaseWidget
{
protected static ?string $heading = 'Últimos trayectos';
protected static ?int $sort = 3;
protected int | string | array $columnSpan = 1;
public function table(Table $table): Table
{
return $table
->query(Ride::query()->latest()->limit(5))
->paginated(false)
->columns([
Tables\Columns\TextColumn::make('pickup_label')
->label('Trayecto')
->description(fn (Ride $record): string => '→ '.$record->destination_label)
->weight('semibold'),
Tables\Columns\TextColumn::make('status')
->label('Estado')
->badge()
->formatStateUsing(fn (?string $state): string => ucfirst($state ?: 'pendiente'))
->color(fn (?string $state): string => match ($state) {
'confirmed', 'completed' => 'success',
'pending' => 'warning',
'cancelled' => 'danger',
default => 'gray',
}),
Tables\Columns\TextColumn::make('eta_minutes')
->label('ETA')
->formatStateUsing(fn ($state): string => $state ? $state.' min' : '—'),
Tables\Columns\TextColumn::make('created_at')
->label('Creado')
->since(),
]);
}
}