diff --git a/includes/engelsystem_provider.php b/includes/engelsystem_provider.php index 057d5513..2dc425a2 100644 --- a/includes/engelsystem_provider.php +++ b/includes/engelsystem_provider.php @@ -38,6 +38,7 @@ require_once realpath(__DIR__ . '/../includes/controller/shifttypes_controller.p require_once realpath(__DIR__ . '/../includes/controller/users_controller.php'); require_once realpath(__DIR__ . '/../includes/controller/user_angeltypes_controller.php'); +require_once realpath(__DIR__ . '/../includes/helper/graph_helper.php'); require_once realpath(__DIR__ . '/../includes/helper/internationalization_helper.php'); require_once realpath(__DIR__ . '/../includes/helper/message_helper.php'); require_once realpath(__DIR__ . '/../includes/helper/error_helper.php'); diff --git a/includes/helper/graph_helper.php b/includes/helper/graph_helper.php new file mode 100644 index 00000000..17473634 --- /dev/null +++ b/includes/helper/graph_helper.php @@ -0,0 +1,39 @@ + $name) { + $values = []; + foreach ($data as $dataset) + $values[] = $dataset[$row_key]; + $datasets[] = [ + 'label' => $name, + 'fillColor' => $colors[$row_key], + 'data' => $values + ]; + } + + return ' + '; +} + +?> \ No newline at end of file diff --git a/includes/pages/admin_arrive.php b/includes/pages/admin_arrive.php index 64cf785d..2696ce12 100644 --- a/includes/pages/admin_arrive.php +++ b/includes/pages/admin_arrive.php @@ -32,7 +32,8 @@ function admin_arrive() { $users = sql_select("SELECT * FROM `User` ORDER BY `Nick`"); $arrival_count_at_day = []; - $departure_count_at_day = []; + $planned_arrival_count_at_day = []; + $planned_departure_count_at_day = []; $table = ""; $users_matched = []; if ($search == "") @@ -62,39 +63,64 @@ function admin_arrive() { $usr['arrived'] = $usr['Gekommen'] == 1 ? _("yes") : ""; $usr['actions'] = $usr['Gekommen'] == 1 ? '' . _("reset") . '' : '' . _("arrived") . ''; - $day = $usr['arrival_date'] > 0 ? date('Y-m-d', $usr['arrival_date']) : date('Y-m-d', $usr['planned_arrival_date']); - if (! isset($arrival_count_at_day[$day])) - $arrival_count_at_day[$day] = 0; - if (! isset($departure_count_at_day[$day])) - $departure_count_at_day[$day] = 0; - $arrival_count_at_day[$day] ++; - - if ($usr['planned_departure_date'] != null) { - $day = date('Y-m-d', $usr['planned_departure_date']); + if ($usr['arrival_date'] > 0) { + $day = date('Y-m-d', $usr['arrival_date']); if (! isset($arrival_count_at_day[$day])) $arrival_count_at_day[$day] = 0; - if (! isset($departure_count_at_day[$day])) - $departure_count_at_day[$day] = 0; - $departure_count_at_day[$day] ++; + $arrival_count_at_day[$day] ++; + } + + if ($usr['planned_arrival_date'] != null) { + $day = date('Y-m-d', $usr['planned_arrival_date']); + if (! isset($planned_arrival_count_at_day[$day])) + $planned_arrival_count_at_day[$day] = 0; + $planned_arrival_count_at_day[$day] ++; + } + + if ($usr['planned_departure_date'] != null && $usr['Gekommen'] == 1) { + $day = date('Y-m-d', $usr['planned_departure_date']); + if (! isset($planned_departure_count_at_day[$day])) + $planned_departure_count_at_day[$day] = 0; + $planned_departure_count_at_day[$day] ++; } $users_matched[] = $usr; } - - ksort($arrival_count_at_day); - ksort($departure_count_at_day); - $arrival_count = []; - $arrival_sums = []; + ksort($arrival_count_at_day); + ksort($planned_arrival_count_at_day); + ksort($planned_departure_count_at_day); + + $arrival_at_day = []; $arrival_sum = 0; foreach ($arrival_count_at_day as $day => $count) { - $arrival_sum += $count - $departure_count_at_day[$day]; - $arrival_sums[$day] = $arrival_sum; - $arrival_count[] = [ + $arrival_sum += $count; + $arrival_at_day[$day] = [ 'day' => $day, 'count' => $count, - 'sum' => $arrival_sum, - 'departure' => isset($departure_count_at_day[$day]) ? $departure_count_at_day[$day] : 0 + 'sum' => $arrival_sum + ]; + } + + $planned_arrival_sum_at_day = []; + $planned_arrival_sum = 0; + foreach ($arrival_count_at_day as $day => $count) { + $planned_arrival_sum += $count; + $planned_arrival_at_day[$day] = [ + 'day' => $day, + 'count' => $count, + 'sum' => $planned_arrival_sum + ]; + } + + $planned_departure_at_day = []; + $planned_departure_sum = 0; + foreach ($planned_departure_count_at_day as $day => $count) { + $planned_departure_sum += $count; + $planned_departure_at_day[$day] = [ + 'day' => $day, + 'count' => $count, + 'sum' => $planned_departure_sum ]; } @@ -112,39 +138,53 @@ function admin_arrive() { 'rendered_planned_departure_date' => _("Planned departure"), 'actions' => "" ), $users_matched), - heading(_("Arrival statistics"), 2), - ' - ', - table(array( - 'day' => _("Date"), - 'count' => _("arrived"), - 'sum' => _("arrived sum"), - 'departure' => _("planned departure") - ), $arrival_count) + div('row', [ + div('col-md-4', [ + heading(_("Planned arrival statistics"), 2), + bargraph('planned_arrives', 'day', [ + 'count' => _("arrived"), + 'sum' => _("arrived sum") + ], [ + 'count' => '#090', + 'sum' => '#888' + ], $planned_arrival_at_day), + table([ + 'day' => _("Date"), + 'count' => _("Count"), + 'sum' => _("Sum") + ], $planned_arrival_at_day) + ]), + div('col-md-4', [ + heading(_("Arrival statistics"), 2), + bargraph('arrives', 'day', [ + 'count' => _("arrived"), + 'sum' => _("arrived sum") + ], [ + 'count' => '#090', + 'sum' => '#888' + ], $arrival_at_day), + table([ + 'day' => _("Date"), + 'count' => _("Count"), + 'sum' => _("Sum") + ], $arrival_at_day) + ]), + div('col-md-4', [ + heading(_("Planned departure statistics"), 2), + bargraph('planned_departures', 'day', [ + 'count' => _("arrived"), + 'sum' => _("arrived sum") + ], [ + 'count' => '#090', + 'sum' => '#888' + ], $planned_departure_at_day), + table([ + 'day' => _("Date"), + 'count' => _("Count"), + 'sum' => _("Sum") + ], $planned_departure_at_day) + ]) + ]) )); } ?>