The CalPack comes with functions to display your FileMaker records as calendar appointments in a Day, Week and Month view, along with a Resource calendar which can show appointments for many resources at once. There's also the new NavCal control which displays a simple month calendar for quick navigation between dates.
With many customization options, it is extremely flexible, and can be tailored for most purposes with the built in customizations alone.
BlackBox Controls
| Control Name |
Description |
| DayCal2 |
The Day Cal is a rich Drag-n-drop day or week view calendar, and allows a huge variety of overrides to make the calendar behave just how you want it. |
| ResourceCal2 |
The Resource Cal is an extended version of the DayCalendar function, allowing bookings to be made for specified resources. Resources need not be people: you can track rooms, vehicles or any other type of resource. |
| MonthCal2 |
The Month Cal is a rich Drag-n-drop month view calendar, which again gives you huge flexibility in implementation, by way of overrides. |
| NavCal |
The Nav Cal is a simple, standalone widget that you can easily drop onto a layout to give your users a quick and easy way to navigate between dates. |
Action Parameters
Each of the functions in the Calendar Pack have optional Action parameters, allowing you to run a script or set a field when a field is selected. See
Action Parameters for details.
To have the calendar remember (and automatically highlight) the previously selected appointment across reloads, record, and layout changes, you must use the 'SetField' action type for 'ActionOnApptSelect'. See the
Action Parameters documentation for more information.
Multi-User Compatibility
Each of the calendars have advanced multi-user compatibility built in. The control will let users know when the record is locked by another user, and by adding a single field, the calendar
can automatically update records which have been modified by other users.
Multi-Line Keys in Calendars
Showing appointments for more than one person on one calendar is possible by having a multi-line key on the left side of the relationship. There are a couple of gotchas:
- Use BlackBoxRefresh() to ensure the calendar updates correctly when the key value changes
- If you create an appointment while the key contains multiple values (people), then the new record inherits the entire multi-line key, so this needs to be handled by setting the key to a global or having Action parameters to run a script and set the record up.
illustrates a calendar working from a multi-line key.
Customization
With some knowledge of Javascript and CSS, you can quickly customize the following... and more!
- the position of the Time panel
- the width of the time panel.
- the position of the Date panel
- the time range
- the definition of non-working days or hours.
- actions allowed and disallowed on appointments e.g. ability to create, edit, delete, scroll appointments, resulting in optional read-only calendar.
Customization is achieved through the use of an override file. See Customizing Calendar Functionality and Customizing Calendar Display for more details.
Updating from the Original CalPack
If you're considering updating your calendar's to make use of the great customization features of the new Calendars, here are a few things you should know first;
- The action parameters now expect fully qualified fieldnames e.g. MyTO::Myfield.
- There is a new Action Parameter, actionOnApptEnter, which is positioned between actionOnApptSelect and actionOnDaySelect. It overrides the default double-click action which usually allows the user to edit the description.
- actionOnApptSelect is now prevented from running if the delete button is pressed.
- Overrides are now handled differently - See the documentation on the new Override_Helper and Override Manager for details.
- In ResourceCal2, the resourceID parameter has swapped places with description, because the description field is now optional.
- In MonthCal2, there is now an override to start the week display on a Monday instead of the default Sunday (StartDay='Monday')
Comments