Kalender mit pagination
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<KalenderTag> week0 = getWeek(currentUser, montag);
|
||||
List<KalenderTag> week1 = getWeek(currentUser, montag.plusDays(7));
|
||||
List<KalenderTag> week2 = getWeek(currentUser, montag.plusDays(14));
|
||||
List<KalenderTag> 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<KalenderTag> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user