Add leaderboard route with participants, and configure Shell brand colors in Tailwind

This commit is contained in:
ut-masekela
2026-03-25 01:27:18 +02:00
parent a88504357d
commit a63ea60860
10 changed files with 584 additions and 3 deletions

View File

@@ -0,0 +1,33 @@
<?php
namespace App\Filament\Resources\ParticipantResource\Pages;
use App\Filament\Resources\ParticipantResource;
use Filament\Resources\Pages\CreateRecord;
class CreateParticipant extends CreateRecord
{
protected static string $resource = ParticipantResource::class;
protected function mutateFormDataBeforeCreate(array $data): array
{
$minutes = (int) ($data['time_minutes'] ?? 0);
$seconds = (int) ($data['time_seconds'] ?? 0);
$milliseconds = (int) ($data['time_milliseconds'] ?? 0);
if ($minutes > 0 || $seconds > 0 || $milliseconds > 0) {
$data['time_ms'] = ($minutes * 60000) + ($seconds * 1000) + $milliseconds;
} else {
$data['time_ms'] = null;
}
unset($data['time_minutes'], $data['time_seconds'], $data['time_milliseconds']);
return $data;
}
protected function getRedirectUrl(): string
{
return $this->getResource()::getUrl('index');
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Filament\Resources\ParticipantResource\Pages;
use App\Filament\Resources\ParticipantResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
class EditParticipant extends EditRecord
{
protected static string $resource = ParticipantResource::class;
protected function getHeaderActions(): array
{
return [
Actions\DeleteAction::make(),
];
}
protected function mutateFormDataBeforeSave(array $data): array
{
$minutes = (int) ($data['time_minutes'] ?? 0);
$seconds = (int) ($data['time_seconds'] ?? 0);
$milliseconds = (int) ($data['time_milliseconds'] ?? 0);
if ($minutes > 0 || $seconds > 0 || $milliseconds > 0) {
$data['time_ms'] = ($minutes * 60000) + ($seconds * 1000) + $milliseconds;
} else {
$data['time_ms'] = null;
}
unset($data['time_minutes'], $data['time_seconds'], $data['time_milliseconds']);
return $data;
}
protected function getRedirectUrl(): string
{
return $this->getResource()::getUrl('index');
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Filament\Resources\ParticipantResource\Pages;
use App\Filament\Resources\ParticipantResource;
use Filament\Actions;
use Filament\Resources\Pages\ListRecords;
class ListParticipants extends ListRecords
{
protected static string $resource = ParticipantResource::class;
protected function getHeaderActions(): array
{
return [
Actions\CreateAction::make(),
];
}
}