query( OperationRun::query() ->where('tenant_id', Filament::getTenant()->id) ->latest('created_at') ) ->columns([ TextColumn::make('type') ->searchable() ->sortable(), TextColumn::make('status') ->badge() ->colors([ 'secondary' => 'queued', 'warning' => 'running', 'success' => 'completed', ]), TextColumn::make('outcome') ->badge() ->colors([ 'gray' => 'pending', 'success' => 'succeeded', 'warning' => 'partially_succeeded', 'danger' => 'failed', 'secondary' => 'cancelled', ]), TextColumn::make('initiator_name') ->label('Initiator') ->searchable(), TextColumn::make('created_at') ->dateTime() ->sortable() ->label('Started'), TextColumn::make('duration') ->getStateUsing(function (OperationRun $record) { if ($record->started_at && $record->completed_at) { return $record->completed_at->diffForHumans($record->started_at, true); } return '-'; }), ]) ->filters([ SelectFilter::make('outcome') ->options([ 'succeeded' => 'Succeeded', 'partially_succeeded' => 'Partially Succeeded', 'failed' => 'Failed', 'cancelled' => 'Cancelled', 'pending' => 'Pending', ]), SelectFilter::make('type') ->options( fn () => OperationRun::where('tenant_id', Filament::getTenant()->id) ->distinct() ->pluck('type', 'type') ->toArray() ), Filter::make('created_at') ->form([ DatePicker::make('created_from'), DatePicker::make('created_until'), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when( $data['created_from'], fn (Builder $query, $date) => $query->whereDate('created_at', '>=', $date), ) ->when( $data['created_until'], fn (Builder $query, $date) => $query->whereDate('created_at', '<=', $date), ); }), ]) ->actions([ // View action handled by opening a modal or side-peek ]); } }