diff options
Diffstat (limited to 'includes/view/ShiftsFilterRenderer.php')
-rw-r--r-- | includes/view/ShiftsFilterRenderer.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/includes/view/ShiftsFilterRenderer.php b/includes/view/ShiftsFilterRenderer.php new file mode 100644 index 00000000..301f31a2 --- /dev/null +++ b/includes/view/ShiftsFilterRenderer.php @@ -0,0 +1,69 @@ +<?php + +namespace Engelsystem; + +class ShiftsFilterRenderer { + + /** + * The shiftFilter to render. + * + * @var ShiftsFilter + */ + private $shiftsFilter; + + /** + * Should the filter display a day selection. + * + * @var boolean + */ + private $daySelectionEnabled = false; + + /** + * Days that can be selected. + * Format Y-m-d + * + * @var string[] + */ + private $days = []; + + public function __construct(ShiftsFilter $shiftsFilter) { + $this->shiftsFilter = $shiftsFilter; + } + + /** + * Renders the filter. + * + * @return Generated HTML + */ + public function render($link_base) { + $toolbar = []; + if ($this->daySelectionEnabled && ! empty($this->days)) { + $selected_day = date("Y-m-d", $this->shiftsFilter->getStartTime()); + $day_dropdown_items = []; + foreach ($this->days as $day) { + $day_dropdown_items[] = toolbar_item_link($link_base . '&shifts_filter_day=' . $day, '', $day); + } + $toolbar[] = toolbar_dropdown('', $selected_day, $day_dropdown_items, 'active'); + } + return div('form-group', [ + toolbar_pills($toolbar) + ]); + } + + /** + * Should the filter display a day selection. + */ + public function enableDaySelection($days) { + $this->daySelectionEnabled = true; + $this->days = $days; + } + + /** + * Should the filter display a day selection. + */ + public function isDaySelectionEnabled() { + return $this->daySelectionEnabled; + } +} + +?>
\ No newline at end of file |