diff --git a/app/Filament/Pages/Selections/LoadPlayer.php b/app/Filament/Pages/Selections/LoadPlayer.php index fe6ba220..f6be3e1f 100644 --- a/app/Filament/Pages/Selections/LoadPlayer.php +++ b/app/Filament/Pages/Selections/LoadPlayer.php @@ -11,14 +11,8 @@ use Filament\Schemas\Components\Utilities\Get; class LoadPlayer { - public static function load(Get $get) + public static function load(int|null $team_id, string|null $team_position, int|null $sofascore_category_id, array|null $season, string|null $seasonmode) { - $team_id = $get('team_id'); - $team_position = $get('team_position'); - $sofascore_category_id = $get('sofascore_category_id'); - $season = $get('season'); - $seasonmode = $get('seasonmode'); - $season = GetSeason::load($season, $seasonmode); $hash = hash('crc32', $team_id . $team_position . $sofascore_category_id . serialize($season)); diff --git a/app/Filament/Pages/Statistic.php b/app/Filament/Pages/Statistic.php index 79c8a18f..61a96332 100644 --- a/app/Filament/Pages/Statistic.php +++ b/app/Filament/Pages/Statistic.php @@ -23,6 +23,8 @@ use Filament\Schemas\Components\Grid; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; +use Filament\Support\Enums\SlideOverPosition; +use Filament\Support\Enums\Width; use Filament\Support\RawJs; use Illuminate\Contracts\Support\Htmlable; use Illuminate\Support\HtmlString; @@ -76,6 +78,29 @@ class Statistic extends BaseDashboard return ''; } + protected function getHeaderActions(): array + { + return [ + Action::make('esc') + ->label('Reset') + ->icon('phosphor-x-circle') + ->color('gray') + ->keyBindings(['esc']) + ->action('resetFilters'), + Action::make('calculator') + ->modalSubmitAction(false) // Hides the submit button + ->modalCancelAction(false) // Optional: hides the cancel button too + ->label('Calculate') + ->icon('icon-player') + ->color(fn(): string => $this->filters['team_id'] ? 'primary' : 'gray') + ->disabled(fn(): string => $this->filters['team_id'] ? false : true) + ->modalContent(view('filament.modals.player-calculator-modal', ['filters' => $this->filters])) + ->slideOver() + ->slideOverPosition(SlideOverPosition::Start) + ->modalWidth(Width::SevenExtraLarge) + ]; + } + public function filtersForm(Schema $schema): Schema { return $schema @@ -314,7 +339,12 @@ class Statistic extends BaseDashboard ->tooltip(fn() => $this->tooltip_player_info()) ) ->options(function (Get $get) { - return LoadPlayer::load($get); + $team_id = $get('team_id'); + $team_position = $get('team_position'); + $sofascore_category_id = $get('sofascore_category_id'); + $season = $get('season'); + $seasonmode = $get('seasonmode'); + return LoadPlayer::load($team_id, $team_position, $sofascore_category_id, $season, $seasonmode); }), Select::make('player_on_field') ->live() @@ -427,13 +457,6 @@ class Statistic extends BaseDashboard ->color('gray') ->action(fn(Set $set) => $set('end_date', null)) ), - Action::make('esc') - ->label('') - ->tooltip('Reset [esc]') - ->icon('phosphor-x-circle') - ->color('gray') - ->keyBindings(['esc']) - ->action('resetFilters'), ]); } diff --git a/app/Livewire/AlarmBookmaker.php b/app/Livewire/AlarmBookmaker.php index 03b27279..a8346efc 100644 --- a/app/Livewire/AlarmBookmaker.php +++ b/app/Livewire/AlarmBookmaker.php @@ -33,11 +33,11 @@ class AlarmBookmaker extends Component implements HasActions, HasSchemas, HasTab 'refreshAlarmBookmaker' => '$refresh', ]; - public static $default_filter; + public static int $default_filter; - public static function load_filter($sport_id) + public static function load_filter(int $sport_id) { - self::$default_filter = MultilineSetting::where('sport_id', $sport_id) + self::$default_filter = MultilineSetting::where('sport_id', (int) $sport_id) ->orderBy('id')->pluck('id')->first(); } @@ -64,7 +64,7 @@ class AlarmBookmaker extends Component implements HasActions, HasSchemas, HasTab // }), // TextColumn::make('sport.name'), TextColumn::make('alarm_level.name') - ->color(fn ($record) => $record->alarm_level->color) + ->color(fn($record) => $record->alarm_level->color) ->weight(FontWeight::Black), TextInputColumn::make('alarm_threshold') ->tooltip('Between 0.01 - 2.00') @@ -88,13 +88,13 @@ class AlarmBookmaker extends Component implements HasActions, HasSchemas, HasTab ->default(self::$default_filter) ->columnSpanFull() ->hiddenLabel() - ->options(fn () => MultilineSetting::where('sport_id', auth()->user()->sport_id)->orderBy('name')->pluck('name', 'id')), + ->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), + fn(Builder $query, $multiline_setting_id): Builder => $query->where('multiline_setting_id', $multiline_setting_id), ); }) ->columns(6)->columnSpan(6), diff --git a/app/Livewire/Mapper/LoadPositions.php b/app/Livewire/Mapper/LoadPositions.php new file mode 100644 index 00000000..3e38f55b --- /dev/null +++ b/app/Livewire/Mapper/LoadPositions.php @@ -0,0 +1,58 @@ +positions = LoadPositions::load(); + $team_position = $filters['team_position']; + $sofascore_category_id = $filters['sofascore_category_id']; + $season = $filters['season']; + $seasonmode = $filters['seasonmode']; + $team_id = $filters['team_id']; + $this->player = LoadPlayer::load($team_id, $team_position, $sofascore_category_id, $season, $seasonmode); + } +} diff --git a/public/images/soccerfield.jpg b/public/images/soccerfield.jpg new file mode 100644 index 00000000..d23f6db8 Binary files /dev/null and b/public/images/soccerfield.jpg differ diff --git a/public/images/soccerfield.png b/public/images/soccerfield.png new file mode 100644 index 00000000..1a3f3435 Binary files /dev/null and b/public/images/soccerfield.png differ diff --git a/public/images/soccerfield2.jpg b/public/images/soccerfield2.jpg new file mode 100644 index 00000000..5e7df2ea Binary files /dev/null and b/public/images/soccerfield2.jpg differ diff --git a/public/svg/soccerfield.svg b/public/svg/soccerfield.svg new file mode 100644 index 00000000..e5eb886c --- /dev/null +++ b/public/svg/soccerfield.svg @@ -0,0 +1,18 @@ + + diff --git a/resources/css/filament/admin/theme.css b/resources/css/filament/admin/theme.css index f551f396..34226566 100644 --- a/resources/css/filament/admin/theme.css +++ b/resources/css/filament/admin/theme.css @@ -233,4 +233,8 @@ less padding in table @apply bg-gray-100 dark:bg-gray-600/30 drop-shadow } } +} + +.dragging { + @apply border-red-500 } \ No newline at end of file diff --git a/resources/svg/soccerfield.svg b/resources/svg/soccerfield.svg new file mode 100644 index 00000000..e5eb886c --- /dev/null +++ b/resources/svg/soccerfield.svg @@ -0,0 +1,18 @@ + + diff --git a/resources/views/filament/modals/player-calculator-modal.blade.php b/resources/views/filament/modals/player-calculator-modal.blade.php new file mode 100644 index 00000000..355374b7 --- /dev/null +++ b/resources/views/filament/modals/player-calculator-modal.blade.php @@ -0,0 +1 @@ +@livewire('player-calculator', ['filters' => $filters]) diff --git a/resources/views/filament/pages/split-header-action.blade.php b/resources/views/filament/pages/split-header-action.blade.php new file mode 100644 index 00000000..5e3e4236 --- /dev/null +++ b/resources/views/filament/pages/split-header-action.blade.php @@ -0,0 +1,15 @@ +