From d6620fb0a10da70bda925c056aca0d713c0e386a Mon Sep 17 00:00:00 2001 From: salam Date: Wed, 29 Apr 2026 19:00:46 +0200 Subject: [PATCH] statistic wip --- app/Actions/Statistics/EventData.php | 71 ---- app/Actions/Statistics/LoadEvents.php | 85 ++++ app/Actions/Statistics/StatisticEvents.php | 38 +- app/Actions/Statistics/StatisticType.php | 28 ++ app/Filament/Pages/Statistic.php | 40 +- .../Tables/Columns/StatistikEventColumn.php | 10 + app/Filament/Widgets/MovingAverageChart.php | 46 ++- app/Filament/Widgets/PunctualChart.php | 27 +- composer.lock | 385 +++++++++--------- .../columns/statistik-event-column.blade.php | 11 + 10 files changed, 408 insertions(+), 333 deletions(-) delete mode 100644 app/Actions/Statistics/EventData.php create mode 100644 app/Actions/Statistics/LoadEvents.php create mode 100644 app/Actions/Statistics/StatisticType.php create mode 100644 app/Filament/Tables/Columns/StatistikEventColumn.php create mode 100644 resources/views/filament/tables/columns/statistik-event-column.blade.php diff --git a/app/Actions/Statistics/EventData.php b/app/Actions/Statistics/EventData.php deleted file mode 100644 index 8fe54da2..00000000 --- a/app/Actions/Statistics/EventData.php +++ /dev/null @@ -1,71 +0,0 @@ -where('home_id', '=', $team_id)->get(); - break; - - case 'away': - $res = StatistikoEvent::where('league_id', $league_id)->where('away_id', '=', $team_id)->get(); - break; - - default: - $res = StatistikoEvent::where('league_id', $league_id) - ->where(function ($query) use ($team_id) { - $query->where('home_id', '=', $team_id)->orWhere('away_id', '=', $team_id); - })->get(); - break; - } - - $datasets = []; - $labels = []; - - foreach ($res as $value) { - $labels[] = $value['starttime']->format('d. M.y'); - - $tmp = []; - $tmp['crd_a'] = (int) $value['crd_a']; - $tmp['crd_h'] = (int) $value['crd_h']; - $tmp['crn_a'] = (int) $value['crn_a']; - $tmp['crn_h'] = (int) $value['crn_h']; - $tmp['fls_a'] = (int) $value['fls_a']; - $tmp['fls_h'] = (int) $value['fls_h']; - $tmp['gls_a'] = (int) $value['gls_a']; - $tmp['gls_h'] = (int) $value['gls_h']; - $tmp['ofs_a'] = (int) $value['ofs_a']; - $tmp['ofs_h'] = (int) $value['ofs_h']; - $tmp['snt_a'] = (int) $value['snt_a']; - $tmp['snt_h'] = (int) $value['snt_h']; - $tmp['tsh_a'] = (int) $value['tsh_a']; - $tmp['tsh_h'] = (int) $value['tsh_h']; - - $tmp['exp_handicap'] = (float) $value['exp_handicap']; - $tmp['exp_total'] = (float) $value['exp_total']; - $tmp['exp_away'] = (float) $value['expgoalsaway_value']; - $tmp['exp_home'] = (float) $value['expgoalshome_value']; - - $datasets[] = $tmp; - } - - return ['lables' => $labels, 'datasets' => $datasets]; - - } -} diff --git a/app/Actions/Statistics/LoadEvents.php b/app/Actions/Statistics/LoadEvents.php new file mode 100644 index 00000000..8d8ed623 --- /dev/null +++ b/app/Actions/Statistics/LoadEvents.php @@ -0,0 +1,85 @@ +where('home_id', '=', $team_id)->get(); + break; + + case 'away': + $res = StatistikoEvent::where('league_id', $league_id)->where('away_id', '=', $team_id)->get(); + break; + + default: + $res = StatistikoEvent::where('league_id', $league_id) + ->where(function ($query) use ($team_id) { + $query->where('home_id', '=', $team_id)->orWhere('away_id', '=', $team_id); + })->get(); + break; + } + + $datasets = []; + $labels = []; + + foreach ($res as $value) { + $labels[] = $value['starttime']->format('d. M.y'); + + // $tmp['exp_handicap'] = (float) $value['exp_handicap']; + // $tmp['exp_total'] = (float) $value['exp_total']; + // $tmp['exp_away'] = (float) $value['expgoalsaway_value']; + // $tmp['exp_home'] = (float) $value['expgoalshome_value']; + + switch ($filter['statistic_type']) { + case 'gls': + $tmp['gls_a'] = (int) $value['gls_a']; + $tmp['gls_h'] = (int) $value['gls_h']; + break; + case 'crn': + $tmp['crn_a'] = (int) $value['crn_a']; + $tmp['crn_h'] = (int) $value['crn_h']; + break; + case 'fls': + $tmp['fls_a'] = (int) $value['fls_a']; + $tmp['fls_h'] = (int) $value['fls_h']; + break; + case 'ofs': + $tmp['ofs_a'] = (int) $value['ofs_a']; + $tmp['ofs_h'] = (int) $value['ofs_h']; + break; + case 'crd': + $tmp['crd_a'] = (int) $value['crd_a']; + $tmp['crd_h'] = (int) $value['crd_h']; + break; + case 'snt': + $tmp['snt_a'] = (int) $value['snt_a']; + $tmp['snt_h'] = (int) $value['snt_h']; + break; + case 'tsh': + $tmp['tsh_a'] = (int) $value['tsh_a']; + $tmp['tsh_h'] = (int) $value['tsh_h']; + break; + } + + $datasets[] = $tmp; + } + + return ['lables' => $labels, 'datasets' => $datasets]; + } +} diff --git a/app/Actions/Statistics/StatisticEvents.php b/app/Actions/Statistics/StatisticEvents.php index 7257d025..d8e4c705 100644 --- a/app/Actions/Statistics/StatisticEvents.php +++ b/app/Actions/Statistics/StatisticEvents.php @@ -4,41 +4,5 @@ namespace App\Actions\Statistics; class StatisticEvents { - public static function load($filter) - { - $data = EventData::get($filter); - - if (! $data) { - return []; - } - - return []; - dd($data); - - /* - "team_position" => "away" - "similar_past_matches" => "none" - "statistic_type" => "none" - "accuracy" => 0.5 - "league_id" => "87" - "team_id" => null - "startDate" => null - "endDate" => null - "palyer_id" => null - - 'sport_id', - 'league_id', - 'home_id', - 'away_id', - 'starttime', - */ - - // $res = StatistikoEvent::where('league_id', $league_id)->get(); - // $result = DB::connection('mongodb') - // ->table('movies') - // ->where('league_id', $league_id) - // ->orWhere('home_id', $home_id) - // ->get(); - - } + public static function load($filter) {} } diff --git a/app/Actions/Statistics/StatisticType.php b/app/Actions/Statistics/StatisticType.php new file mode 100644 index 00000000..6e0a6dba --- /dev/null +++ b/app/Actions/Statistics/StatisticType.php @@ -0,0 +1,28 @@ + 'Goals', + 'crn' => 'Corner', + 'fls' => 'Fouls commited', + 'ofs' => 'Offside', + 'crd' => 'Cards', + 'snt' => 'Shot on target', + 'tsh' => 'Total shots', + ]; + + public static function get($filter): string + { + + $tmp = $filter['statistic_type'] ?? 'none'; + + if (isset(self::$types[$tmp])) { + return self::$types[$tmp]; + } + + return 'Goals'; + } +} diff --git a/app/Filament/Pages/Statistic.php b/app/Filament/Pages/Statistic.php index 4dd9ed15..1c3f243a 100644 --- a/app/Filament/Pages/Statistic.php +++ b/app/Filament/Pages/Statistic.php @@ -3,7 +3,6 @@ namespace App\Filament\Pages; use App\Actions\LoadStatisticFixturesLeaguesOptions; -use App\Actions\Statistics\StatisticEvents; use App\Filament\Widgets\MovingAverageChart; use App\Filament\Widgets\PunctualChart; use App\Models\Element; @@ -27,21 +26,6 @@ class Statistic extends BaseDashboard protected static ?string $title = 'Statistic'; - protected static array $types = [ - 'gls' => 'Goals', - 'crn' => 'Corner', - 'fls' => 'Fouls commited', - 'ofs' => 'Offside', - 'crd' => 'Cards', - 'snt' => 'Shot on target', - 'tsh' => 'Total shots', - ]; - - public function getColumns(): int|array - { - return 2; - } - public function filtersForm(Schema $schema): Schema { return $schema @@ -153,26 +137,16 @@ class Statistic extends BaseDashboard ]); } + public function update() + { + dd($this->filter); + } + protected function getFooterWidgets(): array { - - $data = StatisticEvents::load($this->filters); - - $type = self::$types[$this->filters['statistic_type']]; - - // $data = [ - // 'datasets' => [ - // [ - // 'label' => 'test', - // 'data' => [0, 10, 5, 2, 21, 32, 45, 74, 65, 45, 77, 89], - // ], - // ], - // 'labels' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - // ]; - return [ - MovingAverageChart::make(['filters' => $data, 'header' => $type.' Punctual']), - PunctualChart::make(['filters' => $data, 'header' => $type.' Moving Avverage']), + PunctualChart::make(), + MovingAverageChart::make(), ]; } } diff --git a/app/Filament/Tables/Columns/StatistikEventColumn.php b/app/Filament/Tables/Columns/StatistikEventColumn.php new file mode 100644 index 00000000..79aff86e --- /dev/null +++ b/app/Filament/Tables/Columns/StatistikEventColumn.php @@ -0,0 +1,10 @@ +heading = $this->header; + $this->heading = StatisticType::get($this->filters); - return $this->filters; + if (! $this->filters['league_id']) { + return []; + } + if (! $this->filters['team_id']) { + // Notification::make() + // ->title('Team is missing') + // ->warning() + // ->send(); + return []; + } + + // Log::info($this->filters); + + $tmp = LoadEvents::load($this->filters); + Log::info($tmp); + + $data = [ + 'datasets' => [ + [ + 'label' => 'test', + 'data' => [0, 10, 5, 2, 21, 32, 45, 74, 65, 45, 77, 89], + 'borderColor' => '#00c950', + 'backgroundColor' => '#00c950', + ], + ], + 'labels' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + ]; + + return $data; } protected function getType(): string diff --git a/app/Filament/Widgets/PunctualChart.php b/app/Filament/Widgets/PunctualChart.php index b0ee4958..b3cdbb41 100644 --- a/app/Filament/Widgets/PunctualChart.php +++ b/app/Filament/Widgets/PunctualChart.php @@ -2,19 +2,40 @@ namespace App\Filament\Widgets; +// use App\Actions\Statistics\StatisticEvents; +use App\Actions\Statistics\StatisticType; use Filament\Widgets\ChartWidget; +use Filament\Widgets\Concerns\InteractsWithPageFilters; class PunctualChart extends ChartWidget { - public ?array $filters = []; + use InteractsWithPageFilters; + + protected ?string $pollingInterval = null; public ?string $header; + public function getDescription(): ?string + { + return 'Punctual'; + } + protected function getData(): array { - $this->heading = $this->header; + $this->heading = StatisticType::get($this->filters); - return $this->filters; + $data = [ + 'datasets' => [ + [ + 'label' => 'test', + 'data' => [0, 10, 5, 2, 21, 32, 45, 74, 65, 45, 77, 89], + 'backgroundColor' => '#36A2EB', + ], + ], + 'labels' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + ]; + + return $data; } protected function getType(): string diff --git a/composer.lock b/composer.lock index cf481046..1e13a886 100644 --- a/composer.lock +++ b/composer.lock @@ -2955,20 +2955,20 @@ }, { "name": "laravel/framework", - "version": "v11.51.0", + "version": "v12.58.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "c8f9a04594b7044a189a3194cfb3594251eb74e5" + "reference": "6172ae1f44ba5d89e111057ee4a4e7c27f5a610d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/c8f9a04594b7044a189a3194cfb3594251eb74e5", - "reference": "c8f9a04594b7044a189a3194cfb3594251eb74e5", + "url": "https://api.github.com/repos/laravel/framework/zipball/6172ae1f44ba5d89e111057ee4a4e7c27f5a610d", + "reference": "6172ae1f44ba5d89e111057ee4a4e7c27f5a610d", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12|^0.13|^0.14", + "brick/math": "^0.11|^0.12|^0.13|^0.14", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.4", @@ -2983,32 +2983,34 @@ "fruitcake/php-cors": "^1.3", "guzzlehttp/guzzle": "^7.8.2", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0", + "laravel/prompts": "^0.3.0", "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.7", + "league/commonmark": "^2.8.1", "league/flysystem": "^3.25.1", "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.72.6|^3.8.4", + "nesbot/carbon": "^3.8.4", "nunomaduro/termwind": "^2.0", "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^7.0.3", - "symfony/error-handler": "^7.0.3", - "symfony/finder": "^7.0.3", + "symfony/console": "^7.2.0", + "symfony/error-handler": "^7.2.0", + "symfony/finder": "^7.2.0", "symfony/http-foundation": "^7.2.0", - "symfony/http-kernel": "^7.0.3", - "symfony/mailer": "^7.0.3", - "symfony/mime": "^7.0.3", - "symfony/polyfill-php83": "^1.31", - "symfony/process": "^7.0.3", - "symfony/routing": "^7.0.3", - "symfony/uid": "^7.0.3", - "symfony/var-dumper": "^7.0.3", + "symfony/http-kernel": "^7.2.0", + "symfony/mailer": "^7.2.0", + "symfony/mime": "^7.2.0", + "symfony/polyfill-php83": "^1.33", + "symfony/polyfill-php84": "^1.34", + "symfony/polyfill-php85": "^1.34", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.6.1", "voku/portable-ascii": "^2.0.2" @@ -3040,6 +3042,7 @@ "illuminate/filesystem": "self.version", "illuminate/hashing": "self.version", "illuminate/http": "self.version", + "illuminate/json-schema": "self.version", "illuminate/log": "self.version", "illuminate/macroable": "self.version", "illuminate/mail": "self.version", @@ -3049,6 +3052,7 @@ "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", + "illuminate/reflection": "self.version", "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", @@ -3072,17 +3076,18 @@ "league/flysystem-read-only": "^3.25.1", "league/flysystem-sftp-v3": "^3.25.1", "mockery/mockery": "^1.6.10", - "orchestra/testbench-core": "^9.18.0", - "pda/pheanstalk": "^5.0.6", + "opis/json-schema": "^2.4.1", + "orchestra/testbench-core": "^10.9.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", "php-http/discovery": "^1.15", - "phpstan/phpstan": "2.1.41", - "phpunit/phpunit": "^10.5.35|^11.3.6|^12.0.1", - "predis/predis": "^2.3", - "resend/resend-php": "^0.10.0", - "symfony/cache": "^7.0.3", - "symfony/http-client": "^7.0.3", - "symfony/psr-http-message-bridge": "^7.0.3", - "symfony/translation": "^7.0.3" + "phpstan/phpstan": "^2.1.41", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3|^3.0", + "resend/resend-php": "^0.10.0|^1.0", + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", @@ -3097,7 +3102,7 @@ "ext-pdo": "Required to use all database features.", "ext-posix": "Required to use all features of the queue worker.", "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).", - "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).", "filp/whoops": "Required for friendly error pages in development (^2.14.3).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).", @@ -3108,22 +3113,22 @@ "mockery/mockery": "Required to use mocking (^1.6).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", - "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.3.6|^12.0.1).", - "predis/predis": "Required to use the predis connector (^2.3).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3|^3.0).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0|^1.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "11.x-dev" + "dev-master": "12.x-dev" } }, "autoload": { @@ -3134,6 +3139,7 @@ "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Log/functions.php", + "src/Illuminate/Reflection/helpers.php", "src/Illuminate/Support/functions.php", "src/Illuminate/Support/helpers.php" ], @@ -3142,7 +3148,8 @@ "Illuminate\\Support\\": [ "src/Illuminate/Macroable/", "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" + "src/Illuminate/Conditionable/", + "src/Illuminate/Reflection/" ] } }, @@ -3166,7 +3173,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2026-03-26T14:54:53+00:00" + "time": "2026-04-26T16:42:04+00:00" }, { "name": "laravel/prompts", @@ -4413,27 +4420,27 @@ }, { "name": "mongodb/laravel-mongodb", - "version": "5.1.1", + "version": "5.7.1", "source": { "type": "git", - "url": "https://github.com/mongodb/laravel-mongodb.git", - "reference": "cc7e5ffd0e8e3a9acfebd7aa5a5aabac2fc5eac4" + "url": "https://github.com/mongodb/laravel-mongodb", + "reference": "6e371e8e6deb9193f99a84c578e6c9d0a960e43a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mongodb/laravel-mongodb/zipball/cc7e5ffd0e8e3a9acfebd7aa5a5aabac2fc5eac4", - "reference": "cc7e5ffd0e8e3a9acfebd7aa5a5aabac2fc5eac4", + "url": "https://api.github.com/repos/mongodb/laravel-mongodb/zipball/6e371e8e6deb9193f99a84c578e6c9d0a960e43a", + "reference": "6e371e8e6deb9193f99a84c578e6c9d0a960e43a", "shasum": "" }, "require": { "composer-runtime-api": "^2.0.0", - "ext-mongodb": "^1.15", - "illuminate/cache": "^10.36|^11", - "illuminate/container": "^10.0|^11", - "illuminate/database": "^10.30|^11", - "illuminate/events": "^10.0|^11", - "illuminate/support": "^10.0|^11", - "mongodb/mongodb": "^1.18", + "ext-mongodb": "^1.21|^2", + "illuminate/cache": "^10.36|^11|^12|^13.0", + "illuminate/container": "^10.0|^11|^12|^13.0", + "illuminate/database": "^10.30|^11|^12|^13.0", + "illuminate/events": "^10.0|^11|^12|^13.0", + "illuminate/support": "^10.0|^11|^12|^13.0", + "mongodb/mongodb": "^1.21|^2", "php": "^8.1" }, "conflict": { @@ -4443,20 +4450,19 @@ "jenssegers/mongodb": "self.version" }, "require-dev": { - "doctrine/coding-standard": "12.0.x-dev", + "doctrine/coding-standard": "^12.0", + "laravel/scout": "^10.3", "league/flysystem-gridfs": "^3.28", "league/flysystem-read-only": "^3.0", "mockery/mockery": "^1.4.4", - "mongodb/builder": "^0.2", - "orchestra/testbench": "^8.0|^9.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.3", - "rector/rector": "^1.2", - "spatie/laravel-query-builder": "^5.6" + "orchestra/testbench": "^8.0|^9.0|^10.0|^11.0", + "phpstan/phpstan": "^1.10|^2.1", + "phpunit/phpunit": "^10.3|^11.5.3|^12.5.12", + "rector/rector": "^1.2|^2.3", + "spatie/laravel-query-builder": "^5.6|^6" }, "suggest": { - "league/flysystem-gridfs": "Filesystem storage in MongoDB with GridFS", - "mongodb/builder": "Provides a fluent aggregation builder for MongoDB pipelines" + "league/flysystem-gridfs": "Filesystem storage in MongoDB with GridFS" }, "type": "library", "extra": { @@ -4482,6 +4488,11 @@ "email": "andreas.braun@mongodb.com", "role": "Leader" }, + { + "name": "Pauline Vos", + "email": "pauline.vos@mongodb.com", + "role": "Maintainer" + }, { "name": "Jérôme Tamarelle", "email": "jerome.tamarelle@mongodb.com", @@ -4510,41 +4521,40 @@ ], "support": { "issues": "https://www.mongodb.com/support", - "security": "https://www.mongodb.com/security", - "source": "https://github.com/mongodb/laravel-mongodb/tree/5.1.1" + "security": "https://www.mongodb.com/security" }, - "time": "2025-01-06T09:22:28+00:00" + "time": "2026-04-15T12:18:12+00:00" }, { "name": "mongodb/mongodb", - "version": "1.20.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/mongodb/mongo-php-library.git", - "reference": "75da9ea3b63d97b05e0e8648d8c09a17bc54c0b6" + "reference": "bbb13f969e37e047fd822527543df55fdc1c9298" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/75da9ea3b63d97b05e0e8648d8c09a17bc54c0b6", - "reference": "75da9ea3b63d97b05e0e8648d8c09a17bc54c0b6", + "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/bbb13f969e37e047fd822527543df55fdc1c9298", + "reference": "bbb13f969e37e047fd822527543df55fdc1c9298", "shasum": "" }, "require": { "composer-runtime-api": "^2.0", - "ext-hash": "*", - "ext-json": "*", - "ext-mongodb": "^1.20.0", - "php": "^7.4 || ^8.0", + "ext-mongodb": "^2.2", + "php": "^8.1", "psr/log": "^1.1.4|^2|^3", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27" + "symfony/polyfill-php85": "^1.32" + }, + "replace": { + "mongodb/builder": "*" }, "require-dev": { "doctrine/coding-standard": "^12.0", - "rector/rector": "^1.1", + "phpunit/phpunit": "^10.5.35", + "rector/rector": "^2.3.4", "squizlabs/php_codesniffer": "^3.7", - "symfony/phpunit-bridge": "^5.2", - "vimeo/psalm": "^5.13" + "vimeo/psalm": "~6.14.2" }, "type": "library", "extra": { @@ -4588,9 +4598,9 @@ ], "support": { "issues": "https://github.com/mongodb/mongo-php-library/issues", - "source": "https://github.com/mongodb/mongo-php-library/tree/1.20.0" + "source": "https://github.com/mongodb/mongo-php-library/tree/2.2.0" }, - "time": "2024-09-25T12:54:08+00:00" + "time": "2026-02-11T11:39:56+00:00" }, { "name": "monolog/monolog", @@ -6569,31 +6579,34 @@ }, { "name": "spatie/laravel-permission", - "version": "6.25.0", + "version": "7.4.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-permission.git", - "reference": "d7d4cb0d58616722f1afc90e0484e4825155b9b3" + "reference": "ef42ecb781e5534d368a3853fa161e420ad51397" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/d7d4cb0d58616722f1afc90e0484e4825155b9b3", - "reference": "d7d4cb0d58616722f1afc90e0484e4825155b9b3", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/ef42ecb781e5534d368a3853fa161e420ad51397", + "reference": "ef42ecb781e5534d368a3853fa161e420ad51397", "shasum": "" }, "require": { - "illuminate/auth": "^8.12|^9.0|^10.0|^11.0|^12.0|^13.0", - "illuminate/container": "^8.12|^9.0|^10.0|^11.0|^12.0|^13.0", - "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0|^12.0|^13.0", - "illuminate/database": "^8.12|^9.0|^10.0|^11.0|^12.0|^13.0", - "php": "^8.0" + "illuminate/auth": "^12.0|^13.0", + "illuminate/container": "^12.0|^13.0", + "illuminate/contracts": "^12.0|^13.0", + "illuminate/database": "^12.0|^13.0", + "php": "^8.3", + "spatie/laravel-package-tools": "^1.0" }, "require-dev": { - "laravel/passport": "^11.0|^12.0|^13.0", + "larastan/larastan": "^3.9", + "laravel/passport": "^13.0", "laravel/pint": "^1.0", - "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0|^11.0", - "pestphp/pest": "^2.0|^3.0|^4.0", - "pestphp/pest-plugin-laravel": "^2.0|^3.0|^4.0" + "orchestra/testbench": "^10.0|^11.0", + "pestphp/pest": "^3.0|^4.0", + "pestphp/pest-plugin-laravel": "^3.0|^4.1", + "phpstan/phpstan": "^2.1" }, "type": "library", "extra": { @@ -6603,8 +6616,8 @@ ] }, "branch-alias": { - "dev-main": "6.x-dev", - "dev-master": "6.x-dev" + "dev-main": "7.x-dev", + "dev-master": "7.x-dev" } }, "autoload": { @@ -6627,7 +6640,7 @@ "role": "Developer" } ], - "description": "Permission handling for Laravel 8.0 and up", + "description": "Permission handling for Laravel 12 and up", "homepage": "https://github.com/spatie/laravel-permission", "keywords": [ "acl", @@ -6641,7 +6654,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-permission/issues", - "source": "https://github.com/spatie/laravel-permission/tree/6.25.0" + "source": "https://github.com/spatie/laravel-permission/tree/7.4.1" }, "funding": [ { @@ -6649,7 +6662,7 @@ "type": "github" } ], - "time": "2026-03-17T22:46:46+00:00" + "time": "2026-04-29T07:59:45+00:00" }, { "name": "spatie/shiki-php", @@ -8498,86 +8511,6 @@ ], "time": "2026-04-10T16:19:22+00:00" }, - { - "name": "symfony/polyfill-php81", - "version": "v1.37.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.37.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-09T11:45:10+00:00" - }, { "name": "symfony/polyfill-php83", "version": "v1.37.0", @@ -8658,6 +8591,86 @@ ], "time": "2026-04-10T17:25:58+00:00" }, + { + "name": "symfony/polyfill-php84", + "version": "v1.37.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06", + "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.37.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-04-10T18:47:49+00:00" + }, { "name": "symfony/polyfill-php85", "version": "v1.37.0", @@ -11725,11 +11738,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.53", + "version": "2.1.54", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ef67586798c003274797b288a68b221e4270dca7", - "reference": "ef67586798c003274797b288a68b221e4270dca7", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8be50c3992107dc837b17da4d140fbbdf9a5c5bd", + "reference": "8be50c3992107dc837b17da4d140fbbdf9a5c5bd", "shasum": "" }, "require": { @@ -11774,7 +11787,7 @@ "type": "github" } ], - "time": "2026-04-28T16:09:00+00:00" + "time": "2026-04-29T13:31:09+00:00" }, { "name": "phpunit/php-code-coverage", @@ -13580,12 +13593,12 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^8.3" }, - "platform-dev": {}, - "plugin-api-version": "2.9.0" + "platform-dev": [], + "plugin-api-version": "2.6.0" } diff --git a/resources/views/filament/tables/columns/statistik-event-column.blade.php b/resources/views/filament/tables/columns/statistik-event-column.blade.php new file mode 100644 index 00000000..37e4eaf5 --- /dev/null +++ b/resources/views/filament/tables/columns/statistik-event-column.blade.php @@ -0,0 +1,11 @@ +
+ {{ $getState() }} + + + + + + {{-- Modal content --}} + + +