2024-04-18 03:48:30 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Enums;
|
|
|
|
|
|
2026-01-27 11:36:07 +01:00
|
|
|
use BackedEnum;
|
2025-03-06 15:55:00 +01:00
|
|
|
use Filament\Support\Contracts\HasColor;
|
|
|
|
|
use Filament\Support\Contracts\HasIcon;
|
|
|
|
|
use Filament\Support\Contracts\HasLabel;
|
|
|
|
|
|
|
|
|
|
enum ServerState: string implements HasColor, HasIcon, HasLabel
|
2024-04-18 03:48:30 -04:00
|
|
|
{
|
|
|
|
|
case Installing = 'installing';
|
|
|
|
|
case InstallFailed = 'install_failed';
|
|
|
|
|
case ReinstallFailed = 'reinstall_failed';
|
|
|
|
|
case Suspended = 'suspended';
|
|
|
|
|
case RestoringBackup = 'restoring_backup';
|
|
|
|
|
|
2026-01-27 11:36:07 +01:00
|
|
|
public function getIcon(): BackedEnum
|
2024-04-18 03:48:30 -04:00
|
|
|
{
|
|
|
|
|
return match ($this) {
|
2026-01-27 11:36:07 +01:00
|
|
|
self::Installing => TablerIcon::HeartBolt,
|
|
|
|
|
self::InstallFailed, self::ReinstallFailed => TablerIcon::HeartX,
|
|
|
|
|
self::Suspended => TablerIcon::HeartCancel,
|
|
|
|
|
self::RestoringBackup => TablerIcon::HeartUp,
|
2024-04-18 03:48:30 -04:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-12 08:54:00 +02:00
|
|
|
public function getColor(bool $hex = false): string
|
2024-04-18 03:48:30 -04:00
|
|
|
{
|
2025-06-12 08:54:00 +02:00
|
|
|
if ($hex) {
|
|
|
|
|
return match ($this) {
|
2025-07-31 23:02:27 +02:00
|
|
|
self::Installing, self::RestoringBackup => '#2563EB',
|
2025-06-12 08:54:00 +02:00
|
|
|
self::Suspended => '#D97706',
|
|
|
|
|
self::InstallFailed, self::ReinstallFailed => '#EF4444',
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-18 03:48:30 -04:00
|
|
|
return match ($this) {
|
2024-04-29 21:34:27 -04:00
|
|
|
self::Installing => 'primary',
|
2024-04-18 03:48:30 -04:00
|
|
|
self::InstallFailed => 'danger',
|
|
|
|
|
self::ReinstallFailed => 'danger',
|
2024-04-29 21:34:27 -04:00
|
|
|
self::Suspended => 'warning',
|
|
|
|
|
self::RestoringBackup => 'primary',
|
2024-04-18 03:48:30 -04:00
|
|
|
};
|
|
|
|
|
}
|
2025-03-06 15:55:00 +01:00
|
|
|
|
|
|
|
|
public function getLabel(): string
|
|
|
|
|
{
|
|
|
|
|
return str($this->value)->headline();
|
|
|
|
|
}
|
2024-04-18 03:48:30 -04:00
|
|
|
}
|