The Calendar Menu displays records from your preferred datalist as calendar events, in formats of day/week/month in your app's userview.

  1. For this to work, you must map the form and field IDs that stores the calendar records, into the Calendar plugin properties page.

  2. The Calendar Menu also supports Google API to display your preferred country's public holidays in the calendar.
    See Google Calendar Integration for more details.

To know more about Calendar Menu, do check out the sample apps here.

Calendar Menu Properties

Configure Calendar Menu

Figure 1: Calendar Menu Properties

LabelThe UI menu label.
Menu ID

Item link slug. Optional field.

Ensure that value defined here is unique to other UI menus in the app, since the first matching/conflicting ID will take precedence in page loading.
Page TitleCalendar page title.
Load Data From

See list of available Datalist Binders, to source the data for calendar entries.

Auto Handle Date Range

Enable this option to automatically handle range of calendar events to be populated into the calendar, based on event dates and calendar view format.

If this option is disabled, you need to manually handle date range via #requestParam.start# and #requestParam.end# request parameter hash variables in your datalist binder configuration.

Date format for date range is yyyy-MM-dd.

Figure 2: Sample Calendar Menu in runtime

Column to Data Mappings

Figure 3: Column to Data Mappings Properties

Event ID (column ID)Defines individual calendar entry IDs, based on each distinct datalist record.
Event Title (column ID)Calendar entry title.
All Day (column ID, boolean value)Expects a true or false value, to determine if the calendar entry is an all day event.
From Date (column ID)

Calendar entry start date value.

You can also point to Date Picker form field with time support.

From Time (column ID)

Calendar entry start time value.

If the From Date value already contains a time value, leave this field empty.

To Date (column ID)

Calendar entry end date value.

You can also point to Date Picker form field with time support.

To Time (column ID)

Calendar entry end time value.

If the To Date value already contains a time value, leave this field empty.

Date Format

You must specify the actual date format used by the From/To Date values.

Date Format in Java is expected here, e.g.: yyyy-MM-dd.

If the date values has a time value, just define the date format only and not the time format.

Because the time format is already handled by the Time Format property.

Time Format

Available options:

  • 24 Hour System (e.g: 18:00)
  • 12 Hour System (e.g: 6:00 PM)
Event Url (column ID)Calendar entry URL.
Color (column ID)Calendar entry CSS color code to style the calendar event.
CSS Class (column ID)Calendar entry CSS class to style the calendar event.
Additional Data

Any additional data to be added to the calendar entry.

  • Name
  • Column ID


Google Calendar Integration

Figure 4: Google Calendar Integration Properties


Additional Data

Configurations to load calendar entries from Google Calendar.

Notes if you want the Calendar Menu plugin to connect to Google Calendar:

  1. Every request your application sends to the Google Calendar API must include an authorization token.
    The token also identifies your application to Google.
    Here are the steps to obtain the Google Calendar API Key:
    • Go to the Google Developer Console and create a new project (it might take a second).
    • Once in the project, go to APIs & auth > APIs on the sidebar.
    • Find "Calendar API" in the list and turn it ON.
    • On the sidebar, click APIs & auth > Credentials.
    • In the "Public API access" section, click "Create new Key".
    • Choose "Browser key".
    • If you know what domains will host your calendar, enter them into the box. Otherwise, leave it blank. You can always change it later.
    • Your new API key will appear. It might take second or two before it starts working.
    • Copy and paste your API key into the Calendar menu properties "Configure Calendar Menu>Data Binder>Advanced" page.

  2. Steps to enable your Google Calendar to be public:
    • In the Google Calendar interface, locate the "My calendars" area on the left.
    • Hover over the calendar you need and click the downward arrow.
    • A menu will appear. Click "Calendar Settings".
    • Check "Make this calendar public".
    • Make sure "Share only my free/busy information" is unchecked.
    • Click "Save".
    • Obtain your Google Calendar's ID:
    • In the Google Calendar interface, locate the "My calendars" area on the left.
    • Hover over the calendar you need and click the downward arrow.
    • A menu will appear. Click "Calendar settings".
    • In the "Calendar Address" section of the screen, you will see your Calendar ID. It will look something like "".
    • Copy and paste your API key into the Calendar menu properties "Configure Calendar Menu>Data Binder>Advanced" page.
    • You can read more at Google Calendar API site.

