mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-29 09:44:45 +02:00
Add Run now
button for schedules & add status field (#806)
* add `Run Now` button to schedules * add status to schedule view/ edit * only show status on "view"
This commit is contained in:
parent
2bfc788e13
commit
8460c52534
@ -14,6 +14,7 @@ use Filament\Forms\Components\Section;
|
|||||||
use Filament\Forms\Components\Select;
|
use Filament\Forms\Components\Select;
|
||||||
use Filament\Forms\Components\TextInput;
|
use Filament\Forms\Components\TextInput;
|
||||||
use Filament\Forms\Components\Toggle;
|
use Filament\Forms\Components\Toggle;
|
||||||
|
use Filament\Forms\Components\ToggleButtons;
|
||||||
use Filament\Forms\Form;
|
use Filament\Forms\Form;
|
||||||
use Filament\Forms\Set;
|
use Filament\Forms\Set;
|
||||||
use Filament\Resources\Resource;
|
use Filament\Resources\Resource;
|
||||||
@ -66,15 +67,26 @@ class ScheduleResource extends Resource
|
|||||||
->columns(10)
|
->columns(10)
|
||||||
->schema([
|
->schema([
|
||||||
TextInput::make('name')
|
TextInput::make('name')
|
||||||
->columnSpan(10)
|
->columnSpan(fn ($operation) => $operation !== 'view' ? 10 : 5)
|
||||||
->label('Schedule Name')
|
->label('Schedule Name')
|
||||||
->placeholder('A human readable identifier for this schedule.')
|
->placeholder('A human readable identifier for this schedule.')
|
||||||
->autocomplete(false)
|
->autocomplete(false)
|
||||||
->required(),
|
->required(),
|
||||||
|
ToggleButtons::make('Status')
|
||||||
|
->formatStateUsing(fn (Schedule $schedule) => !$schedule->is_active ? 'inactive' : ($schedule->is_processing ? 'processing' : 'active'))
|
||||||
|
->options(fn (Schedule $schedule) => !$schedule->is_active ? ['inactive' => 'Inactive'] : ($schedule->is_processing ? ['processing' => 'Processing'] : ['active' => 'Active']))
|
||||||
|
->colors([
|
||||||
|
'inactive' => 'danger',
|
||||||
|
'processing' => 'warning',
|
||||||
|
'active' => 'success',
|
||||||
|
])
|
||||||
|
->visibleOn('view')
|
||||||
|
->columnSpan(5),
|
||||||
Toggle::make('only_when_online')
|
Toggle::make('only_when_online')
|
||||||
->label('Only when Server is Online?')
|
->label('Only when Server is Online?')
|
||||||
->hintIconTooltip('Only execute this schedule when the server is in a running state.')
|
->hintIconTooltip('Only execute this schedule when the server is in a running state.')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark')
|
||||||
|
->inline(false)
|
||||||
->columnSpan(5)
|
->columnSpan(5)
|
||||||
->required()
|
->required()
|
||||||
->default(1),
|
->default(1),
|
||||||
@ -82,6 +94,7 @@ class ScheduleResource extends Resource
|
|||||||
->label('Enable Schedule?')
|
->label('Enable Schedule?')
|
||||||
->hintIconTooltip('This schedule will be executed automatically if enabled.')
|
->hintIconTooltip('This schedule will be executed automatically if enabled.')
|
||||||
->hintIcon('tabler-question-mark')
|
->hintIcon('tabler-question-mark')
|
||||||
|
->inline(false)
|
||||||
->columnSpan(5)
|
->columnSpan(5)
|
||||||
->required()
|
->required()
|
||||||
->default(1),
|
->default(1),
|
||||||
|
@ -2,8 +2,13 @@
|
|||||||
|
|
||||||
namespace App\Filament\Server\Resources\ScheduleResource\Pages;
|
namespace App\Filament\Server\Resources\ScheduleResource\Pages;
|
||||||
|
|
||||||
|
use App\Facades\Activity;
|
||||||
use App\Filament\Server\Resources\ScheduleResource;
|
use App\Filament\Server\Resources\ScheduleResource;
|
||||||
|
use App\Models\Permission;
|
||||||
|
use App\Models\Schedule;
|
||||||
|
use App\Services\Schedules\ProcessScheduleService;
|
||||||
use Filament\Actions;
|
use Filament\Actions;
|
||||||
|
use Filament\Facades\Filament;
|
||||||
use Filament\Resources\Pages\ViewRecord;
|
use Filament\Resources\Pages\ViewRecord;
|
||||||
|
|
||||||
class ViewSchedule extends ViewRecord
|
class ViewSchedule extends ViewRecord
|
||||||
@ -13,6 +18,21 @@ class ViewSchedule extends ViewRecord
|
|||||||
protected function getHeaderActions(): array
|
protected function getHeaderActions(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
Actions\Action::make('runNow')
|
||||||
|
->authorize(fn () => auth()->user()->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant()))
|
||||||
|
->label(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? 'No tasks' : ($schedule->is_processing ? 'Processing' : 'Run now'))
|
||||||
|
->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->is_processing ? 'warning' : 'primary')
|
||||||
|
->disabled(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->is_processing)
|
||||||
|
->action(function (ProcessScheduleService $service, Schedule $schedule) {
|
||||||
|
$service->handle($schedule, true);
|
||||||
|
|
||||||
|
Activity::event('server:schedule.execute')
|
||||||
|
->subject($schedule)
|
||||||
|
->property('name', $schedule->name)
|
||||||
|
->log();
|
||||||
|
|
||||||
|
$this->fillForm();
|
||||||
|
}),
|
||||||
Actions\EditAction::make(),
|
Actions\EditAction::make(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user