2017-12-11 22:26:36 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Public dashboard (formerly known as angel news hub)
|
|
|
|
*/
|
2017-12-12 21:57:57 +01:00
|
|
|
function public_dashboard_view($stats, $free_shifts)
|
2017-12-11 22:26:36 +01:00
|
|
|
{
|
2017-12-12 21:57:57 +01:00
|
|
|
$shift_panels = [];
|
|
|
|
foreach ($free_shifts as $shift) {
|
|
|
|
$shift_panels[] = public_dashborad_shift_render($shift);
|
|
|
|
}
|
2017-12-11 22:26:36 +01:00
|
|
|
return page([
|
2017-12-12 21:57:57 +01:00
|
|
|
div('first container-fluid', [
|
|
|
|
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'),
|
2017-12-11 22:26:36 +01:00
|
|
|
'<script>$(function(){setTimeout(function(){window.location.reload();}, 60000)})</script>'
|
2017-12-12 21:57:57 +01:00
|
|
|
]),
|
|
|
|
div('container-fluid first', [
|
2017-12-12 22:04:12 +01:00
|
|
|
div('col-xs-12', [
|
|
|
|
heading(_('Needed angels:'), 1)
|
|
|
|
]),
|
2017-12-12 21:57:57 +01:00
|
|
|
join($shift_panels)
|
2017-12-11 22:26:36 +01:00
|
|
|
])
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
2017-12-12 21:57:57 +01:00
|
|
|
/**
|
|
|
|
* Renders a single shift panel for a dashboard shift with needed angels
|
|
|
|
*/
|
|
|
|
function public_dashborad_shift_render($shift)
|
|
|
|
{
|
|
|
|
$style = 'default';
|
|
|
|
if (time() + 3 * 60 * 60 > $shift['start']) {
|
|
|
|
$style = 'warning';
|
|
|
|
}
|
|
|
|
if (time() > $shift['start']) {
|
|
|
|
$style = 'danger';
|
|
|
|
}
|
|
|
|
|
|
|
|
$panel_body = glyph('time') . date('H:i', $shift['start']) . ' - ' . date('H:i', $shift['end']);
|
2017-12-12 22:04:12 +01:00
|
|
|
$panel_body .= ' (' . round(($shift['end'] - $shift['start']) / 3600) . ' h)';
|
2017-12-12 21:57:57 +01:00
|
|
|
|
|
|
|
$panel_body .= '<br>' . glyph('tasks') . ShiftType($shift['shifttype_id'])['name'];
|
|
|
|
if (! empty($shift['title'])) {
|
|
|
|
$panel_body .= ' (' . $shift['title'] . ')';
|
|
|
|
}
|
|
|
|
|
|
|
|
$panel_body .= '<br>' . glyph('map-marker') . Room($shift['RID'])['Name'];
|
|
|
|
|
|
|
|
foreach ($shift['NeedAngels'] as $needed_angels) {
|
|
|
|
$need = $needed_angels['count'] - $needed_angels['taken'];
|
|
|
|
if ($need > 0) {
|
|
|
|
$panel_body .= '<br>' . glyph('user') . $need . ' × ' . AngelType($needed_angels['TID'])['name'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$panel_body = '<a href="' . shift_link($shift) . '">' . $panel_body . '</a>';
|
|
|
|
|
2017-12-12 22:00:29 +01:00
|
|
|
return div('col-xs-3', [
|
|
|
|
div('panel panel-' . $style, [
|
|
|
|
div('panel-body', [
|
|
|
|
heading($panel_body, 4)
|
|
|
|
])
|
2017-12-12 21:57:57 +01:00
|
|
|
])
|
|
|
|
]);
|
|
|
|
}
|
2017-12-11 22:26:36 +01:00
|
|
|
?>
|