SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
DEV112 - Let's Calendar That! -
Add Calendars to your Domino
web applications
Our Sponsors
• Who are we?
• Goals of this session
• What is FullCalendar
• An Example of FullCalendar in an XPages Application
• No XPages? Where to go next
Agenda
• Howard Greenberg
– Been doing Notes/Domino teaching and consulting since 1994
– Owner of NetExperts and TLCC
• TLCC has a complete line courses for Notes and Domino
• NetExperts does consulting
• Jesse Gallagher
– frostillic.us
– Consultant at I Know Some Guys
Who are we?
• Learn how to implement a cool calendar in XPages
• Learn how to setup a REST service using Java/XPages to
allow access to your data from anything
• Start to consider what happens if you move off XPages
Goals of this session
• Per their website “the most popular full-sized JavaScript Calendar”
– For desktop and tablet sized devices
– Displays month, week, day and list formats
– Can (optionally) use BootStrap
– Works with React, Vue and Angular
– Uses REST to populate calendar entries (other options as well)
– Supports drag and drop of calendar entries
– Create new entry by clicking on date
– Support recurring entries
• Full documentation and demos at https://fullcalendar.io/
• Demo!!!
What is FullCalendar?
• Input parameters for start and end sent by FullCalendar
– Our sample has a custom Important parameter to
filter only important entries
• The JSON sent can have many different properties for
controlling style, type of event, etc.
– Should have a title (appears on event), start and end
https://fullcalendar.io/docs/event-parsing
REST Service to feed the Calendar
https://www.netexperts.com/demo/collab19.nsf/API.xsp/
API?start=2019-08-14&end=2019-08-16&important=yes
Sample JSON output
• FullCalendar 4 supports Bootstrap 4
• There is no “native” support for Bootstrap 4 in XPages
– Use Bootstrap 4 and roll your own (bring in the css and js files)
or...
– Use FullCalendar 3 (note slightly different API and not
supported anymore)
• See documentation for implementation
• Bootstrap is not required, it is optional
A Word About Bootstrap
• Download the zip file and extract
– https://fullcalendar.io/docs/getting-
started#download
• Bring in resources
– WebContent, create folder called fullcalendar
– Drag and drop the folders under packages in
the zip file to this new folder in Designer
How do we add this to XPages?
• Bring in the needed modules
• The JS files have the AMD issue
– See the demo database for the workaround
• Only load what you need depending on functionality used
• See ccFullCalendarLoader custom control for example
• OpenNTF project to get around AMD loader issues
https://openntf.org/XSnippets.nsf/snippet.xsp?id=hack-to-use-jquery-amd-
widgets-and-dojo-together
– Have to turn OFF the JavaScript/CSS aggregation option (XSP Properties)
xsp.persistence.mode=file
Create a “Loader” Custom Control
• Users can click an existing entry to see information about
the entry in a dialog
• A dialog is used to create new entries
• To maintain state of the calendar all interaction is done
via dialogs
– Dialogs are server side
• Calls Java routine to create/save back end document
• Could use client side JS for dialog and a REST server to post data
– Have to reload the calendar when done
XPages Design – calendar.xsp
Demo App Architecture
Front End, can be anything but here XPages Back End
Gets calendar entries via REST/JSON
Posts calendar drag and drop changes
via REST/JSON
Create/Edits done in dialog, uses bean
to save data (not REST in this case)
When dialog is opened to edit entry
the document is retrieved via UNID
REST API has GET to retrieve entries
based on start and end dates
POST to save to the back end any
changes done using drag and drop in
the calendar
Calendar bean to retrieve and save
entries when they are created/edited
using dialog
XPages via Bean
GET and Post to REST
Service
Sends back data via
JSON
Code WalkThrough
Calendar XPage
• Calendar.java > calendar object
– Has “helper” code to create document, retrieve docs, save back to
Domino
• getCalendarDocs – retrieves a list of Calendar objects based on date range
• saveCalendar – saves object to Domino
• changeCalendarDates – changes a given calendar entry to new date
• CalendarJSON.java > Handles REST Service
• doGet, do Post (others not implemented)
• API.xsp > XPage to surface REST Service
– Calls CalendarJSON.java
REST Service
Code WalkThrough
Calendar.java
CalendarJSON.java
API.xsp
• FullCalendar supports drag/drop editing of date/time
• Posts to REST Service to change in Domino DB
Next Step – enabling drag/drop
• Boss says get rid of XPages
• Domino used only for back end storage
• Have to re-write front end in ???
– What you want... Angular, REACT, etc.
• FullCalendar works with all those
• What about the REST Service???
No XPages, No Problem
• JAX-RS is your path
• Several options:
• Inside the NSF with XPages Jakarta EE Support
• In an OSGi plugin
• In a separate JEE web app
• The same code will apply to all three, so you’re future-
resilient
No XPages, No Problem
• XPages Jakarta EE Support is on OpenNTF
• (“Jakarta EE” is the new name for Java EE)
• (It’s a whole “thing”)
• It adds support for several modern Java standards to XPages
• We care about two main components:
• JAX-RS for REST services
• JSON-B for mapping objects to JSON
No XPages, No Problem
• Download the nsf from OpenNTF
– Link to download!!!
• Go to BitBucket and clone
– https://bitbucket.org/howardtlcc-admin/collabsphere-2019-
dev112
Demo Database
• Must have the following projects installed
– XPages Debug Toolbar (can disable easily)
– OpenNTF ODA (can re-write code easily to use native Domino
API)
– XPages Jakarta EE Support
Demo Requirements
Question time!!!!

