poll('15s') ->striped() ->defaultPaginationPageOption(8) ->paginationPageOptions([8, 16, 24, 36]) ->columns([ Stack::make([ TextColumn::make('player_name')->color('primary')->icon('phosphor-copy')->copyable()->searchable(), TextColumn::make('ss_player_id') ->color('success')->icon('phosphor-copy')->copyable() ->searchable( query: fn($query, $search) => $query->orWhere('ss_player_id', (int) $search) ), TextColumn::make('positions.name')->badge()->color('warning') ->sortable(), TextColumn::make('team.ss_team_name')->prefix('Team: ')->color('teal'), TextColumn::make('team.country.name')->prefix('Country: ')->color('teal'), TextColumn::make('birthdate')->prefix('Birthdate: '), TextColumn::make('height')->prefix('Height: ')->suffix(' cm'), TextColumn::make('nationality')->prefix('Nationality: '), TextColumn::make('preferred_foot')->prefix('Preferred Foot: '), TextColumn::make('last_update')->date()->prefix('Last Update: '), ]), ]) ->emptyStateHeading('No double player in details') ->contentGrid([ 'md' => 2, 'xl' => 4, ]) ->filters([ Filter::make('player_filters') ->schema([ Checkbox::make('find_double'), ])->query(function (Builder $query, array $data): Builder { return $query->when( $data['find_double'], function (Builder $query) { $pDetails = StatistikoDetail::pluck('ss_player_id')->toArray(); $doublpDetails = array_diff_assoc( $pDetails, array_unique($pDetails) ); $query->whereIn('ss_player_id', $doublpDetails)->orderBy('ss_player_id'); } ); })->indicateUsing(function (array $data): ?string { if (! $data['find_double']) { return null; } return 'Find Double'; }), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) ->recordActions([ EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]); } }