diff --git a/app/Filament/Resources/DatabaseHostResource.php b/app/Filament/Resources/DatabaseHostResource.php index abfcc2ce9..cc53f6b4a 100644 --- a/app/Filament/Resources/DatabaseHostResource.php +++ b/app/Filament/Resources/DatabaseHostResource.php @@ -5,6 +5,7 @@ namespace App\Filament\Resources; use App\Filament\Resources\DatabaseHostResource\Pages; use App\Models\DatabaseHost; use Filament\Forms; +use Filament\Forms\Components\Section; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; @@ -22,40 +23,45 @@ class DatabaseHostResource extends Resource { return $form ->schema([ - Forms\Components\TextInput::make('host') - ->helperText('The IP address or Domain name that should be used when attempting to connect to this MySQL host from this Panel to create new databases.') - ->required() - ->live() - ->debounce(500) - ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('name', $state)) - ->maxLength(191), - Forms\Components\TextInput::make('port') - ->helperText('The port that MySQL is running on for this host.') - ->required() - ->numeric() - ->default(3306) - ->minValue(0) - ->maxValue(65535), - Forms\Components\TextInput::make('username') - ->helperText('The username of an account that has enough permissions to create new users and databases on the system.') - ->required() - ->maxLength(191), - Forms\Components\TextInput::make('password') - ->helperText('The password for the database user.') - ->password() - ->revealable() - ->maxLength(191) - ->required(), - Forms\Components\TextInput::make('name') - ->helperText('A short identifier used to distinguish this location from others. Must be between 1 and 60 characters, for example, us.nyc.lvl3.') - ->required() - ->maxLength(60), - Forms\Components\Select::make('node_id') - ->searchable() - ->preload() - ->helperText('This setting only defaults to this database host when adding a database to a server on the selected node.') - ->label('Linked Node') - ->relationship('node', 'name'), + Section::make()->schema([ + Forms\Components\TextInput::make('host') + ->helperText('The IP address or Domain name that should be used when attempting to connect to this MySQL host from this Panel to create new databases.') + ->required() + ->live() + ->debounce(500) + ->afterStateUpdated(fn ($state, Forms\Set $set) => $set('name', $state)) + ->maxLength(191), + Forms\Components\TextInput::make('port') + ->helperText('The port that MySQL is running on for this host.') + ->required() + ->numeric() + ->default(3306) + ->minValue(0) + ->maxValue(65535), + Forms\Components\TextInput::make('username') + ->helperText('The username of an account that has enough permissions to create new users and databases on the system.') + ->required() + ->maxLength(191), + Forms\Components\TextInput::make('password') + ->helperText('The password for the database user.') + ->password() + ->revealable() + ->maxLength(191) + ->required(), + Forms\Components\TextInput::make('name') + ->helperText('A short identifier used to distinguish this location from others. Must be between 1 and 60 characters, for example, us.nyc.lvl3.') + ->required() + ->maxLength(60), + Forms\Components\Select::make('node_id') + ->searchable() + ->preload() + ->helperText('This setting only defaults to this database host when adding a database to a server on the selected node.') + ->label('Linked Node') + ->relationship('node', 'name'), + ])->columns([ + 'default' => 1, + 'lg' => 2, + ]), ]); } diff --git a/app/Filament/Resources/ServerResource.php b/app/Filament/Resources/ServerResource.php index 8e7f5ed0b..b8df26613 100644 --- a/app/Filament/Resources/ServerResource.php +++ b/app/Filament/Resources/ServerResource.php @@ -7,7 +7,6 @@ use App\Models\Allocation; use App\Models\Egg; use App\Models\Node; use App\Models\Server; -use App\Repositories\Daemon\DaemonServerRepository; use App\Services\Allocations\AssignmentService; use Closure; use Filament\Forms; @@ -176,7 +175,9 @@ class ServerResource extends Resource 'ip', fn (Builder $query, Forms\Get $get, Forms\Components\Select $component, $state) => $query ->where('node_id', $get('../../node_id')) - ->whereNotIn('id', collect(($repeater = $component->getParentRepeater())->getState()) + ->whereNotIn( + 'id', + collect(($repeater = $component->getParentRepeater())->getState()) ->pluck( (string) str($component->getStatePath()) ->after("{$repeater->getStatePath()}.") @@ -441,66 +442,6 @@ class ServerResource extends Resource ]) ->required(), ]), - - Forms\Components\Textarea::make('startup') - ->hintIcon('tabler-code') - ->label('Startup Command') - ->required() - ->live() - ->rows(function ($state) { - return str($state)->explode("\n")->reduce( - fn (int $carry, $line) => $carry + floor(strlen($line) / 125), - 0 - ); - }) - ->columnSpanFull(), - - Forms\Components\Hidden::make('environment') - ->default([]) - ->columnSpanFull(), - - Forms\Components\Section::make('Egg Variables') - ->icon('tabler-eggs') - ->iconColor('primary') - ->collapsible() - ->collapsed() - ->schema([ - Forms\Components\Placeholder::make('Select an egg first to show its variables!') - ->hidden(fn (Forms\Get $get) => !empty($get('server_variables'))), - - Forms\Components\Repeater::make('server_variables') - ->relationship('serverVariables') - ->grid(2) - ->reorderable(false) - ->addable(false) - ->deletable(false) - ->default([]) - ->hidden(fn ($state) => empty($state)) - ->schema([ - Forms\Components\TextInput::make('variable_value') - ->rules([ - fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { - $validator = Validator::make(['validatorkey' => $value], [ - 'validatorkey' => $get('rules'), - ]); - - if ($validator->fails()) { - $message = str($validator->errors()->first())->replace('validatorkey', $get('name')); - - $fail($message); - } - }, - ]) - ->label(fn (Forms\Get $get) => $get('name')) - ->hint(fn (Forms\Get $get) => $get('rules')) - ->prefix(fn (Forms\Get $get) => '{{' . $get('env_variable') . '}}') - ->helperText(fn (Forms\Get $get) => empty($get('description')) ? '—' : $get('description')) - ->maxLength(191), - - Forms\Components\Hidden::make('variable_id')->default(0), - ]) - ->columnSpanFull(), - ]), ]); }