Mais conteúdo relacionado

Mais procurados

How to Bring HCL Nomad Web and Domino Together Without SafeLinx
How to Bring HCL Nomad Web and Domino Together Without SafeLinxHow to Bring HCL Nomad Web and Domino Together Without SafeLinx
How to Bring HCL Nomad Web and Domino Together Without SafeLinx
panagenda
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Web
panagenda
 

Mais procurados (20)

Domino Adminblast
Domino AdminblastDomino Adminblast
Domino Adminblast
 
How to Bring HCL Nomad Web and Domino Together Without SafeLinx
How to Bring HCL Nomad Web and Domino Together Without SafeLinxHow to Bring HCL Nomad Web and Domino Together Without SafeLinx
How to Bring HCL Nomad Web and Domino Together Without SafeLinx
 
60 Admin Tips
60 Admin Tips60 Admin Tips
60 Admin Tips
 
What is new in Notes & Domino Deleopment V10.x
What is new in Notes & Domino Deleopment V10.xWhat is new in Notes & Domino Deleopment V10.x
What is new in Notes & Domino Deleopment V10.x
 
Great new Domino features since 9.0.1FP8.pptx
Great new Domino features since 9.0.1FP8.pptxGreat new Domino features since 9.0.1FP8.pptx
Great new Domino features since 9.0.1FP8.pptx
 
The Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad WebThe Ultimate Administrator’s Guide to HCL Nomad Web
The Ultimate Administrator’s Guide to HCL Nomad Web
 
IBM Traveler Management, Security and Performance
IBM Traveler Management, Security and PerformanceIBM Traveler Management, Security and Performance
IBM Traveler Management, Security and Performance
 
dominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptxdominocamp2022.t1s1.dde.pptx
dominocamp2022.t1s1.dde.pptx
 
RNUG - HCL Notes V11 Performance Boost
RNUG - HCL Notes V11 Performance BoostRNUG - HCL Notes V11 Performance Boost
RNUG - HCL Notes V11 Performance Boost
 
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best PracticesApril, 2021 OpenNTF Webinar - Domino Administration Best Practices
April, 2021 OpenNTF Webinar - Domino Administration Best Practices
 
HCL Sametime 12.0 on Docker - Step-By-Step.pdf
HCL Sametime 12.0 on Docker - Step-By-Step.pdf HCL Sametime 12.0 on Docker - Step-By-Step.pdf
HCL Sametime 12.0 on Docker - Step-By-Step.pdf
 
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
Migrate your Sametime Server to LDAP Authentication (Admincamp 2013)
 
