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
])
])
]);
}