This commit is contained in:
salam committed 2026-09-09 08:36:31 +02:00
1 parent a05637d33d
commit 8bc59b96b3
8 files changed
+266 -236

No files matched your search

-1
View File
@@ -92,7 +92,6 @@ class Statistic extends BaseDashboard
->modalHeading('')
->label('Calculate')
->icon('icon-player')
->color('indigo')
->color(fn (): string => $this->filters['team_id'] ? 'primary' : 'gray')
->disabled(fn (): string => $this->filters['team_id'] ? false : true)
->slideOver()
+43 -12
View File
@@ -12,13 +12,15 @@ use Filament\Schemas\Concerns\InteractsWithSchemas;
use Filament\Schemas\Concerns\RestrictsFileUploadsToSchemaComponents;
use Filament\Schemas\Contracts\HasSchemas;
use Filament\Schemas\Schema;
use Filament\Support\Enums\Size;
use Filament\Support\Enums\SlideOverPosition;
use Filament\Support\Enums\Width;
use Filament\Tables\Columns\ViewColumn;
use Filament\Tables\Concerns\InteractsWithTable;
use Filament\Tables\Contracts\HasTable;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\HtmlString;
use Livewire\Attributes\On;
use Livewire\Component;
@@ -178,8 +180,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
public function getHeadingTable(): HtmlString
{
return new HtmlString('<div class="text-xl w-full">'.$this->ss_team_name.'</div>
<div class="text-[11px] p-0 flex flex-row gap-4 font-bold font-mono" style="position: relative; left: -2px; bottom: -13px;">
return new HtmlString('<div class="text-[11px] p-0 flex flex-row gap-4 font-bold font-mono" style="position: relative; left: -2px; bottom: -13px;">
<div>Gls</div>
<div>Fls</div>
<div>Ofs</div>
@@ -200,7 +201,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
Select::make('lineup_selected')
->live()
->hiddenLabel()
->columnSpan(1)
->columnSpan(2)
->prefix('Lineup')
->prefixIcon('icon-soccerplayer')
->searchable()
@@ -215,17 +216,44 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
{
return $table
->headerActions([
// FilamentView::registerRenderHook(
// PanelsRenderHook::GLOBAL_SEARCH_AFTER,
// fn (): View => view('filament.modals.position-abbreviation'),
// );
Action::make('close')
->size(Size::Small)
->tooltip('Close application')
->hiddenLabel()
->icon('phosphor-x')
->close(),
Action::make('lineups')
->size(Size::Small)
->tooltip('Lineup abbreviation explanation')
->hiddenLabel()
->icon('phosphor-question-mark')
->slideOver()
->slideOverPosition(SlideOverPosition::Start)
->modalWidth(Width::ExtraLarge)
->modalSubmitAction(false)
->modalCancelAction(false)
->modalContent(fn () => view('filament.modals.position-abbreviation')),
Action::make('reset')
->hiddenLabel()
->size(Size::Small)
->tooltip('Remove all players from field')
->icon('phosphor-arrows-clockwise')
->action(fn () => $this->clearAll()),
Action::make('calculate')
->hiddenLabel()
->tooltip('Calculate expected values')
->size(Size::Small)
->icon('phosphor-calculator')
->disabled($this->calculationDisabled)
->action(fn () => $this->calculateAspg()),
Action::make('copy')
->tooltip('Copy results for pasting into a spread sheet')
->hiddenLabel()
->size(Size::Small)
->icon('phosphor-copy')
->disabled($this->copyDisabled)
->action(fn () => $this->copyResult()),
@@ -242,17 +270,17 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
ViewColumn::make('drag_card')
->columnSpanFull()
->label(fn () => $this->getHeadingTable())
->view('filament.tables.columns.drag-card')
->extraAttributes([
// Limits height, forces scrollbar, and switches layout to block to respect max-height
'class' => 'max-h-[150px] overflow-y-auto block p-2 bg-gray-50 dark:bg-gray-900 rounded border border-gray-200 dark:border-gray-700',
]),
->view('filament.tables.columns.drag-card'),
])
->filters([
SelectFilter::make('player_position')
SelectFilter::make('position_area')
->columnSpanFull()
->native(false)
->options([
// 'attack' => 'Attack',
// 'midfield' => 'Midfield',
// 'defence' => 'Denfence',
// 'goalkeeper' => 'Goalkeeper',
'attack' => '<span class="text-amber-500">Attack</span>',
'midfield' => '<span class="text-blue-500">Midfield</span>',
'defence' => '<span class="text-green-500">Defence</span>',
@@ -260,14 +288,17 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
])->modifyFormFieldUsing(fn (Select $component) => $component->allowHtml())
->query(function ($query) {
return $query;
})->indicateUsing(function (array $data): array {
// WICHTIG: Ein leeres Array sorgt dafür, dass kein Indicator-Badge erzeugt wird
return [];
}),
], layout: FiltersLayout::AboveContent)
->deferFilters(false)
->records(function () {
$collection = collect($this->sourceRecords);
$selectedPosition = $this->tableFilters['player_position']['value'] ?? null;
$selectedPosition = $this->tableFilters['position_area']['value'] ?? null;
if (! empty($selectedPosition)) {
$collection = $collection->where('player_position', $selectedPosition);
$collection = $collection->where('position_area', $selectedPosition);
}
return $collection;
+9 -7
View File
@@ -89,23 +89,23 @@ class PlayerCalculator extends Component
if (in_array($val['player_position'], $positions_map['MIDFIELD'])) {
$player_position = $val['player_position'];
$player_position_field = 'midfield';
$position_area = 'midfield';
$player_color = 'info';
} elseif (in_array($val['player_position'], $positions_map['DEFENCE'])) {
$player_position = $val['player_position'];
$player_position_field = 'defence';
$position_area = 'defence';
$player_color = 'success';
} elseif (in_array($val['player_position'], $positions_map['ATTACK'])) {
$player_position = $val['player_position'];
$player_position_field = 'attack';
$position_area = 'attack';
$player_color = 'warning';
} elseif (in_array($val['player_position'], $positions_map['GOALKEEPER'])) {
$player_position = $val['player_position'];
$player_position_field = 'goalkeeper';
$position_area = 'goalkeeper';
$player_color = 'gray';
} else {
$player_position = 'NO SPECIFIC POSITION';
$player_position_field = 'non';
$position_area = 'non';
$player_color = 'danger';
}
@@ -127,7 +127,7 @@ class PlayerCalculator extends Component
'name' => $val['player_name'],
'preferred_foot' => $val['preferred_foot'],
'player_position' => $player_position,
'player_position_field' => $player_position_field,
'position_area' => $position_area,
'player_color' => $player_color,
'timed_color' => $timed_color,
'events_played' => $events_played,
@@ -144,7 +144,9 @@ class PlayerCalculator extends Component
];
}
$sort = array_column($result, 'player_position');
$pos = array_column($result, 'player_position');
$area = array_column($result, 'position_area');
array_multisort($area, SORT_ASC, $pos, SORT_ASC, $result);
return $result;
}
+5 -5
View File
@@ -13,7 +13,6 @@ use Filament\Support\Facades\FilamentTimezone;
use Filament\Support\Facades\FilamentView;
use Filament\Tables\View\TablesRenderHook;
use Filament\View\PanelsRenderHook;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\HtmlString;
use Illuminate\Support\ServiceProvider;
@@ -36,6 +35,7 @@ class AppServiceProvider extends ServiceProvider
FilamentTimezone::set('Europe/Vienna');
/** Alpine Plugin direct */
FilamentView::registerRenderHook(
'panels::head.end',
fn (): HtmlString => new HtmlString('
@@ -76,10 +76,10 @@ class AppServiceProvider extends ServiceProvider
fn (): string => Blade::render('@livewire(\'top-menu-items\')')
);
FilamentView::registerRenderHook(
PanelsRenderHook::GLOBAL_SEARCH_AFTER,
fn (): View => view('filament.modals.position-abbreviation'),
);
// FilamentView::registerRenderHook(
// PanelsRenderHook::GLOBAL_SEARCH_AFTER,
// fn (): View => view('filament.modals.position-abbreviation'),
// );
Carbon::setLocale(app()->getLocale());
+16
View File
@@ -11,6 +11,22 @@
@source '../../../../vendor/jaocero/radio-deck/resources/views';
@layer utilities {
/* Versteckt den Scrollbalken für Chrome, Safari und Opera */
.no-scrollbar::-webkit-scrollbar {
display: none;
}
/* Versteckt den Scrollbalken für IE, Edge und Firefox */
.no-scrollbar {
-ms-overflow-style: none;
/* IE and Edge */
scrollbar-width: none;
/* Firefox */
}
}
/* Reduce gap between widgets and content */
.fi-page-content {
@apply gap-y-5;
@@ -1,11 +1,4 @@
<x-filament::modal alignment="center" width="lg" slide-over>
<x-slot name="trigger">
<x-filament::icon-button icon="phosphor-question-fill" color="gray" size="lg"
tooltip="Player positions explanation of abbreviations" />
</x-slot>
<div class="font-bold">Player positions explanation of abbreviations</div>
<div>
<div x-data="{ activeTab: 'tab1' }">
<x-filament::tabs label="Content tabs">
<x-filament::tabs.item alpine-active="activeTab === 'tab1'" x-on:click="activeTab = 'tab1'">
@@ -27,143 +20,137 @@
<div class="m-4">
<div x-show="activeTab === 'tab1'">
<table class="border-separate text-xs border-spacing-y-1">
<thead>
<tr>
<th>Abbreviation</th>
<th>Description</th>
</tr>
</thead>
<table class="border-separate text-sm border-spacing-y-1">
<tbody>
<tr>
<td>ST</td>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td class="w-30 text-bold">ST</td>
<td>Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-AM</td>
<td>Centre-Forward, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-MC</td>
<td>Centre-Forward, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-DC</td>
<td>Centre-Forward, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-DM</td>
<td>Centre-Forward, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-ML</td>
<td>Centre-Forward, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-LW</td>
<td>Centre-Forward, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-DL</td>
<td>Centre-Forward, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-MR</td>
<td>Centre-Forward, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-RW</td>
<td>Centre-Forward, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ST-DR</td>
<td>Centre-Forward, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW</td>
<td>Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-AM</td>
<td>Left Winger, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-MC</td>
<td>Left Winger, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-DC</td>
<td>Left Winger, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-ST</td>
<td>Left Winger, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-DM</td>
<td>Left Winger, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-ML</td>
<td>Left Winger, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-DL</td>
<td>Left Winger, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-MR</td>
<td>Left Winger, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-RW</td>
<td>Left Winger, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>LW-DR</td>
<td>Left Winger, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW</td>
<td>Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-AM</td>
<td>Right Winger, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-MC</td>
<td>Right Winger, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-DC</td>
<td>Right Winger, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-ST</td>
<td>Right Winger, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-DM</td>
<td>Right Winger, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-ML</td>
<td>Right Winger, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-LW</td>
<td>Right Winger, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-DL</td>
<td>Right Winger, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-MR</td>
<td>Right Winger, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>RW-DR</td>
<td>Right Winger, Right-Back</td>
</tr>
@@ -171,374 +158,362 @@
</table>
</div>
<div x-show="activeTab === 'tab2'">
<table class="border-separate text-xs border-spacing-y-1">
<thead>
<tr>
<th>Abbreviation</th>
<th>Description</th>
</tr>
</thead>
<table class="border-separate text-sm border-spacing-y-1">
<tbody>
<tr>
<td>DC</td>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td class="w-30 text-bold">DC</td>
<td>Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL</td>
<td>Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR</td>
<td>Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-AM</td>
<td>Centre-Back, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-AM</td>
<td>Left-Back, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-AM</td>
<td>Right-Back, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-DC</td>
<td>Left-Back, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-DC</td>
<td>Right-Back, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-DL</td>
<td>Centre-Back, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-DL</td>
<td>Right-Back, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-DM</td>
<td>Centre-Back, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-DM</td>
<td>Left-Back, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-DM</td>
<td>Right-Back, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-DR</td>
<td>Centre-Back, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-DR</td>
<td>Left-Back, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-LW</td>
<td>Centre-Back, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-LW</td>
<td>Left-Back, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-LW</td>
<td>Right-Back, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-MC</td>
<td>Centre-Back, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-MC</td>
<td>Left-Back, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-MC</td>
<td>Right-Back, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-ML</td>
<td>Centre-Back, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-ML</td>
<td>Left-Back, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-ML</td>
<td>Right-Back, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-MR</td>
<td>Centre-Back, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-MR</td>
<td>Left-Back, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-MR</td>
<td>Right-Back, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-RW</td>
<td>Centre-Back, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-RW</td>
<td>Left-Back, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-RW</td>
<td>Right-Back, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DC-ST</td>
<td>Centre-Back, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DL-ST</td>
<td>Left-Back, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DR-ST</td>
<td>Right-Back, Centre-Forward
</tbody>
</table>
</div>
<div x-show="activeTab === 'tab3'">
<table class="border-separate text-xs border-spacing-y-1">
<thead>
<tr>
<th>Abbreviation</th>
<th>Description</th>
</tr>
</thead>
<table class="border-separate text-sm border-spacing-y-1">
<tbody>
<tr>
<td>AM</td>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td class="w-30 text-bold">AM</td>
<td>Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM</td>
<td>Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC</td>
<td>Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML</td>
<td>Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR</td>
<td>Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-AM</td>
<td>Defensive Midfield, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-AM</td>
<td>Central Midfield, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-AM</td>
<td>Left Midfield, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-AM</td>
<td>Right Midfield, Attacking Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-DC</td>
<td>Attacking Midfield, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-DC</td>
<td>Defensive Midfield, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-DC</td>
<td>Central Midfield, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-DC</td>
<td>Left Midfield, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-DC</td>
<td>Right Midfield, Centre-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-DL</td>
<td>Attacking Midfield, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-DL</td>
<td>Defensive Midfield, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-DL</td>
<td>Central Midfield, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-DL</td>
<td>Left Midfield, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-DL</td>
<td>Right Midfield, Left-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-DM</td>
<td>Attacking Midfield, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-DM</td>
<td>Central Midfield, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-DM</td>
<td>Left Midfield, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-DM</td>
<td>Right Midfield, Defensive Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-DR</td>
<td>Attacking Midfield, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-DR</td>
<td>Defensive Midfield, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-DR</td>
<td>Central Midfield, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-DR</td>
<td>Left Midfield, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-DR</td>
<td>Right Midfield, Right-Back</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-LW</td>
<td>Attacking Midfield, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-LW</td>
<td>Defensive Midfield, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-LW</td>
<td>Central Midfield, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-LW</td>
<td>Left Midfield, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-LW</td>
<td>Right Midfield, Left Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-MC</td>
<td>Attacking Midfield, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-MC</td>
<td>Defensive Midfield, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-MC</td>
<td>Left Midfield, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-MC</td>
<td>Right Midfield, Central Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-ML</td>
<td>Attacking Midfield, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-ML</td>
<td>Defensive Midfield, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-ML</td>
<td>Central Midfield, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-ML</td>
<td>Right Midfield, Left Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-MR</td>
<td>Attacking Midfield, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-MR</td>
<td>Defensive Midfield, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-MR</td>
<td>Central Midfield, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-MR</td>
<td>Left Midfield, Right Midfield</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-RW</td>
<td>Attacking Midfield, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-RW</td>
<td>Defensive Midfield, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-RW</td>
<td>Central Midfield, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-RW</td>
<td>Left Midfield, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-RW</td>
<td>Right Midfield, Right Winger</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>AM-ST</td>
<td>Attacking Midfield, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>DM-ST</td>
<td>Defensive Midfield, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MC-ST</td>
<td>Central Midfield, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>ML-ST</td>
<td>Left Midfield, Centre-Forward</td>
</tr>
<tr>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td>MR-ST</td>
<td>Right Midfield, Centre-Forward</td>
</tr>
@@ -546,16 +521,10 @@
</table>
</div>
<div x-show="activeTab === 'tab4'">
<table class="border-separate text-xs border-spacing-y-1">
<thead>
<tr>
<th>Abbreviation</th>
<th>Description</th>
</tr>
</thead>
<table class="border-separate text-sm border-spacing-y-1">
<tbody>
<tr>
<td>GK</td>
<tr class="even:bg-gray-100 dark:even:bg-gray-800">
<td class="w-30 text-bold">GK</td>
<td>Goaldkeeper</td>
</tr>
</tbody>
@@ -563,4 +532,4 @@
</div>
</div>
</div>
</x-filament::modal>
</div>
@@ -3,7 +3,7 @@
@endphp
@if ($record['active'])
<div draggable="false"
class="border dark:border-gray-600 border-gray-200 w-full text-xs my-1 py-1 select-none rounded transition-colors flex justify-end content-center items-center gap-1">
class="w-140 max-w-140 border dark:border-gray-600 border-gray-200 text-xs my-0.5 py-1 select-none rounded transition-colors flex justify-end content-center items-center gap-1">
<div class="w-86 text-[11px] min-w-86 text-center grid grid-cols-10 content-center items-center gap-1">
<div>{{ $record['gls'] }}</div>
<div>{{ $record['fls'] }}</div>
@@ -33,7 +33,7 @@
e.dataTransfer.effectAllowed = 'copy';
e.dataTransfer.setData('text/plain', JSON.stringify({ id: {{ $record['id'] }} }));
}"
class="border dark:border-gray-600 border-gray-200 w-full text-xs my-0.5 py-1 select-none cursor-grab active:cursor-grabbing rounded transition-colors flex justify-end content-center items-center gap-1">
class="w-140 max-w-140 border dark:border-gray-600 border-gray-200 text-xs my-0.5 mx-0 py-1 select-none cursor-grab active:cursor-grabbing rounded transition-colors flex justify-end content-center items-center gap-1">
<div class="w-86 text-[11px] min-w-86 text-center grid grid-cols-10 content-center items-center gap-1">
<div>{{ $record['gls'] }}</div>
<div>{{ $record['fls'] }}</div>
@@ -1,59 +1,72 @@
@php
use Illuminate\Support\Facades\Log;
@endphp
<div class="w-full flex flex-row gap-3">
<div class="dispatcher-board-root w-2xl min-w-2xl">
<div class="relative w-full">
<div class="fixed left-0 top-0 h-screen dispatcher-board-root w-146 max-w-146 overflow-y-auto no-scrollbar">
{{ $this->table }}
</div>
<div class="w-full">
<div class="m-4">
{{ $this->form }}
<div class="fixed left-147 top-0 right-0 bottom-0 h-screen py-21 max-w-4xl">
<div class="m-4 flex flex-row">
<div>{{ $this->form }}</div>
<div class="font-black text-xl">{{ $ss_team_name }}</div>
</div>
<div class="relative top-4 rounded col-span-5 grid grid-cols-7 grid-rows-5 p-5 gap-2 bg-cover bg-center bg-no-repeat aspect-7/5"
<div class="mx-3 p-5 rounded col-span-5 grid grid-cols-7 grid-rows-5 gap-2 bg-cover bg-center bg-no-repeat aspect-7/5"
style="background-image: url({{ asset('images/soccerfield-cleand.jpg') }});">
@foreach ($beschriftung as $boxNumber => $benennung)
@if ($benennung && in_array($boxNumber, $lineup))
<div x-data="{ isOver: false }" @dragover.prevent="isOver = true" @dragenter.prevent="isOver = true"
@dragleave.prevent="isOver = false"
@drop.prevent="
isOver = false;
const rawData = $event.dataTransfer.getData('text/plain');
if (rawData) {
const elementData = JSON.parse(rawData);
$wire.dispatch('element-dropped-in-box', { elementData: elementData, boxNumber: {{ $boxNumber }} });
}
"
:class="isOver ? 'border-primary-500 bg-primary-500/10 ring-2 ring-primary-500/50 scale-[1.02]' :
@if (in_array($benennung, ['SW', 'DR', 'DC', 'DL']))
'border-gray-800 bg-green-500/30'
@elseif (in_array($benennung, ['DM', 'MR', 'MC', 'ML', 'AM']))
'border-gray-800 bg-blue-500/30'
@else
'border-gray-800 bg-amber-500/30'
@endif
"
class="border rounded-xl transition-all pt-0 flex flex-col justify-start shadow-2xs transform">
<!-- Box Header -->
<div class="grid grid-cols-6 items-center p-1">
<div></div>
<div
class="w-16 text-center mx-auto bg-black text-white p-1 text-xl font-black rounded col-span-4">
{{ $benennung }}
@if ($benennung)
@if(in_array($boxNumber, $lineup))
<div x-data="{ isOver: false }" @dragover.prevent="isOver = true" @dragenter.prevent="isOver = true"
@dragleave.prevent="isOver = false"
@drop.prevent="
isOver = false;
const rawData = $event.dataTransfer.getData('text/plain');
if (rawData) {
const elementData = JSON.parse(rawData);
$wire.dispatch('element-dropped-in-box', { elementData: elementData, boxNumber: {{ $boxNumber }} });
}
"
:class="isOver ? 'border-red-500 bg-white/20 ring-2 ring-red-500/50 scale-[1.02]' :
@if (in_array($benennung, ['SW', 'DR', 'DC', 'DL']))
'border-gray-800 bg-green-500/30'
@elseif (in_array($benennung, ['DM', 'MR', 'MC', 'ML', 'AM']))
'border-gray-800 bg-blue-500/30'
@else
'border-gray-800 bg-amber-500/30'
@endif
"
class="border rounded-xl transition-all pt-0 flex flex-col justify-start transform">
<!-- Box Header -->
<div class="grid grid-cols-6 items-center">
<div></div>
<div
class="w-10 2xl:w-16 text-center mx-auto bg-black text-white p-0.5 2xl:p-1 text-md 2xl:text-xl font-black rounded-b col-span-4">
{{ $benennung }}
</div>
@if ($boxes[$boxNumber])
<x-filament::icon-button icon="heroicon-m-trash" color="danger"
wire:click="clearBox({{ $boxNumber }})" />
@endif
</div>
<!-- Box Inhalt -->
@if ($boxes[$boxNumber])
<x-filament::icon-button icon="heroicon-m-trash" color="danger"
wire:click="clearBox({{ $boxNumber }})" />
<div class=" bg-black text-white p-0.5 2xl:p-1 m-0.5 rounded leading-4 2xl:leading-5 text-ms">
{{ $boxes[$boxNumber]['name'] }}
</div>
@endif
</div>
<!-- Box Inhalt -->
@if ($boxes[$boxNumber])
<div class=" bg-black text-white p-1 m-2 rounded leading-5">
{{ $boxes[$boxNumber]['name'] }}
</div>
@endif
</div>
@else
<div x-data="{ isOver: false }" @dragover.prevent="isOver = true" @dragenter.prevent="isOver = true"
@dragleave.prevent="isOver = false"
@drop.prevent="
isOver = false;
const rawData = $event.dataTransfer.getData('text/plain');
if (rawData) {
const elementData = JSON.parse(rawData);
$wire.dispatch('element-dropped-in-box', { elementData: elementData, boxNumber: {{ $boxNumber }} });
}
"
class="border rounded-xl transition-all pt-0 flex flex-col justify-start shadow-2xs invisible">
</div>
@endif
@else
<div></div>
@endif