0) { $shift_panels = [ '
' ]; foreach ($free_shifts as $i => $shift) { $shift_panels[] = public_dashboard_shift_render($shift); if ($i % 4 == 3) { $shift_panels[] = '
'; } } $shift_panels[] = '
'; $needed_angels = div('first', [ div('col-md-12', [ heading(__('Needed angels:'), 1) ]), div('container-fluid', [ join($shift_panels) ]) ]); } $isFiltered = request()->get('filtered'); $filter = collect(session()->get('shifts-filter'))->only(['rooms', 'types'])->toArray(); return page([ div('wrapper', [ div('public-dashboard', [ div('first row', [ stats(__('Angels needed in the next 3 hrs'), $stats['needed-3-hours']), stats(__('Angels needed for nightshifts'), $stats['needed-night']), stats(__('Angels currently working'), $stats['angels-working'], 'default'), stats(__('Hours to be worked'), $stats['hours-to-work'], 'default'), '' ], 'statistics'), $needed_angels ], 'public-dashboard'), ]), div('first col-md-12 text-center', [buttons([ button_js( ' $(\'#navbar-collapse-1,.navbar-nav,.navbar-toggler,#footer,#fullscreen-button\').remove(); $(\'.navbar-brand\').append(\' ' . __('Public Dashboard') . '\'); ', icon('fullscreen') . __('Fullscreen') ), auth()->user() ? button( public_dashboard_link($isFiltered ? [] : ['filtered' => 1] + $filter), icon('filter') . ($isFiltered ? __('All') : __('Filtered')) ) : '' ])], 'fullscreen-button'), ]); } /** * Renders a single shift panel for a dashboard shift with needed angels * * @param array $shift * @return string */ function public_dashboard_shift_render($shift) { $panel_body = icon('clock') . $shift['start'] . ' - ' . $shift['end']; $panel_body .= ' (' . $shift['duration'] . ' h)'; $panel_body .= '
' . icon('list-task') . $shift['shifttype_name']; if (!empty($shift['title'])) { $panel_body .= ' (' . $shift['title'] . ')'; } $panel_body .= '
' . icon('geo-alt') . $shift['room_name']; foreach ($shift['needed_angels'] as $needed_angels) { $panel_body .= '
' . icon('person') . '' . $needed_angels['need'] . ' × ' . $needed_angels['angeltype_name'] . ''; } $type = 'bg-dark'; if (theme_type() == 'light') { $type = 'bg-light'; } return div('col-md-3 mb-3', [ div('dashboard-card card border-' . $shift['style'] . ' ' . $type, [ div('card-body', [ '', $panel_body ]) ]) ]); }