From 8b14e4995227cbb39c27a9600edbc8af44da911d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Henke?= Date: Tue, 26 Jul 2022 10:36:22 +0200 Subject: [PATCH] overview on index --- build.gradle | 2 +- .../timetrack/spring/IndexController.java | 61 +++++++++++++++++++ .../spring/contact/ContactController.java | 11 ---- .../timetrack/spring/done/DoneController.java | 2 - .../timetrack/spring/done/SummaryBean.java | 11 ++++ src/main/resources/static/css/style.css | 53 +++++++++++++--- src/main/resources/templates/done/item.html | 8 ++- src/main/resources/templates/done/list.html | 48 +++++++++------ .../resources/templates/public/index.html | 32 +++++++++- 9 files changed, 182 insertions(+), 46 deletions(-) create mode 100644 src/main/java/de/jottyfan/timetrack/spring/IndexController.java diff --git a/build.gradle b/build.gradle index ec3c8c5..cbc7295 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group = 'de.jottyfan' -version = '1.2.1' +version = '1.2.2' sourceCompatibility = '11' ext['spring-framework.version'] = '5.3.18' diff --git a/src/main/java/de/jottyfan/timetrack/spring/IndexController.java b/src/main/java/de/jottyfan/timetrack/spring/IndexController.java new file mode 100644 index 0000000..722d6cf --- /dev/null +++ b/src/main/java/de/jottyfan/timetrack/spring/IndexController.java @@ -0,0 +1,61 @@ +package de.jottyfan.timetrack.spring; + +import java.time.Duration; +import java.time.LocalDate; +import java.util.List; + +import javax.annotation.security.RolesAllowed; +import javax.servlet.ServletException; +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.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import de.jottyfan.timetrack.spring.done.DoneBean; +import de.jottyfan.timetrack.spring.done.DoneModel; +import de.jottyfan.timetrack.spring.done.IDoneService; +import de.jottyfan.timetrack.spring.done.SummaryBean; + +/** + * + * @author henkej + * + */ +@Controller +public class IndexController { + private static final Logger LOGGER = LogManager.getLogger(IndexController.class); + + private final HttpServletRequest request; + + @Autowired + private IDoneService doneService; + + @Autowired + public IndexController(HttpServletRequest request) { + this.request = request; + } + + @GetMapping("/logout") + public String getLogout(HttpServletRequest request) throws ServletException { + request.logout(); + return "redirect:/"; + } + + @RolesAllowed("timetrack_user") + @RequestMapping("/") + public String getIndex(@ModelAttribute DoneModel doneModel, Model model) { + String username = doneService.getCurrentUser(request); + Duration maxWorkTime = Duration.ofHours(8); // TODO: to the configuration file + LocalDate day = LocalDate.now(); + List list = doneService.getList(day, username); + model.addAttribute("sum", new SummaryBean(list, day, maxWorkTime)); + LOGGER.debug("sum = {}", model.getAttribute("sum")); + return "public/index"; + } +} diff --git a/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java b/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java index cf29d27..2e02c26 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java +++ b/src/main/java/de/jottyfan/timetrack/spring/contact/ContactController.java @@ -39,17 +39,6 @@ public class ContactController { public ContactController(HttpServletRequest request) { this.request = request; } - - @GetMapping("/logout") - public String getLogout(HttpServletRequest request) throws ServletException { - request.logout(); - return "redirect:/"; - } - - @GetMapping("/") - public String getIndex() { - return "public/index"; - } @ModelAttribute("currentUser") @ResponseBody 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 d768d13..1e3c8cf 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/DoneController.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/DoneController.java @@ -19,8 +19,6 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import de.jottyfan.timetrack.db.done.tables.records.TProjectRecord; - /** * * @author henkej diff --git a/src/main/java/de/jottyfan/timetrack/spring/done/SummaryBean.java b/src/main/java/de/jottyfan/timetrack/spring/done/SummaryBean.java index 052429e..2e3069f 100644 --- a/src/main/java/de/jottyfan/timetrack/spring/done/SummaryBean.java +++ b/src/main/java/de/jottyfan/timetrack/spring/done/SummaryBean.java @@ -24,6 +24,17 @@ public class SummaryBean implements Serializable { this.maxDayWorktime = maxDayWorktime; } + @Override + public String toString() { + StringBuilder buf = new StringBuilder("{"); + buf.append("start=").append(getStart()); + buf.append(",end=").append(getEnd()); + buf.append(",pause=").append(getPause()); + buf.append(",overdue=").append(getOverdue()); + buf.append("}"); + return buf.toString(); + } + public String getBillingTime(String key) { Duration duration = Duration.ZERO; for (DoneBean bean : list) { diff --git a/src/main/resources/static/css/style.css b/src/main/resources/static/css/style.css index 80b9048..c6c4284 100644 --- a/src/main/resources/static/css/style.css +++ b/src/main/resources/static/css/style.css @@ -49,22 +49,23 @@ body { .formpane { margin: 24px; - border: 1px solid silver; - border-radius: 4px; - padding: 24px; - background: whitesmoke; + border: 1px solid silver; + border-radius: 4px; + padding: 24px; + background: whitesmoke; + min-width: 95vw !important; } .menudangerbutton { color: #e00 !important; - border: 1px solid rgba(0,0,0,0); + border: 1px solid rgba(0, 0, 0, 0); } .menudangerbutton:hover { color: #f00 !important; border: 1px solid silver; border-radius: 4px; - background: rgba(255,0,0,0.2); + background: rgba(255, 0, 0, 0.2); } .redfont { @@ -81,7 +82,8 @@ body { .page { width: 100%; - background-image: linear-gradient(to bottom, #99c1f1, #1a5f64) !important; + background-image: linear-gradient(to bottom, #99c1f1, #1a5f64) + !important; } .emph { @@ -121,7 +123,7 @@ body { .billing { color: black !important; border: 1px solid darkgray; - border-radius: 16px; + border-radius: 16px; padding: 4px !important; padding-left: 8px !important; padding-right: 8px !important; @@ -176,7 +178,7 @@ body { } .fc-content { - cursor: pointer; + cursor: pointer; } .btn-white-text { @@ -234,12 +236,43 @@ body { } .tab-pane-table { - background-color: white; + background-color: white; padding: 8px; border-radius: 4px; border: 1px solid silver; } +.inputtimefield { + min-width: 70px !important; +} + +.spanlabel { + display: inline-block; + min-width: 128px; + max-width: 128px; + margin-top: 4px; + margin-bottom: 4px; +} + +.btn-bordered { + border: 1px solid rgba(1, 1, 1, 0.0); + border-radius: 4px; +} + +.btn-bordered:hover { + border: 1px solid silver; +} + +.btn-secondaryhover:hover { + background-image: linear-gradient(to right bottom, #99c1f1, #1a5f64); + color: white; +} + +.btn-dangerhover:hover { + background-image: linear-gradient(to right bottom, rgba(255, 128, 0, 0.3), + rgba(255, 128, 0, 1)); +} + .clock { background-image: url("../png/clock.png"); background-repeat: no-repeat; diff --git a/src/main/resources/templates/done/item.html b/src/main/resources/templates/done/item.html index 89cc1a0..319070d 100644 --- a/src/main/resources/templates/done/item.html +++ b/src/main/resources/templates/done/item.html @@ -25,10 +25,11 @@
- +
+ @@ -38,15 +39,17 @@ +
- +
+ @@ -56,6 +59,7 @@ +
diff --git a/src/main/resources/templates/done/list.html b/src/main/resources/templates/done/list.html index e108bc5..9dc9cc2 100644 --- a/src/main/resources/templates/done/list.html +++ b/src/main/resources/templates/done/list.html @@ -19,8 +19,15 @@