mirror of
https://github.com/pelican-dev/panel.git
synced 2025-09-08 22:38:40 +02:00
finish admin frontend
This commit is contained in:
parent
b966fe1efe
commit
a59a84538c
@ -39,7 +39,6 @@ use Filament\Resources\Pages\CreateRecord;
|
|||||||
use Filament\Support\Exceptions\Halt;
|
use Filament\Support\Exceptions\Halt;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Arr;
|
|
||||||
use Illuminate\Support\Facades\Blade;
|
use Illuminate\Support\Facades\Blade;
|
||||||
use Illuminate\Support\HtmlString;
|
use Illuminate\Support\HtmlString;
|
||||||
use LogicException;
|
use LogicException;
|
||||||
@ -317,7 +316,7 @@ class CreateServer extends CreateRecord
|
|||||||
->live()
|
->live()
|
||||||
->afterStateUpdated(function ($state, Set $set, Get $get, $old) {
|
->afterStateUpdated(function ($state, Set $set, Get $get, $old) {
|
||||||
$egg = Egg::query()->find($state);
|
$egg = Egg::query()->find($state);
|
||||||
$set('startup', Arr::first($egg->startup_commands, default: ''));
|
$set('startup', '');
|
||||||
$set('image', '');
|
$set('image', '');
|
||||||
|
|
||||||
$variables = $egg->variables ?? [];
|
$variables = $egg->variables ?? [];
|
||||||
@ -391,23 +390,44 @@ class CreateServer extends CreateRecord
|
|||||||
])
|
])
|
||||||
->inline(),
|
->inline(),
|
||||||
|
|
||||||
Textarea::make('startup')
|
Select::make('select_startup')
|
||||||
|
->label(trans('admin/server.startup_name'))
|
||||||
|
->hidden(fn (Get $get) => $get('egg_id') === null)
|
||||||
|
->live()
|
||||||
|
->afterStateUpdated(fn (Set $set, $state) => $set('startup', $state))
|
||||||
|
->options(function ($state, Get $get, Set $set) {
|
||||||
|
$egg = Egg::query()->find($get('egg_id'));
|
||||||
|
$startups = $egg->startup_commands ?? [];
|
||||||
|
|
||||||
|
$currentStartup = $get('startup');
|
||||||
|
if (!$currentStartup && $startups) {
|
||||||
|
$currentStartup = collect($startups)->first();
|
||||||
|
$set('startup', $currentStartup);
|
||||||
|
$set('select_startup', $currentStartup);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array_flip($startups) + ['' => 'Custom Startup'];
|
||||||
|
})
|
||||||
|
->selectablePlaceholder(false)
|
||||||
|
->columnSpanFull(),
|
||||||
|
|
||||||
|
TextInput::make('startup')
|
||||||
->label(trans('admin/server.startup_cmd'))
|
->label(trans('admin/server.startup_cmd'))
|
||||||
->hidden(fn (Get $get) => $get('egg_id') === null)
|
->hidden(fn (Get $get) => $get('egg_id') === null)
|
||||||
->required()
|
->required()
|
||||||
->live()
|
->live()
|
||||||
->rows(function ($state) {
|
->afterStateUpdated(function ($state, Get $get, Set $set) {
|
||||||
return str($state)->explode("\n")->reduce(
|
$egg = Egg::query()->find($get('egg_id'));
|
||||||
fn (int $carry, $line) => $carry + floor(strlen($line) / 125),
|
$startups = $egg->startup_commands ?? [];
|
||||||
1
|
|
||||||
);
|
if (in_array($state, $startups)) {
|
||||||
|
$set('select_startup', $state);
|
||||||
|
} else {
|
||||||
|
$set('select_startup', '');
|
||||||
|
}
|
||||||
})
|
})
|
||||||
->columnSpan([
|
->placeholder(trans('admin/server.startup_placeholder'))
|
||||||
'default' => 1,
|
->columnSpanFull(),
|
||||||
'sm' => 4,
|
|
||||||
'md' => 4,
|
|
||||||
'lg' => 6,
|
|
||||||
]),
|
|
||||||
|
|
||||||
Hidden::make('environment')->default([]),
|
Hidden::make('environment')->default([]),
|
||||||
|
|
||||||
|
@ -593,26 +593,47 @@ class EditServer extends EditRecord
|
|||||||
true => 'tabler-code-off',
|
true => 'tabler-code-off',
|
||||||
])
|
])
|
||||||
->required(),
|
->required(),
|
||||||
|
|
||||||
Hidden::make('previewing')
|
Hidden::make('previewing')
|
||||||
->default(false),
|
->default(false),
|
||||||
Textarea::make('startup')
|
|
||||||
|
Select::make('select_startup')
|
||||||
|
->label(trans('admin/server.startup_name'))
|
||||||
|
->live()
|
||||||
|
->afterStateUpdated(fn (Set $set, $state) => $set('startup', $state))
|
||||||
|
->options(function ($state, Get $get, Set $set) {
|
||||||
|
$egg = Egg::query()->find($get('egg_id'));
|
||||||
|
$startups = $egg->startup_commands ?? [];
|
||||||
|
|
||||||
|
$currentStartup = $get('startup');
|
||||||
|
if (!$currentStartup && $startups) {
|
||||||
|
$currentStartup = collect($startups)->first();
|
||||||
|
$set('startup', $currentStartup);
|
||||||
|
$set('select_startup', $currentStartup);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array_flip($startups) + ['' => 'Custom Startup'];
|
||||||
|
})
|
||||||
|
->selectablePlaceholder(false)
|
||||||
|
->columnSpanFull(),
|
||||||
|
|
||||||
|
TextInput::make('startup')
|
||||||
->label(trans('admin/server.startup_cmd'))
|
->label(trans('admin/server.startup_cmd'))
|
||||||
->required()
|
->required()
|
||||||
->columnSpan(6)
|
->live()
|
||||||
->autosize()
|
->afterStateUpdated(function ($state, Get $get, Set $set) {
|
||||||
->hintAction(PreviewStartupAction::make('preview')),
|
|
||||||
|
|
||||||
Textarea::make('default_startup')
|
|
||||||
->hintAction(fn () => request()->isSecure() ? CopyAction::make() : null)
|
|
||||||
->label(trans('admin/server.default_startup'))
|
|
||||||
->disabled()
|
|
||||||
->autosize()
|
|
||||||
->columnSpan(6)
|
|
||||||
->formatStateUsing(function ($state, Get $get) {
|
|
||||||
$egg = Egg::query()->find($get('egg_id'));
|
$egg = Egg::query()->find($get('egg_id'));
|
||||||
|
$startups = $egg->startup_commands ?? [];
|
||||||
|
|
||||||
return Arr::first($egg->startup_commands);
|
if (in_array($state, $startups)) {
|
||||||
}),
|
$set('select_startup', $state);
|
||||||
|
} else {
|
||||||
|
$set('select_startup', '');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
->placeholder(trans('admin/server.startup_placeholder'))
|
||||||
|
->columnSpanFull()
|
||||||
|
->hintAction(PreviewStartupAction::make('preview')),
|
||||||
|
|
||||||
Repeater::make('server_variables')
|
Repeater::make('server_variables')
|
||||||
->hiddenLabel()
|
->hiddenLabel()
|
||||||
|
@ -26,8 +26,10 @@ class PreviewStartupAction extends Action
|
|||||||
|
|
||||||
$this->action(function (Get $get, Set $set, Server $server) {
|
$this->action(function (Get $get, Set $set, Server $server) {
|
||||||
$active = $get('previewing');
|
$active = $get('previewing');
|
||||||
|
$startup = $get('startup');
|
||||||
|
|
||||||
$set('previewing', !$active);
|
$set('previewing', !$active);
|
||||||
$set('startup', $active ? $server->startup : fn (Server $server, StartupCommandService $service) => $service->handle($server));
|
$set('startup', $active ? $startup : fn (Server $server, StartupCommandService $service) => $service->handle($server, $startup));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,10 @@ class StartupCommandService
|
|||||||
/**
|
/**
|
||||||
* Generates a startup command for a given server instance.
|
* Generates a startup command for a given server instance.
|
||||||
*/
|
*/
|
||||||
public function handle(Server $server, bool $hideAllValues = false): string
|
public function handle(Server $server, ?string $startup = null, bool $hideAllValues = false): string
|
||||||
{
|
{
|
||||||
|
$startup ??= $server->startup;
|
||||||
|
|
||||||
$find = ['{{SERVER_MEMORY}}', '{{SERVER_IP}}', '{{SERVER_PORT}}'];
|
$find = ['{{SERVER_MEMORY}}', '{{SERVER_IP}}', '{{SERVER_PORT}}'];
|
||||||
$replace = [
|
$replace = [
|
||||||
(string) $server->memory,
|
(string) $server->memory,
|
||||||
@ -23,6 +25,6 @@ class StartupCommandService
|
|||||||
$replace[] = ($variable->user_viewable && !$hideAllValues) ? ($variable->server_value ?? $variable->default_value) : '[hidden]';
|
$replace[] = ($variable->user_viewable && !$hideAllValues) ? ($variable->server_value ?? $variable->default_value) : '[hidden]';
|
||||||
}
|
}
|
||||||
|
|
||||||
return str_replace($find, $replace, $server->startup);
|
return str_replace($find, $replace, $startup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,9 @@ return [
|
|||||||
'already_primary' => 'Already Primary',
|
'already_primary' => 'Already Primary',
|
||||||
'make_primary' => 'Make Primary',
|
'make_primary' => 'Make Primary',
|
||||||
'startup_cmd' => 'Startup Command',
|
'startup_cmd' => 'Startup Command',
|
||||||
|
'startup_name' => 'Startup Name',
|
||||||
'default_startup' => 'Default Startup Command',
|
'default_startup' => 'Default Startup Command',
|
||||||
|
'startup_placeholder' => 'Enter a custom startup command',
|
||||||
'variables' => 'Variables',
|
'variables' => 'Variables',
|
||||||
'resource_limits' => 'Resource Limits',
|
'resource_limits' => 'Resource Limits',
|
||||||
'cpu' => 'CPU',
|
'cpu' => 'CPU',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user