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); } /**