From 82f6d5e7be8ec2e17977aab7147947fff4a06001 Mon Sep 17 00:00:00 2001 From: salam Date: Wed, 29 Jul 2026 06:36:12 +0200 Subject: [PATCH] wip --- NOTES.md | 5 +- app/Actions/Selections/LoadPlayer.php | 1 + .../SofaScoreRosas/SofaScoreRosaResource.php | 4 +- .../Tables/SofaScoreTournamentsTable.php | 17 +- example2.json | 436 +++++++++--------- storage/position_map.txt | 13 + 6 files changed, 246 insertions(+), 230 deletions(-) create mode 100644 storage/position_map.txt diff --git a/NOTES.md b/NOTES.md index 4b4e21f1..654169cd 100644 --- a/NOTES.md +++ b/NOTES.md @@ -24,4 +24,7 @@ https://www.mongodb.com/docs/drivers/php/laravel-mongodb/current/fundamentals/wr CHART https://icehouse-ventures.github.io/laravel-chartjs/ -https://www.chartjs.org/docs/latest/configuration/interactions.html \ No newline at end of file +https://www.chartjs.org/docs/latest/configuration/interactions.html + + +https://www.sofascore.com/api/v1/unique-tournament/17/season/96668/standings/total \ No newline at end of file diff --git a/app/Actions/Selections/LoadPlayer.php b/app/Actions/Selections/LoadPlayer.php index e1edb6e3..80d3266b 100644 --- a/app/Actions/Selections/LoadPlayer.php +++ b/app/Actions/Selections/LoadPlayer.php @@ -35,6 +35,7 @@ class LoadPlayer $matches_count = count($matches); + // needs to run daily for pre-calculaton $player = SofaScorePlayerPerSeason::with('details')->where('tx_team_id', $team_id)->whereIn('season', $season)->get(); $arr = []; diff --git a/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/SofaScoreRosaResource.php b/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/SofaScoreRosaResource.php index dea610d8..087e90aa 100644 --- a/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/SofaScoreRosaResource.php +++ b/app/Filament/Clusters/StaticData/Resources/SofaScoreRosas/SofaScoreRosaResource.php @@ -20,9 +20,9 @@ class SofaScoreRosaResource extends Resource protected static ?string $recordTitleAttribute = 'name'; - protected static ?string $navigationLabel = 'Rosa'; + protected static ?string $navigationLabel = 'Rooster'; - protected static ?string $modelLabel = 'Rosa'; + protected static ?string $modelLabel = 'Rooster'; protected static string|UnitEnum|null $navigationGroup = 'SofaScore'; diff --git a/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php b/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php index 7f02b1c1..cdac11b7 100644 --- a/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php +++ b/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php @@ -6,11 +6,13 @@ use App\Models\SofaScoreCategory; use App\Models\SofaScoreTournament; use App\Models\Sport; use Filament\Forms\Components\Select; +use Filament\Forms\Components\Toggle; use Filament\Forms\Components\ToggleButtons; use Filament\Schemas\Components\Utilities\Get; use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; +use Filament\Tables\Columns\ToggleColumn; use Filament\Tables\Enums\FiltersLayout; use Filament\Tables\Filters\Filter; use Filament\Tables\Table; @@ -37,7 +39,7 @@ class SofaScoreTournamentsTable TextColumn::make('sofascore_category.name') ->icon(fn($record) => $record->sofascore_category->country->icon), TextColumn::make('name')->searchable()->sortable(), - // ToggleColumn::make('enabled')->label('Enable'), + ToggleColumn::make('enabled')->label('In Statistiko')->alignCenter(), // ToggleColumn::make('disabled')->label('Hidden'), ]) ->filters([ @@ -67,20 +69,15 @@ class SofaScoreTournamentsTable return SofaScoreCategory::query()->whereIn('id', $res)->orderBy('name')->pluck('name', 'id'); }) ->live(), - // ToggleButtons::make('filter-disabled') - // ->inline() - // ->columnSpan(2) - // ->default('active') - // ->options([ - // 'all' => 'All', - // 'enabled' => 'Enabled', - // 'hidden' => 'Hidden', - // ]), + Toggle::make('enabled')->label('In Statistiko'), ]) ->query(function (Builder $query, array $data): Builder { return $query->when( $data['sport_id'], fn(Builder $query, $sport_id) => $query->where('sport_id', $sport_id) + )->when( + $data['enabled'], + fn(Builder $query, $enabled) => $query->where('enabled', $enabled) )->when( $data['sofa_score_category_id'], function (Builder $query, $sofa_score_category_id) { diff --git a/example2.json b/example2.json index 6e98fbdb..2f6e877a 100644 --- a/example2.json +++ b/example2.json @@ -1,239 +1,241 @@ { - "eventState": [], - "tournament": { - "name": "Allsvenskan", - "slug": "allsvenskan", + "uniqueTournament": { + "name": "Premier League", + "slug": "premier-league", + "primaryColorHex": "#3c1c5a", + "secondaryColorHex": "#f80158", + "logo": { "md5": "a282e49dbb721f162ebfd662abc65480", "id": 1418035 }, + "darkLogo": { "md5": "b7fdad4b5b79f120b55c43e5ac961983", "id": 294210 }, "category": { - "name": "Sweden", - "slug": "sweden", + "name": "England", + "slug": "england", "sport": { "name": "Football", "slug": "football", "id": 1 }, - "priority": 0, - "country": { - "alpha2": "SE", - "alpha3": "SWE", - "name": "Sweden", - "slug": "sweden" - }, - "id": 9, - "flag": "sweden", - "alpha2": "SE", + "priority": 10, + "country": { "alpha2": "EN", "name": "England" }, + "id": 1, + "flag": "england", + "alpha2": "EN", "fieldTranslations": { "nameTranslation": { - "ar": "\u0627\u0644\u0633\u0648\u064a\u062f", - "ru": "\u0428\u0432\u0435\u0446\u0438\u044f" + "ar": "\u0625\u0646\u062c\u0644\u062a\u0631\u0627", + "hi": "\u0907\u0902\u0917\u094d\u0932\u0948\u0902\u0921", + "bn": "\u0987\u0982\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", + "ru": "\u0410\u043d\u0433\u043b\u0438\u044f" }, - "shortNameTranslation": [] + "shortNameTranslation": {} } }, - "uniqueTournament": { - "name": "Allsvenskan", - "slug": "allsvenskan", - "primaryColorHex": "#d38509", - "secondaryColorHex": "#212759", - "category": { - "name": "Sweden", - "slug": "sweden", - "sport": { "name": "Football", "slug": "football", "id": 1 }, - "priority": 0, - "country": { - "alpha2": "SE", - "alpha3": "SWE", - "name": "Sweden", - "slug": "sweden" + "userCount": 1260987, + "tier": 1, + "titleHolder": { + "name": "Arsenal", + "slug": "arsenal", + "shortName": "Arsenal", + "gender": "M", + "sport": { "name": "Football", "slug": "football", "id": 1 }, + "userCount": 3904315, + "nameCode": "ARS", + "disabled": false, + "national": false, + "type": 0, + "country": { "alpha2": "EN", "name": "England" }, + "id": 42, + "teamColors": { + "primary": "#cc0000", + "secondary": "#ffffff", + "text": "#ffffff" + }, + "fieldTranslations": { + "nameTranslation": { + "ar": "\u0627\u0631\u0633\u0646\u0627\u0644", + "bn": "\u0986\u09b0\u09cd\u09b8\u09c7\u09a8\u09be\u09b2", + "hi": "\u0906\u0930\u094d\u0938\u0947\u0928\u0932", + "ru": "\u0410\u0440\u0441\u0435\u043d\u0430\u043b" }, - "id": 9, - "flag": "sweden", - "alpha2": "SE", + "shortNameTranslation": {} + } + }, + "titleHolderTitles": 14, + "mostTitles": 20, + "linkedUniqueTournaments": [], + "hasRounds": true, + "hasGroups": false, + "hasPlayoffSeries": false, + "upperDivisions": [], + "lowerDivisions": [ + { + "name": "Championship", + "slug": "championship", + "primaryColorHex": "#20429a", + "secondaryColorHex": "#ac944a", + "logo": { + "md5": "25e2ced9104ace1fe1a929d12e56da19", + "id": 294000 + }, + "category": { + "name": "England", + "slug": "england", + "sport": { + "name": "Football", + "slug": "football", + "id": 1 + }, + "priority": 10, + "country": { "alpha2": "EN", "name": "England" }, + "id": 1, + "flag": "england", + "alpha2": "EN", + "fieldTranslations": { + "nameTranslation": { + "ar": "\u0625\u0646\u062c\u0644\u062a\u0631\u0627", + "hi": "\u0907\u0902\u0917\u094d\u0932\u0948\u0902\u0921", + "bn": "\u0987\u0982\u09b2\u09cd\u09af\u09be\u09a8\u09cd\u09a1", + "ru": "\u0410\u043d\u0433\u043b\u0438\u044f" + }, + "shortNameTranslation": {} + } + }, + "tier": 2, + "hasRounds": true, + "hasGroups": false, + "hasPlayoffSeries": false, + "hasPerformanceGraphFeature": true, + "periodLength": {}, + "gender": "M", + "excludeFromCareerStats": false, + "country": {}, + "id": 18, + "startDateTimestamp": 1786665600, + "endDateTimestamp": 1811548800, + "mostTitlesTeams": [ + { + "name": "Leicester City", + "slug": "leicester-city", + "shortName": "Leicester", + "gender": "M", + "sport": { + "name": "Football", + "slug": "football", + "id": 1 + }, + "userCount": 326673, + "nameCode": "LEI", + "disabled": false, + "national": false, + "type": 0, + "country": { "alpha2": "EN", "name": "England" }, + "id": 31, + "teamColors": { + "primary": "#003090", + "secondary": "#ffffff", + "text": "#ffffff" + }, + "fieldTranslations": { + "nameTranslation": { + "ar": "\u0644\u064a\u0633\u062a\u0631 \u0633\u064a\u062a\u064a", + "hi": "\u0932\u0948\u0938\u094d\u091f\u0930 \u0938\u093f\u091f\u0940 \u090d\u095e\u0938\u0940", + "ru": "\u041b\u0435\u0441\u0442\u0435\u0440 \u0421\u0438\u0442\u0438" + }, + "shortNameTranslation": { + "ar": "\u0644\u064a\u0633\u062a\u0631", + "bn": "\u09b2\u09c7\u09b8\u09cd\u099f\u09be\u09b0", + "hi": "\u0932\u0940\u0938\u0947\u0938\u094d\u091f\u0930" + } + } + } + ], + "disabledHomeAwayStandings": false, + "displayInverseHomeAwayTeams": false, "fieldTranslations": { "nameTranslation": { - "ar": "\u0627\u0644\u0633\u0648\u064a\u062f", - "ru": "\u0428\u0432\u0435\u0446\u0438\u044f" + "bn": "\u099a\u09cd\u09af\u09be\u09ae\u09cd\u09aa\u09bf\u09af\u09bc\u09a8\u09b6\u09bf\u09aa", + "hi": "\u091a\u0948\u0902\u092a\u093f\u092f\u0928\u0936\u093f\u092a", + "ar": "\u062f\u0648\u0631\u064a \u0627\u0644\u0628\u0637\u0648\u0644\u0629 \u0627\u0644\u0625\u0646\u062c\u0644\u064a\u0632\u064a\u0629", + "ru": "\u0427\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442" }, - "shortNameTranslation": [] + "shortNameTranslation": {} + } + } + ], + "hasPerformanceGraphFeature": true, + "periodLength": {}, + "gender": "M", + "excludeFromCareerStats": false, + "country": {}, + "id": 17, + "startDateTimestamp": 1787270400, + "endDateTimestamp": 1811635200, + "mostTitlesTeams": [ + { + "name": "Manchester United", + "slug": "manchester-united", + "shortName": "Man Utd", + "gender": "M", + "sport": { "name": "Football", "slug": "football", "id": 1 }, + "userCount": 3963614, + "nameCode": "MUN", + "disabled": false, + "national": false, + "type": 0, + "country": { "alpha2": "EN", "name": "England" }, + "id": 35, + "teamColors": { + "primary": "#ff0000", + "secondary": "#373737", + "text": "#373737" + }, + "fieldTranslations": { + "nameTranslation": { + "ar": "\u0645\u0627\u0646\u062a\u0634\u0633\u062a\u0631 \u064a\u0648\u0646\u0627\u064a\u062a\u062f", + "hi": "\u092e\u0947\u0928\u091a\u0947\u0938\u094d\u091f\u0930 \u092f\u0942\u0928\u093e\u0907\u091f\u0947\u0921 \u090d\u095e\u0938\u0940", + "ru": "\u041c\u0430\u043d\u0447\u0435\u0441\u0442\u0435\u0440 \u042e\u043d\u0430\u0439\u0442\u0435\u0434" + }, + "shortNameTranslation": { + "ar": "\u0645\u0627\u0646 \u064a\u0648\u0646\u0627\u064a\u062a\u062f", + "bn": "\u09ae\u09cd\u09af\u09be\u09a8 \u0987\u0989\u09a8\u09be\u0987\u099f\u09c7\u09a1", + "hi": "\u092e\u0948\u0928 \u092f\u0942\u0928\u093e\u0907\u091f\u0947\u0921" + } } }, - "userCount": 29399, - "hasPerformanceGraphFeature": true, - "country": [], - "id": 40, - "hasEventPlayerStatistics": true, - "displayInverseHomeAwayTeams": false, - "fieldTranslations": { - "nameTranslation": { - "ar": "\u0627\u0644\u062f\u0648\u0631\u064a \u0627\u0644\u0633\u0648\u064a\u062f\u064a \u0627\u0644\u0645\u0645\u062a\u0627\u0632", - "bn": "\u0985\u09b2\u09b8\u09ad\u09c7\u09a8\u09b8\u09cd\u0995\u09be\u09a8", - "hi": "\u0911\u0932\u0938\u094d\u0935\u0947\u0928\u094d\u0938\u094d\u0915\u0928", - "ru": "\u0410\u043b\u043b\u0441\u0432\u0435\u043d\u0441\u043a\u0430\u043d" + { + "name": "Liverpool FC", + "slug": "liverpool", + "shortName": "Liverpool", + "gender": "M", + "sport": { "name": "Football", "slug": "football", "id": 1 }, + "userCount": 4075904, + "nameCode": "LIV", + "disabled": false, + "national": false, + "type": 0, + "country": { "alpha2": "EN", "name": "England" }, + "id": 44, + "teamColors": { + "primary": "#cc0000", + "secondary": "#ffffff", + "text": "#ffffff" }, - "shortNameTranslation": [] + "fieldTranslations": { + "nameTranslation": { + "ar": "\u0644\u064a\u0641\u0631\u0628\u0648\u0644", + "bn": "\u09b2\u09bf\u09ad\u09be\u09b0\u09aa\u09c1\u09b2", + "hi": "\u0932\u093f\u0935\u0930\u092a\u0942\u0932", + "ru": "\u041b\u0438\u0432\u0435\u0440\u043f\u0443\u043b\u044c" + }, + "shortNameTranslation": {} + } } - }, - "priority": 192, - "isGroup": false, - "isLive": false, - "id": 24, + ], + "disabledHomeAwayStandings": false, + "displayInverseHomeAwayTeams": false, "fieldTranslations": { "nameTranslation": { - "ar": "\u0627\u0644\u062f\u0648\u0631\u064a \u0627\u0644\u0633\u0648\u064a\u062f\u064a \u0627\u0644\u0645\u0645\u062a\u0627\u0632", - "bn": "\u0985\u09b2\u09b8\u09ad\u09c7\u09a8\u09b8\u09cd\u0995\u09be\u09a8", - "hi": "\u0911\u0932\u0938\u094d\u0935\u0947\u0928\u094d\u0938\u094d\u0915\u0928", - "ru": "\u0410\u043b\u043b\u0441\u0432\u0435\u043d\u0441\u043a\u0430\u043d" + "ar": "\u0627\u0644\u062f\u0648\u0631\u064a \u0627\u0644\u0625\u0646\u062c\u0644\u064a\u0632\u064a \u0627\u0644\u0645\u0645\u062a\u0627\u0632", + "hi": "\u092a\u094d\u0930\u093f\u092e\u093f\u092f\u0930 \u0932\u0940\u0917", + "bn": "\u09aa\u09cd\u09b0\u09bf\u09ae\u09bf\u09df\u09be\u09b0 \u09b2\u09c0\u0997", + "ru": "\u041f\u0440\u0435\u043c\u044c\u0435\u0440-\u043b\u0438\u0433\u0430" }, - "shortNameTranslation": [] + "shortNameTranslation": {} } - }, - "season": { - "name": "Allsvenskan 2026", - "year": "2026", - "editor": false, - "id": 87925 - }, - "roundInfo": { "round": 12 }, - "customId": "jKsrK", - "status": { "code": 100, "description": "Ended", "type": "finished" }, - "winnerCode": 1, - "venue": { - "city": { - "name": "Stockholm", - "country": { - "alpha2": "SE", - "alpha3": "SWE", - "name": "Sweden", - "slug": "sweden" - }, - "id": 19506 - }, - "venueCoordinates": { "latitude": 59.291033, "longitude": 18.084543 }, - "hidden": true, - "slug": "tele2-arena", - "name": "3Arena", - "capacity": 32000, - "country": { - "alpha2": "SE", - "alpha3": "SWE", - "name": "Sweden", - "slug": "sweden" - }, - "id": 12373, - "fieldTranslations": { - "nameTranslation": { - "ar": "\u0645\u0644\u0639\u0628 \u062a\u064a\u0644\u064a 2", - "hi": "\u091f\u0947\u0932\u09402 \u090f\u0930\u093f\u0928\u093e", - "bn": "\u099f\u09bf\u0987\u098f\u09b2\u09872 \u098f\u09b0\u09bf\u09a8\u09be", - "ru": "\u0410\u0440\u0435\u043d\u0430 3" - }, - "shortNameTranslation": [] - }, - "stadium": { "name": "3Arena", "capacity": 32000 } - }, - "homeTeam": { - "name": "Djurg\u00e5rdens IF", - "slug": "djurgardens-if", - "shortName": "Djurg\u00e5rden", - "gender": "M", - "sport": { "name": "Football", "slug": "football", "id": 1 }, - "userCount": 42579, - "nameCode": "DIF", - "disabled": false, - "national": false, - "type": 0, - "country": { - "alpha2": "SE", - "alpha3": "SWE", - "name": "Sweden", - "slug": "sweden" - }, - "id": 1759, - "subTeams": [], - "teamColors": { - "primary": "#33ccff", - "secondary": "#000099", - "text": "#000099" - }, - "fieldTranslations": { - "nameTranslation": { - "ar": "\u062f\u064a\u0648\u0631\u063a\u0627\u0631\u062f\u0646\u0633 \u0625\u0641", - "ru": "\u0424\u041a \u042e\u0440\u0433\u043e\u0440\u0434\u0435\u043d" - }, - "shortNameTranslation": { - "ar": "\u062f\u064a\u0648\u0631\u063a\u0627\u0631\u062f\u0646", - "bn": "\u099c\u09c1\u09b0\u09cd\u0997\u09be\u09b0\u09cd\u09a1\u09c7\u09a8\u09b8", - "hi": "\u091c\u0941\u0930\u094d\u0917\u093e\u0930\u094d\u0921\u0947\u0928" - } - } - }, - "awayTeam": { - "name": "Halmstads BK", - "slug": "halmstads-bk", - "shortName": "Halmstad", - "gender": "M", - "sport": { "name": "Football", "slug": "football", "id": 1 }, - "userCount": 10732, - "nameCode": "HBK", - "disabled": false, - "national": false, - "type": 0, - "country": { - "alpha2": "SE", - "alpha3": "SWE", - "name": "Sweden", - "slug": "sweden" - }, - "id": 1767, - "subTeams": [], - "teamColors": { - "primary": "#0066ff", - "secondary": "#0066ff", - "text": "#0066ff" - }, - "fieldTranslations": { - "nameTranslation": { - "ar": "\u0647\u0627\u0644\u0645\u0633\u062a\u0627\u062f\u0632 \u0628\u064a \u0643\u064a\u0647", - "ru": "\u0424\u041a \u0425\u0430\u043b\u044c\u043c\u0441\u0442\u0430\u0434" - }, - "shortNameTranslation": [] - } - }, - "homeScore": { - "current": 3, - "display": 3, - "period1": 2, - "period2": 1, - "normaltime": 3 - }, - "awayScore": { - "current": 0, - "display": 0, - "period1": 0, - "period2": 0, - "normaltime": 0 - }, - "time": { - "injuryTime1": 3, - "injuryTime2": 3, - "currentPeriodStartTimestamp": 1783965872, - "lastPeriodEndTimestamp": 1783964942 - }, - "changes": { - "changes": ["status.code", "status.description", "status.type"], - "changeTimestamp": 1783968772 - }, - "hasGlobalHighlights": true, - "hasEventPlayerStatistics": true, - "hasEventPlayerHeatMap": true, - "detailId": 1, - "crowdsourcingDataDisplayEnabled": false, - "correctAiInsight": true, - "correctHalftimeAiInsight": true, - "id": 15272449, - "slug": "halmstads-bk-djurgardens-if", - "startTimestamp": 1783962000, - "finalResultOnly": false, - "feedLocked": true, - "isEditor": false, - "eventFilters": { - "category": ["club"], - "level": ["top-competitions", "pro"], - "gender": ["M"] } } diff --git a/storage/position_map.txt b/storage/position_map.txt new file mode 100644 index 00000000..ffe6decf --- /dev/null +++ b/storage/position_map.txt @@ -0,0 +1,13 @@ +SS_DETAILEDPOSITION TM_DETAILEDPOSITION +AM Attacking Midfield +DC Centre-Back +DL Left-Back +DM Defensive Midfield +DR Right-Back +GK Goalkeeper +LW Left Winger +MC Central Midfield +ML Left Midfield +MR Right Midfield +RW Right Winger +ST Centre-Forward \ No newline at end of file