Java for XPages Development
Java for XPages DevelopmentJava for XPages Development
Java for XPages Development
 
Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14
 
HCL Sametime V11 installation - tips
HCL Sametime V11 installation - tipsHCL Sametime V11 installation - tips
HCL Sametime V11 installation - tips
 
July OpenNTF Webinar - HCL Presents Keep, a new API for Domino
July OpenNTF Webinar - HCL Presents Keep, a new API for DominoJuly OpenNTF Webinar - HCL Presents Keep, a new API for Domino
July OpenNTF Webinar - HCL Presents Keep, a new API for Domino
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
 
Best Practice TLS for IBM Domino
Best Practice TLS for IBM DominoBest Practice TLS for IBM Domino
Best Practice TLS for IBM Domino
 
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
 
Understanding domino memory 2017
Understanding domino memory 2017Understanding domino memory 2017
Understanding domino memory 2017
 

Semelhante a Dev112 let's calendar that

Semelhante a Dev112 let's calendar that (20)

Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
 
The New York Times: Moving to GraphQL
The New York Times: Moving to GraphQLThe New York Times: Moving to GraphQL
The New York Times: Moving to GraphQL
 
LA Ember.js Meetup, Jan 2017
LA Ember.js Meetup, Jan 2017LA Ember.js Meetup, Jan 2017
LA Ember.js Meetup, Jan 2017
 
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in PracticeOpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
OpenNTF Webinar 2022-08 - XPages Jakarta EE Support in Practice
 
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UICross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
Cross Site Collection Navigation with SPFX, PowerShell PnP, PnP-JS, Office UI
 
Untangling spring week11
Untangling spring week11Untangling spring week11
Untangling spring week11
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Advanced Web Technology.pptx
Advanced Web Technology.pptxAdvanced Web Technology.pptx
Advanced Web Technology.pptx
 
Staged Patching Approach in Oracle E-Business Suite
Staged Patching Approach in Oracle E-Business SuiteStaged Patching Approach in Oracle E-Business Suite
Staged Patching Approach in Oracle E-Business Suite
 
REST In Action: The Live Coverage Platform at the New York Times
REST In Action: The Live Coverage Platform at the New York TimesREST In Action: The Live Coverage Platform at the New York Times
REST In Action: The Live Coverage Platform at the New York Times
 
Relay: Seamless Syncing for React (VanJS)
Relay: Seamless Syncing for React (VanJS)Relay: Seamless Syncing for React (VanJS)
Relay: Seamless Syncing for React (VanJS)
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
Life In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPagesLife In The FastLane: Full Speed XPages
Life In The FastLane: Full Speed XPages
 
Utilizing the open ntf domino api
Utilizing the open ntf domino apiUtilizing the open ntf domino api
Utilizing the open ntf domino api
 
Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Migrating to Jakarta EE 10
Migrating to Jakarta EE 10
 
Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13Life in the Fast Lane: Full Speed XPages!, #dd13
Life in the Fast Lane: Full Speed XPages!, #dd13
 
JavaScript and jQuery for SharePoint Developers
JavaScript and jQuery for SharePoint DevelopersJavaScript and jQuery for SharePoint Developers
JavaScript and jQuery for SharePoint Developers
 
SQL Server 2019 CTP2.4
SQL Server 2019 CTP2.4SQL Server 2019 CTP2.4
SQL Server 2019 CTP2.4
 

Mais de Howard Greenberg

August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Howard Greenberg
 
OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020
Howard Greenberg
 

Mais de Howard Greenberg (20)

January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12January OpenNTF Webinar - Backup your Domino Server - New Options in V12
January OpenNTF Webinar - Backup your Domino Server - New Options in V12
 
BRPA November Meeting
BRPA November MeetingBRPA November Meeting
BRPA November Meeting
 
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
September-2021 OpenNTF Webinar: Domino Online Meeting Integration (DOMI)
 
August OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub ExplainedAugust OpenNTF Webinar - Git and GitHub Explained
August OpenNTF Webinar - Git and GitHub Explained
 
