fix #389: Public Dashboard Stats

This commit is contained in:
msquare 2017-12-26 10:47:39 +01:00
parent de61c88d6d
commit 6aaf8d6f53
2 changed files with 67 additions and 9 deletions

View File

@ -73,8 +73,21 @@ function stats_angels_needed_three_hours()
$result = Db::selectOne("
SELECT SUM(`count`) AS `count` FROM (
SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`shift_id`=`Shifts`.`SID`)
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=0)
GREATEST(0,
(
SELECT SUM(`count`)
FROM `NeededAngelTypes`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`NeededAngelTypes`.`angel_type_id`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `NeededAngelTypes`.`shift_id`=`Shifts`.`SID`
) - (
SELECT COUNT(*) FROM `ShiftEntry`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`ShiftEntry`.`TID`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `ShiftEntry`.`SID`=`Shifts`.`SID`
AND `freeloaded`=0
)
)
AS `count`
FROM `Shifts`
WHERE `end` > ? AND `start` < ?
@ -83,8 +96,21 @@ function stats_angels_needed_three_hours()
UNION ALL
SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`room_id`=`Shifts`.`RID`)
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=0)
GREATEST(0,
(
SELECT SUM(`count`)
FROM `NeededAngelTypes`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`NeededAngelTypes`.`angel_type_id`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `NeededAngelTypes`.`room_id`=`Shifts`.`RID`
) - (
SELECT COUNT(*) FROM `ShiftEntry`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`ShiftEntry`.`TID`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `ShiftEntry`.`SID`=`Shifts`.`SID`
AND `freeloaded`=0
)
)
AS `count`
FROM `Shifts`
WHERE `end` > ? AND `start` < ?
@ -116,8 +142,21 @@ function stats_angels_needed_for_nightshifts()
$result = Db::selectOne("
SELECT SUM(`count`) AS `count` FROM (
SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`shift_id`=`Shifts`.`SID`)
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=0)
GREATEST(0,
(
SELECT SUM(`count`)
FROM `NeededAngelTypes`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`NeededAngelTypes`.`angel_type_id`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `NeededAngelTypes`.`shift_id`=`Shifts`.`SID`
) - (
SELECT COUNT(*) FROM `ShiftEntry`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`ShiftEntry`.`TID`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `ShiftEntry`.`SID`=`Shifts`.`SID`
AND `freeloaded`=0
)
)
AS `count`
FROM `Shifts`
WHERE `end` > ? AND `start` < ?
@ -126,8 +165,21 @@ function stats_angels_needed_for_nightshifts()
UNION ALL
SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`room_id`=`Shifts`.`RID`)
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=0)
GREATEST(0,
(
SELECT SUM(`count`)
FROM `NeededAngelTypes`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`NeededAngelTypes`.`angel_type_id`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `NeededAngelTypes`.`room_id`=`Shifts`.`RID`
) - (
SELECT COUNT(*) FROM `ShiftEntry`
JOIN `AngelTypes` ON `AngelTypes`.`id`=`ShiftEntry`.`TID`
WHERE `AngelTypes`.`show_on_dashboard`=FALSE
AND `ShiftEntry`.`SID`=`Shifts`.`SID`
AND `freeloaded`=0
)
)
AS `count`
FROM `Shifts`
WHERE `end` > ? AND `start` < ?

View File

@ -11,10 +11,16 @@ function public_dashboard_view($stats, $free_shifts)
{
$needed_angels = '';
if (count($free_shifts) > 0) {
$shift_panels = [];
$shift_panels = [
'<div class="row">'
];
foreach ($free_shifts as $shift) {
$shift_panels[] = public_dashboard_shift_render($shift);
if(count($shift_panels) % 4 == 0) {
$shift_panels[] = '</div><div class="row">';
}
}
$shift_panels[] = '</div>';
$needed_angels = div('first', [
div('col-md-12', [
heading(_('Needed angels:'), 1)