56 lines
2.1 KiB
PHP
56 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\TxoddsMarkets\Tables;
|
|
|
|
use Filament\Forms\Components\Select;
|
|
use Filament\Tables\Columns\TextColumn;
|
|
use Filament\Tables\Columns\ToggleColumn;
|
|
use Filament\Tables\Enums\FiltersLayout;
|
|
use Filament\Tables\Filters\Filter;
|
|
use Filament\Tables\Table;
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
|
class TxoddsMarketsTable
|
|
{
|
|
public static function configure(Table $table): Table
|
|
{
|
|
return $table
|
|
->columns([
|
|
TextColumn::make('market_id')->badge()->searchable(),
|
|
TextColumn::make('name')->searchable(),
|
|
ToggleColumn::make('soccer')->toggleable(true),
|
|
ToggleColumn::make('ice_hockey')->toggleable(true),
|
|
ToggleColumn::make('basketball')->toggleable(true),
|
|
ToggleColumn::make('tennis')->toggleable(true),
|
|
])
|
|
->filters([
|
|
Filter::make('sport_market')
|
|
->schema([
|
|
Select::make(name: 'sport_market')
|
|
->placeholder('Filter Sport')
|
|
->hiddenLabel()
|
|
->label('')
|
|
->preload()
|
|
->options(function () {
|
|
return [
|
|
'soccer' => 'Soccer',
|
|
'ice_hockey' => 'Ice Hockey',
|
|
'basketball' => 'Basketball',
|
|
'tennis' => 'Tennis',
|
|
];
|
|
})
|
|
->live(),
|
|
])
|
|
->query(function (Builder $query, array $data): Builder {
|
|
return $query
|
|
->when(
|
|
$data['sport_market'],
|
|
fn (Builder $query, $sport_market) => $query->where($sport_market, 1)
|
|
);
|
|
}),
|
|
], layout: FiltersLayout::AboveContent)
|
|
->deferColumnManager(false)
|
|
->deferFilters(false);
|
|
}
|
|
}
|