Click here to load reader
Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Kalendar-Controls für XPages Anwendungen
Michael Ruhnau
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Über mich
• Notes / Domino seit 1997
• XPages Entwicklung bei Helvetia Schweiz Versicherung
• http://www.mruhnau.net
• @mruhnau
http://www.mruhnau.net/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Was wir uns anschauen werden…
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Agenda
• Kalenderdaten in Domino
• Controls
• Was bietet die Extension Library?
• iNotes Calendar View
• REST Services
• jQuery FullCalendar
• "Kalender" Heatmaps
• Diskussion
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Hinweis
Track 3 / Session 5: "Kalender-Management mit Webservices" heute Nachmittag
Track 4 / Session 3: "REST Services in Domino" (Bernd Hort)
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Kalenderdaten in Domino
• User-Kalender
• Applikations-spezifische Data:
• Event-Datenbanken
• Projekt-Datenbanken
• CRM-Daten (Kundentermine)
• usw…
• Externe Daten
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
aka iNotes Calendar View
• Teil der Extension Library
• ExtLib-Äquivalent zu einer Notes Client Calendar View
• benötigt in etwa die gleichen Daten
• erwartet bestimmte Information
• Daten via REST Serives der ExtLib
• calendarJsonLegacyService
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Notes Calendar Views
• Spalte 1: Date/Time an dem der Eintrag erscheint
• Datum und Zeit anzeigen
• Aufsteigend sortieren
• Spalte 2: Dauer des Eintrags
• Start und Ende sowie Subject des Eintrags
• Calendar Style muss nicht gesetzt sein (nur für Notes Client)
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Notes Calendar Views
• Domino Designer Hilfe hilft weiter
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View
"One of the common requests of developers using XPages was for a Calendar view control. Although jQuery provided a plugin and some developers used Repeat Controls to generate a calendar-style layout and display content, there were still calls for a standard XPages control for displaying content in a calendar layout.
(…)
This approach provides a wealth of functionality but does mean some peculiarities in event handling."
XPages Extension Library, p. 194
• Extension Library bietet Lösungsansatz
•
• iNotes Kalender Wrapper
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View Demo
• Darstellung eines User Kalenders in XPages
• http://localhost:8080/ec2016cal.nsf/extlib2.xsp
http://localhost:8080/ec2016cal.nsf/extlib2.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View: Rest Service
• Daten: calendarJsonLegacyService
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View
iNotes Calendar Control
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View Demo
• Property type
• day, 2-days, work week, week, month
• Property Summarize
• Summary-View oder Slots
• To Dos / All Day Events
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View
Kalender mit Events aus lokaler DB
http://localhost:8080/ec2016cal.nsf/extlib4.xsp
http://localhost:8080/ec2016cal.nsf/extlib4.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View: Events
• Nur Client-side-JavaScript!
• Basiert auf iNotes
• onNewEntry
• onOpenEntry
• onSelectEntry
• …
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
All-Day-Issue
vs.
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
All-Day-Issue
vs.
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
All-Day-Issue
• Problem scheint im REST Service zu liegen
"20160502T040000"
"20160502T040000"
"20160502T040000"
"20160504T090000"
"20160504T040000"
"20160504T040000"
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View: weitere Beispiele
Weitere Beispiele findet man
• In der Extension Library Demo DB http://localhost:8080/XPagesExt16.nsf
• Im XPages Team Room http://localhost:8080/tr.nsf/calendar.xsp
• etliche Events ausprogrammiert
http://localhost:8080/XPagesExt16.nsfhttp://localhost:8080/tr.nsf/calendar.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
iNotes Calendar View: Bewertung
--- +++
iNotes Wrapper Verhalten wie Notes Kalender
Events: CSJS only Bestandteil der ExtLib
Wenig Weiterentwicklung einfach zu implementieren
Probleme bei All Day Events
Kein Bootstrap
nicht responsive
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
jQuery FullCalendar
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
jQuery Full Calendar
"A JavaScript event calendar. Customizable and open source.
FullCalendar is a drag-n-drop jQuery plugin for displaying events on a full-sized calendar."
http://fullcalendar.io/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
jQuery Full Calendar
• Website: http://fullcalendar.io
• GitHub: https://github.com/fullcalendar
• Dokumentation: http://fullcalendar.io/docs/
• Lizenz: MIT License http://fullcalendar.io/license/
• Entwickler: Adam Shaw http://arshaw.com/
• Browser: Firefox, Chrome, Safari, IE 8+
• Version:
• stable: v2.6.1 (Februar 2016)
• Beta: v2.7.0
• v1.0.0 : April 2009
http://fullcalendar.io/https://github.com/fullcalendarhttp://fullcalendar.io/docs/http://fullcalendar.io/license/http://arshaw.com/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Views
basicDay
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Views
basicWeek
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Views
month
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Views
agendaWeek
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Views
agendaDay
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: allDay-Slot
• Verfügbar für Agenda-Views
• All-Day-Events, Tasks
• JSON-Property allDay (boolean)
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Daten
An "event source" is anything that provides FullCalendar with data about events. It can be a simple array, an event-generating function that you define, a URL to a json feed, or a Google Calendar feed.
http://fullcalendar.io/docs/event_data/Event_Source_Object/
• JSON
• REST
http://fullcalendar.io/docs/event_data/Event_Source_Object/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar + XPages
• jQuery in NSF bereitstellen
• FullCalendar in NSF bereitstellen
• MomentJS in NSF bereitstellen
• "A Moment object represents a point in time, like the native Date Object, but is far superior." http://fullcalendar.io/docs/utilities/Moment/
• Ressourcen in XPage laden
• FullCalender erzeugen
• Daten via REST Service konsumieren
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Datehttp://fullcalendar.io/docs/utilities/Moment/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar + XPages: jQuery
• jQuery Website: https://jquery.com/
• Download: https://jquery.com/download/
• Import in NSF
• WebContent\js\jquery • jquery.min.js
• jquery.min.map
https://jquery.com/https://jquery.com/download/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar + XPages: FullCalendar
• Download: http://fullcalendar.io/download/
• Import in NSF
• WebContent\js\jquery • fullcalendar.min.css
• fullcalendar.min.js
http://fullcalendar.io/download/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar + XPages: Moment.js
• MomentJS Website: http://momentjs.com
• Download: http://momentjs.com/downloads/moment.min.js
• Import in NSF
• WebContent\js\jquery • fullcalendar.min.css
• fullcalendar.min.js
http://momentjs.com/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar + XPages: Ressourcen einbinden
• Laden der Ressourcen auf XPage
• Reihenfolge beachten!
• jQuery
• MomentJS
• FullCalendar
• Vor dojo laden: http://hasselba.ch/blog/?p=1181
•
http://hasselba.ch/blog/?p=1181
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar + XPages: Ressourcen einbinden
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Kalender erzeugen
Platzhalter für Kalender
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Kalender erzeugen
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Daten
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Finally…
http://localhost:8080/webapp/xfull2.nsf/fullStatic.xsp
http://localhost:8080/webapp/xfull2.nsf/fullStatic.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Daten mit REST
Schritt1:
Daten aus View "allEvents" in lokaler Datenbank
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Daten mit REST
Custom REST Service auf XPage
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Daten mit REST
Custom REST Service auf XPage
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Daten mit REST
http://localhost:8080/webapp/xfull2.nsf/fullRestLocal.xsp
REST: http://localhost:8080/webapp/xfull2.nsf/fullRestLocal.xsp/eventdata
http://localhost:8080/webapp/xfull2.nsf/fullRestLocal.xsphttp://localhost:8080/webapp/xfull2.nsf/fullRestLocal.xsp/eventdatahttp://localhost:8080/webapp/xfull2.nsf/fullRestLocal.xsp/eventdata
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: CustomRestService
• Erweiterung des CustomServiceBean
• Nutzt JsonWriter zum Erzeugen von JSON Antwort
• renderService doGet • JsonWriter erzeugen
• Events aus DB auslesen
• Json für jedes Event schreiben
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: CustomRestService
• Erweiterung des CustomServiceBean
• Nutzt JsonWriter zum Erzeugen von JSON Antwort
• renderService doGet • JsonWriter erzeugen
• Events aus DB auslesen
• Json für jedes Event schreiben
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: User-Kalender
http://localhost:8080/webapp/xfull2.nsf/fullRestUser.xsp
View: admin - rest
http://localhost:8080/webapp/xfull2.nsf/fullRestUser.xspnotes://w80238/C1257F8B002AC2E0/E1D7D0088F60D31DC1257F91005BDA32notes://w80238/C1257F8B002AC2E0/E1D7D0088F60D31DC1257F91005BDA32notes://w80238/C1257F8B002AC2E0/E1D7D0088F60D31DC1257F91005BDA32notes://w80238/C1257F8B002AC2E0/E1D7D0088F60D31DC1257F91005BDA32notes://w80238/C1257F8B002AC2E0/E1D7D0088F60D31DC1257F91005BDA32notes://w80238/C1257F8B002AC2E0/E1D7D0088F60D31DC1257F91005BDA32
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: weekends
weekends: false,
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Events
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Events
dayClick
eventClick
onMouseOver
onMouseOut
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Custom Views
Erweiterung und Anpassung bestehender Views
http://localhost:8080/webapp/xfull2.nsf/fullRestLocalView.xsp
http://localhost:8080/webapp/xfull2.nsf/fullRestLocalView.xsphttp://localhost:8080/webapp/xfull2.nsf/fullRestLocalView.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Custom Button
• Neu seit Version 2
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Custom Button
• Erstellen eines neuen Events mit Dialog
• REST Post
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Custom Button
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: Slots
• slotDuration
• slotLabelFormat
slotDuration: '00:20:00',
slotLabelFormat: 'hh:mm',
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: eventSources
Laden von Daten aus mehreren Quellen
http://localhost:8080/webapp/xfull2.nsf/fullRestSources.xsp
eventSources: [
urlVal(),
'http://localhost:8080/webapp/xfull2.nsf/fullRestUser.xsp/eventdata'
],
http://localhost:8080/webapp/xfull2.nsf/fullRestSources.xsphttp://localhost:8080/webapp/xfull2.nsf/fullRestSources.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: color
CalendarRestBean – doGet
this.jsonWriter.startProperty("backgroundColor");
this.jsonWriter.outStringLiteral("#f00");
this.jsonWriter.endProperty();
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
FullCalendar: weitere Optionen
• hiddenDays: [ 2, 4 ] // hide Tuesdays and Thursdays
• weekNumbers
• weekNumberCalculation: ISO / local
• allDaySlot: true, => allDayText
• displayEventTime
• displayEventEnd
• scrollTime
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Exkurs: Calendar Heat Maps
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMaps
• Diagramm zur Visualisierung von Daten
• Daten als Farben auf Raster
• großen Datenmenge schnell markante Werte erfassen
• Name abgeleitet aus Assoziation der Farben zu Temperaturen
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
cal-HeatMap
"Cal-Heatmap is a javascript module to create calendar heatmap to visualize time series data, a la github contribution graph"
https://github.com/wa0x6e/cal-heatmap
• Website: http://cal-heatmap.com/
• Lizenz: MIT License
• Aktuelles Release: 3.5.4
https://github.com/wa0x6e/cal-heatmaphttps://github.com/wa0x6e/cal-heatmaphttps://github.com/wa0x6e/cal-heatmaphttp://cal-heatmap.com/http://cal-heatmap.com/http://cal-heatmap.com/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap+ XPages
• D3.js in NSF bereitstellen
• D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS. https://d3js.org/
• Cal-HeatMap in NSF bereitstellen
• Ressourcen in XPage laden
• Platzhalter erzeugen
• Daten laden
• HeatMap erzeugen
https://d3js.org/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap+ XPages: d3
• Website: https://d3js.org/
• Import in NSF
• WebContent\js\d3 • d3.min.js
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: cal-HeatMap
• Download: https://github.com/wa0x6e/cal-heatmap/
• Import in NSF
• WebContent\js\cal-heatmap • cal-heatmap.min.js
• CSS File
https://github.com/wa0x6e/cal-heatmap/https://github.com/wa0x6e/cal-heatmap/https://github.com/wa0x6e/cal-heatmap/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Ressourcen einbinden
• Laden der Ressourcen auf XPage
• Reihenfolge beachten!
• d3
• Cal-HeatMap
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Kalender erzeugen
Platzhalter für HeatMap
itemSelector Property:
Default: #cal-heatmap
Verschiedene Selektoren möglich: ID, class http://cal-heatmap.com/#itemSelector
http://cal-heatmap.com/http://cal-heatmap.com/http://cal-heatmap.com/
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: erzeugen
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Beispiel 1
• http://localhost:8080/webapp/xfull2.nsf/heatSOStatic.xsp
http://localhost:8080/webapp/xfull2.nsf/heatSOStatic.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Beispiel 1
http://localhost:8080/webapp/xfull2.nsf/heatReservation.xsp
Resource Reservations
http://localhost:8080/webapp/xfull2.nsf/heatReservation.xsphttp://localhost:8080/webapp/xfull2.nsf/heatReservation.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Beispiel 1
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Beispiel 2
http://localhost:8080/webapp/xfull2.nsf/heatReservation.xsp
Statistik
http://localhost:8080/webapp/xfull2.nsf/heatReservation.xsphttp://localhost:8080/webapp/xfull2.nsf/heatReservation.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Optionen
• Legende legend: [50,100,200,250,500],
Farben legendColors: {
min: "#efefef",
max: "steelblue",
empty: "white"
},
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap + XPages: Werte
Anzeige der Werte im Raster
subDomainTextFormat: function(date ,value) {
return value;
},
http://localhost:8080/webapp/xfull2.nsf/heatSOAsyncWeek.xsp
subDomainTextFormat: "%d",
http://localhost:8080/webapp/xfull2.nsf/heatSOAsyncWeek.xsphttp://localhost:8080/webapp/xfull2.nsf/heatSOAsyncWeek.xsp
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap: Views
Domains für unterschiedliche Views
• hour
• day
• week
• month
• Year
• SubDomain
• für Raster
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
HeatMap: Views
Week > hour
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Credit
• Keith Strickland: JQuery FullCalendar in XPages http://www.keithstric.com/A55BAC/keithstric.nsf/default.xsp?documentId=C4ACC1CA300C873786257B15007F7732
• Sven Hasselbach: XPages: Inject CSJS code at page top http://hasselba.ch/blog/?p=1181
• Bernd Hort: www.assono.de/blog/d6plinks/ibmconnect2016-ad1238
• tbc
http://www.keithstric.com/A55BAC/keithstric.nsf/default.xsp?documentId=C4ACC1CA300C873786257B15007F7732http://www.keithstric.com/A55BAC/keithstric.nsf/default.xsp?documentId=C4ACC1CA300C873786257B15007F7732http://hasselba.ch/blog/?p=1181http://www.assono.de/blog/d6plinks/ibmconnect2016-ad1238http://www.assono.de/blog/d6plinks/ibmconnect2016-ad1238http://www.assono.de/blog/d6plinks/ibmconnect2016-ad1238
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Diskussion & Fragen
EntwicklerCamp 2016 IBM Notes – die eierlegende Wollmilchsau für alle und für Immer
Vielen Dank für die Aufmerksamkeit Guten Appetit!