From 663b097d2232eb8eb1ede70039986078a6eb3ee5 Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 12 Dec 2024 10:31:33 -0500 Subject: [PATCH] Add Edit/Delete on Tasks (#826) --- .../RelationManagers/TasksRelationManager.php | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php b/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php index 49aaeb45b..6e503b7ec 100644 --- a/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php +++ b/app/Filament/Server/Resources/ScheduleResource/RelationManagers/TasksRelationManager.php @@ -5,11 +5,13 @@ namespace App\Filament\Server\Resources\ScheduleResource\RelationManagers; use App\Facades\Activity; use App\Models\Schedule; use App\Models\Task; +use Filament\Tables\Actions\DeleteAction; use Filament\Forms\Components\Select; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Toggle; use Filament\Forms\Get; +use Filament\Tables\Actions\EditAction; use Filament\Tables\Table; use Filament\Resources\RelationManagers\RelationManager; use Filament\Tables\Actions\CreateAction; @@ -42,6 +44,49 @@ class TasksRelationManager extends RelationManager IconColumn::make('continue_on_failure') ->boolean(), ]) + ->actions([ + EditAction::make() + ->form([ + Select::make('action') + ->required() + ->live() + ->disableOptionWhen(fn (string $value): bool => $value === Task::ACTION_BACKUP && $schedule->server->backup_limit === 0) + ->options([ + Task::ACTION_POWER => 'Send power action', + Task::ACTION_COMMAND => 'Send command', + Task::ACTION_BACKUP => 'Create backup', + Task::ACTION_DELETE_FILES => 'Delete files', + ]), + Textarea::make('payload') + ->hidden(fn (Get $get) => $get('action') === Task::ACTION_POWER) + ->label(fn (Get $get) => match ($get('action')) { + Task::ACTION_POWER => 'Power action', + Task::ACTION_COMMAND => 'Command', + Task::ACTION_BACKUP => 'Files to ignore', + Task::ACTION_DELETE_FILES => 'Files to delete', + default => 'Payload' + }), + Select::make('payload') + ->visible(fn (Get $get) => $get('action') === Task::ACTION_POWER) + ->label('Power Action') + ->required() + ->options([ + 'start' => 'Start', + 'restart' => 'Restart', + 'stop' => 'Stop', + 'Kill' => 'Kill', + ]), + TextInput::make('time_offset') + ->hidden(fn (Get $get) => config('queue.default') === 'sync' || $get('sequence_id') === 1) + ->default(0) + ->numeric() + ->minValue(0) + ->maxValue(900) + ->suffix('Seconds'), + Toggle::make('continue_on_failure'), + ]), + DeleteAction::make(), + ]) ->headerActions([ CreateAction::make() ->createAnother(false)