diff --git a/app/Console/Commands/Grap.php b/app/Console/Commands/Grap.php index fe97c638..13a6797c 100644 --- a/app/Console/Commands/Grap.php +++ b/app/Console/Commands/Grap.php @@ -10,6 +10,7 @@ use App\Console\Commands\Grapper\Sofascore\SendMail; use App\Console\Commands\Grapper\Sofascore\SettingsToLocal; use App\Utilities\Notice; use Illuminate\Console\Command; +use App\Console\Commands\Grapper\Sofascore\Rose; class Grap extends Command { @@ -40,16 +41,13 @@ class Grap extends Command $txt .= '--folder' . PHP_EOL; $txt .= '-----------------------------------------------------------' . PHP_EOL; $txt .= 'FUNCTION' . PHP_EOL; - $txt .= ' 1 grapper daily & subDays ( default 3)' . PHP_EOL; - $txt .= ' 2 grapper date' . PHP_EOL; - $txt .= ' 3 grapper range' . PHP_EOL; - $txt .= ' 4 grapper rose' . PHP_EOL; - $txt .= ' 5 make ecxel from folder' . PHP_EOL; - $txt .= ' 5 playeer/season' . PHP_EOL; - // $txt .= " 1\tPlayerPerSeason".PHP_EOL; - // $txt .= " 1\tPlayerPerSeason".PHP_EOL; - // $txt .= " 1\tPlayerPerSeason".PHP_EOL; - // $txt .= " 2\tSettingsToLocal".PHP_EOL; + $txt .= ' 1 grapper DAILY & subDays ( default 3)' . PHP_EOL; + $txt .= ' 2 grapper DATE' . PHP_EOL; + $txt .= ' 3 grapper RANGE' . PHP_EOL; + $txt .= ' 4 grapper ROSE' . PHP_EOL; + $txt .= ' 5 import to excel from folder' . PHP_EOL; + $txt .= ' 6 playeer/season' . PHP_EOL; + $txt .= ' 7 settings to local' . PHP_EOL; Notice::note($txt, 'b', 1); } @@ -59,8 +57,6 @@ class Grap extends Command switch (self::$options['id']) { case 1: - SettingsToLocal::run(); - SetStorage::set(1); Grapper::load(1); @@ -69,14 +65,6 @@ class Grap extends Command SendMail::run(1); - break; - case 5: - SetStorage::set(5); - - MakeExcel::create(); - break; - case 6: - PlayerPerSeason::run(); break; // case 2: // SetStorage::set(); @@ -88,11 +76,30 @@ class Grap extends Command // Grapper::load(3); // break; - // case 4: - // SetStorage::set(); + case 4: + SetStorage::set(4); + + Rose::run(); + break; + case 5: + SetStorage::set(5); + + MakeExcel::create(); + break; + case 6: + PlayerPerSeason::run(); + + break; + case 7: + + SettingsToLocal::run(); + break; + + case 8: + + break; + - // Grapper::load(4); - // break; // case 5: // PlayerPerSeason::run(); diff --git a/app/Console/Commands/Grapper/Sofascore/Grapper.php b/app/Console/Commands/Grapper/Sofascore/Grapper.php index f3410d19..1740f2d6 100644 --- a/app/Console/Commands/Grapper/Sofascore/Grapper.php +++ b/app/Console/Commands/Grapper/Sofascore/Grapper.php @@ -58,11 +58,7 @@ class Grapper } if ($debug) { - Notice::note('reset grapper', 'br', 1); - } - } else { - if ($debug) { - Notice::note('continuing grapper', 'bg'); + Notice::note('Restarted grapper', 'br', 1); } } @@ -72,10 +68,6 @@ class Grapper foreach ($active_tournaments as $tournament) { - if ($debug) { - Notice::note('START '.$tournament->tournament->name, 'p'); - } - $res = SofaScoreDayTournament::whereDate('day', '=', $day)->where('tournament_id', $tournament->sofa_score_tournament_id)->first(); if ($res) { @@ -84,7 +76,7 @@ class Grapper Notice::note($day, 'g'); } - $url = Grap::$options['base_url']."api/v1/unique-tournament/$tournament->sofa_score_tournament_id/scheduled-events/$day"; + $url = Grap::$options['base_url'] . "api/v1/unique-tournament/$tournament->sofa_score_tournament_id/scheduled-events/$day"; Sleeper::rand(1); @@ -92,13 +84,19 @@ class Grapper if (isset($data['events'])) { + if ($debug) { + Notice::note($tournament->tournament->name, 'bb'); + } + foreach ($data['events'] as $event) { + dd($event); + Grap::$useragent = rand(1, 6); if (! $force && SofaScoreEventGrapped::where('id', (int) $event['id'])->exists()) { if ($debug) { - Notice::note('Grapped '.$day.' - '.$event['homeTeam']['name'].' vs '.$event['awayTeam']['name'], 'g'); + Notice::note('Grapped ' . $day . ' - ' . $event['homeTeam']['name'] . ' vs ' . $event['awayTeam']['name'], 'g'); } } else { @@ -113,18 +111,18 @@ class Grapper Sleeper::rand(1); if ($debug) { - Notice::note($day.' - '.$event['homeTeam']['name'].' vs '.$event['awayTeam']['name'], 'bg'); + Notice::note($day . ' - ' . $event['homeTeam']['name'] . ' vs ' . $event['awayTeam']['name'], 'bg'); } $grapped = SofaScoreEventGrapped::firstOrNew(['id' => $event['id']]); $grapped->grapper_id = $task_id; $grapped->day = $day; $grapped->liga = $event['tournament']['name']; - $grapped->name = $event['homeTeam']['name'].' vs '.$event['awayTeam']['name']; + $grapped->name = $event['homeTeam']['name'] . ' vs ' . $event['awayTeam']['name']; $grapped->url = $url; $grapped->starttime = $starttime->toDateTimeString(); - $folder = Grap::$storage.'/'.$day.'/'.$day.'-'.$event['tournament']['slug'].'/'.$event['slug']; + $folder = Grap::$storage . '/' . $day . '/' . $day . '-' . $event['tournament']['category']['slug'] . '-' . $event['tournament']['slug'] . '/' . $event['slug']; File::makeDirectory($folder, 0775, true, true); @@ -132,7 +130,7 @@ class Grapper * EVENT event *********************************/ - File::put($folder.'/event.json', json_encode($event)); + File::put($folder . '/event.json', json_encode($event)); /********************************* * EVENT statistics @@ -140,7 +138,7 @@ class Grapper $event_id = $event['id']; - $url = Grap::$options['base_url']."api/v1/event/$event_id/statistics"; + $url = Grap::$options['base_url'] . "api/v1/event/$event_id/statistics"; Sleeper::rand(); @@ -148,7 +146,7 @@ class Grapper $data['id'] = $event_id; - File::put($folder.'/statistics.json', json_encode($data)); + File::put($folder . '/statistics.json', json_encode($data)); $grapped->got_statistics = 1; @@ -156,7 +154,7 @@ class Grapper * EVENT lineups *********************************/ - $url = Grap::$options['base_url']."api/v1/event/$event_id/lineups"; + $url = Grap::$options['base_url'] . "api/v1/event/$event_id/lineups"; Sleeper::rand(); @@ -164,7 +162,7 @@ class Grapper $data['id'] = $event_id; - File::put($folder.'/lineups.json', json_encode($data)); + File::put($folder . '/lineups.json', json_encode($data)); $grapped->got_lineups = 1; @@ -172,7 +170,7 @@ class Grapper * EVENT odds *********************************/ - $url = Grap::$options['base_url']."api/v1/event/$event_id/odds/1/all"; + $url = Grap::$options['base_url'] . "api/v1/event/$event_id/odds/1/all"; Sleeper::rand(); @@ -180,7 +178,7 @@ class Grapper $data['id'] = $event_id; - File::put($folder.'/odds.json', json_encode($data)); + File::put($folder . '/odds.json', json_encode($data)); $grapped->got_odds = 1; @@ -188,7 +186,7 @@ class Grapper * EVENT incidents *********************************/ - $url = Grap::$options['base_url']."api/v1/event/$event_id/incidents"; + $url = Grap::$options['base_url'] . "api/v1/event/$event_id/incidents"; Sleeper::rand(); @@ -196,7 +194,7 @@ class Grapper $data['id'] = $event_id; - File::put($folder.'/incidents.json', json_encode($data)); + File::put($folder . '/incidents.json', json_encode($data)); $grapped->got_incidents = 1; @@ -206,9 +204,6 @@ class Grapper } } } - if ($debug) { - Notice::note('END '.$tournament->tournament->name, 'p'); - } } SofaScoreTaskDay::updateOrCreate([ 'grapper_id' => (int) $task_id, @@ -220,9 +215,8 @@ class Grapper $count++; if ($debug) { - Notice::note($count.' days done', 'bb'); + Notice::note("Grapper done, ($count)", 'bb'); } - } } } diff --git a/app/Console/Commands/Grapper/Sofascore/Helper/SetStorage.php b/app/Console/Commands/Grapper/Sofascore/Helper/SetStorage.php index 78a20b14..64052a3b 100644 --- a/app/Console/Commands/Grapper/Sofascore/Helper/SetStorage.php +++ b/app/Console/Commands/Grapper/Sofascore/Helper/SetStorage.php @@ -39,7 +39,7 @@ class SetStorage break; case 4: Grap::$storage = $sofascore_data . $storage_name . '/rosa-' . Carbon::now()->format('Y-m-d'); - Grap::$zipfile = $sofascore_data . $storage_name . '/rosa-' . Carbon::now()->format('Y-m-d') . '.zip'; + Grap::$folder = $storage_name; break; case 5: Grap::$storage = $sofascore_data; diff --git a/app/Console/Commands/Grapper/Sofascore/Helper/Sleeper.php b/app/Console/Commands/Grapper/Sofascore/Helper/Sleeper.php index 3df96650..2b69ed69 100644 --- a/app/Console/Commands/Grapper/Sofascore/Helper/Sleeper.php +++ b/app/Console/Commands/Grapper/Sofascore/Helper/Sleeper.php @@ -7,7 +7,7 @@ class Sleeper public static function rand($langsam = false) { if ($langsam) { - $sleep = rand(3000000, 6000000); + $sleep = rand(3000000, 7000000); } else { $sleep = rand(100000, 150000); } diff --git a/app/Console/Commands/Grapper/Sofascore/MakeExcel.php b/app/Console/Commands/Grapper/Sofascore/MakeExcel.php index 7ecfce01..9ded3bee 100644 --- a/app/Console/Commands/Grapper/Sofascore/MakeExcel.php +++ b/app/Console/Commands/Grapper/Sofascore/MakeExcel.php @@ -5,7 +5,6 @@ namespace App\Console\Commands\Grapper\Sofascore; use App\Console\Commands\Grap; use App\Console\Commands\Grapper\Sofascore\Helper\FileType; use App\Console\Commands\Grapper\Sofascore\Helper\ReadDir; -use App\Console\Commands\Nuh; use App\Utilities\Notice; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; @@ -20,10 +19,10 @@ class MakeExcel { ini_set('memory_limit', -1); - $debug = Nuh::$options['d'] ?? 0; + $debug = Grap::$options['d'] ?? 0; if ($debug) { - Notice::note('Make Excel folder to import: ' . Grap::$folder . "\nmaximum files in excel: " . self::$max, 'b'); + Notice::note("Make Excel\nFolder: " . Grap::$folder . "\nMax/file: " . self::$max, 'bb'); } $files = ReadDir::get_tree(Grap::$storage . '/' . Grap::$folder); diff --git a/app/Console/Commands/Grapper/Sofascore/Rose.php b/app/Console/Commands/Grapper/Sofascore/Rose.php index 6e4b607a..2da01a93 100644 --- a/app/Console/Commands/Grapper/Sofascore/Rose.php +++ b/app/Console/Commands/Grapper/Sofascore/Rose.php @@ -2,11 +2,10 @@ namespace App\Console\Commands\Grapper\Sofascore; -use App\Console\Commands\Grapper\Sofascore; use App\Console\Commands\Grapper\Sofascore\Helper\CurlSofa; use App\Console\Commands\Grapper\Sofascore\Helper\Sleeper; use App\Console\Commands\Grapper\Sofascore\Helper\Strings; -use App\Console\Commands\Nuh; +use App\Console\Commands\Grap; use App\Models\SofaScoreRosa; use App\Utilities\Notice; use Illuminate\Support\Facades\File; @@ -15,11 +14,10 @@ class Rose { public static function run() { - File::makeDirectory(Sofascore::$storage, 0775, true, true); + $debug = Grap::$options['d'] ?? 0; + $restart = Grap::$options['r'] ?? 0; - $debug = Nuh::$options['d'] ?? 0; - - $restart = Nuh::$options['restart'] ?? 0; + File::makeDirectory(Grap::$storage, 0775, true, true); if ($restart) { SofaScoreRosa::query()->update(['grapped' => 0]); @@ -35,9 +33,10 @@ class Rose $res = SofaScoreRosa::get(); foreach ($res as $value) { - $url = Nuh::$options['base_url'] . 'api/v1/team/' . $value->ss_team_id . '/players'; + $url = Grap::$options['base_url'] . 'api/v1/team/' . $value->ss_team_id . '/players'; $data = CurlSofa::load($url); + $data['ss_team_id'] = $value->ss_team_id; $data['ss_team_name'] = $value->ss_team_name; @@ -45,7 +44,7 @@ class Rose * add team to folder *********************************/ - File::put(Sofascore::$storage . '/' . Strings::clean($value->ss_team_name) . '.json', json_encode($data)); + File::put(Grap::$storage . '/' . Strings::clean($value->ss_team_name) . '.json', json_encode($data)); SofaScoreRosa::where('id', $value->id)->update(['grapped' => 1]); diff --git a/app/Console/Commands/Grapper/Sofascore/SendMail.php b/app/Console/Commands/Grapper/Sofascore/SendMail.php index db97b034..11444588 100644 --- a/app/Console/Commands/Grapper/Sofascore/SendMail.php +++ b/app/Console/Commands/Grapper/Sofascore/SendMail.php @@ -18,6 +18,10 @@ class SendMail { $debug = Grap::$options['d'] ?? 0; + if ($debug) { + Notice::note('Send Mail', 'bb'); + } + $task = SofaScoreTask::where('id', $task_id)->first(); $files = ReadDir::get_tree(Grap::$storage); @@ -34,11 +38,7 @@ class SendMail new SofaScoreDataMail($header, $table, $sendfiles) ); if ($debug) { - Notice::note('Mail: '.$header); - } - - if ($debug) { - Notice::note('mail send', 'g'); + Notice::note("Mail Send", 'bg'); } } @@ -48,7 +48,7 @@ class SendMail $table = ''; foreach ($res as $value) { - $table .= '|'.$value->liga.'|'.$value->name.'|'.$value->starttime.'| + $table .= '|' . $value->liga . '|' . $value->name . '|' . $value->starttime . '| '; } @@ -60,13 +60,13 @@ class SendMail $text = '## '; switch ($task->mode) { case 'daily': - $text = $task->name.' - '.Carbon::now()->subDays(3)->format('Y-m-d'); + $text = $task->name . ' - ' . Carbon::now()->subDays(3)->format('Y-m-d'); break; case 'date': - $text = $task->name.' - '.$task->day_from; + $text = $task->name . ' - ' . $task->day_from; break; case 'range': - $text = $task->name.' - '.$task->day_from.' - '.$task->day_to; + $text = $task->name . ' - ' . $task->day_from . ' - ' . $task->day_to; break; default: diff --git a/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php b/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php index b491721c..5d82e3f1 100644 --- a/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php +++ b/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php @@ -15,13 +15,17 @@ class SettingsToLocal { $debug = Grap::$options['d'] ?? 0; - Notice::note("⚽ close all vpn"); + if ($debug) { + Notice::note("⚽ settings to local"); + Notice::note("⚽ close all vpn"); + } exec('killall ssh'); - Notice::note("⚽ open vpn"); + if ($debug) { + Notice::note("⚽ open vpn"); + } exec('ssh -f -N -L 13306:127.0.0.1:3306 -p 58371 root@162.55.242.190'); - Notice::note("⚽ settings to local"); if ($debug) { Notice::note('SofaScoreTask', 'g'); @@ -50,7 +54,9 @@ class SettingsToLocal SofaScoreTournament::insert((array) $row); } - Notice::note("⚽ close all vpn"); + if ($debug) { + Notice::note("⚽ close all vpn"); + } exec('killall ssh'); } } diff --git a/app/Filament/Clusters/StaticData/Resources/CompetitionGroups/Tables/CompetitionGroupsTable.php b/app/Filament/Clusters/StaticData/Resources/CompetitionGroups/Tables/CompetitionGroupsTable.php index 25f0ab08..15b5a741 100644 --- a/app/Filament/Clusters/StaticData/Resources/CompetitionGroups/Tables/CompetitionGroupsTable.php +++ b/app/Filament/Clusters/StaticData/Resources/CompetitionGroups/Tables/CompetitionGroupsTable.php @@ -36,19 +36,23 @@ class CompetitionGroupsTable ->grow(false) ->color('primary') ->width(30) - ->icon(fn ($record) => $record->sport->icon) - ->tooltip(fn ($record) => $record->id) + ->icon(fn($record) => $record->sport->icon) + ->tooltip(fn($record) => $record->id) ->visibleFrom('lg'), - TextColumn::make('id')->copyable()->alignCenter()->tooltip('Click to copy'), + TextColumn::make('id')->copyable()->alignCenter()->tooltip('Click to copy') + ->sortable(), TextColumn::make('name') + ->sortable() ->color('primary') ->searchable(), TextColumn::make('country.name') ->wrap() + ->sortable() ->color('gray') ->label('Country') - ->icon(fn ($record) => $record->country->icon), + ->icon(fn($record) => $record->country->icon), SelectColumn::make('level') + ->sortable() ->width(30) ->options([ 'TOP' => 'TOP', @@ -60,11 +64,11 @@ class CompetitionGroupsTable ->label('Sport') ->default(1) ->selectablePlaceholder(false) - ->options(fn () => Sport::where('is_active', 1)->pluck('name', 'id')->toArray()), + ->options(fn() => Sport::where('is_active', 1)->pluck('name', 'id')->toArray()), SelectFilter::make('country_id') ->searchable() ->label('Countries') - ->options(fn () => Country::orderBy('name')->pluck('name', 'id')->toArray()), + ->options(fn() => Country::orderBy('name')->pluck('name', 'id')->toArray()), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) ->recordActions([ diff --git a/app/Filament/Clusters/StaticData/Resources/Countries/CountryResource.php b/app/Filament/Clusters/StaticData/Resources/Countries/CountryResource.php index a4848304..5af145ce 100644 --- a/app/Filament/Clusters/StaticData/Resources/Countries/CountryResource.php +++ b/app/Filament/Clusters/StaticData/Resources/Countries/CountryResource.php @@ -64,12 +64,15 @@ class CountryResource extends Resource ->recordTitleAttribute('name') ->columns([ TextColumn::make('id')->searchable() + ->sortable() ->alignCenter()->tooltip('Click to copy'), TextColumn::make('name') ->searchable() + ->sortable() ->color('primary') ->copyable(), TextColumn::make('season_mode') + ->sortable() ->badge() ->formatStateUsing(fn(string $state): string => strtoupper($state)) ->color(fn(string $state): string => match ($state) { @@ -81,10 +84,14 @@ class CountryResource extends Resource ->icon(function ($state): string { return $state; })->label('Flags')->size(IconSize::TwoExtraLarge), - TextColumn::make('iso3'), - TextColumn::make('cc'), - TextColumn::make('numeric'), - IconColumn::make('is_country')->alignCenter()->boolean(), + TextColumn::make('iso3') + ->sortable(), + TextColumn::make('cc') + ->sortable(), + TextColumn::make('numeric') + ->sortable(), + IconColumn::make('is_country')->alignCenter()->boolean() + ->sortable(), ]) ->defaultSort('name', direction: 'asc') diff --git a/app/Filament/Clusters/StaticData/Resources/Elements/Tables/ElementsTable.php b/app/Filament/Clusters/StaticData/Resources/Elements/Tables/ElementsTable.php index 0f76b1be..8ef972a0 100644 --- a/app/Filament/Clusters/StaticData/Resources/Elements/Tables/ElementsTable.php +++ b/app/Filament/Clusters/StaticData/Resources/Elements/Tables/ElementsTable.php @@ -36,32 +36,39 @@ class ElementsTable ->striped() ->columns([ IconColumn::make('sport.icon') + ->sortable() ->label('') ->grow(false) ->width(30) - ->icon(fn ($record) => $record->sport->icon) - ->tooltip(fn ($record) => $record->id) + ->icon(fn($record) => $record->sport->icon) + ->tooltip(fn($record) => $record->id) ->visibleFrom('lg'), TextColumn::make('id') + ->sortable() ->tooltip('click to copy') ->alignCenter() ->copyable(), TextColumn::make('name') + ->sortable() + ->sortable() ->searchable() ->color('primary'), TextColumn::make('country.name') ->wrap() + ->sortable() ->color('gray') - ->icon(fn ($record) => $record->country->icon), + ->icon(fn($record) => $record->country->icon), TextColumn::make('element_group.competition_group_id')->label('Group Id') + ->sortable() ->alignCenter() ->tooltip('click to copy') ->copyable(), - TextColumn::make('element_group.competition_group.name')->label('Group'), + TextColumn::make('element_group.competition_group.name')->label('Group') + ->sortable(), // TextColumn::make('element_group.group.name')->label('Group'), ImageColumn::make('betsapi_image_id') ->label('Logo') - ->defaultImageUrl(fn ($state) => url('https://assets.b365api.com/images/team/m/'.$state.'.png')), + ->defaultImageUrl(fn($state) => url('https://assets.b365api.com/images/team/m/' . $state . '.png')), ])->filters([ SelectFilter::make('sport_id') ->label('Sport') @@ -88,7 +95,7 @@ class ElementsTable ->query(function (Builder $query, array $data): Builder { return $query->when( $data['country_id'], - fn (Builder $query, $country_id) => $query->where('country_id', $country_id) + fn(Builder $query, $country_id) => $query->where('country_id', $country_id) )->when( $data['competition_group_id'], function (Builder $query, $competition_group_id) { diff --git a/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php b/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php index 57d47728..444f922e 100644 --- a/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php +++ b/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/Tables/SofaScoreRosasTable.php @@ -20,11 +20,17 @@ class SofaScoreRosasTable return $table ->defaultPaginationPageOption(50) ->columns([ - TextColumn::make('ss_team_id')->label('SSId')->badge()->width('1rem'), - TextColumn::make('country.name')->label('Country'), - TextColumn::make('tournament_rosa.tournament.name')->label('Tournament'), - TextColumn::make('ss_team_name')->label('Name'), + TextColumn::make('ss_team_id')->label('SSId')->badge()->width('1rem') + ->sortable(), + TextColumn::make('country.name')->label('Country') + ->sortable(), + TextColumn::make('tournament_rosa.tournament.name')->label('Tournament') + ->sortable(), + TextColumn::make('ss_team_name')->label('Name') + ->sortable(), TextColumn::make('updated_at')->dateTime('Y-m-d H:i:s') + ->sortable() + ]) ->filters([ Filter::make('filters') diff --git a/app/Filament/Clusters/StaticData/Resources/SofaScoreTasks/Tables/SofaScoreTasksTable.php b/app/Filament/Clusters/StaticData/Resources/SofaScoreTasks/Tables/SofaScoreTasksTable.php index ff57782e..31240146 100644 --- a/app/Filament/Clusters/StaticData/Resources/SofaScoreTasks/Tables/SofaScoreTasksTable.php +++ b/app/Filament/Clusters/StaticData/Resources/SofaScoreTasks/Tables/SofaScoreTasksTable.php @@ -13,8 +13,10 @@ class SofaScoreTasksTable { return $table ->columns([ - TextColumn::make('id')->badge()->alignCenter()->width('1rem'), - TextColumn::make('name'), + TextColumn::make('id')->badge()->alignCenter()->width('1rem') + ->sortable(), + TextColumn::make('name') + ->sortable(), IconColumn::make('sport.icon') ->label('') ->grow(false) diff --git a/app/Filament/Clusters/StaticData/Resources/StatisticFixtures/Tables/StatisticFixturesTable.php b/app/Filament/Clusters/StaticData/Resources/StatisticFixtures/Tables/StatisticFixturesTable.php index 7faf01a7..7cb162f2 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatisticFixtures/Tables/StatisticFixturesTable.php +++ b/app/Filament/Clusters/StaticData/Resources/StatisticFixtures/Tables/StatisticFixturesTable.php @@ -33,18 +33,22 @@ class StatisticFixturesTable }), TextColumn::make('league.name') ->label('League') + ->sortable() ->searchable() ->description( fn($record) => $record->league->sofascore_category->name ), - TextColumn::make('starttime')->dateTime('Y-m-d H:i'), + TextColumn::make('starttime')->dateTime('Y-m-d H:i') + ->sortable(), TextColumn::make('home.ss_team_name') ->tooltip(fn($record) => $record->home_id) ->color('primary') + ->sortable() ->searchable(), TextColumn::make('away.ss_team_name') ->tooltip(fn($record) => $record->away_id) ->color('success') + ->sortable() ->searchable(), TextColumn::make('updated_at')->alignCenter()->date(), ]) diff --git a/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Tables/StatistikoDetailsTable.php b/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Tables/StatistikoDetailsTable.php index c2085e8b..b2cd46bb 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Tables/StatistikoDetailsTable.php +++ b/app/Filament/Clusters/StaticData/Resources/StatistikoDetails/Tables/StatistikoDetailsTable.php @@ -30,7 +30,8 @@ class StatistikoDetailsTable ->searchable( query: fn($query, $search) => $query->orWhere('ss_player_id', (int) $search) ), - TextColumn::make('positions.name')->badge()->color('warning'), + 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: '), diff --git a/app/Filament/Clusters/StaticData/Resources/StatistikoEvents/Tables/StatistikoEventsTable.php b/app/Filament/Clusters/StaticData/Resources/StatistikoEvents/Tables/StatistikoEventsTable.php index 4127ad2b..4b7979a2 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatistikoEvents/Tables/StatistikoEventsTable.php +++ b/app/Filament/Clusters/StaticData/Resources/StatistikoEvents/Tables/StatistikoEventsTable.php @@ -28,21 +28,27 @@ class StatistikoEventsTable ->striped() ->columns([ IconColumn::make('sport_id') + ->sortable() ->label('') ->icon(fn(string $state): string => match ($state) { '1' => 'icon-soccerball', }), TextColumn::make('match_id')->color('info')->icon('phosphor-copy')->copyable() + ->sortable() ->searchable( query: fn($query, $search) => $query->orWhere('match_id', (int) $search) ), TextColumn::make('league.name') + ->sortable() ->searchable(), TextColumn::make('home.ss_team_name')->color('info') + ->sortable() ->searchable(), TextColumn::make('away.ss_team_name')->color('success') + ->sortable() ->searchable(), - TextColumn::make('starttime')->dateTime('Y-m-d H:i'), + TextColumn::make('starttime')->dateTime('Y-m-d H:i') + ->sortable(), ]) ->filters([ Filter::make('event_filters') diff --git a/app/Filament/Clusters/StaticData/Resources/StatistikoImports/Tables/StatistikoImportsTable.php b/app/Filament/Clusters/StaticData/Resources/StatistikoImports/Tables/StatistikoImportsTable.php index 644efa28..8d7c4a03 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatistikoImports/Tables/StatistikoImportsTable.php +++ b/app/Filament/Clusters/StaticData/Resources/StatistikoImports/Tables/StatistikoImportsTable.php @@ -24,6 +24,7 @@ class StatistikoImportsTable ->striped() ->columns([ SelectColumn::make('data_type') + ->sortable() ->native(false) ->allowOptionsHtml() ->options([ @@ -33,14 +34,17 @@ class StatistikoImportsTable 'events' => 'Events History', ]), TextColumn::make('file_name_original') + ->sortable() ->searchable() ->label('Name'), IconColumn::make('has_run') ->label('Imported') + ->sortable() ->alignCenter() ->boolean() ->falseColor('gray'), - TextColumn::make('created_at')->dateTime(), + TextColumn::make('created_at')->dateTime() + ->sortable(), ]) ->defaultSort('id', direction: 'desc') diff --git a/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php b/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php index 6d0a03c4..a65d15ac 100644 --- a/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php +++ b/app/Filament/Clusters/StaticData/Resources/StatistikoPlayers/Tables/StatistikoPlayersTable.php @@ -16,21 +16,26 @@ class StatistikoPlayersTable return $table ->columns([ TextColumn::make('match_id')->color('info')->icon('phosphor-copy')->copyable() + ->sortable() ->searchable( query: fn($query, $search) => $query->orWhere('match_id', (int) $search) ), TextColumn::make('ss_player_id') + ->sortable() ->label('Player Id') ->color('success')->icon('phosphor-copy')->copyable() ->searchable( query: fn($query, $search) => $query->orWhere('ss_player_id', (int) $search) ), TextColumn::make('details.player_name') + ->sortable() ->label('Player') ->searchable() ->tooltip(fn($record) => $record->details->full_name), - TextColumn::make('event.home.ss_team_name')->searchable()->color('primary'), - TextColumn::make('event.away.ss_team_name')->searchable()->color('success'), + TextColumn::make('event.home.ss_team_name')->searchable()->color('primary') + ->sortable(), + TextColumn::make('event.away.ss_team_name')->searchable()->color('success') + ->sortable(), ]) // ->filters([ // Filter::make('player_filters')