June OpenNTF Webinar - Domino V12 Certification Manager
June OpenNTF Webinar - Domino V12 Certification ManagerJune OpenNTF Webinar - Domino V12 Certification Manager
June OpenNTF Webinar - Domino V12 Certification Manager
 
OpenNTF Webinar, March, 2021
OpenNTF Webinar, March, 2021OpenNTF Webinar, March, 2021
OpenNTF Webinar, March, 2021
 
February OpenNTF Webinar: Introduction to Ansible for Newbies
February OpenNTF Webinar: Introduction to Ansible for NewbiesFebruary OpenNTF Webinar: Introduction to Ansible for Newbies
February OpenNTF Webinar: Introduction to Ansible for Newbies
 
January OpenNTF Webinar: 4D - Domino Docker Deep Dive
January OpenNTF Webinar: 4D - Domino Docker Deep DiveJanuary OpenNTF Webinar: 4D - Domino Docker Deep Dive
January OpenNTF Webinar: 4D - Domino Docker Deep Dive
 
December OpenNTF Webinar: The Volt MX LotusScript Toolkit
December OpenNTF Webinar: The Volt MX LotusScript ToolkitDecember OpenNTF Webinar: The Volt MX LotusScript Toolkit
December OpenNTF Webinar: The Volt MX LotusScript Toolkit
 
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
OpNovember Water Cooler Talk: The Mystery of Domino on Docker - Part 1
 
OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020OpenNTF Webinar, October 2020
OpenNTF Webinar, October 2020
 
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's WorkbenchAugust Webinar - Water Cooler Talks: A Look into a Developer's Workbench
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
 
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
July 2020 OpenNTF Webinar - Hear the Latest from the User Groups!
 
Open ntf 2020-jun
Open ntf 2020-junOpen ntf 2020-jun
Open ntf 2020-jun
 
OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020OpenNTF Webinar, May 19, 2020
OpenNTF Webinar, May 19, 2020
 
Bp101-Can Domino Be Hacked
Bp101-Can Domino Be HackedBp101-Can Domino Be Hacked
Bp101-Can Domino Be Hacked
 
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...MWLUG Session-  AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
MWLUG Session- AD112 - Take a Trip Into the Forest - A Java Primer on Maps, ...
 
Connect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast LaneConnect 2016-Move Your XPages Applications to the Fast Lane
Connect 2016-Move Your XPages Applications to the Fast Lane
 
May 2014-webinar
May 2014-webinarMay 2014-webinar
May 2014-webinar
 
Webinar: From Frustration to Fascination: Dissecting Replication
Webinar: From Frustration to Fascination: Dissecting ReplicationWebinar: From Frustration to Fascination: Dissecting Replication
Webinar: From Frustration to Fascination: Dissecting Replication
 

Último

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 

Último (20)

AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 

