From b80633bcc7519a5f28820ed161202a464a3a9b87 Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Tue, 9 Apr 2024 22:02:34 -0400 Subject: [PATCH 1/5] show status as badge --- app/Filament/Resources/ResultResource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Filament/Resources/ResultResource.php b/app/Filament/Resources/ResultResource.php index 36f06d412..26f408f92 100644 --- a/app/Filament/Resources/ResultResource.php +++ b/app/Filament/Resources/ResultResource.php @@ -216,6 +216,7 @@ public static function table(Table $table): Table ->toggleable() ->toggledHiddenByDefault(), Tables\Columns\TextColumn::make('status') + ->badge() ->toggleable() ->sortable(), Tables\Columns\IconColumn::make('scheduled') From 6fa95ef036d2b2a4ba7175a2ab4edc5577479a04 Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Tue, 9 Apr 2024 22:05:21 -0400 Subject: [PATCH 2/5] added label specifics --- app/Enums/ResultStatus.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/Enums/ResultStatus.php b/app/Enums/ResultStatus.php index 9deb24443..9445e03b8 100644 --- a/app/Enums/ResultStatus.php +++ b/app/Enums/ResultStatus.php @@ -11,11 +11,6 @@ enum ResultStatus: string implements HasColor, HasLabel case Failed = 'failed'; // a speedtest that failed to run successfully. case Started = 'started'; // a speedtest that has been started by a worker but has not finish running. - public function getLabel(): ?string - { - return $this->name; - } - public function getColor(): ?string { return match ($this) { @@ -24,4 +19,13 @@ public function getColor(): ?string self::Started => 'warning', }; } + + public function getLabel(): ?string + { + return match ($this) { + self::Completed => 'Completed', + self::Failed => 'Failed', + self::Started => 'Started', + }; + } } From ab63ba35c243a83a6118fed68d9987494a84350d Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Tue, 9 Apr 2024 22:09:18 -0400 Subject: [PATCH 3/5] added user role enum --- app/Enums/UserRole.php | 28 ++++++++++++++++++++++++++++ app/Models/User.php | 7 ++++--- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 app/Enums/UserRole.php diff --git a/app/Enums/UserRole.php b/app/Enums/UserRole.php new file mode 100644 index 000000000..7154ae8c8 --- /dev/null +++ b/app/Enums/UserRole.php @@ -0,0 +1,28 @@ + 'success', + self::User => 'gray', + }; + } + + public function getLabel(): ?string + { + return match ($this) { + self::Admin => 'Admin', + self::User => 'User', + }; + } +} diff --git a/app/Models/User.php b/app/Models/User.php index da3bfa37c..f1c90bbb0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,9 +2,9 @@ namespace App\Models; +use App\Enums\UserRole; use Filament\Models\Contracts\FilamentUser; use Filament\Panel; -// use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; @@ -46,6 +46,7 @@ class User extends Authenticatable implements FilamentUser protected $casts = [ 'email_verified_at' => 'datetime', 'password' => 'hashed', + 'role' => UserRole::class, ]; /** @@ -62,7 +63,7 @@ public function canAccessPanel(Panel $panel): bool protected function isAdmin(): Attribute { return Attribute::make( - get: fn (mixed $value, array $attributes): bool => $attributes['role'] == 'admin', + get: fn (): bool => $this->role === UserRole::Admin, ); } @@ -72,7 +73,7 @@ protected function isAdmin(): Attribute protected function isUser(): Attribute { return Attribute::make( - get: fn (mixed $value, array $attributes): bool => $attributes['role'] == 'user', + get: fn (): bool => $this->role === UserRole::User, ); } } From 1901da2f59f3592599da11a639212e9a1ec961fe Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Tue, 9 Apr 2024 22:15:55 -0400 Subject: [PATCH 4/5] updated user resource --- app/Filament/Resources/UserResource.php | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index 3d034555b..bc6eab6b3 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources; +use App\Enums\UserRole; use App\Filament\Resources\UserResource\Pages; use App\Filament\Resources\UserResource\Pages\CreateUser; use App\Filament\Resources\UserResource\Pages\EditUser; @@ -11,6 +12,7 @@ use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\HtmlString; use Illuminate\Validation\Rules\Password; @@ -71,12 +73,8 @@ public static function form(Form $form): Form Forms\Components\Section::make() ->schema([ Forms\Components\Select::make('role') - ->options([ - 'admin' => 'Admin', - 'user' => 'User', - ]) - ->default('user') - ->disabled(fn (): bool => ! auth()->user()->is_admin || auth()->user()->is_user) + ->options(UserRole::class) + ->disabled(fn (): bool => ! Auth::user()->is_admin) ->required(), ]) ->columns(1) @@ -116,20 +114,14 @@ public static function table(Table $table): Table ->searchable(), Tables\Columns\TextColumn::make('role') ->badge() - ->color(fn (string $state): string => match ($state) { - 'admin' => 'success', - 'user' => 'gray', - }), + ->color(UserRole::class), Tables\Columns\TextColumn::make('updated_at') ->label('Last updated') - ->dateTime(), + ->dateTime('M. d, Y g:ia'), ]) ->filters([ Tables\Filters\SelectFilter::make('role') - ->options([ - 'admin' => 'Admin', - 'user' => 'User', - ]), + ->options(UserRole::class), ]) ->actions([ Tables\Actions\ActionGroup::make([ From 8952a54c4b74d890efd067668a2eddf438a74b4d Mon Sep 17 00:00:00 2001 From: Alex Justesen Date: Tue, 9 Apr 2024 22:20:25 -0400 Subject: [PATCH 5/5] user model dates --- app/Filament/Resources/UserResource.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php index bc6eab6b3..9256ed6f1 100644 --- a/app/Filament/Resources/UserResource.php +++ b/app/Filament/Resources/UserResource.php @@ -6,7 +6,9 @@ use App\Filament\Resources\UserResource\Pages; use App\Filament\Resources\UserResource\Pages\CreateUser; use App\Filament\Resources\UserResource\Pages\EditUser; +use App\Helpers\TimeZoneHelper; use App\Models\User; +use App\Settings\GeneralSettings; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; @@ -104,6 +106,8 @@ public static function form(Form $form): Form public static function table(Table $table): Table { + $settings = new GeneralSettings(); + return $table ->columns([ Tables\Columns\TextColumn::make('id') @@ -115,9 +119,15 @@ public static function table(Table $table): Table Tables\Columns\TextColumn::make('role') ->badge() ->color(UserRole::class), + Tables\Columns\TextColumn::make('created_at') + ->alignEnd() + ->dateTime($settings->time_format ?? 'M j, Y G:i:s') + ->timezone(TimeZoneHelper::displayTimeZone($settings)), Tables\Columns\TextColumn::make('updated_at') - ->label('Last updated') - ->dateTime('M. d, Y g:ia'), + ->alignEnd() + ->dateTime($settings->time_format ?? 'M j, Y G:i:s') + ->timezone(TimeZoneHelper::displayTimeZone($settings)) + ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ Tables\Filters\SelectFilter::make('role')