From c3b8b71f9c11765e6972b106c08dc4d1af8338f6 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Fri, 4 Apr 2025 09:30:25 +0200 Subject: [PATCH] Allow to register custom console widgets (#1209) --- app/Enums/ConsoleWidgetPosition.php | 11 +++++++++ app/Filament/Server/Pages/Console.php | 32 +++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 app/Enums/ConsoleWidgetPosition.php diff --git a/app/Enums/ConsoleWidgetPosition.php b/app/Enums/ConsoleWidgetPosition.php new file mode 100644 index 000000000..81153b973 --- /dev/null +++ b/app/Enums/ConsoleWidgetPosition.php @@ -0,0 +1,11 @@ +>> */ + protected static array $customWidgets = []; + + /** @param class-string[] $customWidgets */ + public static function registerCustomWidgets(ConsoleWidgetPosition $position, array $customWidgets): void + { + static::$customWidgets[$position->value] = array_unique(array_merge(static::$customWidgets[$position->value] ?? [], $customWidgets)); + } + /** * @return class-string[] */ public function getWidgets(): array { - return [ - ServerOverview::class, - ServerConsole::class, + $allWidgets = []; + + $allWidgets = array_merge($allWidgets, static::$customWidgets[ConsoleWidgetPosition::Top->value] ?? []); + + $allWidgets[] = ServerOverview::class; + + $allWidgets = array_merge($allWidgets, static::$customWidgets[ConsoleWidgetPosition::AboveConsole->value] ?? []); + + $allWidgets[] = ServerConsole::class; + + $allWidgets = array_merge($allWidgets, static::$customWidgets[ConsoleWidgetPosition::BelowConsole->value] ?? []); + + $allWidgets = array_merge($allWidgets, [ ServerCpuChart::class, ServerMemoryChart::class, //ServerNetworkChart::class, TODO: convert units. - ]; + ]); + + $allWidgets = array_merge($allWidgets, static::$customWidgets[ConsoleWidgetPosition::Bottom->value] ?? []); + + return array_unique($allWidgets); } /**