mirror of
https://github.com/pelican-dev/panel.git
synced 2025-12-08 18:30:15 +01:00
Improve "first task" checks (#1926)
This commit is contained in:
parent
b1b723485f
commit
611b8649e0
@ -72,7 +72,7 @@ class TasksRelationManager extends RelationManager
|
|||||||
->default('restart'),
|
->default('restart'),
|
||||||
TextInput::make('time_offset')
|
TextInput::make('time_offset')
|
||||||
->label(trans('server/schedule.tasks.time_offset'))
|
->label(trans('server/schedule.tasks.time_offset'))
|
||||||
->hidden(fn (Get $get) => config('queue.default') === 'sync' || $get('sequence_id') === 1 || $schedule->tasks->isEmpty())
|
->hidden(fn (Get $get, ?Task $task) => config('queue.default') === 'sync' || $schedule->tasks->isEmpty() || $task?->isFirst())
|
||||||
->default(0)
|
->default(0)
|
||||||
->numeric()
|
->numeric()
|
||||||
->minValue(0)
|
->minValue(0)
|
||||||
@ -108,8 +108,8 @@ class TasksRelationManager extends RelationManager
|
|||||||
TextColumn::make('time_offset')
|
TextColumn::make('time_offset')
|
||||||
->label(trans('server/schedule.tasks.time_offset'))
|
->label(trans('server/schedule.tasks.time_offset'))
|
||||||
->hidden(fn () => config('queue.default') === 'sync')
|
->hidden(fn () => config('queue.default') === 'sync')
|
||||||
->suffix(fn (Task $task) => $task->sequence_id > 1 ? ' '. trans_choice('server/schedule.tasks.seconds', $task->time_offset) : null)
|
->state(fn (Task $task) => $task->isFirst() ? null : $task->time_offset)
|
||||||
->state(fn (Task $task) => $task->sequence_id === 1 ? null : $task->time_offset)
|
->suffix(fn ($state) => ' ' . trans_choice('server/schedule.tasks.seconds', $state))
|
||||||
->placeholder(trans('server/schedule.tasks.first_task')),
|
->placeholder(trans('server/schedule.tasks.first_task')),
|
||||||
IconColumn::make('continue_on_failure')
|
IconColumn::make('continue_on_failure')
|
||||||
->label(trans('server/schedule.tasks.continue_on_failure'))
|
->label(trans('server/schedule.tasks.continue_on_failure'))
|
||||||
|
|||||||
@ -142,4 +142,12 @@ class Schedule extends Model implements Validatable
|
|||||||
{
|
{
|
||||||
return $this->belongsTo(Server::class);
|
return $this->belongsTo(Server::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function firstTask(): ?Task
|
||||||
|
{
|
||||||
|
/** @var ?Task $task */
|
||||||
|
$task = $this->tasks()->orderBy('sequence_id')->first();
|
||||||
|
|
||||||
|
return $task;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -120,4 +120,9 @@ class Task extends Model implements Validatable
|
|||||||
'server_id' // schedules.server_id
|
'server_id' // schedules.server_id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isFirst(): bool
|
||||||
|
{
|
||||||
|
return $this->schedule->firstTask()?->id === $this->id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,8 +21,7 @@ class ProcessScheduleService
|
|||||||
*/
|
*/
|
||||||
public function handle(Schedule $schedule, bool $now = false): void
|
public function handle(Schedule $schedule, bool $now = false): void
|
||||||
{
|
{
|
||||||
/** @var ?Task $task */
|
$task = $schedule->firstTask();
|
||||||
$task = $schedule->tasks()->orderBy('sequence_id')->first();
|
|
||||||
|
|
||||||
if (!$task) {
|
if (!$task) {
|
||||||
throw new DisplayException('Cannot process schedule for task execution: no tasks are registered.');
|
throw new DisplayException('Cannot process schedule for task execution: no tasks are registered.');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user