From a35a3580e03d0f01cbf0c9429eb604158f3b7bd2 Mon Sep 17 00:00:00 2001 From: Xu Date: Mon, 11 Dec 2023 19:54:21 +0100 Subject: [PATCH] highlight actual time in users shifts list --- includes/sys_template.php | 2 +- includes/view/User_view.php | 18 ++++++++++++++++++ resources/assets/themes/base.scss | 21 +++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/includes/sys_template.php b/includes/sys_template.php index 56df96e2..3adbffce 100644 --- a/includes/sys_template.php +++ b/includes/sys_template.php @@ -327,7 +327,7 @@ function render_table($columns, $rows, $data = true) $html .= ''; $html .= ''; foreach ($rows as $row) { - $html .= ''; + $html .= ''; foreach ($columns as $key => $column) { $value = ' '; if (isset($row[$key])) { diff --git a/includes/view/User_view.php b/includes/view/User_view.php index d83b25b1..bab365f6 100644 --- a/includes/view/User_view.php +++ b/includes/view/User_view.php @@ -316,6 +316,8 @@ function User_view_myshift(Shift $shift, $user_source, $its_me) 'location' => location_name_render($shift->location), 'shift_info' => $shift_info, 'comment' => '', + 'start' => $shift->start, + 'end' => $shift->end, ]; if ($its_me) { @@ -402,6 +404,20 @@ function User_view_myshifts( if (count($myshifts_table) > 0) { ksort($myshifts_table); + $myshifts_table = array_values($myshifts_table); + foreach ($myshifts_table as $i => &$shift) { + $before = $myshifts_table[$i - 1] ?? null; + $after = $myshifts_table[$i + 1] ?? null; + if (Carbon::now() > $shift['start'] && Carbon::now() < $shift['end']) { + $shift['row-class'] = 'border border-info border-2'; + } elseif ($after && Carbon::now() > $shift['end'] && Carbon::now() < $after['start']) { + $shift['row-class'] = 'border-bottom border-info'; + } elseif (!$before && Carbon::now() < $shift['start']) { + $shift['row-class'] = 'border-top-info'; + } elseif (!$after && Carbon::now() > $shift['end']) { + $shift['row-class'] = 'border-bottom border-info'; + } + } $myshifts_table[] = [ 'date' => '' . __('Sum:') . '', 'duration' => '' . sprintf('%.2f', round($timeSum / 3600, 2)) . ' h', @@ -461,6 +477,8 @@ function User_view_worklog(Worklog $worklog, $admin_user_worklog_privilege) $worklog->created_at->format(__('general.datetime')) ), 'actions' => $actions, + 'start' => $worklog->worked_at, + 'end' => $worklog->worked_at, ]; } diff --git a/resources/assets/themes/base.scss b/resources/assets/themes/base.scss index 8d30b4fe..5abf23ed 100644 --- a/resources/assets/themes/base.scss +++ b/resources/assets/themes/base.scss @@ -121,6 +121,27 @@ table a > .icon-icon_angel { margin-bottom: 0; } +/* making top border visible in tables */ +table .border-top { + border-top-width: calc(var(--bs-border-width) * 2) !important; +} + +/* to only highlight the top row in info color */ +table .border-top-info { + border-top-width: calc(var(--bs-border-width) * 2) !important; + border-top-color: rgba(var(--bs-info-rgb)) !important; +} + +// equal top and bottom border if highlighted +table .border-bottom { + border-bottom-width: calc(var(--bs-border-width) * 2) !important; +} + +/* to be able to highlight table rows */ +.table-responsive { + padding: 0 2px; +} + .stats { font-size: 20px; height: 150px;