diff --git a/app/Console/Commands/Grapper/Sofascore.php b/app/Console/Commands/Grapper/Sofascore.php index 8eadcf4a..e7bcc7d5 100644 --- a/app/Console/Commands/Grapper/Sofascore.php +++ b/app/Console/Commands/Grapper/Sofascore.php @@ -2,6 +2,7 @@ namespace App\Console\Commands\Grapper; +use App\Console\Commands\Grapper\Sofascore\Events; use App\Console\Commands\Grapper\Sofascore\Tournament; use App\Console\Commands\Nuh; use App\Models\SofaScoreCategorie; @@ -31,13 +32,16 @@ class Sofascore } if ($debug) { - Notice::note(Nuh::$options['sport'].' '.Nuh::$options['name'], 'b'); + Notice::note(Nuh::$options['sport'] . ' ' . Nuh::$options['name'], 'b'); } switch (Nuh::$options['name']) { case 'TOURNAMENTS': Tournament::load(); break; + case 'EVENTS': + Events::load(); + break; default: // code... diff --git a/app/Console/Commands/Grapper/Sofascore/Events.php b/app/Console/Commands/Grapper/Sofascore/Events.php index bd980571..d21c2bfa 100644 --- a/app/Console/Commands/Grapper/Sofascore/Events.php +++ b/app/Console/Commands/Grapper/Sofascore/Events.php @@ -20,13 +20,18 @@ class Events public static $sport = [1]; - public static function switch() + public static function load() { $debug = Nuh::$options['d'] ?? 0; - $sportmap = Sport::whereIn('id', self::$sport)->select('id', 'sofascore', 'ss_slug')->get(); + $sport_id = Nuh::$options['sport_id']; - $time_zone_offset = 0; + $sport = Sport::where('id', $sport_id)->first(); + + $dates = Carbon::now(); + + // to grap event id + // https://www.sofascore.com/api/v1/unique-tournament/2480/scheduled-events/2022-05-19 $years_back = 7; @@ -46,7 +51,7 @@ class Events $page = 1; while ($page) { - $url = Nuh::$options['base_url']."api/v1/sport/$sport->ss_slug/scheduled-tournaments/$day/page/$page"; + $url = Nuh::$options['base_url'] . "api/v1/sport/$sport->ss_slug/scheduled-tournaments/$day/page/$page"; $data = Curl::load($url); diff --git a/app/Console/Commands/Grapper/Sofascore/Tournament.php b/app/Console/Commands/Grapper/Sofascore/Tournament.php index 519fb34c..ceb76034 100644 --- a/app/Console/Commands/Grapper/Sofascore/Tournament.php +++ b/app/Console/Commands/Grapper/Sofascore/Tournament.php @@ -16,12 +16,6 @@ use Illuminate\Support\Facades\Log; class Tournament { - public static $auth_header = []; - - public static $base_url = ''; - - public static $sport = [1]; - public static function load() { $debug = Nuh::$options['d'] ?? 0; @@ -44,13 +38,13 @@ class Tournament if (! SofaScoreDay::where('day', $day)->where($sport->ss_slug, 1)->first()) { if ($debug) { - Notice::note('Grapping Sport: '.Nuh::$options['sport'].' Day: '.$day, 'g'); + Notice::note('Grapping Sport: ' . Nuh::$options['sport'] . ' Day: ' . $day, 'g'); } $page = 1; while ($page) { - $url = Nuh::$options['base_url']."api/v1/sport/$sport->ss_slug/scheduled-tournaments/$day/page/$page"; + $url = Nuh::$options['base_url'] . "api/v1/sport/$sport->ss_slug/scheduled-tournaments/$day/page/$page"; $rand = rand(500000, 1000000); if ($debug) { @@ -164,7 +158,6 @@ class Tournament Notice::note("tournaments: $tournaments_counter", 'p'); SofaScoreDay::updateOrCreate(['day' => $day], [$sport->ss_slug => 1]); - } if (Nuh::$options['test']) { @@ -172,7 +165,7 @@ class Tournament } } else { if ($debug) { - Notice::note('Having Sport: '.Nuh::$options['sport'].' Day: '.$day, 'b'); + Notice::note('Having Sport: ' . Nuh::$options['sport'] . ' Day: ' . $day, 'b'); } } $dates->subDay(); diff --git a/app/Filament/Clusters/StaticData/Resources/SofaScoreDays/Tables/SofaScoreDaysTable.php b/app/Filament/Clusters/StaticData/Resources/SofaScoreDays/Tables/SofaScoreDaysTable.php index 1dccbeb5..aab4b26c 100644 --- a/app/Filament/Clusters/StaticData/Resources/SofaScoreDays/Tables/SofaScoreDaysTable.php +++ b/app/Filament/Clusters/StaticData/Resources/SofaScoreDays/Tables/SofaScoreDaysTable.php @@ -6,6 +6,7 @@ use Filament\Actions\BulkActionGroup; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Forms\Components\DatePicker; +use Filament\Forms\Components\Select; use Filament\Tables\Columns\CheckboxColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Enums\FiltersLayout; @@ -28,20 +29,53 @@ class SofaScoreDaysTable ]) ->filters([ Filter::make('day') - ->columns(2)->columnSpan(2) + ->columns(3)->columnSpan(3) ->schema([ DatePicker::make('from')->native(), DatePicker::make('until')->native(), + Select::make('sports-grapper') + ->options([ + '1' => 'Soccer Grapped', + '2' => 'Soccer Not Grapped', + '3' => 'Basketball Grapped', + '4' => 'Basketball Not Grapped', + '5' => 'Ice-Hockey Grapped', + '6' => 'Ice-Hockey Not Grapped', + '7' => 'Tennis Grapped', + '8' => 'Tennis Not Grapped', + ]), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when( $data['from'], - fn (Builder $query, $date): Builder => $query->whereDate('day', '>=', $date), + fn(Builder $query, $date): Builder => $query->whereDate('day', '>=', $date), ) ->when( $data['until'], - fn (Builder $query, $date): Builder => $query->whereDate('day', '<=', $date), + fn(Builder $query, $date): Builder => $query->whereDate('day', '<=', $date), + )->when( + $data['sports-grapper'], + function (Builder $query, $sports_grapper) { + switch ($sports_grapper) { + case 1: + return $query->where('football', 1); + case 2: + return $query->where('football', 0); + case 3: + return $query->where('basketball', 1); + case 4: + return $query->where('basketball', 0); + case 5: + return $query->where('ice-hockey', 1); + case 6: + return $query->where('ice-hockey', 0); + case 7: + return $query->where('tennis', 1); + case 8: + return $query->where('tennis', 0); + } + } ); }), ], layout: FiltersLayout::AboveContent) diff --git a/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php b/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php index eb4146a5..76a32542 100644 --- a/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php +++ b/app/Filament/Clusters/StaticData/Resources/SofaScoreTournaments/Tables/SofaScoreTournamentsTable.php @@ -3,18 +3,19 @@ namespace App\Filament\Clusters\StaticData\Resources\SofaScoreTournaments\Tables; use App\Models\SofaScoreCategorie; +use App\Models\SofaScoreDayTournament; use App\Models\SofaScoreTournament; use App\Models\Sport; use Filament\Actions\BulkAction; use Filament\Actions\BulkActionGroup; -use Filament\Actions\DeleteBulkAction; -use Filament\Actions\EditAction; +use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Select; use Filament\Schemas\Components\Utilities\Get; use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\CheckboxColumn; 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\Filters\TernaryFilter; @@ -27,25 +28,28 @@ class SofaScoreTournamentsTable public static function configure(Table $table): Table { return $table + ->poll() ->columns([ IconColumn::make('sport.icon') ->label('') ->grow(false) ->width(30) - ->color(fn ($record) => $record->sport->color) - ->icon(fn ($record) => $record->sport->icon) + ->color(fn($record) => $record->sport->color) + ->icon(fn($record) => $record->sport->icon) ->size(IconSize::Medium) - ->tooltip(fn ($record) => $record->id) + ->tooltip(fn($record) => $record->id) ->visibleFrom('lg'), + TextColumn::make('tournament_id'), TextColumn::make('sport.name'), TextColumn::make('sofascore_category.name') - ->icon(fn ($record) => $record->sofascore_category->country->icon), + ->icon(fn($record) => $record->sofascore_category->country->icon), TextColumn::make('name')->searchable()->sortable(), - CheckboxColumn::make('grap'), + ToggleColumn::make('grap')->tooltip('When active liga will be grapped'), + ToggleColumn::make('grapped')->onColor('success')->tooltip('When active liga has been grapped, to grap again disactivate'), ]) ->filters([ Filter::make('filters') - ->columns(2)->columnSpan(2) + ->columns(3)->columnSpan(3) ->schema([ Select::make('sport_id') ->default(1) @@ -69,22 +73,14 @@ class SofaScoreTournamentsTable return SofaScoreCategorie::query()->whereIn('id', $res)->orderBy('name')->pluck('name', 'id'); }) ->live(), - // Select::make('competition_group_id') - // ->searchable() - // ->label('Competition Group') - // ->options(function (Get $get) { - // if ($get('country_id')) { - // return CompetitionGroup::where('country_id', $get('country_id'))->orderBy('name')->pluck('name', 'id'); - // } else { - // return CompetitionGroup::orderBy('name')->pluck('name', 'id'); - // } - // }), + DatePicker::make('day')->live(), ]) ->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['sofa_score_categorie_id'], + fn(Builder $query, $sport_id) => $query->where('sport_id', $sport_id) + )->when( + $data['sofa_score_categorie_id'], function (Builder $query, $sofa_score_categorie_id) { if (is_array($sofa_score_categorie_id)) { $query->whereIn('sofa_score_categorie_id', $sofa_score_categorie_id); @@ -92,17 +88,19 @@ class SofaScoreTournamentsTable $query->where('sofa_score_categorie_id', $sofa_score_categorie_id); } } + )->when( + $data['day'], + function (Builder $query, $day) { + $res = SofaScoreDayTournament::where('day', $day)->pluck('tournament_id')->toArray(); + $query->whereIn('tournament_id', $res); + } ); }), TernaryFilter::make('grap')->placeholder('All')->label('Grapping'), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) - ->recordActions([ - // EditAction::make(), - ]) ->toolbarActions([ BulkActionGroup::make([ - // DeleteBulkAction::make(), BulkAction::make('Grap On') ->icon('phosphor-play') ->action(function (Collection $records): void { diff --git a/app/Livewire/Mapper/StoreMapped.php b/app/Livewire/Mapper/StoreMapped.php index 4081a19e..59a0d256 100644 --- a/app/Livewire/Mapper/StoreMapped.php +++ b/app/Livewire/Mapper/StoreMapped.php @@ -18,7 +18,7 @@ class StoreMapped $mapper = Mapper::where('event_id', $arguments['event_id'])->first(); - dd($mapper, $arguments, $swopped); + // dd($mapper, $arguments, $swopped); /* EVENT diff --git a/app/Models/SofaScoreTournament.php b/app/Models/SofaScoreTournament.php index f8ac6ec2..0ead204d 100644 --- a/app/Models/SofaScoreTournament.php +++ b/app/Models/SofaScoreTournament.php @@ -14,6 +14,7 @@ class SofaScoreTournament extends Model 'name', 'slug', 'grap', + 'grapped', ]; public function sport() diff --git a/database/migrations/2026_06_06_134913_create_sofa_score_tournaments_table.php b/database/migrations/2026_06_06_134913_create_sofa_score_tournaments_table.php index 0e8ea359..9ba5b3c4 100644 --- a/database/migrations/2026_06_06_134913_create_sofa_score_tournaments_table.php +++ b/database/migrations/2026_06_06_134913_create_sofa_score_tournaments_table.php @@ -19,6 +19,7 @@ return new class extends Migration $table->string('slug')->index(); $table->string('name'); $table->boolean('grap')->index()->default(0); + $table->boolean('grapped')->index()->default(0); $table->timestamps(); }); } diff --git a/example2.json b/example2.json index 69d4b13a..aaa25945 100644 --- a/example2.json +++ b/example2.json @@ -4,248 +4,299 @@ "period": "ALL", "groups": [ { - "groupName": "Match overview", + "groupName": "Service", "statisticsItems": [ { - "name": "Ball possession", - "home": "49%", - "away": "51%", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 49, - "awayValue": 51, - "renderType": 2, - "key": "ballPossession" - }, - { - "name": "Expected goals", - "home": "1.94", - "away": "0.88", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1.94, - "awayValue": 0.88, - "renderType": 1, - "key": "expectedGoals" - }, - { - "name": "Big chances", - "home": "3", - "away": "1", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 3, - "awayValue": 1, - "renderType": 1, - "key": "bigChanceCreated" - }, - { - "name": "Total shots", - "home": "22", - "away": "11", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 22, - "awayValue": 11, - "renderType": 1, - "key": "totalShotsOnGoal" - }, - { - "name": "Goalkeeper saves", - "home": "2", - "away": "5", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 2, - "awayValue": 5, - "renderType": 1, - "key": "goalkeeperSaves" - }, - { - "name": "Corner kicks", - "home": "7", - "away": "4", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 7, - "awayValue": 4, - "renderType": 1, - "key": "cornerKicks" - }, - { - "name": "Fouls", - "home": "13", - "away": "12", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 13, - "awayValue": 12, - "renderType": 1, - "key": "fouls" - }, - { - "name": "Passes", - "home": "428", - "away": "469", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 428, - "awayValue": 469, - "renderType": 1, - "key": "passes" - }, - { - "name": "Tackles", - "home": "16", - "away": "10", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 16, - "awayValue": 10, - "renderType": 1, - "key": "totalTackle" - }, - { - "name": "Free kicks", - "home": "12", - "away": "13", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 12, - "awayValue": 13, - "renderType": 1, - "key": "freeKicks" - }, - { - "name": "Yellow cards", - "home": "2", - "away": "1", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 2, - "awayValue": 1, - "renderType": 1, - "key": "yellowCards" - } - ] - }, - { - "groupName": "Shots", - "statisticsItems": [ - { - "name": "Total shots", - "home": "22", - "away": "11", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 22, - "awayValue": 11, - "renderType": 1, - "key": "totalShotsOnGoal" - }, - { - "name": "Shots on target", - "home": "5", - "away": "1", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 5, - "awayValue": 1, - "renderType": 1, - "key": "shotsOnGoal" - }, - { - "name": "Hit woodwork", + "name": "Aces", "home": "0", "away": "1", "compareCode": 2, - "statisticsType": "negative", + "statisticsType": "positive", "valueType": "event", "homeValue": 0, "awayValue": 1, "renderType": 1, - "key": "hitWoodwork" + "key": "aces" }, { - "name": "Shots off target", - "home": "12", - "away": "5", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 12, - "awayValue": 5, - "renderType": 1, - "key": "shotsOffGoal" - }, - { - "name": "Blocked shots", - "home": "5", - "away": "5", + "name": "Double faults", + "home": "2", + "away": "2", "compareCode": 3, "statisticsType": "negative", "valueType": "event", + "homeValue": 2, + "awayValue": 2, + "renderType": 1, + "key": "doubleFaults" + }, + { + "name": "First serve", + "home": "37\/54 (69%)", + "away": "38\/49 (78%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 37, + "awayValue": 38, + "homeTotal": 54, + "awayTotal": 49, + "renderType": 1, + "key": "firstServeAccuracy" + }, + { + "name": "Second serve", + "home": "15\/17 (88%)", + "away": "9\/11 (82%)", + "compareCode": 1, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 15, + "awayValue": 9, + "homeTotal": 17, + "awayTotal": 11, + "renderType": 1, + "key": "secondServeAccuracy" + }, + { + "name": "First serve points", + "home": "17\/37 (46%)", + "away": "22\/38 (58%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 17, + "awayValue": 22, + "homeTotal": 37, + "awayTotal": 38, + "renderType": 1, + "key": "firstServePointsAccuracy" + }, + { + "name": "Second serve points", + "home": "3\/17 (18%)", + "away": "6\/11 (55%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 3, + "awayValue": 6, + "homeTotal": 17, + "awayTotal": 11, + "renderType": 1, + "key": "secondServePointsAccuracy" + }, + { + "name": "Service games played", + "home": "9", + "away": "8", + "compareCode": 1, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 9, + "awayValue": 8, + "renderType": 1, + "key": "serviceGamesTotal" + }, + { + "name": "Break points saved", + "home": "5\/12 (41%)", + "away": "5\/8 (62%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", "homeValue": 5, "awayValue": 5, + "homeTotal": 12, + "awayTotal": 8, "renderType": 1, - "key": "blockedScoringAttempt" - }, - { - "name": "Shots inside box", - "home": "12", - "away": "6", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 12, - "awayValue": 6, - "renderType": 1, - "key": "totalShotsInsideBox" - }, - { - "name": "Shots outside box", - "home": "10", - "away": "5", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 10, - "awayValue": 5, - "renderType": 1, - "key": "totalShotsOutsideBox" + "key": "breakPointsSaved" } ] }, { - "groupName": "Attack", + "groupName": "Points", "statisticsItems": [ { - "name": "Big chances missed", - "home": "3", - "away": "1", - "compareCode": 1, - "statisticsType": "negative", + "name": "Total", + "home": "41", + "away": "62", + "compareCode": 2, + "statisticsType": "positive", "valueType": "event", - "homeValue": 3, - "awayValue": 1, + "homeValue": 41, + "awayValue": 62, "renderType": 1, - "key": "bigChanceMissed" + "key": "pointsTotal" }, { - "name": "Through balls", + "name": "Service points won", + "home": "20", + "away": "28", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 20, + "awayValue": 28, + "renderType": 1, + "key": "servicePointsScored" + }, + { + "name": "Receiver points won", + "home": "21", + "away": "34", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 21, + "awayValue": 34, + "renderType": 1, + "key": "receiverPointsScored" + }, + { + "name": "Max points in a row", + "home": "6", + "away": "10", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 6, + "awayValue": 10, + "renderType": 1, + "key": "maxPointsInRow" + } + ] + }, + { + "groupName": "Games", + "statisticsItems": [ + { + "name": "Total won", + "home": "5", + "away": "12", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 5, + "awayValue": 12, + "renderType": 1, + "key": "gamesWon" + }, + { + "name": "Service games won", + "home": "2", + "away": "5", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 2, + "awayValue": 5, + "renderType": 1, + "key": "serviceGamesWon" + }, + { + "name": "Max games in a row", + "home": "2", + "away": "9", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 2, + "awayValue": 9, + "renderType": 1, + "key": "maxGamesInRow" + } + ] + }, + { + "groupName": "Winners", + "statisticsItems": [ + { + "name": "Total", + "home": "10", + "away": "25", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 10, + "awayValue": 25, + "renderType": 1, + "key": "winnersTotal" + }, + { + "name": "Forehand", + "home": "8", + "away": "11", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 8, + "awayValue": 11, + "renderType": 1, + "key": "forehandWinners" + }, + { + "name": "Backhand", + "home": "2", + "away": "13", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 2, + "awayValue": 13, + "renderType": 1, + "key": "backhandWinners" + }, + { + "name": "Volley", + "home": "2", + "away": "2", + "compareCode": 3, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 2, + "awayValue": 2, + "renderType": 1, + "key": "volleyWinners" + }, + { + "name": "Groundstroke", + "home": "8", + "away": "22", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 8, + "awayValue": 22, + "renderType": 1, + "key": "groundstrokeWinners" + }, + { + "name": "Lob", + "home": "0", + "away": "0", + "compareCode": 3, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 0, + "awayValue": 0, + "renderType": 1, + "key": "lobWinners" + }, + { + "name": "Overhead", + "home": "0", + "away": "0", + "compareCode": 3, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 0, + "awayValue": 0, + "renderType": 1, + "key": "overheadWinners" + }, + { + "name": "Drop shot", "home": "1", "away": "0", "compareCode": 1, @@ -254,231 +305,233 @@ "homeValue": 1, "awayValue": 0, "renderType": 1, - "key": "accurateThroughBall" + "key": "dropShotWinners" }, { - "name": "Touches in penalty area", - "home": "42", - "away": "14", - "compareCode": 1, + "name": "Return", + "home": "0", + "away": "0", + "compareCode": 3, "statisticsType": "positive", "valueType": "event", - "homeValue": 42, - "awayValue": 14, + "homeValue": 0, + "awayValue": 0, "renderType": 1, - "key": "touchesInOppBox" + "key": "returnWinners" + } + ] + }, + { + "groupName": "Errors", + "statisticsItems": [ + { + "name": "Total", + "home": "8", + "away": "5", + "compareCode": 1, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 8, + "awayValue": 5, + "renderType": 1, + "key": "errorsTotal" }, { - "name": "Fouled in final third", - "home": "2", + "name": "Forehand", + "home": "5", "away": "3", - "compareCode": 2, - "statisticsType": "positive", + "compareCode": 1, + "statisticsType": "negative", "valueType": "event", - "homeValue": 2, + "homeValue": 5, "awayValue": 3, "renderType": 1, - "key": "fouledFinalThird" + "key": "forehandErrors" }, { - "name": "Offsides", - "home": "1", - "away": "1", + "name": "Backhand", + "home": "3", + "away": "2", + "compareCode": 1, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 3, + "awayValue": 2, + "renderType": 1, + "key": "backhandErrors" + }, + { + "name": "Groundstroke", + "home": "8", + "away": "5", + "compareCode": 1, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 8, + "awayValue": 5, + "renderType": 1, + "key": "groundstrokeErrors" + }, + { + "name": "Overhead stroke", + "home": "0", + "away": "0", "compareCode": 3, "statisticsType": "negative", "valueType": "event", - "homeValue": 1, - "awayValue": 1, + "homeValue": 0, + "awayValue": 0, "renderType": 1, - "key": "offsides" + "key": "overheadStrokeErrors" + }, + { + "name": "Return", + "home": "0", + "away": "0", + "compareCode": 3, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 0, + "awayValue": 0, + "renderType": 1, + "key": "returnErrors" } ] }, { - "groupName": "Passes", + "groupName": "Unforced errors", "statisticsItems": [ { - "name": "Accurate passes", - "home": "374", - "away": "408", - "compareCode": 2, - "statisticsType": "positive", + "name": "Total", + "home": "29", + "away": "26", + "compareCode": 1, + "statisticsType": "negative", "valueType": "event", - "homeValue": 374, - "awayValue": 408, + "homeValue": 29, + "awayValue": 26, "renderType": 1, - "key": "accuratePasses" + "key": "unforcedErrorsTotal" }, { - "name": "Throw-ins", - "home": "13", - "away": "11", + "name": "Forehand", + "home": "17", + "away": "12", "compareCode": 1, - "statisticsType": "positive", + "statisticsType": "negative", "valueType": "event", - "homeValue": 13, - "awayValue": 11, + "homeValue": 17, + "awayValue": 12, "renderType": 1, - "key": "throwIns" + "key": "forehandUnforcedErrors" }, { - "name": "Final third entries", - "home": "48", - "away": "46", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 48, - "awayValue": 46, - "renderType": 1, - "key": "finalThirdEntries" - }, - { - "name": "Final third phase", - "home": "114/142 (80%)", - "away": "82/120 (68%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 114, - "awayValue": 82, - "homeTotal": 142, - "awayTotal": 120, - "renderType": 3, - "key": "finalThirdPhaseStatistic" - }, - { - "name": "Long balls", - "home": "20/36 (56%)", - "away": "17/39 (44%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 20, - "awayValue": 17, - "homeTotal": 36, - "awayTotal": 39, - "renderType": 3, - "key": "accurateLongBalls" - }, - { - "name": "Crosses", - "home": "7/26 (27%)", - "away": "4/8 (50%)", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 7, - "awayValue": 4, - "homeTotal": 26, - "awayTotal": 8, - "renderType": 3, - "key": "accurateCross" - } - ] - }, - { - "groupName": "Duels", - "statisticsItems": [ - { - "name": "Duels", - "home": "58%", - "away": "42%", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 58, - "awayValue": 42, - "renderType": 2, - "key": "duelWonPercent" - }, - { - "name": "Dispossessed", - "home": "2", - "away": "9", + "name": "Backhand", + "home": "10", + "away": "12", "compareCode": 2, "statisticsType": "negative", "valueType": "event", - "homeValue": 2, - "awayValue": 9, - "renderType": 1, - "key": "dispossessed" - }, - { - "name": "Ground duels", - "home": "38/59 (64%)", - "away": "21/59 (36%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 38, - "awayValue": 21, - "homeTotal": 59, - "awayTotal": 59, - "renderType": 3, - "key": "groundDuelsPercentage" - }, - { - "name": "Aerial duels", - "home": "7/18 (39%)", - "away": "11/18 (61%)", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 7, - "awayValue": 11, - "homeTotal": 18, - "awayTotal": 18, - "renderType": 3, - "key": "aerialDuelsPercentage" - }, - { - "name": "Dribbles", - "home": "10/18 (56%)", - "away": "1/7 (14%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", "homeValue": 10, - "awayValue": 1, - "homeTotal": 18, - "awayTotal": 7, - "renderType": 3, - "key": "dribblesPercentage" + "awayValue": 12, + "renderType": 1, + "key": "backhandUnforcedErrors" + }, + { + "name": "Volley", + "home": "1", + "away": "0", + "compareCode": 1, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 1, + "awayValue": 0, + "renderType": 1, + "key": "volleyUnforcedErrors" + }, + { + "name": "Groundstroke", + "home": "26", + "away": "24", + "compareCode": 1, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 26, + "awayValue": 24, + "renderType": 1, + "key": "groundstrokeUnforcedErrors" + }, + { + "name": "Lob", + "home": "0", + "away": "0", + "compareCode": 3, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 0, + "awayValue": 0, + "renderType": 1, + "key": "lobUnforcedErrors" + }, + { + "name": "Drop shot", + "home": "1", + "away": "0", + "compareCode": 1, + "statisticsType": "negative", + "valueType": "event", + "homeValue": 1, + "awayValue": 0, + "renderType": 1, + "key": "dropShotUnforcedErrors" } ] }, { - "groupName": "Defending", + "groupName": "Return", "statisticsItems": [ { - "name": "Tackles won", - "home": "69%", - "away": "60%", - "compareCode": 1, + "name": "First serve return points", + "home": "16\/38 (42%)", + "away": "20\/37 (54%)", + "compareCode": 2, "statisticsType": "positive", "valueType": "team", - "homeValue": 11, - "awayValue": 6, - "homeTotal": 16, - "awayTotal": 10, - "renderType": 4, - "key": "wonTacklePercent" + "homeValue": 16, + "awayValue": 20, + "homeTotal": 38, + "awayTotal": 37, + "renderType": 1, + "key": "firstReturnPoints" }, { - "name": "Total tackles", - "home": "16", - "away": "10", - "compareCode": 1, + "name": "Second serve return points", + "home": "5\/11 (45%)", + "away": "14\/17 (82%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 5, + "awayValue": 14, + "homeTotal": 11, + "awayTotal": 17, + "renderType": 1, + "key": "secondReturnPoints" + }, + { + "name": "Return games played", + "home": "8", + "away": "9", + "compareCode": 2, "statisticsType": "positive", "valueType": "event", - "homeValue": 16, - "awayValue": 10, + "homeValue": 8, + "awayValue": 9, "renderType": 1, - "key": "totalTackle" + "key": "serviceGamesTotal" }, { - "name": "Interceptions", + "name": "Break points converted", "home": "3", "away": "7", "compareCode": 2, @@ -487,108 +540,24 @@ "homeValue": 3, "awayValue": 7, "renderType": 1, - "key": "interceptionWon" - }, - { - "name": "Recoveries", - "home": "36", - "away": "41", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 36, - "awayValue": 41, - "renderType": 1, - "key": "ballRecovery" - }, - { - "name": "Clearances", - "home": "14", - "away": "26", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 14, - "awayValue": 26, - "renderType": 1, - "key": "totalClearance" - }, - { - "name": "Errors lead to a shot", - "home": "1", - "away": "0", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 1, - "awayValue": 0, - "renderType": 1, - "key": "errorsLeadToShot" + "key": "breakPointsScored" } ] }, { - "groupName": "Goalkeeping", + "groupName": "Miscellaneous", "statisticsItems": [ { - "name": "Total saves", - "home": "2", - "away": "5", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 2, - "awayValue": 5, - "renderType": 1, - "key": "goalkeeperSaves" - }, - { - "name": "Goals prevented", - "home": "0.45", - "away": "0.66", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 0.4464, - "awayValue": 0.6605, - "renderType": 1, - "key": "goalsPrevented" - }, - { - "name": "Big saves", + "name": "Tiebreaks", "home": "0", - "away": "1", - "compareCode": 2, + "away": "0", + "compareCode": 3, "statisticsType": "positive", "valueType": "event", "homeValue": 0, - "awayValue": 1, + "awayValue": 0, "renderType": 1, - "key": "diveSaves" - }, - { - "name": "High claims", - "home": "0", - "away": "1", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 0, - "awayValue": 1, - "renderType": 1, - "key": "highClaims" - }, - { - "name": "Goal kicks", - "home": "7", - "away": "9", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 7, - "awayValue": 9, - "renderType": 1, - "key": "goalKicks" + "key": "tiebreaks" } ] } @@ -598,517 +567,245 @@ "period": "1ST", "groups": [ { - "groupName": "Match overview", + "groupName": "Service", "statisticsItems": [ { - "name": "Ball possession", - "home": "52%", - "away": "48%", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 52, - "awayValue": 48, - "renderType": 2, - "key": "ballPossession" - }, - { - "name": "Expected goals", - "home": "1.07", - "away": "0.23", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1.07, - "awayValue": 0.23, - "renderType": 1, - "key": "expectedGoals" - }, - { - "name": "Big chances", - "home": "2", - "away": "0", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 2, - "awayValue": 0, - "renderType": 1, - "key": "bigChanceCreated" - }, - { - "name": "Total shots", - "home": "11", - "away": "4", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 11, - "awayValue": 4, - "renderType": 1, - "key": "totalShotsOnGoal" - }, - { - "name": "Goalkeeper saves", - "home": "1", + "name": "Aces", + "home": "0", "away": "1", - "compareCode": 3, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, - "awayValue": 1, - "renderType": 1, - "key": "goalkeeperSaves" - }, - { - "name": "Corner kicks", - "home": "4", - "away": "1", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 4, - "awayValue": 1, - "renderType": 1, - "key": "cornerKicks" - }, - { - "name": "Fouls", - "home": "8", - "away": "4", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 8, - "awayValue": 4, - "renderType": 1, - "key": "fouls" - }, - { - "name": "Passes", - "home": "240", - "away": "229", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 240, - "awayValue": 229, - "renderType": 1, - "key": "passes" - }, - { - "name": "Tackles", - "home": "6", - "away": "4", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 6, - "awayValue": 4, - "renderType": 1, - "key": "totalTackle" - }, - { - "name": "Free kicks", - "home": "4", - "away": "8", "compareCode": 2, "statisticsType": "positive", "valueType": "event", - "homeValue": 4, - "awayValue": 8, - "renderType": 1, - "key": "freeKicks" - }, - { - "name": "Yellow cards", - "home": "1", - "away": "0", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 1, - "awayValue": 0, - "renderType": 1, - "key": "yellowCards" - } - ] - }, - { - "groupName": "Shots", - "statisticsItems": [ - { - "name": "Total shots", - "home": "11", - "away": "4", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 11, - "awayValue": 4, - "renderType": 1, - "key": "totalShotsOnGoal" - }, - { - "name": "Shots on target", - "home": "1", - "away": "0", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, - "awayValue": 0, - "renderType": 1, - "key": "shotsOnGoal" - }, - { - "name": "Hit woodwork", - "home": "0", - "away": "0", - "compareCode": 3, - "statisticsType": "negative", - "valueType": "event", "homeValue": 0, - "awayValue": 0, - "renderType": 1, - "key": "hitWoodwork" - }, - { - "name": "Shots off target", - "home": "7", - "away": "3", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 7, - "awayValue": 3, - "renderType": 1, - "key": "shotsOffGoal" - }, - { - "name": "Blocked shots", - "home": "3", - "away": "1", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 3, "awayValue": 1, "renderType": 1, - "key": "blockedScoringAttempt" + "key": "aces" }, { - "name": "Shots inside box", - "home": "8", - "away": "3", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 8, - "awayValue": 3, - "renderType": 1, - "key": "totalShotsInsideBox" - }, - { - "name": "Shots outside box", - "home": "3", - "away": "1", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 3, - "awayValue": 1, - "renderType": 1, - "key": "totalShotsOutsideBox" - } - ] - }, - { - "groupName": "Attack", - "statisticsItems": [ - { - "name": "Big chances missed", + "name": "Double faults", "home": "2", - "away": "0", - "compareCode": 1, + "away": "2", + "compareCode": 3, "statisticsType": "negative", "valueType": "event", "homeValue": 2, - "awayValue": 0, + "awayValue": 2, "renderType": 1, - "key": "bigChanceMissed" + "key": "doubleFaults" }, { - "name": "Through balls", - "home": "1", - "away": "0", + "name": "First serve", + "home": "22\/32 (69%)", + "away": "13\/22 (59%)", "compareCode": 1, "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, - "awayValue": 0, + "valueType": "team", + "homeValue": 22, + "awayValue": 13, + "homeTotal": 32, + "awayTotal": 22, "renderType": 1, - "key": "accurateThroughBall" + "key": "firstServeAccuracy" }, { - "name": "Fouled in final third", - "home": "1", - "away": "1", - "compareCode": 3, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, - "awayValue": 1, - "renderType": 1, - "key": "fouledFinalThird" - }, - { - "name": "Offsides", - "home": "0", - "away": "0", - "compareCode": 3, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 0, - "awayValue": 0, - "renderType": 1, - "key": "offsides" - } - ] - }, - { - "groupName": "Passes", - "statisticsItems": [ - { - "name": "Accurate passes", - "home": "212", - "away": "199", + "name": "Second serve", + "home": "8\/10 (80%)", + "away": "7\/9 (78%)", "compareCode": 1, "statisticsType": "positive", - "valueType": "event", - "homeValue": 212, - "awayValue": 199, + "valueType": "team", + "homeValue": 8, + "awayValue": 7, + "homeTotal": 10, + "awayTotal": 9, "renderType": 1, - "key": "accuratePasses" + "key": "secondServeAccuracy" }, { - "name": "Throw-ins", + "name": "First serve points", + "home": "10\/22 (45%)", + "away": "7\/13 (54%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 10, + "awayValue": 7, + "homeTotal": 22, + "awayTotal": 13, + "renderType": 1, + "key": "firstServePointsAccuracy" + }, + { + "name": "Second serve points", + "home": "3\/10 (30%)", + "away": "5\/9 (56%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 3, + "awayValue": 5, + "homeTotal": 10, + "awayTotal": 9, + "renderType": 1, + "key": "secondServePointsAccuracy" + }, + { + "name": "Service games played", "home": "5", - "away": "6", - "compareCode": 2, + "away": "4", + "compareCode": 1, "statisticsType": "positive", "valueType": "event", "homeValue": 5, - "awayValue": 6, - "renderType": 1, - "key": "throwIns" - }, - { - "name": "Final third entries", - "home": "24", - "away": "18", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 24, - "awayValue": 18, - "renderType": 1, - "key": "finalThirdEntries" - }, - { - "name": "Long balls", - "home": "12/19 (63%)", - "away": "7/20 (35%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 12, - "awayValue": 7, - "homeTotal": 19, - "awayTotal": 20, - "renderType": 3, - "key": "accurateLongBalls" - }, - { - "name": "Crosses", - "home": "4/13 (31%)", - "away": "2/4 (50%)", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 4, - "awayValue": 2, - "homeTotal": 13, - "awayTotal": 4, - "renderType": 3, - "key": "accurateCross" - } - ] - }, - { - "groupName": "Duels", - "statisticsItems": [ - { - "name": "Duels", - "home": "51%", - "away": "49%", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 51, - "awayValue": 49, - "renderType": 2, - "key": "duelWonPercent" - }, - { - "name": "Dispossessed", - "home": "2", - "away": "5", - "compareCode": 2, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 2, - "awayValue": 5, - "renderType": 1, - "key": "dispossessed" - }, - { - "name": "Ground duels", - "home": "14/25 (56%)", - "away": "11/25 (44%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 14, - "awayValue": 11, - "homeTotal": 25, - "awayTotal": 25, - "renderType": 3, - "key": "groundDuelsPercentage" - }, - { - "name": "Aerial duels", - "home": "4/10 (40%)", - "away": "6/10 (60%)", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 4, - "awayValue": 6, - "homeTotal": 10, - "awayTotal": 10, - "renderType": 3, - "key": "aerialDuelsPercentage" - }, - { - "name": "Dribbles", - "home": "4/6 (67%)", - "away": "0/1 (0%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 4, - "awayValue": 0, - "homeTotal": 6, - "awayTotal": 1, - "renderType": 3, - "key": "dribblesPercentage" - } - ] - }, - { - "groupName": "Defending", - "statisticsItems": [ - { - "name": "Tackles won", - "home": "67%", - "away": "50%", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 4, - "awayValue": 2, - "homeTotal": 6, - "awayTotal": 4, - "renderType": 4, - "key": "wonTacklePercent" - }, - { - "name": "Total tackles", - "home": "6", - "away": "4", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 6, "awayValue": 4, "renderType": 1, - "key": "totalTackle" + "key": "serviceGamesTotal" }, { - "name": "Interceptions", - "home": "2", - "away": "5", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 2, - "awayValue": 5, - "renderType": 1, - "key": "interceptionWon" - }, - { - "name": "Recoveries", - "home": "18", - "away": "17", + "name": "Break points saved", + "home": "3\/7 (42%)", + "away": "1\/3 (33%)", "compareCode": 1, "statisticsType": "positive", - "valueType": "event", - "homeValue": 18, - "awayValue": 17, + "valueType": "team", + "homeValue": 3, + "awayValue": 1, + "homeTotal": 7, + "awayTotal": 3, "renderType": 1, - "key": "ballRecovery" - }, - { - "name": "Clearances", - "home": "6", - "away": "14", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 6, - "awayValue": 14, - "renderType": 1, - "key": "totalClearance" + "key": "breakPointsSaved" } ] }, { - "groupName": "Goalkeeping", + "groupName": "Points", "statisticsItems": [ { - "name": "Total saves", - "home": "1", - "away": "1", + "name": "Service points won", + "home": "13", + "away": "12", + "compareCode": 1, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 13, + "awayValue": 12, + "renderType": 1, + "key": "servicePointsScored" + }, + { + "name": "Receiver points won", + "home": "10", + "away": "19", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 10, + "awayValue": 19, + "renderType": 1, + "key": "receiverPointsScored" + }, + { + "name": "Max points in a row", + "home": "6", + "away": "6", "compareCode": 3, "statisticsType": "positive", "valueType": "event", - "homeValue": 1, - "awayValue": 1, + "homeValue": 6, + "awayValue": 6, "renderType": 1, - "key": "goalkeeperSaves" + "key": "maxPointsInRow" + } + ] + }, + { + "groupName": "Games", + "statisticsItems": [ + { + "name": "Max games in a row", + "home": "2", + "away": "4", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 2, + "awayValue": 4, + "renderType": 1, + "key": "maxGamesInRow" + } + ] + }, + { + "groupName": "Return", + "statisticsItems": [ + { + "name": "First serve return points", + "home": "6\/13 (46%)", + "away": "12\/22 (54%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 6, + "awayValue": 12, + "homeTotal": 13, + "awayTotal": 22, + "renderType": 1, + "key": "firstReturnPoints" }, { - "name": "Goal kicks", + "name": "Second serve return points", + "home": "4\/9 (44%)", + "away": "7\/10 (70%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 4, + "awayValue": 7, + "homeTotal": 9, + "awayTotal": 10, + "renderType": 1, + "key": "secondReturnPoints" + }, + { + "name": "Return games played", "home": "4", - "away": "6", + "away": "5", "compareCode": 2, "statisticsType": "positive", "valueType": "event", "homeValue": 4, - "awayValue": 6, + "awayValue": 5, "renderType": 1, - "key": "goalKicks" + "key": "serviceGamesTotal" + }, + { + "name": "Break points converted", + "home": "2", + "away": "4", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 2, + "awayValue": 4, + "renderType": 1, + "key": "breakPointsScored" + } + ] + }, + { + "groupName": "Miscellaneous", + "statisticsItems": [ + { + "name": "Tiebreaks", + "home": "0", + "away": "0", + "compareCode": 3, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 0, + "awayValue": 0, + "renderType": 1, + "key": "tiebreaks" } ] } @@ -1118,248 +815,10 @@ "period": "2ND", "groups": [ { - "groupName": "Match overview", + "groupName": "Service", "statisticsItems": [ { - "name": "Ball possession", - "home": "45%", - "away": "55%", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 45, - "awayValue": 55, - "renderType": 2, - "key": "ballPossession" - }, - { - "name": "Expected goals", - "home": "0.87", - "away": "0.65", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 0.87, - "awayValue": 0.65, - "renderType": 1, - "key": "expectedGoals" - }, - { - "name": "Big chances", - "home": "1", - "away": "1", - "compareCode": 3, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, - "awayValue": 1, - "renderType": 1, - "key": "bigChanceCreated" - }, - { - "name": "Total shots", - "home": "11", - "away": "7", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 11, - "awayValue": 7, - "renderType": 1, - "key": "totalShotsOnGoal" - }, - { - "name": "Goalkeeper saves", - "home": "1", - "away": "4", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, - "awayValue": 4, - "renderType": 1, - "key": "goalkeeperSaves" - }, - { - "name": "Corner kicks", - "home": "3", - "away": "3", - "compareCode": 3, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 3, - "awayValue": 3, - "renderType": 1, - "key": "cornerKicks" - }, - { - "name": "Fouls", - "home": "5", - "away": "8", - "compareCode": 2, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 5, - "awayValue": 8, - "renderType": 1, - "key": "fouls" - }, - { - "name": "Passes", - "home": "188", - "away": "240", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 188, - "awayValue": 240, - "renderType": 1, - "key": "passes" - }, - { - "name": "Tackles", - "home": "10", - "away": "6", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 10, - "awayValue": 6, - "renderType": 1, - "key": "totalTackle" - }, - { - "name": "Free kicks", - "home": "8", - "away": "5", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 8, - "awayValue": 5, - "renderType": 1, - "key": "freeKicks" - }, - { - "name": "Yellow cards", - "home": "1", - "away": "1", - "compareCode": 3, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 1, - "awayValue": 1, - "renderType": 1, - "key": "yellowCards" - } - ] - }, - { - "groupName": "Shots", - "statisticsItems": [ - { - "name": "Total shots", - "home": "11", - "away": "7", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 11, - "awayValue": 7, - "renderType": 1, - "key": "totalShotsOnGoal" - }, - { - "name": "Shots on target", - "home": "4", - "away": "1", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 4, - "awayValue": 1, - "renderType": 1, - "key": "shotsOnGoal" - }, - { - "name": "Hit woodwork", - "home": "0", - "away": "1", - "compareCode": 2, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 0, - "awayValue": 1, - "renderType": 1, - "key": "hitWoodwork" - }, - { - "name": "Shots off target", - "home": "5", - "away": "2", - "compareCode": 1, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 5, - "awayValue": 2, - "renderType": 1, - "key": "shotsOffGoal" - }, - { - "name": "Blocked shots", - "home": "2", - "away": "4", - "compareCode": 2, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 2, - "awayValue": 4, - "renderType": 1, - "key": "blockedScoringAttempt" - }, - { - "name": "Shots inside box", - "home": "4", - "away": "3", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 4, - "awayValue": 3, - "renderType": 1, - "key": "totalShotsInsideBox" - }, - { - "name": "Shots outside box", - "home": "7", - "away": "4", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 7, - "awayValue": 4, - "renderType": 1, - "key": "totalShotsOutsideBox" - } - ] - }, - { - "groupName": "Attack", - "statisticsItems": [ - { - "name": "Big chances missed", - "home": "1", - "away": "1", - "compareCode": 3, - "statisticsType": "negative", - "valueType": "event", - "homeValue": 1, - "awayValue": 1, - "renderType": 1, - "key": "bigChanceMissed" - }, - { - "name": "Through balls", + "name": "Aces", "home": "0", "away": "0", "compareCode": 3, @@ -1368,271 +827,237 @@ "homeValue": 0, "awayValue": 0, "renderType": 1, - "key": "accurateThroughBall" + "key": "aces" }, { - "name": "Fouled in final third", - "home": "1", - "away": "2", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, - "awayValue": 2, - "renderType": 1, - "key": "fouledFinalThird" - }, - { - "name": "Offsides", - "home": "1", - "away": "1", + "name": "Double faults", + "home": "0", + "away": "0", "compareCode": 3, "statisticsType": "negative", "valueType": "event", - "homeValue": 1, - "awayValue": 1, - "renderType": 1, - "key": "offsides" - } - ] - }, - { - "groupName": "Passes", - "statisticsItems": [ - { - "name": "Accurate passes", - "home": "162", - "away": "209", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 162, - "awayValue": 209, - "renderType": 1, - "key": "accuratePasses" - }, - { - "name": "Throw-ins", - "home": "8", - "away": "5", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 8, - "awayValue": 5, - "renderType": 1, - "key": "throwIns" - }, - { - "name": "Final third entries", - "home": "24", - "away": "28", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 24, - "awayValue": 28, - "renderType": 1, - "key": "finalThirdEntries" - }, - { - "name": "Long balls", - "home": "8/17 (47%)", - "away": "10/19 (53%)", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 8, - "awayValue": 10, - "homeTotal": 17, - "awayTotal": 19, - "renderType": 3, - "key": "accurateLongBalls" - }, - { - "name": "Crosses", - "home": "3/13 (23%)", - "away": "2/4 (50%)", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 3, - "awayValue": 2, - "homeTotal": 13, - "awayTotal": 4, - "renderType": 3, - "key": "accurateCross" - } - ] - }, - { - "groupName": "Duels", - "statisticsItems": [ - { - "name": "Duels", - "home": "64%", - "away": "36%", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 64, - "awayValue": 36, - "renderType": 2, - "key": "duelWonPercent" - }, - { - "name": "Dispossessed", - "home": "0", - "away": "4", - "compareCode": 2, - "statisticsType": "negative", - "valueType": "event", "homeValue": 0, - "awayValue": 4, + "awayValue": 0, "renderType": 1, - "key": "dispossessed" + "key": "doubleFaults" }, { - "name": "Ground duels", - "home": "24/34 (71%)", - "away": "10/34 (29%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 24, - "awayValue": 10, - "homeTotal": 34, - "awayTotal": 34, - "renderType": 3, - "key": "groundDuelsPercentage" - }, - { - "name": "Aerial duels", - "home": "3/8 (38%)", - "away": "5/8 (63%)", + "name": "First serve", + "home": "15\/22 (68%)", + "away": "25\/27 (93%)", "compareCode": 2, "statisticsType": "positive", "valueType": "team", - "homeValue": 3, - "awayValue": 5, - "homeTotal": 8, - "awayTotal": 8, - "renderType": 3, - "key": "aerialDuelsPercentage" + "homeValue": 15, + "awayValue": 25, + "homeTotal": 22, + "awayTotal": 27, + "renderType": 1, + "key": "firstServeAccuracy" }, { - "name": "Dribbles", - "home": "6/12 (50%)", - "away": "1/6 (17%)", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "team", - "homeValue": 6, - "awayValue": 1, - "homeTotal": 12, - "awayTotal": 6, - "renderType": 3, - "key": "dribblesPercentage" - } - ] - }, - { - "groupName": "Defending", - "statisticsItems": [ - { - "name": "Tackles won", - "home": "70%", - "away": "67%", + "name": "Second serve", + "home": "7\/7 (100%)", + "away": "2\/2 (100%)", "compareCode": 1, "statisticsType": "positive", "valueType": "team", "homeValue": 7, - "awayValue": 4, - "homeTotal": 10, - "awayTotal": 6, - "renderType": 4, - "key": "wonTacklePercent" - }, - { - "name": "Total tackles", - "home": "10", - "away": "6", - "compareCode": 1, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 10, - "awayValue": 6, - "renderType": 1, - "key": "totalTackle" - }, - { - "name": "Interceptions", - "home": "1", - "away": "2", - "compareCode": 2, - "statisticsType": "positive", - "valueType": "event", - "homeValue": 1, "awayValue": 2, + "homeTotal": 7, + "awayTotal": 2, "renderType": 1, - "key": "interceptionWon" + "key": "secondServeAccuracy" }, { - "name": "Recoveries", - "home": "18", - "away": "24", + "name": "First serve points", + "home": "7\/15 (47%)", + "away": "15\/25 (60%)", "compareCode": 2, "statisticsType": "positive", - "valueType": "event", - "homeValue": 18, - "awayValue": 24, + "valueType": "team", + "homeValue": 7, + "awayValue": 15, + "homeTotal": 15, + "awayTotal": 25, "renderType": 1, - "key": "ballRecovery" + "key": "firstServePointsAccuracy" }, { - "name": "Clearances", - "home": "8", - "away": "12", + "name": "Second serve points", + "home": "0\/7 (0%)", + "away": "1\/2 (50%)", "compareCode": 2, "statisticsType": "positive", - "valueType": "event", - "homeValue": 8, - "awayValue": 12, + "valueType": "team", + "homeValue": 0, + "awayValue": 1, + "homeTotal": 7, + "awayTotal": 2, "renderType": 1, - "key": "totalClearance" + "key": "secondServePointsAccuracy" + }, + { + "name": "Service games played", + "home": "4", + "away": "4", + "compareCode": 3, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 4, + "awayValue": 4, + "renderType": 1, + "key": "serviceGamesTotal" + }, + { + "name": "Break points saved", + "home": "2\/5 (40%)", + "away": "4\/5 (80%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 2, + "awayValue": 4, + "homeTotal": 5, + "awayTotal": 5, + "renderType": 1, + "key": "breakPointsSaved" } ] }, { - "groupName": "Goalkeeping", + "groupName": "Points", "statisticsItems": [ { - "name": "Total saves", - "home": "1", + "name": "Service points won", + "home": "7", + "away": "16", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 7, + "awayValue": 16, + "renderType": 1, + "key": "servicePointsScored" + }, + { + "name": "Receiver points won", + "home": "11", + "away": "15", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 11, + "awayValue": 15, + "renderType": 1, + "key": "receiverPointsScored" + }, + { + "name": "Max points in a row", + "home": "3", + "away": "10", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 3, + "awayValue": 10, + "renderType": 1, + "key": "maxPointsInRow" + } + ] + }, + { + "groupName": "Games", + "statisticsItems": [ + { + "name": "Max games in a row", + "home": "2", + "away": "5", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 2, + "awayValue": 5, + "renderType": 1, + "key": "maxGamesInRow" + } + ] + }, + { + "groupName": "Return", + "statisticsItems": [ + { + "name": "First serve return points", + "home": "10\/25 (40%)", + "away": "8\/15 (53%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 10, + "awayValue": 8, + "homeTotal": 25, + "awayTotal": 15, + "renderType": 1, + "key": "firstReturnPoints" + }, + { + "name": "Second serve return points", + "home": "1\/2 (50%)", + "away": "7\/7 (100%)", + "compareCode": 2, + "statisticsType": "positive", + "valueType": "team", + "homeValue": 1, + "awayValue": 7, + "homeTotal": 2, + "awayTotal": 7, + "renderType": 1, + "key": "secondReturnPoints" + }, + { + "name": "Return games played", + "home": "4", "away": "4", + "compareCode": 3, + "statisticsType": "positive", + "valueType": "event", + "homeValue": 4, + "awayValue": 4, + "renderType": 1, + "key": "serviceGamesTotal" + }, + { + "name": "Break points converted", + "home": "1", + "away": "3", "compareCode": 2, "statisticsType": "positive", "valueType": "event", "homeValue": 1, - "awayValue": 4, + "awayValue": 3, "renderType": 1, - "key": "goalkeeperSaves" - }, + "key": "breakPointsScored" + } + ] + }, + { + "groupName": "Miscellaneous", + "statisticsItems": [ { - "name": "Goal kicks", - "home": "3", - "away": "3", + "name": "Tiebreaks", + "home": "0", + "away": "0", "compareCode": 3, "statisticsType": "positive", "valueType": "event", - "homeValue": 3, - "awayValue": 3, + "homeValue": 0, + "awayValue": 0, "renderType": 1, - "key": "goalKicks" + "key": "tiebreaks" } ] } ] } ] -} \ No newline at end of file +}