From a0e1aaa990fd73cc9436adbaa5c0ccfc55c402ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Henke?= Date: Tue, 5 Jul 2022 21:17:57 +0200 Subject: [PATCH] keep current date --- .../timetrack/spring/done/DoneBean.java | 17 +++++++++++- .../timetrack/spring/done/DoneController.java | 27 ++++++++++++------- .../spring/done/impl/DoneGateway.java | 2 ++ src/main/resources/static/css/style.css | 6 +++++ src/main/resources/templates/done/item.html | 2 +- src/main/resources/templates/done/list.html | 2 +- 6 files changed, 43 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/DoneBean.java b/src/main/java/de/jottyfan/timetrack/spring/done/DoneBean.java index d5f62c3..feb398c 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/DoneBean.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/DoneBean.java @@ -26,6 +26,7 @@ public class DoneBean implements Serializable, Comparable { private static final DateTimeFormatter hhmm = DateTimeFormatter.ofPattern("HH:mm"); private Integer pk; + private LocalDate day; private LocalDateTime timeFrom; private LocalDateTime timeUntil; private TProjectRecord project; @@ -38,11 +39,13 @@ public class DoneBean implements Serializable, Comparable { private Integer fkBilling; public DoneBean() { + this.day = null; } public DoneBean(TDoneRecord r, Map projectMap, Map moduleMap, Map jobMap, Map billingMap) { this.pk = r.getPk(); + this.day = r.getTimeFrom() != null ? r.getTimeFrom().toLocalDate() : (r.getTimeUntil() == null ? r.getTimeUntil().toLocalDate() : LocalDate.now()); this.timeFrom = r.getTimeFrom(); this.timeUntil = r.getTimeUntil(); this.project = projectMap.get(r.getFkProject()); @@ -69,6 +72,10 @@ public class DoneBean implements Serializable, Comparable { return buf.toString(); } + public void setLocalDate(LocalDate date) { + this.day = date; + } + /** * set the day of timeFrom and timeUntil, keeping the times * @@ -142,7 +149,9 @@ public class DoneBean implements Serializable, Comparable { * @return a local date */ public LocalDate getLocalDate() { - if (timeFrom != null) { + if (day != null) { + return day; + } else if (timeFrom != null) { return timeFrom.toLocalDate(); } else if (timeUntil != null) { return timeUntil.toLocalDate(); @@ -174,6 +183,12 @@ public class DoneBean implements Serializable, Comparable { if (hm.length > 1) { minutes = Integer.valueOf(hm[1]); } + LocalDate theDay = getLocalDate(); + if (theDay != null) { + ldt = ldt.withYear(theDay.getYear()); + ldt = ldt.withMonth(theDay.getMonthValue()); + ldt = ldt.withDayOfMonth(theDay.getDayOfMonth()); + } ldt = ldt.withHour(hours); ldt = ldt.withMinute(minutes); ldt = ldt.withSecond(0); diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/DoneController.java b/src/main/java/de/jottyfan/timetrack/spring/done/DoneController.java index 240830b..1e3c8cf 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/DoneController.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/DoneController.java @@ -10,6 +10,7 @@ import javax.servlet.http.HttpServletRequest; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -63,19 +64,15 @@ public class DoneController { } @RolesAllowed("timetrack_user") - @RequestMapping(value = "/done/add", method = RequestMethod.GET) - public String toAdd(Model model) { - return toItem(null, model); + @RequestMapping(value = "/done/add/{day}", method = RequestMethod.GET) + public String toAdd(@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate day, Model model) { + DoneBean bean = new DoneBean(); + bean.setLocalDate(day); + return toItem(bean, model); } - @RolesAllowed("timetrack_user") - @GetMapping("/done/edit/{id}") - public String toItem(@PathVariable Integer id, Model model) { - DoneBean bean = doneService.getBean(id); + private String toItem(DoneBean bean, Model model) { DoneModel doneModel = new DoneModel(); - if (bean == null) { - bean = new DoneBean(); // the add case - } doneModel.setDay(bean.getLocalDate()); model.addAttribute("doneBean", bean); model.addAttribute("doneModel", doneModel); @@ -86,6 +83,16 @@ public class DoneController { return "done/item"; } + @RolesAllowed("timetrack_user") + @GetMapping("/done/edit/{id}") + public String toItem(@PathVariable Integer id, Model model) { + DoneBean bean = doneService.getBean(id); + if (bean == null) { + bean = new DoneBean(); // the add case; typically, only add from today + } + return toItem(bean, model); + } + @RolesAllowed("timetrack_user") @RequestMapping(value = "/done/upsert", method = RequestMethod.POST) public String doUpsert(Model model, @ModelAttribute DoneBean bean) { diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/impl/DoneGateway.java b/src/main/java/de/jottyfan/timetrack/spring/done/impl/DoneGateway.java index d077d0a..f3ae136 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/impl/DoneGateway.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/impl/DoneGateway.java @@ -250,6 +250,7 @@ public class DoneGateway { bean.setPk(r.get(T_DONE.PK)); bean.setTimeFrom(r.get(T_DONE.TIME_FROM)); bean.setTimeUntil(r.get(T_DONE.TIME_UNTIL)); + bean.setLocalDate(bean.getLocalDate()); bean.setProject(projectMap.get(r.get(T_DONE.FK_PROJECT))); bean.setModule(moduleMap.get(r.get(T_DONE.FK_MODULE))); bean.setActivity(jobMap.get(r.get(T_DONE.FK_JOB))); @@ -311,6 +312,7 @@ public class DoneGateway { bean.setPk(r.get(T_DONE.PK)); bean.setTimeFrom(r.get(T_DONE.TIME_FROM)); bean.setTimeUntil(r.get(T_DONE.TIME_UNTIL)); + bean.setLocalDate(bean.getLocalDate()); bean.setProject(projectMap.get(r.get(T_DONE.FK_PROJECT))); bean.setModule(moduleMap.get(r.get(T_DONE.FK_MODULE))); bean.setActivity(jobMap.get(r.get(T_DONE.FK_JOB))); diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index 9bad7ec..1b6e684 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -63,6 +63,12 @@ body { background: rgba(255,0,0,0.2); } +.redfont { + color: #a00; + padding-top: 6px; + margin-bottom: 0px; +} + .body { height: 100%; width: 100%; diff --git a/src/main/resources/templates/done/item.html b/src/main/resources/templates/done/item.html index a4b7df2..ada8682 100644 --- a/src/main/resources/templates/done/item.html +++ b/src/main/resources/templates/done/item.html @@ -19,7 +19,7 @@
-

+

diff --git a/src/main/resources/templates/done/list.html b/src/main/resources/templates/done/list.html index f0aed67..554021f 100644 --- a/src/main/resources/templates/done/list.html +++ b/src/main/resources/templates/done/list.html @@ -19,7 +19,7 @@