mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-20 00:34:44 +02:00
Fix power buttons (#799)
This commit is contained in:
parent
5d2b892eab
commit
839ff96271
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filament\Server\Pages;
|
namespace App\Filament\Server\Pages;
|
||||||
|
|
||||||
|
use App\Enums\ContainerStatus;
|
||||||
use App\Filament\Server\Widgets\ServerConsole;
|
use App\Filament\Server\Widgets\ServerConsole;
|
||||||
use App\Filament\Server\Widgets\ServerCpuChart;
|
use App\Filament\Server\Widgets\ServerCpuChart;
|
||||||
use App\Filament\Server\Widgets\ServerMemoryChart;
|
use App\Filament\Server\Widgets\ServerMemoryChart;
|
||||||
@ -12,6 +13,7 @@ use Filament\Actions\Action;
|
|||||||
use Filament\Facades\Filament;
|
use Filament\Facades\Filament;
|
||||||
use Filament\Pages\Page;
|
use Filament\Pages\Page;
|
||||||
use Filament\Support\Enums\ActionSize;
|
use Filament\Support\Enums\ActionSize;
|
||||||
|
use Livewire\Attributes\On;
|
||||||
|
|
||||||
class Console extends Page
|
class Console extends Page
|
||||||
{
|
{
|
||||||
@ -21,6 +23,8 @@ class Console extends Page
|
|||||||
|
|
||||||
protected static string $view = 'filament.server.pages.console';
|
protected static string $view = 'filament.server.pages.console';
|
||||||
|
|
||||||
|
public ContainerStatus $status = ContainerStatus::Missing;
|
||||||
|
|
||||||
public function getWidgetData(): array
|
public function getWidgetData(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
@ -50,6 +54,16 @@ class Console extends Page
|
|||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[On('powerChanged')]
|
||||||
|
public function powerChanged(string $state): void
|
||||||
|
{
|
||||||
|
$this->status = ContainerStatus::from($state);
|
||||||
|
|
||||||
|
$this->cachedHeaderActions = [];
|
||||||
|
|
||||||
|
$this->cacheHeaderActions();
|
||||||
|
}
|
||||||
|
|
||||||
protected function getHeaderActions(): array
|
protected function getHeaderActions(): array
|
||||||
{
|
{
|
||||||
/** @var Server $server */
|
/** @var Server $server */
|
||||||
@ -60,17 +74,18 @@ class Console extends Page
|
|||||||
->color('primary')
|
->color('primary')
|
||||||
->size(ActionSize::ExtraLarge)
|
->size(ActionSize::ExtraLarge)
|
||||||
->action(fn () => $this->dispatch('setServerState', state: 'start'))
|
->action(fn () => $this->dispatch('setServerState', state: 'start'))
|
||||||
->disabled(fn () => $server->isInConflictState()),
|
->disabled(fn () => $server->isInConflictState() || in_array($this->status, [ContainerStatus::Running, ContainerStatus::Starting, ContainerStatus::Stopping, ContainerStatus::Restarting])),
|
||||||
Action::make('restart')
|
Action::make('restart')
|
||||||
->color('gray')
|
->color('gray')
|
||||||
->size(ActionSize::ExtraLarge)
|
->size(ActionSize::ExtraLarge)
|
||||||
->action(fn () => $this->dispatch('setServerState', state: 'restart'))
|
->action(fn () => $this->dispatch('setServerState', state: 'restart'))
|
||||||
->disabled(fn () => $server->isInConflictState() || $server->retrieveStatus() == 'offline'),
|
->disabled(fn () => $server->isInConflictState() || $this->status !== ContainerStatus::Running),
|
||||||
Action::make('stop')
|
Action::make('stop')
|
||||||
->color('danger')
|
->color('danger')
|
||||||
->size(ActionSize::ExtraLarge)
|
->size(ActionSize::ExtraLarge)
|
||||||
->action(fn () => $this->dispatch('setServerState', state: 'stop'))
|
->action(fn () => $this->dispatch('setServerState', state: 'stop'))
|
||||||
->disabled(fn () => $server->isInConflictState() || $server->retrieveStatus() == 'offline'),
|
->hidden(fn () => in_array($this->status, [ContainerStatus::Stopping, ContainerStatus::Restarting, ContainerStatus::Starting]))
|
||||||
|
->disabled(fn () => $server->isInConflictState() || in_array($this->status, [ContainerStatus::Starting, ContainerStatus::Stopping, ContainerStatus::Restarting, ContainerStatus::Exited, ContainerStatus::Offline])),
|
||||||
Action::make('kill')
|
Action::make('kill')
|
||||||
->color('danger')
|
->color('danger')
|
||||||
->requiresConfirmation()
|
->requiresConfirmation()
|
||||||
@ -79,7 +94,8 @@ class Console extends Page
|
|||||||
->modalSubmitActionLabel('Kill Server')
|
->modalSubmitActionLabel('Kill Server')
|
||||||
->size(ActionSize::ExtraLarge)
|
->size(ActionSize::ExtraLarge)
|
||||||
->action(fn () => $this->dispatch('setServerState', state: 'kill'))
|
->action(fn () => $this->dispatch('setServerState', state: 'kill'))
|
||||||
->disabled(fn () => $server->isInConflictState() || $server->retrieveStatus() == 'offline'),
|
->hidden(fn () => $server->isInConflictState() || in_array($this->status, [ContainerStatus::Running, ContainerStatus::Restarting, ContainerStatus::Offline, ContainerStatus::Removing, ContainerStatus::Dead, ContainerStatus::Exited, ContainerStatus::Created]))
|
||||||
|
->disabled(fn () => $server->isInConflictState() || $this->status === ContainerStatus::Offline),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,6 +125,8 @@
|
|||||||
break;
|
break;
|
||||||
case 'status':
|
case 'status':
|
||||||
handlePowerChangeEvent(args[0]);
|
handlePowerChangeEvent(args[0]);
|
||||||
|
|
||||||
|
$wire.dispatch('powerChanged', {state: args[0]})
|
||||||
break;
|
break;
|
||||||
case 'transfer status':
|
case 'transfer status':
|
||||||
handleTransferStatus(args[0]);
|
handleTransferStatus(args[0]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user