summaryrefslogtreecommitdiffstats
path: root/library/Icingadb/Web/Control/GridViewModeSwitcher.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--library/Icingadb/Web/Control/GridViewModeSwitcher.php38
1 files changed, 38 insertions, 0 deletions
diff --git a/library/Icingadb/Web/Control/GridViewModeSwitcher.php b/library/Icingadb/Web/Control/GridViewModeSwitcher.php
new file mode 100644
index 0000000..df5524b
--- /dev/null
+++ b/library/Icingadb/Web/Control/GridViewModeSwitcher.php
@@ -0,0 +1,38 @@
+<?php
+
+/* Icinga DB Web | (c) 2023 Icinga GmbH | GPLv2 */
+
+namespace Icinga\Module\Icingadb\Web\Control;
+
+/**
+ * View mode switcher to toggle between grid and list view
+ */
+class GridViewModeSwitcher extends ViewModeSwitcher
+{
+ /** @var string Default view mode */
+ public const DEFAULT_VIEW_MODE = 'list';
+
+ /** @var array View mode-icon pairs */
+ public static $viewModes = [
+ 'list' => 'default',
+ 'grid' => 'grid'
+ ];
+
+ protected function getTitle(string $viewMode): string
+ {
+ $active = null;
+ $inactive = null;
+ switch ($viewMode) {
+ case 'list':
+ $active = t('List view active');
+ $inactive = t('Switch to list view');
+ break;
+ case 'grid':
+ $active = t('Grid view active');
+ $inactive = t('Switch to grid view');
+ break;
+ }
+
+ return $viewMode === $this->getViewMode() ? $active : $inactive;
+ }
+}