wip copy data from statistiko

This commit is contained in:
salam committed 2026-09-27 18:27:36 +02:00
1 parent 750b8bc571
commit 31dd27dd73
2 files changed
+103 -2

No files matched your search

+101 -2
View File
@@ -6,6 +6,7 @@ use App\Actions\LoadSofaScoreCategory;
use App\Actions\LoadStatisticFixturesLeaguesOptions; use App\Actions\LoadStatisticFixturesLeaguesOptions;
use App\Actions\LoadStatisticFixturesMatchOptions; use App\Actions\LoadStatisticFixturesMatchOptions;
use App\Filament\Pages\Selections\LoadPlayerSelection; use App\Filament\Pages\Selections\LoadPlayerSelection;
use App\Filament\Widgets\Boxes\LoadEventsBoxes;
use App\Models\SofaScoreCategory; use App\Models\SofaScoreCategory;
use App\Models\SofaScoreRosa; use App\Models\SofaScoreRosa;
use App\Models\StatisticFixtures; use App\Models\StatisticFixtures;
@@ -17,6 +18,7 @@ use Filament\Forms\Components\Hidden;
use Filament\Forms\Components\Radio; use Filament\Forms\Components\Radio;
use Filament\Forms\Components\Select; use Filament\Forms\Components\Select;
use Filament\Forms\Components\Slider; use Filament\Forms\Components\Slider;
use Filament\Notifications\Notification;
use Filament\Pages\Dashboard as BaseDashboard; use Filament\Pages\Dashboard as BaseDashboard;
use Filament\Pages\Dashboard\Concerns\HasFiltersForm; use Filament\Pages\Dashboard\Concerns\HasFiltersForm;
use Filament\Schemas\Components\Actions; use Filament\Schemas\Components\Actions;
@@ -490,12 +492,109 @@ class Statistic extends BaseDashboard
->tooltip('Copy data for pasting into spreadsheet') ->tooltip('Copy data for pasting into spreadsheet')
->color('success') ->color('success')
->icon('phosphor-copy') ->icon('phosphor-copy')
->action('resetFilters'), ->action(function ($livewire) {
]) // 1. Call your custom Livewire function to generate the data
$dataToCopy = $livewire->generateDynamicPayload();
$this->js("navigator.clipboard.writeText(`$dataToCopy`)");
// 3. Send a helpful Filament Toast notification to the UI
Notification::make()
->title('Copied to clipboard!')
->success()
->send();
}),
]),
]), ]),
]); ]);
} }
public function generateDynamicPayload(): string
{
$data = LoadEventsBoxes::load($this->filters, false);
$header = ['Team', 'Event', 'Odd 1', 'Odd X', 'Odd 2', 'Category', 'EXP H', 'EXP A', 'AGV+', 'AGV-', 'AGV Team Season H', 'AGV Team Season A', 'AGV League H', 'AGV League A'];
$copystring = implode(';', $header)."\n";
$row = [];
$row[] = $data['active_team'];
$row[] = $data['count_events'];
$row[] = $data['win_odd'];
$row[] = $data['draw_odd'];
$row[] = $data['lost_odd'];
$row[] = 'Goals';
$row[] = $data['gls']['home'];
$row[] = $data['gls']['away'];
$row[] = $data['gls_team']['home'];
$row[] = $data['gls_team']['away'];
$row[] = $data['gls_team_season']['home'];
$row[] = $data['gls_team_season']['away'];
$row[] = $data['gls_liga_season']['home'];
$row[] = $data['gls_liga_season']['away'];
$copystring .= implode(';', $row)."\n";
$row = [];
$row = array_fill(0, 5, '');
$row[] = 'Fouls';
$row[] = $data['fls']['home'];
$row[] = $data['fls']['away'];
$row[] = $data['fls_team']['home'];
$row[] = $data['fls_team']['away'];
$row[] = $data['fls_team_season']['home'];
$row[] = $data['fls_team_season']['away'];
$row[] = $data['fls_liga_season']['home'];
$row[] = $data['fls_liga_season']['away'];
$copystring .= implode(';', $row)."\n";
$row = [];
$row = array_fill(0, 5, '');
$row[] = 'Offside';
$row[] = $data['ofs']['home'];
$row[] = $data['ofs']['away'];
$row[] = $data['ofs_team']['home'];
$row[] = $data['ofs_team']['away'];
$row[] = $data['ofs_team_season']['home'];
$row[] = $data['ofs_team_season']['away'];
$row[] = $data['ofs_liga_season']['home'];
$row[] = $data['ofs_liga_season']['away'];
$copystring .= implode(';', $row)."\n";
$row = [];
$row = array_fill(0, 5, '');
$row[] = 'Cards';
$row[] = $data['crd']['home'];
$row[] = $data['crd']['away'];
$row[] = $data['crd_team']['home'];
$row[] = $data['crd_team']['away'];
$row[] = $data['crd_team_season']['home'];
$row[] = $data['crd_team_season']['away'];
$row[] = $data['crd_liga_season']['home'];
$row[] = $data['crd_liga_season']['away'];
$copystring .= implode(';', $row)."\n";
$row = [];
$row = array_fill(0, 5, '');
$row[] = 'Shots on traget';
$row[] = $data['snt']['home'];
$row[] = $data['snt']['away'];
$row[] = $data['snt_team']['home'];
$row[] = $data['snt_team']['away'];
$row[] = $data['snt_team_season']['home'];
$row[] = $data['snt_team_season']['away'];
$row[] = $data['snt_liga_season']['home'];
$row[] = $data['snt_liga_season']['away'];
$copystring .= implode(';', $row)."\n";
$row = [];
$row = array_fill(0, 5, '');
$row[] = 'Total Shots';
$row[] = $data['tsh']['home'];
$row[] = $data['tsh']['away'];
$row[] = $data['tsh_team']['home'];
$row[] = $data['tsh_team']['away'];
$row[] = $data['tsh_team_season']['home'];
$row[] = $data['tsh_team_season']['away'];
$row[] = $data['tsh_liga_season']['home'];
$row[] = $data['tsh_liga_season']['away'];
$copystring .= implode(';', $row)."\n";
return $copystring;
}
protected function tooltip_similar_past_matches(): HtmlString protected function tooltip_similar_past_matches(): HtmlString
{ {
$str = '<div class="m-3 grid grid-cols-4 gap-2 max-w-lg">'; $str = '<div class="m-3 grid grid-cols-4 gap-2 max-w-lg">';
+2
View File
@@ -33,6 +33,8 @@ class BoxesBettypeAll extends StatsOverviewWidget
{ {
$data = LoadEventsBoxes::load($this->filters, false); $data = LoadEventsBoxes::load($this->filters, false);
// dd($data);
$similar_past_matches = $this->filters['similar_past_matches']; $similar_past_matches = $this->filters['similar_past_matches'];
$team_position = $this->filters['team_position']; $team_position = $this->filters['team_position'];