Dev112 let's calendar that

  • 1. DEV112 - Let's Calendar That! - Add Calendars to your Domino web applications
  • 3. • Who are we? • Goals of this session • What is FullCalendar • An Example of FullCalendar in an XPages Application • No XPages? Where to go next Agenda
  • 4. • Howard Greenberg – Been doing Notes/Domino teaching and consulting since 1994 – Owner of NetExperts and TLCC • TLCC has a complete line courses for Notes and Domino • NetExperts does consulting • Jesse Gallagher – frostillic.us – Consultant at I Know Some Guys Who are we?
  • 5. • Learn how to implement a cool calendar in XPages • Learn how to setup a REST service using Java/XPages to allow access to your data from anything • Start to consider what happens if you move off XPages Goals of this session
  • 6. • Per their website “the most popular full-sized JavaScript Calendar” – For desktop and tablet sized devices – Displays month, week, day and list formats – Can (optionally) use BootStrap – Works with React, Vue and Angular – Uses REST to populate calendar entries (other options as well) – Supports drag and drop of calendar entries – Create new entry by clicking on date – Support recurring entries • Full documentation and demos at https://fullcalendar.io/ • Demo!!! What is FullCalendar?
  • 7. • Input parameters for start and end sent by FullCalendar – Our sample has a custom Important parameter to filter only important entries • The JSON sent can have many different properties for controlling style, type of event, etc. – Should have a title (appears on event), start and end https://fullcalendar.io/docs/event-parsing REST Service to feed the Calendar
  • 9. • FullCalendar 4 supports Bootstrap 4 • There is no “native” support for Bootstrap 4 in XPages – Use Bootstrap 4 and roll your own (bring in the css and js files) or... – Use FullCalendar 3 (note slightly different API and not supported anymore) • See documentation for implementation • Bootstrap is not required, it is optional A Word About Bootstrap
  • 10. • Download the zip file and extract – https://fullcalendar.io/docs/getting- started#download • Bring in resources – WebContent, create folder called fullcalendar – Drag and drop the folders under packages in the zip file to this new folder in Designer How do we add this to XPages?
  • 11. • Bring in the needed modules • The JS files have the AMD issue – See the demo database for the workaround • Only load what you need depending on functionality used • See ccFullCalendarLoader custom control for example • OpenNTF project to get around AMD loader issues https://openntf.org/XSnippets.nsf/snippet.xsp?id=hack-to-use-jquery-amd- widgets-and-dojo-together – Have to turn OFF the JavaScript/CSS aggregation option (XSP Properties) xsp.persistence.mode=file Create a “Loader” Custom Control
  • 12. • Users can click an existing entry to see information about the entry in a dialog • A dialog is used to create new entries • To maintain state of the calendar all interaction is done via dialogs – Dialogs are server side • Calls Java routine to create/save back end document • Could use client side JS for dialog and a REST server to post data – Have to reload the calendar when done XPages Design – calendar.xsp
  • 13. Demo App Architecture Front End, can be anything but here XPages Back End Gets calendar entries via REST/JSON Posts calendar drag and drop changes via REST/JSON Create/Edits done in dialog, uses bean to save data (not REST in this case) When dialog is opened to edit entry the document is retrieved via UNID REST API has GET to retrieve entries based on start and end dates POST to save to the back end any changes done using drag and drop in the calendar Calendar bean to retrieve and save entries when they are created/edited using dialog XPages via Bean GET and Post to REST Service Sends back data via JSON
  • 15. • Calendar.java > calendar object – Has “helper” code to create document, retrieve docs, save back to Domino • getCalendarDocs – retrieves a list of Calendar objects based on date range • saveCalendar – saves object to Domino • changeCalendarDates – changes a given calendar entry to new date • CalendarJSON.java > Handles REST Service • doGet, do Post (others not implemented) • API.xsp > XPage to surface REST Service – Calls CalendarJSON.java REST Service
  • 17. • FullCalendar supports drag/drop editing of date/time • Posts to REST Service to change in Domino DB Next Step – enabling drag/drop
  • 18. • Boss says get rid of XPages • Domino used only for back end storage • Have to re-write front end in ??? – What you want... Angular, REACT, etc. • FullCalendar works with all those • What about the REST Service??? No XPages, No Problem
  • 19. • JAX-RS is your path • Several options: • Inside the NSF with XPages Jakarta EE Support • In an OSGi plugin • In a separate JEE web app • The same code will apply to all three, so you’re future- resilient No XPages, No Problem
  • 20. • XPages Jakarta EE Support is on OpenNTF • (“Jakarta EE” is the new name for Java EE) • (It’s a whole “thing”) • It adds support for several modern Java standards to XPages • We care about two main components: • JAX-RS for REST services • JSON-B for mapping objects to JSON No XPages, No Problem
  • 21. • Download the nsf from OpenNTF – Link to download!!! • Go to BitBucket and clone – https://bitbucket.org/howardtlcc-admin/collabsphere-2019- dev112 Demo Database
  • 22. • Must have the following projects installed – XPages Debug Toolbar (can disable easily) – OpenNTF ODA (can re-write code easily to use native Domino API) – XPages Jakarta EE Support Demo Requirements