From 03e29d88f0ff7829059c24b491cfdfa7ccd3ee4a Mon Sep 17 00:00:00 2001 From: Nico <5772511+Death111@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:09:57 +0200 Subject: [PATCH 1/2] #188: add work entry * from feature/#188_manualTaskCreation --- .../keeptime/controller/Controller.java | 10 +++++ .../keeptime/view/ReportController.java | 39 +++++++++++++++++++ src/main/resources/layouts/report.fxml | 7 +++- 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/doubleslash/keeptime/controller/Controller.java b/src/main/java/de/doubleslash/keeptime/controller/Controller.java index afe02d9d..c3b40add 100644 --- a/src/main/java/de/doubleslash/keeptime/controller/Controller.java +++ b/src/main/java/de/doubleslash/keeptime/controller/Controller.java @@ -128,6 +128,16 @@ public Project addNewProject(final Project project) { return project; } + public Work addWork(final Work work) { + LOG.info("Adding work '{}'", work); + final Work saved = model.getWorkRepository().save(work); + // show in report if it belongs to today + final LocalDate today = dateProvider.dateTimeNow().toLocalDate(); + if (today.equals(saved.getStartTime().toLocalDate())) { + model.getPastWorkItems().add(saved); + } + return saved; + } public void updateColorSettings(final Color hoverBackgroundColor,final Color hoverFontColor,final Color defaultBackgroundColor,final Color defaultFontColor,final Color taskBarColor) { settings.setTaskBarColor(taskBarColor); diff --git a/src/main/java/de/doubleslash/keeptime/view/ReportController.java b/src/main/java/de/doubleslash/keeptime/view/ReportController.java index e4253986..6b5c9baf 100644 --- a/src/main/java/de/doubleslash/keeptime/view/ReportController.java +++ b/src/main/java/de/doubleslash/keeptime/view/ReportController.java @@ -18,6 +18,8 @@ import java.io.IOException; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.*; import java.util.stream.Collectors; @@ -102,6 +104,9 @@ public class ReportController { @FXML private Button heimatSyncButton; + @FXML + private Button addWorkButton; + private static final Logger LOG = LoggerFactory.getLogger(ReportController.class); private final Model model; @@ -134,6 +139,7 @@ private void initialize() { expandCollapseButton.setOnMouseClicked(event ->toggleCollapseExpandReport()); initTableView(); initHeimatIntegration(); + addWorkButton.setOnAction(e -> onAddWork()); } private void initHeimatIntegration() { @@ -537,6 +543,39 @@ private Node createCopyWorkButton(final Work w) { return copyButton; } + private void onAddWork() { + final boolean isToday = LocalDate.now().equals(currentReportDate); + final LocalDateTime now = LocalDateTime.now(); + final LocalDateTime defaultStart = isToday ? now.minusMinutes(15) : currentReportDate.atTime(LocalTime.of(9, 0)); + final LocalDateTime defaultEnd = isToday ? now : currentReportDate.atTime(LocalTime.of(10, 0)); + + final Project defaultProject = model.activeWorkItem.get() != null + ? model.activeWorkItem.get().getProject() + : model.getIdleProject(); + + final Work newWorkDefaults = new Work(defaultStart, defaultEnd, defaultProject, ""); + final Dialog dialog = setupAddWorkDialog(newWorkDefaults); + + final Optional result = dialog.showAndWait(); + result.ifPresent(createdWork -> { + controller.addWork(createdWork); + this.update(); + }); + } + + private Dialog setupAddWorkDialog(final Work work) { + final Dialog dialog = new Dialog<>(); + dialog.initOwner(stage); + dialog.setTitle("Add work"); + dialog.setHeaderText("Add work"); + dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL); + + final GridPane grid = setUpEditWorkGridPane(work, dialog); + dialog.getDialogPane().setContent(grid); + + return dialog; + } + public void update() { heimatSyncButton.setVisible(model.getHeimatSettings().isHeimatActive()); // TODO save work so it appears directly in report. Quick fixes #170. Use #176 for this instead. diff --git a/src/main/resources/layouts/report.fxml b/src/main/resources/layouts/report.fxml index 530c67d7..012c764c 100644 --- a/src/main/resources/layouts/report.fxml +++ b/src/main/resources/layouts/report.fxml @@ -87,7 +87,12 @@ -