engelsystem/includes/view/PublicDashboard_view.php

96 lines
3.1 KiB
PHP
Raw Normal View History

2017-12-11 22:26:36 +01:00
<?php
/**
* Public dashboard (formerly known as angel news hub)
2017-12-25 23:12:52 +01:00
*
* @param array $stats
* @param array[] $free_shifts
* @return string
2017-12-11 22:26:36 +01:00
*/
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 22:09:01 +01:00
$needed_angels = '';
if (count($free_shifts) > 0) {
2017-12-26 10:47:39 +01:00
$shift_panels = [
'<div class="row">'
];
2017-12-26 10:51:23 +01:00
foreach ($free_shifts as $i => $shift) {
2017-12-25 23:12:52 +01:00
$shift_panels[] = public_dashboard_shift_render($shift);
2017-12-26 10:52:32 +01:00
if($i % 4 == 3) {
2017-12-26 10:47:39 +01:00
$shift_panels[] = '</div><div class="row">';
}
2017-12-12 22:09:01 +01:00
}
2017-12-26 10:47:39 +01:00
$shift_panels[] = '</div>';
$needed_angels = div('first', [
2017-12-13 12:37:05 +01:00
div('col-md-12', [
2017-12-12 22:09:01 +01:00
heading(_('Needed angels:'), 1)
]),
2017-12-26 10:51:23 +01:00
div('container-fluid', [
join($shift_panels)
])
2017-12-12 22:09:01 +01:00
]);
2017-12-12 21:57:57 +01:00
}
2017-12-25 23:12:52 +01:00
2017-12-11 22:26:36 +01:00
return page([
2017-12-13 16:51:38 +01:00
div('public-dashboard', [
div('first', [
2017-12-13 16:51:38 +01:00
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'),
'<script>
$(function() {
setInterval(function() {
$(\'#public-dashboard\').parent().load(window.location.href + \' #public-dashboard\');
}, 60000);
})
</script>'
], 'statistics'),
2017-12-14 20:09:51 +01:00
$needed_angels
], 'public-dashboard'),
div('first col-md-12 text-center', [
buttons([
button_js('
$(\'#navbar-collapse-1,#footer,#fullscreen-button\').remove();
$(\'.navbar-brand\').append(\' ' . _('Public Dashboard') . '\');
', glyph('fullscreen') . _('Fullscreen'))
2017-12-14 20:09:51 +01:00
])
], 'fullscreen-button')
]);
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
2017-12-25 23:12:52 +01:00
*
* @param array $shift
* @return string
2017-12-12 21:57:57 +01:00
*/
2017-12-25 23:12:52 +01:00
function public_dashboard_shift_render($shift)
2017-12-12 21:57:57 +01:00
{
$panel_body = glyph('time') . $shift['start'] . ' - ' . $shift['end'];
$panel_body .= ' (' . $shift['duration'] . ' h)';
2017-12-25 23:12:52 +01:00
$panel_body .= '<br>' . glyph('tasks') . $shift['shifttype_name'];
2017-12-25 23:12:52 +01:00
if (!empty($shift['title'])) {
2017-12-12 21:57:57 +01:00
$panel_body .= ' (' . $shift['title'] . ')';
}
2017-12-25 23:12:52 +01:00
$panel_body .= '<br>' . glyph('map-marker') . $shift['room_name'];
2017-12-25 23:12:52 +01:00
foreach ($shift['needed_angels'] as $needed_angels) {
2017-12-25 23:12:52 +01:00
$panel_body .= '<br>' . glyph('user')
. '<span class="text-' . $shift['style'] . '">'
. $needed_angels['need'] . ' &times; ' . $needed_angels['angeltype_name']
. '</span>';
2017-12-12 21:57:57 +01:00
}
2017-12-25 23:12:52 +01:00
2017-12-13 12:37:05 +01:00
return div('col-md-3', [
div('dashboard-panel panel panel-' . $shift['style'], [
2017-12-12 22:00:29 +01:00
div('panel-body', [
2017-12-13 12:22:26 +01:00
'<a class="panel-link" href="' . shift_link($shift) . '"></a>',
2017-12-13 12:37:05 +01:00
$panel_body
2017-12-12 22:00:29 +01:00
])
2017-12-12 21:57:57 +01:00
])
]);
}