keep current date
This commit is contained in:
		| @@ -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); | ||||
|   | ||||
| @@ -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) { | ||||
|   | ||||
| @@ -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))); | ||||
|   | ||||
| @@ -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%; | ||||
|   | ||||
| @@ -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"> | ||||
|   | ||||
| @@ -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"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user