From 47e3b3f597c738cbef7020adb25c1184c65e6712 Mon Sep 17 00:00:00 2001 From: Sebastian Schmelzer Date: Thu, 13 Sep 2012 09:28:58 +0200 Subject: test final --- .../de/unifr/rz/infoscreen/IcsEventProvider.java | 22 ++++- .../component/CalendarViewCarrousel.java | 39 ++++---- .../rz/infoscreen/component/EventCalendar.java | 100 +++++++++++++++++++++ .../rz/infoscreen/component/EventCalendar.html | 42 ++++++++- .../de/unifr/rz/infoscreen/component/test.ics | 67 -------------- .../unifr/rz/infoscreen/component/test.ics.orage | 0 src/main/webapp/img/videoconf.png | Bin 0 -> 44844 bytes test.ics | 67 -------------- 8 files changed, 183 insertions(+), 154 deletions(-) delete mode 100644 src/main/resources/de/unifr/rz/infoscreen/component/test.ics delete mode 100644 src/main/resources/de/unifr/rz/infoscreen/component/test.ics.orage create mode 100644 src/main/webapp/img/videoconf.png delete mode 100644 test.ics diff --git a/src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java b/src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java index 3156a54..48e854e 100644 --- a/src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java +++ b/src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java @@ -3,6 +3,8 @@ package de.unifr.rz.infoscreen; import java.net.URL; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; import java.util.Iterator; import java.util.List; @@ -54,7 +56,8 @@ public class IcsEventProvider implements EventProvider { java.util.Calendar today = java.util.Calendar.getInstance(); java.util.Calendar yesterday = today; yesterday.add(java.util.Calendar.DATE, -1); - Period period = new Period(new net.fortuna.ical4j.model.DateTime(yesterday.getTime()), new Dur(7, 0, 0, 0)); + Period period = new Period(new net.fortuna.ical4j.model.DateTime(start.toDate()), + new net.fortuna.ical4j.model.DateTime(end.toDate())); ArrayList rules = new ArrayList(); rules.add(new PeriodRule(period)); @@ -75,7 +78,8 @@ public class IcsEventProvider implements EventProvider { e.setTitle(event.getSummary().getValue()); events.add(e); } - + + Collections.sort(events, new EventComparator()); return events; } @@ -92,5 +96,19 @@ public class IcsEventProvider implements EventProvider { public void setIcsUrl(String icsUrl) { this.icsUrl = icsUrl; } + + private class EventComparator implements Comparator{ + + @Override + public int compare(Event a, Event b) { + if (a.equals(b)) { + return 0; + } else if (a.getStart().isBefore(b.getStart())) { + return -1; + } + return 1; + } + + } } diff --git a/src/main/java/de/unifr/rz/infoscreen/component/CalendarViewCarrousel.java b/src/main/java/de/unifr/rz/infoscreen/component/CalendarViewCarrousel.java index 23fdc77..c50d1a2 100644 --- a/src/main/java/de/unifr/rz/infoscreen/component/CalendarViewCarrousel.java +++ b/src/main/java/de/unifr/rz/infoscreen/component/CalendarViewCarrousel.java @@ -32,11 +32,12 @@ public class CalendarViewCarrousel extends Panel { weekView.setOutputMarkupId(true); dayView.setOutputMarkupId(true); eventView.setOutputMarkupId(true); - + currentView = weekView; - add(currentView); + rotateView(); + // rotate view every 10 sec add(new AbstractAjaxTimerBehavior(Duration.seconds(10)) { @@ -46,21 +47,7 @@ public class CalendarViewCarrousel extends Panel { protected void onTimer(AjaxRequestTarget target) { System.out.println("ajaxcall"); if (target != null) { - Calendar cal = Calendar.getInstance(); - - if ((int) ((cal.get(Calendar.SECOND) % 30) / 10) == 0) { - currentView.replaceWith(weekView); - currentView = weekView; - System.out.println("weekView"); - } else if ((int) ((cal.get(Calendar.SECOND) % 30) / 10) == 1) { - currentView.replaceWith(dayView); - currentView = dayView; - System.out.println("dayView"); - } else { - currentView.replaceWith(eventView); - currentView = eventView; - System.out.println("eventView"); - } + rotateView(); target.add(currentView); target.add(getComponent()); } @@ -76,4 +63,22 @@ public class CalendarViewCarrousel extends Panel { public void setEventProvider(EventProvider eventProvider) { this.eventProvider = eventProvider; } + + private void rotateView() { + Calendar cal = Calendar.getInstance(); + + if ((int) ((cal.get(Calendar.SECOND) % 30) / 10) == 0) { + currentView.replaceWith(weekView); + currentView = weekView; + System.out.println("weekView"); + } else if ((int) ((cal.get(Calendar.SECOND) % 30) / 10) == 1) { + currentView.replaceWith(dayView); + currentView = dayView; + System.out.println("dayView"); + } else { + currentView.replaceWith(eventView); + currentView = eventView; + System.out.println("eventView"); + } + } } diff --git a/src/main/java/de/unifr/rz/infoscreen/component/EventCalendar.java b/src/main/java/de/unifr/rz/infoscreen/component/EventCalendar.java index a9fa77f..3a3d5ff 100644 --- a/src/main/java/de/unifr/rz/infoscreen/component/EventCalendar.java +++ b/src/main/java/de/unifr/rz/infoscreen/component/EventCalendar.java @@ -1,8 +1,15 @@ package de.unifr.rz.infoscreen.component; +import java.util.Collection; +import java.util.Date; + +import net.ftlines.wicket.fullcalendar.Event; import net.ftlines.wicket.fullcalendar.EventProvider; +import nu.xss.web.util.ContextPathResourceUrl; +import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.Panel; +import org.joda.time.DateTime; public class EventCalendar extends Panel { @@ -12,6 +19,99 @@ public class EventCalendar extends Panel { public EventCalendar(String id, EventProvider ep) { super(id); setEventProvider(ep); + + + if (isEventRunning()) { + // CASE 1: Event running + final Event e = getEventRunning(); + add(new Label("eventTitle", e.getTitle())); + add(new Label("eventTimeline", e.getStart().toString("HH:mm") + " - " + e.getEnd().toString("HH:mm") + " Uhr")); + } else if (isEventUpcomming()) { + // CASE 2: No Event running, but one is starting soon + final Event e = getEventUpcomming(); + add(new Label("eventTitle", e.getTitle())); + add(new Label("eventTimeline", "Beginn: " + e.getStart().toString("HH:mm") + " - " + e.getEnd().toString("HH:mm") + " Uhr")); + } else { + // CASE 3: No Events near now.. + add(new Label("eventTitle", "").setEscapeModelStrings(false)); + add(new Label("eventTimeline", "")); + } + + final Event next = getNextEvent(); + if (next != null) { + final DateTime now = new DateTime(new Date()); + if (next.getStart().getDayOfYear() - now.getDayOfYear() == 0) { + add(new Label("eventNext", "Nächste Veranstaltung:
" + next.getTitle() + + " (Heute, " + next.getStart().toString("HH:mm") + + " - " + next.getEnd().toString("HH:mm") + "Uhr)" + ).setEscapeModelStrings(false)); + } else if (next.getStart().getDayOfYear() - now.getDayOfYear() == 1) { + add(new Label("eventNext", "Nächste Veranstaltung:
" + next.getTitle() + + " (Morgen, " + next.getStart().toString("HH:mm") + + " - " + next.getEnd().toString("HH:mm") + "Uhr)" + ).setEscapeModelStrings(false)); + } else { + add(new Label("eventNext", "Nächste Veranstaltung:
" + next.getTitle() + + " (" + next.getStart().toString("dd.MM.yyyy, HH:mm") + + " - " + next.getEnd().toString("HH:mm") + "Uhr)" + ).setEscapeModelStrings(false)); + } + } else { + add(new Label("eventNext", "")); + } + + +// Event next = getNextEvent(); +// if (next != null) { +// add(new Label("label3", "next: " + next.getTitle() + " - " + next.getStart().toString())); +// } else { +// add(new Label("label3", "next: no future events found")); +// } + + + } + + private Event getEventRunning() { + DateTime now = new DateTime(new Date()); + Collection events = getEventProvider().getEvents(now, now); + if (!events.isEmpty()) { + return events.iterator().next(); + } + return null; + } + + private boolean isEventRunning() { + return (getEventRunning() != null); + } + + + private Event getEventUpcomming() { + DateTime inTenMinutes = new DateTime(new Date()).plusMinutes(10); + Collection events = getEventProvider().getEvents(inTenMinutes, inTenMinutes); + if (!events.isEmpty()) { + return events.iterator().next(); + } + return null; + } + + private boolean isEventUpcomming() { + return (getEventUpcomming() != null); + } + + private Event getNextEvent() { + final Event eventRunningNow = getEventRunning(); + DateTime start; + if (eventRunningNow != null) { + start = eventRunningNow.getEnd().plusMinutes(1); + } else { + start = new DateTime(new Date()); + } + + Collection events = getEventProvider().getEvents(start, start.plusMonths(3)); + if (!events.isEmpty()) { + return events.iterator().next(); + } + return null; } public EventProvider getEventProvider() { diff --git a/src/main/resources/de/unifr/rz/infoscreen/component/EventCalendar.html b/src/main/resources/de/unifr/rz/infoscreen/component/EventCalendar.html index 0d2baeb..c8969d7 100644 --- a/src/main/resources/de/unifr/rz/infoscreen/component/EventCalendar.html +++ b/src/main/resources/de/unifr/rz/infoscreen/component/EventCalendar.html @@ -2,10 +2,50 @@ EventCalendar + + + - event!! +
+

+

+
+
\ No newline at end of file diff --git a/src/main/resources/de/unifr/rz/infoscreen/component/test.ics b/src/main/resources/de/unifr/rz/infoscreen/component/test.ics deleted file mode 100644 index 5bfb987..0000000 --- a/src/main/resources/de/unifr/rz/infoscreen/component/test.ics +++ /dev/null @@ -1,67 +0,0 @@ -BEGIN:VCALENDAR -PRODID:QIS-LSF HIS GmbH -VERSION:2.0 -BEGIN:VTIMEZONE -TZID:Europe/Berlin -X-LIC-LOCATION:Europe/Berlin -BEGIN:DAYLIGHT -TZOFFSETFROM:+0100 -TZOFFSETTO:+0200 -TZNAME:CEST -DTSTART:19700329T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 -END:DAYLIGHT -BEGIN:STANDARD -TZOFFSETFROM:+0200 -TZOFFSETTO:+0100 -TZNAME:CET -DTSTART:19701025T030000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -END:STANDARD -END:VTIMEZONE -METHOD:PUBLISH -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120903T080000 -DTEND;TZID=Europe/Berlin:20120903T120000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:108075184056 -DESCRIPTION: -SUMMARY:Landgericht Freiburg - Frau Kerner -CATEGORIES:Klausur -END:VEVENT -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120906T080000 -DTEND;TZID=Europe/Berlin:20120906T140000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:112467194866 -DESCRIPTION: -SUMMARY:Landeslehrerprüfungsamt - Frau Thegtmeier -CATEGORIES:Klausur -END:VEVENT -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120906T180000 -DTEND;TZID=Europe/Berlin:20120906T200000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:102150172358 -DESCRIPTION: -SUMMARY:Rechtswissenschaftliche Fakultät - Klausurenkurs - Frau Waldenberger -CATEGORIES:Kurs -END:VEVENT -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120908T080000 -DTEND;TZID=Europe/Berlin:20120908T130000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:102150172359 -DESCRIPTION: -SUMMARY:Rechtswissenschaftliche Fakultät - Klausurenkurs - Frau Waldenberger -CATEGORIES:Kurs -END:VEVENT -END:VCALENDAR \ No newline at end of file diff --git a/src/main/resources/de/unifr/rz/infoscreen/component/test.ics.orage b/src/main/resources/de/unifr/rz/infoscreen/component/test.ics.orage deleted file mode 100644 index e69de29..0000000 diff --git a/src/main/webapp/img/videoconf.png b/src/main/webapp/img/videoconf.png new file mode 100644 index 0000000..9b5e4b8 Binary files /dev/null and b/src/main/webapp/img/videoconf.png differ diff --git a/test.ics b/test.ics deleted file mode 100644 index 5bfb987..0000000 --- a/test.ics +++ /dev/null @@ -1,67 +0,0 @@ -BEGIN:VCALENDAR -PRODID:QIS-LSF HIS GmbH -VERSION:2.0 -BEGIN:VTIMEZONE -TZID:Europe/Berlin -X-LIC-LOCATION:Europe/Berlin -BEGIN:DAYLIGHT -TZOFFSETFROM:+0100 -TZOFFSETTO:+0200 -TZNAME:CEST -DTSTART:19700329T020000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 -END:DAYLIGHT -BEGIN:STANDARD -TZOFFSETFROM:+0200 -TZOFFSETTO:+0100 -TZNAME:CET -DTSTART:19701025T030000 -RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 -END:STANDARD -END:VTIMEZONE -METHOD:PUBLISH -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120903T080000 -DTEND;TZID=Europe/Berlin:20120903T120000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:108075184056 -DESCRIPTION: -SUMMARY:Landgericht Freiburg - Frau Kerner -CATEGORIES:Klausur -END:VEVENT -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120906T080000 -DTEND;TZID=Europe/Berlin:20120906T140000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:112467194866 -DESCRIPTION: -SUMMARY:Landeslehrerprüfungsamt - Frau Thegtmeier -CATEGORIES:Klausur -END:VEVENT -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120906T180000 -DTEND;TZID=Europe/Berlin:20120906T200000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:102150172358 -DESCRIPTION: -SUMMARY:Rechtswissenschaftliche Fakultät - Klausurenkurs - Frau Waldenberger -CATEGORIES:Kurs -END:VEVENT -BEGIN:VEVENT -DTSTART;TZID=Europe/Berlin:20120908T080000 -DTEND;TZID=Europe/Berlin:20120908T130000 -EXDATE: -LOCATION:KG II - Audimax -DTSTAMP:20120910T121316Z -UID:102150172359 -DESCRIPTION: -SUMMARY:Rechtswissenschaftliche Fakultät - Klausurenkurs - Frau Waldenberger -CATEGORIES:Kurs -END:VEVENT -END:VCALENDAR \ No newline at end of file -- cgit v1.2.3-55-g7522