diff --git a/src/main/java/de/nilzbu/mytimetracker/ui/view/DashboardOverView.java b/src/main/java/de/nilzbu/mytimetracker/ui/view/DashboardOverView.java index 689b12d..09e011b 100644 --- a/src/main/java/de/nilzbu/mytimetracker/ui/view/DashboardOverView.java +++ b/src/main/java/de/nilzbu/mytimetracker/ui/view/DashboardOverView.java @@ -19,6 +19,7 @@ import de.nilzbu.mytimetracker.ui.component.ChartJsComponent; import de.nilzbu.mytimetracker.ui.layout.MainLayout; import de.nilzbu.mytimetracker.ui.widget.KeyFigureWidget; import jakarta.annotation.security.PermitAll; +import org.jetbrains.annotations.NotNull; import org.springframework.security.core.context.SecurityContextHolder; import java.time.LocalDate; @@ -150,8 +151,14 @@ public class DashboardOverView extends VerticalLayout { chartLayout.setSpacing(true); Component categoryChart = createCategoryBarChart(scopedEntries); - Component overtimeChart = createOvertimeLineChart(allEntries, scopedEntries); + categoryChart.getStyle().setBackgroundColor("lightgray"); + categoryChart.getStyle().setBorder("1px solid black" ); + categoryChart.getStyle().setMargin("10px"); + Component overtimeChart = createOvertimeLineChart(allEntries, scopedEntries); + overtimeChart.getStyle().setBackgroundColor("lightgray"); + overtimeChart.getStyle().setBorder("1px solid black" ); + overtimeChart.getStyle().setMargin("10px"); chartLayout.add(categoryChart, overtimeChart); chartLayout.setFlexGrow(1, categoryChart); @@ -184,18 +191,30 @@ public class DashboardOverView extends VerticalLayout { calculateDaysWithDayStatus.apply(scopedEntries, DayStatus.SICK) ); - KeyFigureWidget deviation = new KeyFigureWidget( - "Deviation", - "" + scopedEntries.stream() - .map(entry -> timeEntryService.calculateNetWorkMinutes(entry) - entry.getTargetMinutes()) - .reduce(0, Integer::sum) + KeyFigureWidget timeBalance = new KeyFigureWidget( + "Time Balance", + getTimeBalance(scopedEntries) ); - keyFigureLayout.add(deviation, workingDays, remoteDays, officeDays, vacationDays, sickDays); + keyFigureLayout.getStyle().setBackgroundColor("lightgray"); + keyFigureLayout.getStyle().setBorder("1px solid black" ); + keyFigureLayout.getStyle().setMargin("10px"); + + keyFigureLayout.add(timeBalance, workingDays, remoteDays, officeDays, vacationDays, sickDays); contentContainer.add(keyFigureLayout); } + @NotNull + private String getTimeBalance(List scopedEntries) { + Integer minutes = scopedEntries.stream() + .map(entry -> timeEntryService.calculateNetWorkMinutes(entry) - entry.getTargetMinutes()) + .reduce(0, Integer::sum); + + double hours = minutes / 60.0; + return "%.2f h".formatted(hours); + } + private Component createCategoryBarChart(List entries) { Map statusCount = entries.stream() .collect(Collectors.groupingBy(e -> e.getStatus().name(), Collectors.counting()));