Google Calendar API Key

Google Calendar API Key

Calendar ID

ID of the calendar syncing with 

CSS Classes

CSS Custom classes.


Color of the event in the calendar

Events & UI

Figure 5: Events & UI Properties (1)

Figure 6: Events & UI Properties (2)


Event Rendering Callback (Javascript)

Custom Javascript code to execute upon rendering each calendar event.

Event After Rendering Callback (Javascript)

Custom Javascript code to execute for each calendar event, after it has been rendered.

Sample Code to change the event time indicator to a more meaningful value
var fromTime = event.start.format("H:mm").toString();
var toTime = event.end.format("H:mm").toString();

if (fromTime.indexOf("10:00") > -1 && toTime.indexOf("16:20") > -1) {
    $(element).find('span.fc-time').text("First Shift --> ");

See sample app here for more info: APP_calendarTest-sample.jwa

Event After All Rendering Callback (Javascript)

Custom JavaScript code to execute after all rendering of the calendar menu has been completed.

In the sample below, upon clicking on a calendar date, it will redirect to an event form and prepopulate a date field with the clicked date.

Sample Code
$("div.calendar_menu_body td.fc-day").click(function() {
    var preferredDefaultTime = "09:00";
    var dateFromFieldId = "date_from";
	window.location = "calendarViewEditable?" + dateFromFieldId + "=" 
    + $(this).attr("data-date") + "%20" + preferredDefaultTime;

Event Click Callback (Javascript)

Custom Javascript code to execute when a calendar event is clicked on.

Sample Code to open up form view in a popup dialog
var popupActionDialog = new PopupDialog("EventFormMenuId?id=""&embed=true");

Show in JPopup Dialog
var address = "EventFormMenuId?embed=true&id=" +;"testPopup", address, {}, "View Item", "50%", "50%");

Time Display Format

Refer to for formats.

h(:mm)t //2:12p, 1p
HH:mm //14:12, 13:00
hh(:mm)t //02:12p, 01p

Custom Header (HTML)

Custom header in HTML to show on the top of the calendar.

Custom Footer (HTML)

Custom footer in HTML to show on the bottom of the calendar.

Performance & Offline

Cache Settings




Caching options are:

  • None: No caching.
  • Application: Cache content by application where all users will see the same content.
  • User: Cache by username.
Duration (s)Duration in seconds to cache content, defaults to 20 seconds if applicable.

PWA Offline Settings

Note: PWA Offline support is dependent on the theme used.



Enable cache for offline supportEnable caching for offline support, usually set for use on mobile browsers.

Read Progressive Web Application (PWA) for more information.

AJAX & Events

New Feature

This is a new feature in Joget DX 8.

Event Listening

Component Object

The object that will be listening for an event.

This field will dynamically show selectable options depending on the page components used. e.g: if there is a page component called manage meeting in the page, it will automatically show up in this field's select box.

Event NameCustom Event Name.
Matched Action 

Action to be listened for.

  • Hide Component
  • Show Component
  • Show and Reload Component
  • Show and Change URL Component Parameters
  • Reload Page
  • Redirect Page
  • Show and Redirect Component
Add row Adds another row for another event

Event Triggering

Event NameCustom Event Name
Trigger Method

The method used to trigger an event.

  • GET Request
  • POST Request
  • Link Clicked
Parameter NameCustom Parameter Name.

Logical Operator to be used in evaluating "Parameter" against "Value"

  • Equals To
  • Not Equals To
  • Greater Than 
  • Greater Than
  • Greater Than or Equals To
  • Less than
  • Less than or equals to
  • Is True
  • Is False
  • Is Empty
  • Is Not Empty
  • Contains
  • In
  • Regex Match
ValueThe value that the Parameter will be compared to.
When Not Match Trigger Event NameEvent Name when/if the logical operation is not satisfied.
Add rowAdd another row for another event.

Related Documentation 

Calendar Menu

  • No labels