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(" $result = Db::selectOne("
SELECT SUM(`count`) AS `count` FROM ( SELECT SUM(`count`) AS `count` FROM (
SELECT SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`shift_id`=`Shifts`.`SID`) GREATEST(0,
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=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` AS `count`
FROM `Shifts` FROM `Shifts`
WHERE `end` > ? AND `start` < ? WHERE `end` > ? AND `start` < ?
@ -83,8 +96,21 @@ function stats_angels_needed_three_hours()
UNION ALL UNION ALL
SELECT SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`room_id`=`Shifts`.`RID`) GREATEST(0,
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=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` AS `count`
FROM `Shifts` FROM `Shifts`
WHERE `end` > ? AND `start` < ? WHERE `end` > ? AND `start` < ?
@ -116,8 +142,21 @@ function stats_angels_needed_for_nightshifts()
$result = Db::selectOne(" $result = Db::selectOne("
SELECT SUM(`count`) AS `count` FROM ( SELECT SUM(`count`) AS `count` FROM (
SELECT SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`shift_id`=`Shifts`.`SID`) GREATEST(0,
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=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` AS `count`
FROM `Shifts` FROM `Shifts`
WHERE `end` > ? AND `start` < ? WHERE `end` > ? AND `start` < ?
@ -126,8 +165,21 @@ function stats_angels_needed_for_nightshifts()
UNION ALL UNION ALL
SELECT SELECT
(SELECT SUM(`count`) FROM `NeededAngelTypes` WHERE `NeededAngelTypes`.`room_id`=`Shifts`.`RID`) GREATEST(0,
- (SELECT COUNT(*) FROM `ShiftEntry` WHERE `ShiftEntry`.`SID`=`Shifts`.`SID` AND `freeloaded`=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` AS `count`
FROM `Shifts` FROM `Shifts`
WHERE `end` > ? AND `start` < ? WHERE `end` > ? AND `start` < ?

View File

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