From 12a3370d8e49cea536e944fffa7e8e90e590370f Mon Sep 17 00:00:00 2001 From: mbremer Date: Mon, 12 Jul 2021 21:27:26 +0200 Subject: [PATCH] Kalender mit pagination --- .../mbremer/extension/CommonExtensions.java | 8 ++ .../de/mbremer/kalender/KalenderResource.java | 28 +++--- .../java/de/mbremer/kalender/KalenderTag.java | 2 + src/main/resources/templates/kalender.html | 95 ------------------- .../resources/templates/kalenderpage.html | 61 ++++++++++++ 5 files changed, 88 insertions(+), 106 deletions(-) delete mode 100644 src/main/resources/templates/kalender.html create mode 100644 src/main/resources/templates/kalenderpage.html diff --git a/src/main/java/de/mbremer/extension/CommonExtensions.java b/src/main/java/de/mbremer/extension/CommonExtensions.java index 564ba9a..1ed6539 100644 --- a/src/main/java/de/mbremer/extension/CommonExtensions.java +++ b/src/main/java/de/mbremer/extension/CommonExtensions.java @@ -12,4 +12,12 @@ public class CommonExtensions { public static String formatCommon(LocalDate date) { return date == null ? "" : date.atStartOfDay(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("EEEE, d.M.yyyy")); } + + public static int minus(int a, int b) { + return a - b; + } + + public static int plus(int a, int b) { + return a + b; + } } diff --git a/src/main/java/de/mbremer/kalender/KalenderResource.java b/src/main/java/de/mbremer/kalender/KalenderResource.java index f16ca48..fa04acd 100644 --- a/src/main/java/de/mbremer/kalender/KalenderResource.java +++ b/src/main/java/de/mbremer/kalender/KalenderResource.java @@ -27,26 +27,30 @@ public class KalenderResource { @Inject SecurityIdentity identity; @Inject - Template kalender; + Template kalenderpage; @Path("") @GET @Produces(MediaType.TEXT_HTML) public TemplateInstance kalender() { + return kalenderWithOffset(0); + } + + @Path("offset/{weeks}") + @GET + @Produces(MediaType.TEXT_HTML) + public TemplateInstance kalenderWithOffset(@PathParam("weeks") int offsetInWeeks) { User currentUser = User.find("username", identity.getPrincipal().getName()).singleResult(); LocalDate today = LocalDate.now(); - LocalDate montag = today.minusDays(today.getDayOfWeek().getValue() - 1); + LocalDate montag = today.minusDays(today.getDayOfWeek().getValue() - 1).plusDays(7 * offsetInWeeks); - List week0 = getWeek(currentUser, montag); - List week1 = getWeek(currentUser, montag.plusDays(7)); - List week2 = getWeek(currentUser, montag.plusDays(14)); + List week = getWeek(currentUser, montag); - return kalender + return kalenderpage .data("today", today) - .data("week0", week0) - .data("week1", week1) - .data("week2", week2); + .data("offset", offsetInWeeks) + .data("week", week); } private List getWeek(User currentUser, LocalDate start) { @@ -55,6 +59,7 @@ public class KalenderResource { LocalDate day = start.plusDays(d); KalenderTag tag = (KalenderTag) KalenderTag.find("day", day).singleResultOptional().orElse(new KalenderTag(day)); tag.setCurrentUserInOffice(currentUser.equals(tag.getInOffice())); + tag.setToday(LocalDate.now().equals(day)); return tag; }) .collect(Collectors.toList()); @@ -64,7 +69,8 @@ public class KalenderResource { @Transactional @Consumes(MediaType.MULTIPART_FORM_DATA) @Path("/inoffice/{day}") - public TemplateInstance update(@PathParam("day") String day, @MultipartForm KalenderTagForm kalenderForm) { + public TemplateInstance update(@PathParam("day") String day, + @QueryParam("offset") int offsetInWeeks, @MultipartForm KalenderTagForm kalenderForm) { LocalDate dayParsed = LocalDate.parse(day); User currentUser = User.find("username", identity.getPrincipal().getName()).singleResult(); @@ -81,6 +87,6 @@ public class KalenderResource { tag.persist(); } - return kalender(); + return kalenderWithOffset(offsetInWeeks); } } diff --git a/src/main/java/de/mbremer/kalender/KalenderTag.java b/src/main/java/de/mbremer/kalender/KalenderTag.java index f51ce16..ba9bd2b 100644 --- a/src/main/java/de/mbremer/kalender/KalenderTag.java +++ b/src/main/java/de/mbremer/kalender/KalenderTag.java @@ -22,6 +22,8 @@ public class KalenderTag extends PanacheEntity { private User inOffice; @Transient private boolean currentUserInOffice; + @Transient + private boolean today; public KalenderTag(LocalDate day) { this.day = day; diff --git a/src/main/resources/templates/kalender.html b/src/main/resources/templates/kalender.html deleted file mode 100644 index fcc1140..0000000 --- a/src/main/resources/templates/kalender.html +++ /dev/null @@ -1,95 +0,0 @@ -{#include base.html} -{#kalender_active}active{/} -{#contents} - -
- Heute ist {today.formatCommon} -
-
- - - - - - - - - - {#for day in week0} - - - - - - - {/for} - -
Ich will ins BüroDatumIm Büro
-
-
- -
-
-
- {day.day.formatCommon} - - {#if day.inOffice}{day.inOffice.username}{/if} -
-
- -
- - - {#for day in week1} - - - - - - - - {/for} - -
-
-
- -
-
-
- {day.day.formatCommon} - - {#if day.inOffice}{day.inOffice.username}{/if} -
- -
- - - {#for day in week2} - - - - - - - - {/for} - -
-
-
- -
-
-
- {day.day.formatCommon} - - {#if day.inOffice}{day.inOffice.username}{/if} -
-
- - {/contents} - {/include} \ No newline at end of file diff --git a/src/main/resources/templates/kalenderpage.html b/src/main/resources/templates/kalenderpage.html new file mode 100644 index 0000000..8155233 --- /dev/null +++ b/src/main/resources/templates/kalenderpage.html @@ -0,0 +1,61 @@ +{#include base.html} +{#kalender_active}active{/} +{#contents} + +
+ Heute ist {today.formatCommon} +
+ +
+ +
+ +
+ + + + + + + + + + {#for day in week} + + + + + + + {/for} + +
Ich will ins BüroDatumIm Büro
+
+
+ +
+
+
+ {day.day.formatCommon} + + {#if day.inOffice}{day.inOffice.username}{/if} +
+
+ +{/contents} +{/include} \ No newline at end of file