keep current date

This commit is contained in:
Jörg Henke
2022-07-05 21:17:57 +02:00
parent 2bc826edd6
commit a0e1aaa990
6 changed files with 43 additions and 13 deletions

View File

@ -26,6 +26,7 @@ public class DoneBean implements Serializable, Comparable<DoneBean> {
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<DoneBean> {
private Integer fkBilling;
public DoneBean() {
this.day = null;
}
public DoneBean(TDoneRecord r, Map<Integer, TProjectRecord> projectMap, Map<Integer, TModuleRecord> moduleMap,
Map<Integer, TJobRecord> jobMap, Map<Integer, TBillingRecord> 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<DoneBean> {
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<DoneBean> {
* @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<DoneBean> {
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);

View File

@ -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) {

View File

@ -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)));

View File

@ -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%;

View File

@ -19,7 +19,7 @@
<div class="row mb-3">
<label for="outputDay" class="col-sm-2 col-form-label">am</label>
<div class="col-sm-10">
<p th:text="${doneModel.dayString}" />
<input id="inputLocalDate" type="text" th:field="*{localDate}" class="form-control" />
</div>
</div>
<div class="row mb-3">

View File

@ -19,7 +19,7 @@
</li>
</ul>
<ul layout:fragment="menu">
<li class="nav-item" sec:authorize="hasRole('timetrack_user')"><a class="nav-link btn btn-success btn-white-text" th:href="@{/done/add}">Neuer
<li class="nav-item" sec:authorize="hasRole('timetrack_user')"><a class="nav-link btn btn-success btn-white-text" th:href="@{/done/add/{day}(day=${doneModel.day})}">Neuer
Eintrag</a></li>
</ul>
<main layout:fragment="content">