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'); return page([ div('public-dashboard', [ div('first', [ 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-toggle,#footer,#fullscreen-button\').remove(); $(\'.navbar-brand\').append(\' ' . __('Public Dashboard') . '\'); ', glyph('fullscreen') . __('Fullscreen') ), auth()->user() ? button( public_dashboard_link($isFiltered ? [] : ['filtered' => 1]), glyph('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 = glyph('time') . $shift['start'] . ' - ' . $shift['end']; $panel_body .= ' (' . $shift['duration'] . ' h)'; $panel_body .= '
' . glyph('tasks') . $shift['shifttype_name']; if (!empty($shift['title'])) { $panel_body .= ' (' . $shift['title'] . ')'; } $panel_body .= '
' . glyph('map-marker') . $shift['room_name']; foreach ($shift['needed_angels'] as $needed_angels) { $panel_body .= '
' . glyph('user') . '' . $needed_angels['need'] . ' × ' . $needed_angels['angeltype_name'] . ''; } return div('col-md-3', [ div('dashboard-panel panel panel-' . $shift['style'], [ div('panel-body', [ '', $panel_body ]) ]) ]); }