Calendar Report Setup
A calendar report displays data from your database in a month/week/day calendar format using FullCalendar.
To see a demo of the calendar report, please visit Tutorial - Calendar Report.
To create a calendar report, right click the database pane and select Add Calendar Report. Alternatively, you can click Edit in the main menu and then select Add Calendar Report.
A popup window will appear and ask if you want to create a new table for the Calendar report. If you already have a table that contains the calendar data, click No. Otherwise click Yes.

The Create Table window will show up. Change table/field names if necessary. Then click OK to create the table.

After creating the table, the Calendar Report Setup window will show up.

If you have created the table for the Calendar report, most of the settings will be set up. You only need to enter the Calendar Report Name for the Calendar Report. If you use your own table or an existing table, you must select the Source Table for the report and then set up the Calendar fields one by one.
Source Table (string)
Source table of the calendar report
Calendar Report Name (string)
Calendar report name
ID (integer)
Calendar ID field. Unique identifier of the calendar event.
IMPORTANT: The field must be the primary key and auto-increment field
Title (string)
Calendar Title field. The text that will appear on a calendar event.
Start (datetime)
Calendar Start Date field. Specify when a calendar event begins.
End (datetime)
(Optional) Calendar End Date field. Specify when a calendar event ends.
All day (boolean)
Calendar All Day field. Determines if a calendar event is shown in the “all-day” section. If true, the time text is not displayed.
Description (string)
(Optional) Calendar Description field. Detailed description of a calendar event
Group ID (string)
(Optional) Calendar Group ID field. Calendar events with the same group id will be dragged and resized together automatically.
URL (string)
(Optional) Calendar URL field. The URL to redirect to when a calendar event is clicked.
Class names (string)
(Optional) Calendar Class names field. HTML class names attached to the rendered calendar event.
Predefined class names are:
- event-primary
- event-secondary
- event-success
- event-info
- event-warning
- event-danger
- event-light
- event-dark
- event-blue
- event-indigo
- event-purple
- event-pink
- event-red
- event-orange
- event-yellow
- event-green
- event-teal
- event-cyan
- event-white
- event-gray
- event-gray-dark
- event-lightblue
- event-navy
- event-olive
- event-lime
- event-fuchsia
- event-maroon
Notes
- These class names define the event colors and user can type the class name prefix in the Calendar Class names field input box
to get the list of auto-suggested class names (e.g. "p" to get the list of "event-primary", "event-purple" and "event-pink").
- These values are defined in the registry key HKEY_CURRENT_USER\Software\<product name>\<version>\Settings\General\CalendarClassNamesValues.
- When you set up a field as the Calendar Class names field, the predefined values are loaded in the User Values of the Edit Tag.
- You can either change the registry key or the User Values to modify the list of class names.
Display (string)
(Optional) Calendar Display field. The rendering type of the calendar event.
Predefined values are:
- auto
- block
- list-item
- background
- inverse-background
- none
Notes
- These values control which preset rendering style events use. For more information, please read:
https://fullcalendar.io/docs/eventDisplay
- User can select a value in the Calendar Display field dropdown (e.g. "auto").
- These values are defined in the registry key HKEY_CURRENT_USER\Software\<product name>\<version>\Settings\General\CalendarDisplayValues.
- When you set up a field as the Calendar Display field, the predefined values are loaded in the User Values of the Edit Tag.
- You can either change the registry key or the User Values to modify the list of Display value.
Background color (string)
(Optional) Calendar Background color field. The background color displayed for the event.
Press OK to finish setup. When a report is created, the field settings will be copied from the source table. But from then on, the report has its own field settings and is much like other table in PHPMaker.
To edit a report, right click the report in the database pane and select Edit Report. Alternatively, you can select the report first, then click Edit in the main menu and then select Edit Report. Note that the source table of a report cannot be changed.
Table Options

General |
Name |
Name for the report |
Generate |
Select/unselect for generation |
Caption |
Caption for the report |
Default |
Set as the default table (first table the user see when visiting your site) |
Search (v2024+) |
Extended |
Enable extended search for the report |
Fields per row (Extended) |
Specifies the number of fields per row in the Quick Search panel. Default is 0 (unspecifed), which means one field per row. |
Add Page |
Add |
Enable for add |
Copy |
Enable for copy |
Delete Page |
Delete |
Enable for delete |
Edit Page |
Edit |
Enable for edit |
Multi-Page (v2024+) |
Page Labels |
Specifies the page captions of each page in the Multi-Page. Read Multi-Page |
Add Page |
Enable add page for Multi-Page |
Edit Page |
Enable edit page for Multi-Page |
View Page |
Enable view page for Multi-Page |
**Important Notes** After a report is created, a report works independently from the source table it based on. Changing the structure of the source table does not change the report. If you delete a field in the source table that is used by a report, the report will fail. If it fails, the reports will be displayed with a cross in the icon . Also, a report has its own field settings, changing field settings in the source table does not change the field settings in related Reports.
**Notes**
1. Calendar Report supports User ID and User Level Security, see [Security](securitysetup.html).
1. Extended Search is supported, see Field Setup -> [Report Page](fieldsetup.html?id=report-page). (v2024+)
1. [Event_Adding](customscripts.html?id=event_adding) server event can be used to show/hide an event or change the event data. (v2024+)
1. [Multi-Page](tablesetup.html?id=multi-page) for View/Add/Edit pages are supported. (v2024+)
1. [Custom Templates](customtemplate.html) for Add/Edit/View/Hover pages are supported. (v2024+)
1. [Multi-Month Grid](https://fullcalendar.io/docs/multimonth-grid) is supported, see below. (v2024+)
Multi-Month Grid (v2024+)
Calendar Report supports the Multi-Month Grid. You can use the **Page_Head** server event to use the Multi Month Year View as the default option. You can also use the **Page_Load** server event below to enable the option dynamically.

Server Events and Client Scripts
You can use [Server Events and Client Scripts](customscripts.html) to customize the calendar.
Example 1
Use **Page_Head** server event to change the **default** options for FullCalendar, ``ew.calendarOptions``, by JavaScript. See [FullCalendar documentation](https://fullcalendar.io/docs) for available options.
Example 2
Use **Page_Load** server event to change the **default** options for FullCalendar. You can use the ``CalendarOptions`` property's ``import(array $data)`` method to import an array of settings or ``set(string $key, $value)`` method to set a setting. You can access data by dot notation, e.g. ``set('a.b.c', 'value')``. See [FullCalendar documentation](https://fullcalendar.io/docs) for available options.
Example 3
Use **Page_Render** server event to set the initial date.
Example 4
Use **Event_Adding** server event to hide event, and hide view/edit/copy/delete links.
Example 5
Use **Client Script** and the "calendar" client event to change the options of FullCalendar before it is created.
For example, the example below sets the [initialView](https://fullcalendar.io/docs/initialView) (A name of any of the available views, such as "dayGridWeek", "timeGridDay", "listWeek", default is "dayGridMonth".)
Also See
Security Setup
Tutorial - Calendar Report
Server Events and Client Scripts
Custom Templates
Multi-Page