'$refresh', ]; public static $default_filter; public static function load_filter($sport_id) { self::$default_filter = MultilineSetting::where('sport_id', $sport_id) ->orderBy('id')->pluck('id')->first(); } public function table(Table $table): Table { self::load_filter(auth()->user()->sport_id); return $table ->query(AlarmSetting::query() ->where('client_bookmaker_id', auth()->user()->bookmaker_id) ->where('sport_id', auth()->user()->sport_id)) ->paginated(false) ->columns([ // IconColumn::make('sport.icon') // ->label('') // ->width('1rem') // ->icon(function ($record): string { // return $record->sport->icon; // }) // ->color(fn ($record): string => match ($record->alarm_level_id) { // 1 => 'success', // 2 => 'warning', // 3 => 'danger', // }), // TextColumn::make('sport.name'), TextColumn::make('alarm_level.name') ->color(fn ($record) => $record->alarm_level->color) ->weight(FontWeight::Black), TextInputColumn::make('alarm_threshold') ->tooltip('Between 0.01 - 2.00') ->width('2rem') ->prefix('Threshold:') ->rules(['required', 'decimal:2', 'between:0,2']), TextColumn::make('multiline_setting.name')->label('Bettype'), ToggleColumn::make('disabled'), ]) ->defaultSort('alarm_level_id') ->deferFilters(false) ->filters([ Filter::make('multiline_setting_id') ->schema([ Radio::make('multiline_setting_id') ->inline() ->columnSpan(6) ->default(self::$default_filter) ->columnSpanFull() ->hiddenLabel() ->options(fn () => MultilineSetting::where('sport_id', auth()->user()->sport_id)->orderBy('name')->pluck('name', 'id')), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when( $data['multiline_setting_id'], fn (Builder $query, $multiline_setting_id): Builder => $query->where('multiline_setting_id', $multiline_setting_id), ); }) ->columns(6)->columnSpan(6), ], layout: FiltersLayout::AboveContent) ->hiddenFilterIndicators(); } public function render(): View { return view('livewire.alarm-bookmaker'); } }