Schedule class

Schedule(client, oOptionsopt)

new Schedule(client, oOptionsopt)

The ExSchedule/JS component provides scheduling of appointments in your application. The user can create, move, resize and select events within the control. The control provides a built-in calendar to select the dates to display within the schedule panel. The control's API allows you to customize the control's behavior and appearance, and to manage the events and groups of events within the control. The control is suitable for a wide range of applications, such as personal information managers, project management tools, resource scheduling, and more. The ExSchedule/JS control is designed to be flexible and customizable, allowing you to tailor it to your specific needs and requirements. The ExSchedule/JS is a HTML standalone-component, written in JavaScript, that uses no third-party libraries.

Features include:

  • Groups support (group or filter the events)
  • Repetitive events support
  • All-day events support
  • Events that span on multiple days support
  • Built-in calendar to select the dates to display within the schedule panel
  • Customizable layout of the schedule panel (time-scale, day headers, grouping headers, all-day header, ...)
  • Customizable visual appearance of the control (shapes, colors, fonts, ...)
  • Customizable user interactions (actions, shortcuts, ...)
  • and much more

Every option of the Schedule.Options type has associated a property of the control. For instance, the option:

allowActions {string}, customizes the actions the user can perform once the user clicks or touches the control
is associated with the property:
AllowActions {string}, customizes the actions the user can perform once the user clicks or touches the control
which means that the following statements are equivalent:
oSchedule.Options = {allowActions: "scroll"}
oSchedule.SetOptions({allowActions: "scroll"})
oSchedule.AllowActions = "scroll"
oSchedule.SetAllowActions("scroll")
where oSchedule is an object of Schedule type
Parameters:
Name Type Attributes Description
client any The client parameter indicates the control's client area as:
  • array of [x,y,width,height] type that specifies the control's client area
  • string, that specifies the identifier of the canvas within the document, so the canvas's client area becomes the control's client area
  • HTMLCanvasElement, that specifies the identifier of the canvas within the document, so the canvas's client area becomes the control's client area
oOptions object <optional>
An object of Schedule.Options type that defines different options to display the control.
Requires:
  • module:exontrol.commmon.min.js
  • module:exontrol.calendar.min.js
  • module:exontrol.menu.min.js
  • module:exontrol.icalendar.min.js

Requires

  • module:exontrol.commmon.min.js
  • module:exontrol.calendar.min.js
  • module:exontrol.menu.min.js
  • module:exontrol.icalendar.min.js

Classes

Options

Members

(static, readonly) EventResizableEnum :number

The Schedule.EventResizableEnum type indicates the margins of the events that can be resized. The Resizable property specifies the margins of the event that user can resize at runtime.

Each EventResizableEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A case-insensitive partial string containing a name that matches the enumeration constants.

For instance, the string "both" is equivalent to the numeric value 3, or to the enumeration constant exResizableBoth.

Type:
  • number
Properties:
Name value Type Description
exNoResizable 0 number The exNoResizable field indicates that the event can not be resized.
exResizableStart 1 number The exResizableStart field indicates that only the starting point of the event can be resized.
exResizableEnd 2 number The exResizableEnd field indicates that only the ending point of the event can be resized.
exResizableBoth 3 number The exResizableBoth field indicates a sizeable event, so the user can resize at runtime the start or end point of the event.

(static, readonly) OnResizeControlEnum :number

The Schedule.OnResizeControlEnum type defines the options to specify what the control does when the control or a portion of the control is resized. The OnResizeControl property specifies the panel to resize once the entire control gets resized.

Each OnResizeControlEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A combination of one or more compatible enumeration constants, separated by the | operator.
  • A case-insensitive partial string containing one or more comma-separated names that match the enumeration constants.

For instance, the string "right,hide,change" is equivalent to the numeric value 769, or to the combination of enumeration constants exResizePanelRight | exHideSplitter | exChangePanels.

Type:
  • number
Properties:
Name value Type Description
exResizePanelLeft 0 number The exResizePanelLeft value specifies that the left panel of the control is resized, once the entire-control gets resized. If this flag is set the calendar view is resized once the control is resized, unless the exChangePanels flag is set, as the schedule will be resized.
exResizePanelRight 1 number The exResizePanelRight value specifies that the right panel of the control is resized, once the entire-control gets resized. If this flag is set the schedule view is resized once the control is resized, unless the exChangePanels flag is set, as the calendar will be resized.
exDisableSplitter 128 number The exDisableSplitter flag disables the splitter, so the user can not resize the panels using the control's vertical split bar.
exHideSplitter 256 number The exHideSplitter flag hides the splitter. This flag allows you to display a single panel, the calendar or the schedule view at once. If the exHideSplitter is used in combination with the exChangePanels, the schedule view is shown only, else the calendar panel is displayed only
exChangePanels 512 number The exChangePanels flag exchanges the content of the panels. If this flag is present, the schedule view is displayed on the left, while the calendar panel is shown on the right side of the component.
exCalendarFit 1024 number The exCalendarFit flag ensures that the calendar fits to the panel that hosts it. If this flag is present, the Calendar panel can not show its content partially.
exCalendarAutoHide 2048 number The exCalendarAutoHide flag turns on or off the calendar panel when the cursor leaves the panels. The auto hide feature allows you to hide the calendar panel, while the cursor is not in it, so the schedule view gains the entire client area.

(static, readonly) OnSelectDateEnum :number

The Schedule.OnSelectDateEnum type specifies the action the control performs once a new date is selected in the calendar panel. The OnSelectDate property indicates the operation to perform when user selects a new date in the calendar panel.

Each OnSelectDateEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A case-insensitive partial string containing a name that matches the enumeration constants.

For instance, the string "ensure" is equivalent to the numeric value 1, or to the enumeration constant exEnsureVisibleDate.

Type:
  • number
Properties:
Name value Type Description
exFitSelToView -1 number The exFitSelToView value specifies that once the selection is changed within the calendar panel, the day's size is updated and the view is scrolled to fit the calendar's selection (default). The control adjusts the dayViewWidth and dayViewHeight fields to fit the calendar's selection within the schedule view, and scrolls the view to ensure that the calendar's selected date is visible within the schedule view.
exNoViewChange 0 number The exNoViewChange value indicates that no change occurs once the user changes the selection within the calendar panel.
exEnsureVisibleDate 1 number The exEnsureVisibleDate value specifies that once the selection is changed within the calendar panel, the view is scrolled to ensure that the calendar's selected date fits the schedule view

(static, readonly) SelectEventStyleEnum :number

The Schedule.SelectEventStyleEnum type specifies the way the control displays the selected event. The SelectEventStyle property indicates how the selected-event gets displayed within the schedule view. The "select" shape (Shapes property) specifies the shape and color used to display the selected event.

Each SelectEventStyleEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A case-insensitive partial string containing a name that matches the enumeration constants.

For instance, the string "combined" is equivalent to the numeric value 0, or to the enumeration constant exSelectCombined.

Type:
  • number
Properties:
Name value Type Description
exSelectCombined 0 number The "select" shape is combined with the event's shape.
exSelectBack 1 number The "select" shape is displayed on the event's background. The padSelectEvent field specifies the space between the event's content and its selection border.
exSelectPrimitive 2 number The "select" shape is displayed on the event's background, but it uses the event's primitive (rectangle, round, oval, ...). The padSelectEvent field specifies the space between the event's content and its selection border.
Since:
  • 5.4

(static, readonly) ShowEventsEnum :number

The Schedule.ShowEventsEnum type specifies the type of the events the control displays. The ShowEvents property indicates the type of the events the control displays within the schedule view. The events are the appointments that the user creates, moves, resizes or selects within the control. The events can be regular or repetitive. The Event.Repetitive property specifies the expression that defines the dates where the event occurs.

Each ShowEventsEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A case-insensitive partial string containing a name that matches the enumeration constants.

For instance, the string "regular" is equivalent to the numeric value 1, or to the enumeration constant exShowRegularEvents.

Type:
  • number
Properties:
Name value Type Description
exShowAllEvents -1 number Shows all events (default). This option includes regular and repetitive events.
exHideEvents 0 number The control displays no events. This option hides all events, including regular and repetitive events.
exShowRegularEvents 1 number The control displays regular events. This option includes events that occur on specific dates and times, without any repetition pattern. Regular events are defined by their start and end date/time, and they do not have a repetitive expression.
exShowRepetitiveEvents 2 number The control displays repetitive events. The Event.Repetitive property specifies the expression that defines the dates where the event occurs.
Since:
  • 5.4

(static, readonly) ShowMarkZoneEnum :number

The Schedule.ShowMarkZoneEnum type specifies how the schedule panel shows the mark zones. The ShowMarkZone property indicates how the schedule panel shows the mark zones. The MarkZones object defines the mark-zones within the control. The mark-zones are special time zones that are highlighted within the control to indicate specific time intervals.

Each ShowMarkZoneEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A case-insensitive partial string containing a name that matches the enumeration constants.

For instance, the string "back" is equivalent to the numeric value 1, or to the enumeration constant exShowMarkZonesBack.

Type:
  • number
Properties:
Name value Type Description
exHideMarkZones 0 number No mark-zone is displayed.
exShowMarkZonesBack 1 number The mark-zone(s) are displayed on the background (behind events).
exShowMarkZonesFront 2 number The mark-zone(s) are displayed on the foreground.
Since:
  • 5.4

(static, readonly) ShowViewCompactEnum :number

The Schedule.ShowViewCompactEnum type indicates the way the control displays the dates within the schedule panel. The ShowViewCompact property specifies the way the control arranges the dates in the schedule view.

Each ShowViewCompactEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A case-insensitive partial string containing a name that matches the enumeration constants.

For instance, the string "row" is equivalent to the numeric value 1, or to the enumeration constant exViewSingleRow.

Type:
  • number
Properties:
Name value Type Description
exViewCalendar 0 number The exViewCalendar value indicates that the schedule view arranges the days as they are shown in the calendar panel. The dayViewWidth field specifies the width of the day in the schedule panel. The dayViewHeight field specifies the height of the day in the schedule panel.
exViewCalendarCompact -1 number The exViewCalendarCompact value indicates that the schedule view arranges the days as they are shown in the calendar panel, excepts that the first day of the month starts right after the last day of the previously month, or start to a new row (default). The dayViewWidth field specifies the width of the day in the schedule panel. The dayViewHeight field specifies the height of the day in the schedule panel.
exViewSingleRow 1 number The exViewSingleRow value indicates that the schedule view arranges all days to a single row (horizontally). The dayViewWidth field specifies the width of the day in the schedule panel. The dayViewHeight field is ignored in this mode, as the schedule view automatically fits to the control's height.
exViewSingleColumn 2 number The exViewSingleColumn value indicates that the schedule view arranges all days to a single column (vertically).The dayViewHeight field specifies the height of the day in the schedule panel. The dayViewWidth field is ignored in this mode, as the schedule view automatically fits to the control's width.
exViewSingleRowLockHeader 3 number The exViewSingleRowLockHeader value indicates that schedule view arranges all days to a single row (horizontally), while the date header is shown/locked on the top while the chart is vertically scrolled. The dayViewWidth field specifies the width of the day in the schedule panel. The dayViewHeight field is ignored in this mode, as the schedule view automatically fits to the control's height.
exViewSingleWeek 4 number The exViewSingleWeek value enables the schedule view to display weekdays vertically across 7 rows, with one row for each weekday. The dayViewWidth field specifies the width of the day in the schedule panel. The dayViewHeight field specifies the height of the day in the schedule panel.

(static, readonly) SingleSelEnum :number

The Schedule.SingleSelEnum type defines the options to specify the control's selection behavior. The SingleSel property specifies the control's selection behavior, such as whether the user can select multiple events or a single event, whether the user can toggle the selection of an event, and more.

Each SingleSelEnum property can be specified in one of the following ways:

  • A numeric value.
  • A single enumeration constant.
  • A combination of one or more compatible enumeration constants, separated by the | operator.
  • A case-insensitive partial string containing one or more comma-separated names that match the enumeration constants.

For instance, the string "enable,ctrl" is equivalent to the numeric value 9, or to the combination of enumeration constants exEnableSel | exDisableCtrlSel.

Type:
  • number
Properties:
Name value Type Description
exDisableSel 0 number The exDisableSel value specifies that the control's selection is disabled.
exEnableSel 1 number The exEnableSel flag specifies that the control's selection is enabled (multiple-selection, unless the exSingleSel is set ).
exSingleSel 2 number The exSingleSel flag specifies that the user can select a event only.
exToggleSel 4 number The exToggleSel flag specifies that the event's selection state is toggled once the user clicks a event.
exDisableCtrlSel 8 number The exDisableCtrlSel flag disables toggling the event's selection state when user clicks a event, while CTRL modifier key is pressed.
exDisableShiftSel 16 number The exDisableShiftSel flag disables selecting events using the SHIFT key.
exDisableDrag 32 number The exDisableDrag flag disables selecting events by drag.

(static, readonly) type :string

The type field holds the full name of the object, since constructor.name can differ in minimized or obfuscated code. This field is never altered by the control itself, so it can be reliably used to verify the object's type. It is particularly useful when multiple versions of a control exist or when you need to check the type without depending on constructor.name, which may be inconsistent in some scenarios, such as minified code. The Schedule.type member always returns "Schedule"
Type:
  • string
Since:
  • 1.8
Example
console.log(exontrol.Schedule.type); // logs "Schedule"

(static, readonly) version :string

The version field defines the version of the control. Each release of the control has a different version number, so you can use this field to check the control's version and ensure that it supports the features you want to use. The version field is especially useful when you have multiple versions of the control, or when you want to check the version of the control without relying on other properties or methods that may differ between versions. The current version is 5.4
Type:
  • string
Example
console.log(exontrol.Schedule.version); // displays the version of the control, for instance "5.2"

AllowActions :string

The AllowActions property customizes the actions the user can perform once the control is clicked or touched. The order of the actions is very important, as the control checks each action from left to right until it finds a matching action for the performed mouse/touch event. The first matched action is performed, and the rest of the actions are ignored. So if you want to perform a specific action once the user clicks an item, and perform another action if the user clicks an area that does not contain any item, you should place the first action before the second one in the AllowActions property. The dragStartOnMove field specifies the drag-operations (create, resize or move) that start once the pointer is moved. The ensureVisibleOnDrag field specifies the drag-operations (create, resize or move) that calls the EnsureVisibleClient() method once the drag-operation ends.

The format of the property is:

"action(shortcut,shortcut,...),action(shortcut,shortcut,...)..."
where
  • "action", defines the action to perform (as defined below)

    Action Description Flags
    "create" Creates an event by drag (not available if the control is read-only)
    "day-resize" Resizes the day by drag and drop (not available if the control is read-only)
    "drag-drop" Performs drag and drop of the ui-event (the ui-event can be dropped inside or outside of the control). The ExDrop(event, data) method of the target HTML element is invoked once the user drops the ui-event. The event parameter contains information about the mouse/touch event. The data parameter contains information about the source-object that initiated the drag/drop operation as {object, source, client, shape}
    "fit" Fits the drag-area into the control's client area
    "group-drag" Changes the group's position by drag and drop (not available if the control is read-only). The Group.Position property specifies the position of the group.
    "group-resize" Resizes the group by drag and drop (not available if the control is read-only). The Group.Width property defines the width of the group.
    "move" Moves or resizes events by drag (not available if the control is read-only)
    "scroll" Scrolls the control's content by drag
    • [view], specifies that the "scroll" is possible once the user clicks the view
    • [timeScale], specifies that the "scroll" is possible once the user clicks the time-scale
    "select" Selects events by drag
    "zoom" Zooms the control's content at dragging-point

  • "shortcut", defines the event's button or/and the modifier-keys that are required to perform the action. The "shortcut" is a combination of none, one or more of the following values:
    • "Shift", indicates that the SHIFT key is pressed
    • "Ctrl" or "Control", indicates that the CTRL key is pressed
    • "Alt" or "Menu", indicates that the ALT key is pressed
    • "Meta" , indicates that the META key is pressed
    • "LButton", specifies that the mouse's left-button is pressed
    • "RButton", specifies that the mouse's right-button is pressed
    • "MButton", specifies that the mouse's middle/wheel-button is pressed
    • "Long", specifies that the action requires a "long" click or touch before it begins
    • "Double", specifies that the action requires a "double" click before it begins (this flag is available for non-dragable actions only such as "edit")
    • "+", indicates AND between values
Type:
  • string
Example
null {null}, indicates the control's default allowActions value
"" {string}, specifies that no operation is allowed once the user clicks or touches the control
"scroll" {string}, specifies that only "scroll" operation is allowed, no matter of the event's button or modifier-keys is pressed.
AllowActions

AllowAllDayEventScroll :null|number|Array.<number>

The AllowAllDayEventScroll property defines how many event levels the all-day header can display at a time. The ShowAllDayHeader property specifies whether the all-day header is visible, while the HeaderAllDayEventHeight property defines the height of events displayed within it, relative to the control's font size. By default, the AllowAllDayEventScroll property is set to null, meaning the all-day header displays as many events as can fit.

The AllowAllDayEventScroll property accepts the following types of values:

  • null {null}, the all-day header displays events as many as it fits
  • positive-number {number}, the all-day header always displays an exact number of levels
  • negative-number {number}, the all-day header displays up to specified number of levels
  • [min,max] {array}, indicates a two-elements array of [min,max] type that defines the minimum and maximum number of levels, where min must be zero or any positive number, while max can be null, negative (up to) or positive number(fixed)
Type:
  • null | number | Array.<number>
Example
null {null}, the all-day header displays events as many as it fits
3 {number}, indicates that the all-day header always displays 3 levels
-3 {number}, indicates that the all-day header can display up to 3 levels
[1] {array}, indicates 1 to unlimited levels
[1,4] {array}, always displays 4 levels
[1,-4] {array}, displays from 1 to 4 levels
AllowAllDayEventScroll

AllowMoveEventToOtherGroup :boolean

The AllowMoveEventToOtherGroup property specifies whether the user can move an event from one group to another using drag and drop. This option is effective only when the control displays groups (see the ShowGroupingEvents property). When grouping is enabled, each date is divided into sections for each group, with the group name displayed in the header of each section. If AllowMoveEventToOtherGroup is set to True (default), users can move events between groups by drag and drop; if set to False, moving events between groups is not allowed.
Type:
  • boolean
Example
false {boolean}, the user cannot move an event from one group to another using drag and drop
true {boolean}, the user can move an event from one group to another using drag and drop (default)
AllowMoveEventToOtherGroup

AllowMultiDaysEvent :boolean

The AllowMultiDaysEvent property specifies whether users can create events that span multiple days. The ShowAllDayHeader property controls whether the all-day header is visible, while the HeaderAllDayEventHeight property defines the height of events displayed within the all-day header, relative to the control's font size. By default, the AllowMultiDaysEvent property is set to True, allowing users to create or resize multi-day events using drag and drop. When set to False, users can create or resize only single-day events.
Type:
  • boolean
Example
false {boolean}, the user can create or resize just single-date events only
true {boolean}, the user can create multi-dates events by drag and drop (create or resize)
AllowMultiDaysEvent

AllowUndoRedo :boolean

The AllowUndoRedo property controls whether the Undo/Redo functionality is enabled. These features let you reverse or repeat one or more actions, but all actions must be undone or redone in the exact order they were performed or reverted-skipping actions is not allowed. For instance, if you added three events and want to undo the first addition, you must undo all three changes sequentially. To undo an action, press Ctrl+Z; to redo an action that was undone, press Ctrl+Y. The Undo() method reverses the last action or a series of actions, while the Redo() method reapplies the last undone action (essentially reversing Undo). You can also use the Shortcuts property to customize the keyboard shortcuts for the Undo and Redo commands.
Type:
  • boolean
Since:
  • 2.0
Example
false {boolean}, the Undo/Redo feature is disabled (by default)
true {boolean}, enables the Undo/Redo feature.
AllowUndoRedo

ApplyGroupingColors :boolean

The ApplyGroupingColors property defines whether the schedule view displays events using the colors of their owner groups (based on the Group.EventShape property). When set to True, events inherit the shape and color of their owner group unless they define their own EventShape, in which case the event's custom appearance is used. When set to False, all events are displayed using their own shape and color, without applying group-based styling. The AllowMoveEventToOtherGroup property indicates whether an event can be moved from one group to another using drag and drop. By default, the ApplyGroupingColors property is set to True.
Type:
  • boolean
Example
false {boolean}, the schedule view does not show the events using the colors of owner groups
true {boolean}, the schedule view shows the events using the colors of owner groups (default)
ApplyGroupingColors

Background :BackgroundOptions

The Background property defines the visual appearance of various elements within the schedule or calendar control, as an object of BackgroundOptions type. It allows you to customize the colors, styles, and captions of rulers, time-scale lines, grouping buttons, and event continuation indicators. By adjusting this property, you control how the schedule panel and time-scale panel look, enhancing readability and helping users quickly identify different time markers and event information.

It is important to note that changing a field of the BackgroundOptions object does not automatically update the control. For example, oSchedule.Background.majorTimeRulerColor = "black" does not apply the change. Instead, you must assign the Background property again, such as oSchedule.Background = {majorTimeRulerColor: "black"}, so the control updates and applies the new value.

Type:
Example
{majorTimeRulerColor: "black"} {object}, sets the color of the major time ruler to black
{minorTimeRulerColor: "gray"} {object}, sets the color of the minor time ruler to gray
{majorTimeRulerColor: "black", minorTimeRulerColor: "gray"} {object}, sets the color of the major time ruler to black and the minor time ruler to gray
Background

Calendar :exontrol.Calendar

The Calendar property returns the inside calendar control, as an object of exontrol.Calendar type, that is used to navigate through the schedule's dates. The calendar control is an optional component that can be included in the Schedule control to provide users with a convenient way to navigate through dates and view events on specific days. The Calendar property allows you to access and customize this calendar control, enabling you to tailor its appearance and functionality to fit the needs of your application. The Options property of the Calendar control allows you to set various properties such as the calendar's date, locale, and other settings to enhance the user experience when navigating through the schedule. The OnResizeControl property defines which panel should be resized when the entire control is resized.
Type:
  • exontrol.Calendar
Example
The followng statements are equivalents:

 oSchedule.Calendar.Options = 
 {
   date: new Date(2024, 0, 1),
   locale: "de-DE"
 }

or

 oSchedule.SetCalendar(
 {
   date: new Date(2024, 0, 1),
   locale: "de-DE"
 })

or

  oSchedule.Calendar.Date = new Date(2024, 0, 1), sets the calendar's date to January 1, 2024
  oSchedule.Calendar.Locale = "de-DE", sets the calendar's locale to German (Germany)

where oSchedule is an object of Schedule type
Calendar

CreateEventLabel :string

The CreateEventLabel property defines the label displayed while creating events, while the UpdateEventsLabel property defines the label shown when moving or resizing events. The FormatEventShortLabel and FormatEventLongLabel options define how these labels are formatted. These properties support ex-HTML tags (such as <b>, <i>, <fgcolor>, ...), as well as <%=formula%> tags. The <%=formula%> tag evaluates a format expression that can include placeholders like %1, %2, and so on, where each placeholder corresponds to a specific event property (for example, %1 refers to ExEventStartDateTime, %2 to ExEventEndDateTime). By default, the CreateEventLabel property is set to: "<%=%256%>
<%=((1:=int(0:= %7)) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>", which displays the event's short margins on the first line and its duration (in days, hours, and minutes) on the second line while creating events.

The known placeholders that can be used in the formula are:

  • %1 (exEventStartDateTime) {Date}, indicates the starting date/time of the event. This property gets the Start property of the event. The Start property defines the lower margin of the event, and it includes the date and the time values. The exEventStartDate specifies the DATE value only, while the exEventStartTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%1)%>" displays the day of the week where the event starts
  • %2 (exEventEndDateTime) {Date}, indicates the ending date/time of the event. This property gets or sets the End property of the event. The End property defines the upper margin of the event, and it includes the date and the time values. The exEventEndDate specifies the DATE value only, while the exEventEndTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%2)%>" gets the day of the week where the event ends.
  • %3 (exEventAllDay) {boolean}, indicates if the current event is an all day event. This property is equivalent with the event's AllDay property which indicates if the current event is an all-day event. For instance, the LabelProperty = "<%=%3 ? `All-Day-Event: `: ``%><%=%256%>", displays automatically an "All-Day-Event: " prefix for all-day events. If the event is not an all-day event, the <%=%256%>, or exEventDisplayShortMargins, short margins of the events are displayed.
  • %4 (exEventGroupID) {any}, specifies the identifier/index of the event's group. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupLabel property indicates the Caption property of the Group's event. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%4%>
    <%=%256%>" displays on the first line, the group's identifier, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %5 (exEventCaption) {string}, indicates the caption of the event. The Caption property of the event specifies the custom caption that can be displayed on the label, without having to change the event's label. For instance, the LabelProperty = "<%=%256%>
    <%=%5%>" displays on the first line, the event's short margins, while on the second line displays the event's caption. Once you update or edit the event's Caption, the event's body automatically shows the new caption.
  • %6 (exEventUserData) {any}, indicates the extra data associated with the event. The UserData property of the event indicates an extra data associated with the event. For instance, the LabelProperty = "<%=%256%>
    <%=%6%>" displays on the first line, the event's short margins, while on the second line displays the event's user data. Once you update or edit the event's UserData, the event's body automatically shows the new label.
  • %7 (exEventDuration) {number}, specifies the duration of the event. The returned values is of float type, and it indicates the duration of the event in days. For instance, the 1.5 indicates, 1 day and 12 hours. For instance, the LabelProperty = "<%=%256%>
    <%=((1:=int(0:= (date(%2)-date(%1)))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>" displays on the first line, the event's short margins, while on the second line displays the event's durations in days, hours and minutes. Once you update or edit the event's margins, the event's body automatically shows the new length. You can use the MoveBy method to delay the current event with a specified value time. You can use the SetKnownProperty(exEventDuration) to change the event's duration.
  • %8 (exEventRepetitiveExpression) {string}, specifies the repetitive expression of the event. The Event.Repetitive property indicates the expression that determines whether the event is repetitive. For instance, the LabelProperty = "<%=%256%>
    <%=len(%8)? `repetitive event`:``%>" displays repetitive event for repetitive events.
  • %12 (exEventID) {string}, specifies the event's unique key/identifier/index.
  • %256 (exEventDisplayShortMargins) {string}, displays the margins of the event in a short format (read-only). The ShortDateFormat property defines the short date format. The ShortTimeFormat property defines the short time format.
  • %257 (exEventDisplayLongMargins) {string}, displays the margins of the event in a long format (read-only). The LongDateFormat property defines the long date format. The LongTimeFormat property defines the long time format.
  • %258 (exEventStartDate) {Date}, gets the starting date ( not including the time ) of the event (read-only). You can use this property to get the starting date of the event.
  • %259 (exEventStartTime) {number}, gets the starting time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the starting time of the event.
  • %260 (exEventEndDate) {Date}, gets the ending date ( not including the time ) of the event (read-only). You can use this property to get the ending date of the event.
  • %261 (exEventEndTime) {number}, gets the ending time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the ending time of the event.
  • %262 (exEventGroupLabel) {string}, gets the label of the owner group (read-only). The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%262%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %263 (exEventGroupTitle) {string}, gets the title of the owner group (read-only). The exEventGroupTitle property indicates the Title property of the Group's event. The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. For instance, the LabelProperty = "<%=%263%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %264 (exEventRepetitive) {boolean}, Indicates if the current event is a repetitive event. (read-only). You can use this flag to specify whether Repetitive property of the Event object is not empty, and valid.
Type:
  • string
Example
null {null}, the control's default label is shown while creating events ("&lt;%=%256%&gt;&lt;br&gt;&lt;%=((1:=int(0:= %7)) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%&gt;")
"" {string}, no label is shown for event to create
"Start: &lt;%=%1%&gt;&lt;br&gt;End: &lt;%=%2%&gt;" {string}, displays the starting margin of the even on the first line, while on the second line it displays the ending point of the event
"Duration: &lt;%=((1:=int(0:= %7)) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%&gt;" {string},  displays the duration of the event in days, hours and minutes
CreateEventLabel

Cursors :string

The Cursors property defines the mouse cursor displayed when pointing over different parts of the control. Customizable parts include events, date headers, time scales, and more. By defining the Cursors property, you can enhance the user experience by providing visual feedback that indicates the interactivity of various elements. For example, setting "pointer(event)" changes the cursor to a pointer (hand) when hovering over events, indicating that they are clickable or draggable.

The format of the property is:

"cursor(part),cursor(part),..."
where:
  • "cursor", defines the CSS mouse cursor to display while cursor hovers the part
  • "part", defines the name of the part the cursor is applied on (as defined below)
The "cursor" can be any of the following:
Cursor Description
"alias"indicates a shortcut or alias will be created
"all-scroll"indicates scrolling in any direction
"auto"lets the browser decide the cursor based on context
"cell"indicates a table cell
"col-resize"indicates a column can be resized horizontally
"context-menu"indicates a context menu is available
"copy"indicates something will be copied
"crosshair"a precise crosshair cursor
"default"the default arrow cursor
"e-resize"resize east (right edge)
"ew-resize"resize horizontally
"grab"indicates an item can be grabbed
"grabbing"indicates an item is being grabbed
"help"indicates help information is available
"move"indicates something can be moved
"n-resize"resize north (top edge)
"ne-resize"resize northeast (top-right corner)
"nesw-resize"resize along the northeast-southwest axis
"no-drop"indicates dropping is not permitted
"not-allowed"indicates the action is not allowed
"ns-resize"resize vertically
"nw-resize"resize northwest (top-left corner)
"nwse-resize"resize along the northwest-southeast axis
"pointer"the pointer cursor (a hand with a pointing finger)
"progress"indicates background processing
"row-resize"indicates a row can be resized vertically
"s-resize"resize south (bottom edge)
"se-resize"resize southeast (bottom-right corner)
"sw-resize"resize southwest (bottom-left corner)
"text"the text selection cursor (I-beam)
"url(...)"uses a custom cursor image (with optional fallback)
"vertical-text"the vertical text selection cursor
"w-resize"resize west (left edge)
"wait"indicates the program is busy
"zoom-in"indicates zooming in
"zoom-out"indicates zooming out
The "part" can be any of the following:
Part Description
"anchor" (hyperlink)defines the mouse-cursor when the mouse pointer hovers the anchor (the <a> ex-HTML part marks an anchor or hyperlink element) (@since 2.2)
"create"defines the mouse-cursor to create new events by drag and drop
"date"defines the mouse-cursor when the mouse pointer hovers the date (any part)
"date-all-day-header"defines the mouse-cursor when the mouse pointer hovers the date's all-day header
"date-all-day-scroll-button"defines the mouse-cursor when the mouse pointer hovers the date's scroll-button of the all-day header
"date-all-day-scroll-wheel"defines the mouse-cursor when the mouse pointer hovers the date's scroll-wheel of the all-day header (the scroll-wheel zone is the portion of the all-day header where user can scroll the events using the mouse wheel)
"date-grouping-header"defines the mouse-cursor when the mouse pointer hovers the date's grouping-header part
"date-header"defines the mouse-cursor when the mouse pointer hovers the header's date
"date-timeScale"defines the mouse-cursor when the mouse pointer hovers the date's time-scale part
"drag-drop"defines the cursor while the event is being dragged using the "drag-drop" action
"event"defines the mouse-cursor when the mouse pointer hovers any movable event. The Event.Cursor property specifies the cursor to be used for a specific event.
"grouping-button"defines the mouse-cursor when the mouse pointer hovers the header's grouping-button
"long"specifies the mouse-cursor to be shown as soon as a "long" click or touch action begins (see allowActions field)
"resize-group"defines the mouse-cursor when the mouse pointer hovers the group's resize margin
"resize-h" (resize-event-horizontal)defines the mouse-cursor when the mouse pointer hovers the all-day event's start and end margins
"resize-v" (resize-event-vertical)defines the mouse-cursor when the mouse pointer hovers the event's start and end margins
"timeScale"defines the mouse-cursor when the mouse pointer hovers the control's time-scale header
Type:
  • string
Example
"pointer(event)" {string}, sets the cursor to a pointer (hand) when hovering over events (indicating that they are clickable or draggable)
"not-allowed(date)" {string}, sets the cursor to "not-allowed" when hovering over dates (indicating that they are not interactive)
Cursors

DayEndTime :string

The DayEndTime property defines the time at which the day ends, using the "HH[:MM[:NN]]" format, while the DayStartTime property specifies the time at which the day begins using the same format. If these properties are not set, the schedule view defaults to a range from 8:00 AM to 4:00 PM. The values of DayStartTime and DayEndTime are used to calculate the height of the schedule's rows and to determine the position of events within the view. If an event starts before DayStartTime or ends after DayEndTime, the control clips the event to the visible area and displays a small arrow at the top or bottom to indicate that it continues outside the view. The HH represents hours in 24-hour format, MM represents minutes, and NN represents seconds. The MM and NN parts are optional. For example, "08:00" or "08:00:00" represent 8 AM, while "16:00" or "16:00:00" represent 4 PM. The TimeScale property holds options to apply on the control's time-scale, as an object of TimeScaleOptions type.
Type:
  • string
Example
null {null}, every day ends at 4:00 PM
"17:00" {string}, the day ends at 05:00 PM
"24:00" {string}, the day ends at 12:00 AM
DayEndTime

DayStartTime :string

The DayStartTime property defines the time at which the day begins, using the "HH[:MM[:NN]]" format, while the DayEndTime property specifies the time at which the day ends using the same format. If these properties are not set, the schedule view defaults to a range from 8:00 AM to 4:00 PM. The values of DayStartTime and DayEndTime are used to calculate the height of the schedule's rows and to determine the position of events within the view. If an event starts before DayStartTime or ends after DayEndTime, the control clips the event to the visible area and displays a small arrow at the top or bottom of the event to indicate that it continues outside the view. The HH represents hours in 24-hour format, MM represents minutes, and NN represents seconds. The MM and NN parts are optional. For example, "08:00" or "08:00:00" represent 8 AM, while "16:00" or "16:00:00" represent 4 PM. The TimeScale property holds options to apply on the control's time-scale, as an object of TimeScaleOptions type.
Type:
  • string
Example
null {null}, every day starts at 8:00 AM
"00:00" {string}, the day starts at 12:00 AM
"07:00" {string}, the day starts at 07:00 AM
DayStartTime

DayViewHeight :number

The DayViewHeight property defines the height of a day within the schedule panel, while the DayViewWidth property specifies its width. The ShowViewCompact property determines how days are arranged within the schedule view. The DayViewHeight property has no effect when ShowViewCompact is set to exViewSingleRow or exViewSingleRowLockHeader, while the DayViewWidth property has no effect when ShowViewCompact is set to exViewSingleColumn. The MiscellaneousOptions.minWidth field specifies the minimum-width in pixels for the day's view. The MiscellaneousOptions.minHeight field specifies the minimum-height in pixels for the day's view.
Type:
  • number
Example
null {null} or -1 {number}, the day fits vertically the schedule view
128 {number}, the day within the schedule panel has a fixed height
DayViewHeight

DayViewWidth :number

The DayViewWidth property defines the width of a day within the schedule panel, while the DayViewHeight property specifies its height. The ShowViewCompact property determines how days are arranged within the schedule view. The DayViewWidth property has no effect when ShowViewCompact is set to exViewSingleColumn, while the DayViewHeight property has no effect when ShowViewCompact is set to exViewSingleRow or exViewSingleRowLockHeader. The MiscellaneousOptions.minWidth field specifies the minimum-width in pixels for the day's view. The MiscellaneousOptions.minHeight field specifies the minimum-height in pixels for the day's view.
Type:
  • number
Example
null {null} or -1 {number}, the day fits horizontally the schedule view
128 {number}, the day within the schedule panel has a fixed width
DayViewWidth

DefaultEventExtraLabel :string

The DefaultEventExtraLabel property defines event's default extra-label. This property supports ex-HTML as well as <%=formula%> tags, where each formula evaluates to a value based on event properties. Placeholders such as %0, %1, %2, and so on correspond to specific event properties—for example, %1 refers to ExEventStartDateTime, %2 to ExEventEndDateTime, and so on. The extra label is displayed within the body of the event and is always shown if it is not empty. The event's caption and label are always displayed. By default, the DefaultEventExtraLabel property is set to an empty string (""), meaning no extra label is displayed unless explicitly defined.

The known identifiers within the <%=formula%> tag are:

  • %1 (exEventStartDateTime) {Date}, indicates the starting date/time of the event. This property gets the Start property of the event. The Start property defines the lower margin of the event, and it includes the date and the time values. The exEventStartDate specifies the DATE value only, while the exEventStartTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%1)%>" displays the day of the week where the event starts
  • %2 (exEventEndDateTime) {Date}, indicates the ending date/time of the event. This property gets or sets the End property of the event. The End property defines the upper margin of the event, and it includes the date and the time values. The exEventEndDate specifies the DATE value only, while the exEventEndTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%2)%>" gets the day of the week where the event ends.
  • %3 (exEventAllDay) {boolean}, indicates if the current event is an all day event. This property is equivalent with the event's AllDay property which indicates if the current event is an all-day event. For instance, the LabelProperty = "<%=%3 ? `All-Day-Event: `: ``%><%=%256%>", displays automatically an "All-Day-Event: " prefix for all-day events. If the event is not an all-day event, the <%=%256%>, or exEventDisplayShortMargins, short margins of the events are displayed.
  • %4 (exEventGroupID) {any}, specifies the identifier/index of the event's group. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupLabel property indicates the Caption property of the Group's event. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%4%>
    <%=%256%>" displays on the first line, the group's identifier, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %5 (exEventCaption) {string}, indicates the caption of the event. The Caption property of the event specifies the custom caption that can be displayed on the label, without having to change the event's label. For instance, the LabelProperty = "<%=%256%>
    <%=%5%>" displays on the first line, the event's short margins, while on the second line displays the event's caption. Once you update or edit the event's Caption, the event's body automatically shows the new caption.
  • %6 (exEventUserData) {any}, indicates the extra data associated with the event. The UserData property of the event indicates an extra data associated with the event. For instance, the LabelProperty = "<%=%256%>
    <%=%6%>" displays on the first line, the event's short margins, while on the second line displays the event's user data. Once you update or edit the event's UserData, the event's body automatically shows the new label.
  • %7 (exEventDuration) {number}, specifies the duration of the event. The returned values is of float type, and it indicates the duration of the event in days. For instance, the 1.5 indicates, 1 day and 12 hours. For instance, the LabelProperty = "<%=%256%>
    <%=((1:=int(0:= (date(%2)-date(%1)))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>" displays on the first line, the event's short margins, while on the second line displays the event's durations in days, hours and minutes. Once you update or edit the event's margins, the event's body automatically shows the new length. You can use the MoveBy method to delay the current event with a specified value time. You can use the SetKnownProperty(exEventDuration) to change the event's duration.
  • %8 (exEventRepetitiveExpression) {string}, specifies the repetitive expression of the event. The Event.Repetitive property indicates the expression that determines whether the event is repetitive. For instance, the LabelProperty = "<%=%256%>
    <%=len(%8)? `repetitive event`:``%>" displays repetitive event for repetitive events.
  • %12 (exEventID) {string}, specifies the event's unique key/identifier/index.
  • %256 (exEventDisplayShortMargins) {string}, displays the margins of the event in a short format (read-only). The ShortDateFormat property defines the short date format. The ShortTimeFormat property defines the short time format.
  • %257 (exEventDisplayLongMargins) {string}, displays the margins of the event in a long format (read-only). The LongDateFormat property defines the long date format. The LongTimeFormat property defines the long time format.
  • %258 (exEventStartDate) {Date}, gets the starting date ( not including the time ) of the event (read-only). You can use this property to get the starting date of the event.
  • %259 (exEventStartTime) {number}, gets the starting time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the starting time of the event.
  • %260 (exEventEndDate) {Date}, gets the ending date ( not including the time ) of the event (read-only). You can use this property to get the ending date of the event.
  • %261 (exEventEndTime) {number}, gets the ending time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the ending time of the event.
  • %262 (exEventGroupLabel) {string}, gets the label of the owner group (read-only). The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%262%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %263 (exEventGroupTitle) {string}, gets the title of the owner group (read-only). The exEventGroupTitle property indicates the Title property of the Group's event. The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. For instance, the LabelProperty = "<%=%263%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %264 (exEventRepetitive) {boolean}, Indicates if the current event is a repetitive event. (read-only). You can use this flag to specify whether Repetitive property of the Event object is not empty, and valid.
Type:
  • string
Example
"" {string}, no extra label is shown
"&lt;img&gt;image&lt;/img&gt; and text" {string}, the event displays the image and text. The image can be added using the exontrol.HTMLPicture.Add method
"&lt;%=%256%&gt;", displays the event's start and end margins in a short format
DefaultEventExtraLabel

DefaultEventLongLabel :string

The DefaultEventLongLabel property defines event's default long-label. The Event.LongLabel property defines the event's custom long-label. This property supports ex-HTML as well as <%=formula%> tags, where each formula evaluates to a value based on event properties. Placeholders like %0, %1, %2, etc., correspond to specific event properties—for example, %1 refers to ExEventStartDateTime, %2 to ExEventEndDateTime, and so on. The event's long label is displayed only if it is not empty and fits within the event. If the long label is empty or does not fit, the short label is displayed instead. The event's caption and extra label are always shown. By default, the DefaultEventLongLabel property is set to "<%=%256%>", which displays the event's margins in a short format.

The known identifiers within the <%=formula%> tag are:

  • %1 (exEventStartDateTime) {Date}, indicates the starting date/time of the event. This property gets the Start property of the event. The Start property defines the lower margin of the event, and it includes the date and the time values. The exEventStartDate specifies the DATE value only, while the exEventStartTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%1)%>" displays the day of the week where the event starts
  • %2 (exEventEndDateTime) {Date}, indicates the ending date/time of the event. This property gets or sets the End property of the event. The End property defines the upper margin of the event, and it includes the date and the time values. The exEventEndDate specifies the DATE value only, while the exEventEndTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%2)%>" gets the day of the week where the event ends.
  • %3 (exEventAllDay) {boolean}, indicates if the current event is an all day event. This property is equivalent with the event's AllDay property which indicates if the current event is an all-day event. For instance, the LabelProperty = "<%=%3 ? `All-Day-Event: `: ``%><%=%256%>", displays automatically an "All-Day-Event: " prefix for all-day events. If the event is not an all-day event, the <%=%256%>, or exEventDisplayShortMargins, short margins of the events are displayed.
  • %4 (exEventGroupID) {any}, specifies the identifier/index of the event's group. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupLabel property indicates the Caption property of the Group's event. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%4%>
    <%=%256%>" displays on the first line, the group's identifier, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %5 (exEventCaption) {string}, indicates the caption of the event. The Caption property of the event specifies the custom caption that can be displayed on the label, without having to change the event's label. For instance, the LabelProperty = "<%=%256%>
    <%=%5%>" displays on the first line, the event's short margins, while on the second line displays the event's caption. Once you update or edit the event's Caption, the event's body automatically shows the new caption.
  • %6 (exEventUserData) {any}, indicates the extra data associated with the event. The UserData property of the event indicates an extra data associated with the event. For instance, the LabelProperty = "<%=%256%>
    <%=%6%>" displays on the first line, the event's short margins, while on the second line displays the event's user data. Once you update or edit the event's UserData, the event's body automatically shows the new label.
  • %7 (exEventDuration) {number}, specifies the duration of the event. The returned values is of float type, and it indicates the duration of the event in days. For instance, the 1.5 indicates, 1 day and 12 hours. For instance, the LabelProperty = "<%=%256%>
    <%=((1:=int(0:= (date(%2)-date(%1)))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>" displays on the first line, the event's short margins, while on the second line displays the event's durations in days, hours and minutes. Once you update or edit the event's margins, the event's body automatically shows the new length. You can use the MoveBy method to delay the current event with a specified value time. You can use the SetKnownProperty(exEventDuration) to change the event's duration.
  • %8 (exEventRepetitiveExpression) {string}, specifies the repetitive expression of the event. The Event.Repetitive property indicates the expression that determines whether the event is repetitive. For instance, the LabelProperty = "<%=%256%>
    <%=len(%8)? `repetitive event`:``%>" displays repetitive event for repetitive events.
  • %12 (exEventID) {string}, specifies the event's unique key/identifier/index.
  • %256 (exEventDisplayShortMargins) {string}, displays the margins of the event in a short format (read-only). The ShortDateFormat property defines the short date format. The ShortTimeFormat property defines the short time format.
  • %257 (exEventDisplayLongMargins) {string}, displays the margins of the event in a long format (read-only). The LongDateFormat property defines the long date format. The LongTimeFormat property defines the long time format.
  • %258 (exEventStartDate) {Date}, gets the starting date ( not including the time ) of the event (read-only). You can use this property to get the starting date of the event.
  • %259 (exEventStartTime) {number}, gets the starting time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the starting time of the event.
  • %260 (exEventEndDate) {Date}, gets the ending date ( not including the time ) of the event (read-only). You can use this property to get the ending date of the event.
  • %261 (exEventEndTime) {number}, gets the ending time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the ending time of the event.
  • %262 (exEventGroupLabel) {string}, gets the label of the owner group (read-only). The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%262%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %263 (exEventGroupTitle) {string}, gets the title of the owner group (read-only). The exEventGroupTitle property indicates the Title property of the Group's event. The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. For instance, the LabelProperty = "<%=%263%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %264 (exEventRepetitive) {boolean}, Indicates if the current event is a repetitive event. (read-only). You can use this flag to specify whether Repetitive property of the Event object is not empty, and valid.
Type:
  • string
Example
null {null} or undefined {undefined}, the default short-label is used ("&lt;%=%256%&gt;")
"" {string}, the short-label is hidden
"&lt;img&gt;image&lt;/img&gt; and text" {string}, the event displays the image and text. The image can be added using the exontrol.HTMLPicture.Add method
"&lt;%=%256%&gt;", displays the event's start and end margins in a short format
DefaultEventLongLabel

DefaultEventShortLabel :string

The DefaultEventShortLabel property defines event's default short-label. The Event.ShortLabel field specifies a custom short label for the event. This property supports ex-HTML as well as <%=formula%> tags, where each formula evaluates to a value based on event properties. Placeholders like %0, %1, %2, etc., correspond to specific event properties—for example, %1 refers to ExEventStartDateTime, %2 to ExEventEndDateTime, and so on. The event's long label is displayed if it is not empty and fits within the event. The short label is displayed only when the long label is empty or does not fit. The event's caption and extra label are always displayed. By default, the DefaultEventShortLabel property is set to an empty string (""), meaning events have no short label unless explicitly defined.

The known identifiers within the <%=formula%> tag are:

  • %1 (exEventStartDateTime) {Date}, indicates the starting date/time of the event. This property gets the Start property of the event. The Start property defines the lower margin of the event, and it includes the date and the time values. The exEventStartDate specifies the DATE value only, while the exEventStartTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%1)%>" displays the day of the week where the event starts
  • %2 (exEventEndDatef {Date}, indicates the ending date/time of the event. This property gets or sets the End property of the event. The End property defines the upper margin of the event, and it includes the date and the time values. The exEventEndDate specifies the DATE value only, while the exEventEndTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%2)%>" gets the day of the week where the event ends.
  • %3 (exEventAllDay) {boolean}, indicates if the current event is an all day event. This property is equivalent with the event's AllDay property which indicates if the current event is an all-day event. For instance, the LabelProperty = "<%=%3 ? `All-Day-Event: `: ``%><%=%256%>", displays automatically an "All-Day-Event: " prefix for all-day events. If the event is not an all-day event, the <%=%256%>, or exEventDisplayShortMargins, short margins of the events are displayed.
  • %4 (exEventGroupID) {any}, specifies the identifier/index of the event's group. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupLabel property indicates the Caption property of the Group's event. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%4%>
    <%=%256%>" displays on the first line, the group's identifier, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %5 (exEventCaption) {string}, indicates the caption of the event. The Caption property of the event specifies the custom caption that can be displayed on the label, without having to change the event's label. For instance, the LabelProperty = "<%=%256%>
    <%=%5%>" displays on the first line, the event's short margins, while on the second line displays the event's caption. Once you update or edit the event's Caption, the event's body automatically shows the new caption.
  • %6 (exEventUserData) {any}, indicates the extra data associated with the event. The UserData property of the event indicates an extra data associated with the event. For instance, the LabelProperty = "<%=%256%>
    <%=%6%>" displays on the first line, the event's short margins, while on the second line displays the event's user data. Once you update or edit the event's UserData, the event's body automatically shows the new label.
  • %7 (exEventDuration) {number}, specifies the duration of the event. The returned values is of float type, and it indicates the duration of the event in days. For instance, the 1.5 indicates, 1 day and 12 hours. For instance, the LabelProperty = "<%=%256%>
    <%=((1:=int(0:= (date(%2)-date(%1)))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>" displays on the first line, the event's short margins, while on the second line displays the event's durations in days, hours and minutes. Once you update or edit the event's margins, the event's body automatically shows the new length. You can use the MoveBy method to delay the current event with a specified value time. You can use the SetKnownProperty(exEventDuration) to change the event's duration.
  • %8 (exEventRepetitiveExpression) {string}, specifies the repetitive expression of the event. The Event.Repetitive property indicates the expression that determines whether the event is repetitive. For instance, the LabelProperty = "<%=%256%>
    <%=len(%8)? `repetitive event`:``%>" displays repetitive event for repetitive events.
  • %12 (exEventID) {string}, specifies the event's unique key/identifier/index.
  • %256 (exEventDisplayShortMargins) {string}, displays the margins of the event in a short format (read-only). The ShortDateFormat property defines the short date format. The ShortTimeFormat property defines the short time format.
  • %257 (exEventDisplayLongMargins) {string}, displays the margins of the event in a long format (read-only). The LongDateFormat property defines the long date format. The LongTimeFormat property defines the long time format.
  • %258 (exEventStartDate) {Date}, gets the starting date ( not including the time ) of the event (read-only). You can use this property to get the starting date of the event.
  • %259 (exEventStartTime) {number}, gets the starting time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the starting time of the event.
  • %260 (exEventEndDate) {Date}, gets the ending date ( not including the time ) of the event (read-only). You can use this property to get the ending date of the event.
  • %261 (exEventEndTime) {number}, gets the ending time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the ending time of the event.
  • %262 (exEventGroupLabel) {string}, gets the label of the owner group (read-only). The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%262%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %263 (exEventGroupTitle) {string}, gets the title of the owner group (read-only). The exEventGroupTitle property indicates the Title property of the Group's event. The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. For instance, the LabelProperty = "<%=%263%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %264 (exEventRepetitive) {boolean}, Indicates if the current event is a repetitive event. (read-only). You can use this flag to specify whether Repetitive property of the Event object is not empty, and valid.
Type:
  • string
Example
null {null} or undefined {undefined}, the default short-label is used ("&lt;%=%256%&gt;")
"" {string}, the short-label is hidden
"&lt;img&gt;image&lt;/img&gt; and text" {string}, the event displays the image and text. The image can be added using the exontrol.HTMLPicture.Add method
"&lt;%=%256%&gt;", displays the event's start and end margins in a short format
DefaultEventShortLabel

DefaultEventToolTip :string

The DefaultEventToolTip property defines the default tooltip for events, which is displayed when the mouse hovers over an event. This property allows you to set a tooltip for all events without defining it individually for each one. The DefaultEventToolTip property supports dynamic placeholders that are replaced with the corresponding values of the event when the tooltip is shown. This field supports ex-HTML such as (<b>, <i>, <fgcolor>, ...) as well as <%=formula%> tags. The <%=formula%> tag represents the result of a given formula. The formula is a format-expression that can include placeholders like %1, %2, and so on. Each placeholder corresponds to a specific property of the event. For example, %1 refers to exEventStartDateTime, %2 refers to exEventEndDateTime, etc. By default, it is set to: "Start: <%=%1%>
End: <%=%2%>
Duration: <%=((1:=int(0:= %7)) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>". This default setting ensures that each event's tooltip displays its start and end date/time, as well as its duration in days, hours, and minutes.

The following properties are supported in the DefaultEventToolTip property:

  • %1 (exEventStartDateTime) {Date}, indicates the starting date/time of the event. This property gets the Start property of the event. The Start property defines the lower margin of the event, and it includes the date and the time values. The exEventStartDate specifies the DATE value only, while the exEventStartTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%1)%>" displays the day of the week where the event starts
  • %2 (exEventEndDateTime) {Date}, indicates the ending date/time of the event. This property gets or sets the End property of the event. The End property defines the upper margin of the event, and it includes the date and the time values. The exEventEndDate specifies the DATE value only, while the exEventEndTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%2)%>" gets the day of the week where the event ends.
  • %3 (exEventAllDay) {boolean}, indicates if the current event is an all day event. This property is equivalent with the event's AllDay property which indicates if the current event is an all-day event. For instance, the LabelProperty = "<%=%3 ? `All-Day-Event: `: ``%><%=%256%>", displays automatically an "All-Day-Event: " prefix for all-day events. If the event is not an all-day event, the <%=%256%>, or exEventDisplayShortMargins, short margins of the events are displayed.
  • %4 (exEventGroupID) {any}, specifies the identifier/index of the event's group. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupLabel property indicates the Caption property of the Group's event. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%4%>
    <%=%256%>" displays on the first line, the group's identifier, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %5 (exEventCaption) {string}, indicates the caption of the event. The Caption property of the event specifies the custom caption that can be displayed on the label, without having to change the event's label. For instance, the LabelProperty = "<%=%256%>
    <%=%5%>" displays on the first line, the event's short margins, while on the second line displays the event's caption. Once you update or edit the event's Caption, the event's body automatically shows the new caption.
  • %6 (exEventUserData) {any}, indicates the extra data associated with the event. The UserData property of the event indicates an extra data associated with the event. For instance, the LabelProperty = "<%=%256%>
    <%=%6%>" displays on the first line, the event's short margins, while on the second line displays the event's user data. Once you update or edit the event's UserData, the event's body automatically shows the new label.
  • %7 (exEventDuration) {number}, specifies the duration of the event. The returned values is of float type, and it indicates the duration of the event in days. For instance, the 1.5 indicates, 1 day and 12 hours. For instance, the LabelProperty = "<%=%256%>
    <%=((1:=int(0:= (date(%2)-date(%1)))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>" displays on the first line, the event's short margins, while on the second line displays the event's durations in days, hours and minutes. Once you update or edit the event's margins, the event's body automatically shows the new length. You can use the MoveBy method to delay the current event with a specified value time. You can use the SetKnownProperty(exEventDuration) to change the event's duration.
  • %8 (exEventRepetitiveExpression) {string}, specifies the repetitive expression of the event. The Event.Repetitive property indicates the expression that determines whether the event is repetitive. For instance, the LabelProperty = "<%=%256%>
    <%=len(%8)? `repetitive event`:``%>" displays repetitive event for repetitive events.
  • %12 (exEventID) {string}, specifies the event's unique key/identifier/index.
  • %256 (exEventDisplayShortMargins) {string}, displays the margins of the event in a short format (read-only). The ShortDateFormat property defines the short date format. The ShortTimeFormat property defines the short time format.
  • %257 (exEventDisplayLongMargins) {string}, displays the margins of the event in a long format (read-only). The LongDateFormat property defines the long date format. The LongTimeFormat property defines the long time format.
  • %258 (exEventStartDate) {Date}, gets the starting date ( not including the time ) of the event (read-only). You can use this property to get the starting date of the event.
  • %259 (exEventStartTime) {number}, gets the starting time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the starting time of the event.
  • %260 (exEventEndDate) {Date}, gets the ending date ( not including the time ) of the event (read-only). You can use this property to get the ending date of the event.
  • %261 (exEventEndTime) {number}, gets the ending time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the ending time of the event.
  • %262 (exEventGroupLabel) {string}, gets the label of the owner group (read-only). The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%262%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %263 (exEventGroupTitle) {string}, gets the title of the owner group (read-only). The exEventGroupTitle property indicates the Title property of the Group's event. The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. For instance, the LabelProperty = "<%=%263%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %264 (exEventRepetitive) {boolean}, Indicates if the current event is a repetitive event. (read-only). You can use this flag to specify whether Repetitive property of the Event object is not empty, and valid.
Type:
  • string
Example
null {null} or undefined {undefined}, the default-tooltip is used ("Start: &lt;%=%1%&gt;&lt;br&gt;End: &lt;%=%2%&gt;&lt;br&gt;Duration: &lt;%=((1:=int(0:= %7)) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%&gt;")
"" {string}, no tooltip
"&lt;img&gt;image&lt;/img&gt; and text" {string}, the image and text is being shown once the mouse pointer hovers the event. The image can be added using the exontrol.HTMLPicture.Add method
"&lt;%=%256%&gt;", displays the event's start and end margins in a short format
DefaultEventToolTip

DisplayGroupingButton :boolean

The DisplayGroupingButton property defines whether the grouping button is displayed in the date header, while the ShowGroupingEvents property specifies whether the schedule view displays grouped events. The grouping button allows users to toggle the visibility of grouped events within the schedule view. When clicked, it shows or hides event groups. The DisplayGroupingButton property has effect only when the control includes groups. By default, the grouping button is not displayed in the date header (false).

The grouping button is displayed if:

  • DisplayGroupingButton property is true
  • ShowGroupingEvents property is true

The control displays groups if:

  • ShowGroupingEvents property is true
  • The Groups collection has visible elements. By default, the Groups collection contains no Group objects
Type:
  • boolean
Example
false {boolean}, the grouping button is not displayed in the date header (default)
true {boolean}, the grouping button is displayed in the date header
DisplayGroupingButton

Events :Events

The Events property defines the events within the control. Events are the core elements of the schedule control and represent scheduled items or appointments, each having properties such as start time, end time, caption, and more. The Events property allows you to define multiple events, each with specific settings that control how it is displayed and behaves. You can use the Events.Add method to add new events to the control. By default, the Events property is set to null, meaning no events are defined. To create a valid event, the Start and End properties of the EventOptions type must be specified.

The getter property of Events returns the control's events, as an object of Events type, while the setter property of Events supports assigning the events to the control using any of the following formats:

  • {array(any)}, defines multiple events, with specified options, as an array of [{EventOptions}] type
  • {object}, defines multiple events, where each property(key) of the object defines the event with its options, of EventOptions type
Type:
Example
The following sample defines three events within the control, as object:

 {
   "A":
   {
     groupID: "G1",
     start: "#1/1/2022 10:00#",
     end: "#1/1/2022 12:00#", 
     caption: "!Important"
   },
   "B":
   {
     groupID: "G1",
     start: "#1/1/2022 11:00#",
     end: "#1/1/2022 13:00#"
   },
   "C":
   {
     groupID: "G2", 
     start: "#1/1/2022 12:00#", 
     end: "#1/1/2022 14:00#"
   },
 }

The following sample defines three events within the control, as array:

 [
   {
     key: "A",
     groupID: "G1",
     start: "#1/1/2022 10:00#",
     end: "#1/1/2022 12:00#", 
     caption: "!Important"
   },
   {
     key: "B",
     groupID: "G1",
     start: "#1/1/2022 11:00#",
     end: "#1/1/2022 13:00#"
   },
   {
     key: "C",
     groupID: "G2", 
     start: "#1/1/2022 12:00#", 
     end: "#1/1/2022 14:00#"
   },
 ]
Events

FormatText :exontrol.DrawTextFormatEnum

The FormatText property defines how event (appointment) captions are displayed. It is a bitwise combination of flags that control alignment, word-breaking, tab expansion, and other aspects of text rendering within the control. For example, you can align text to the center, enable word-breaking for long captions, or display text on a single line. The exontrol.DrawTextFormatEnum type defines the flags that can be combined to achieve the desired formatting. By default, the FormatText property is set to exTextAlignRight | exTextAlignBottom | exTextSingleLine | exTextWordEllipsis, meaning that captions are right-aligned, bottom-aligned, displayed on a single line, and truncated with ellipses if they exceed the available space.

The following properties and fields can be used to specify the format for different captions and labels within the control:

  • Event captions and labels
    • The FormatText property specifies the format used to display event (appointment) captions.
    • The formatEventShortLabel, formatEventLongLabel, and formatEventExtraLabel fields specify the format and alignment for the event's short, long, and extra labels.
  • Event interaction (drag & drop)
    • The formatCreateEventLabel field specifies the format and alignment of the event's label while the user creates it by drag and drop.
    • The formatUpdateEventLabel field specifies the format and alignment of the event's label while the user moves or resizes it by drag and drop.
  • Other captions

The exontrol.DrawTextFormatEnum type supports the following flags:

  • exTextAlignTop (0x00), justifies the text to the top of the rectangle
  • exTextAlignLeft (0x00), aligns text to the left
  • exTextAlignCenter (0x01), centers text horizontally in the rectangle
  • exTextAlignRight (0x02), aligns text to the right
  • exTextAlignVCenter (0x04), centers text vertically
  • exTextAlignBottom (0x08), justifies the text to the bottom of the rectangle.
  • exTextAlignMask (0x0F), specifies the mask for text's alignment.
  • exTextWordBreak (0x10), breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle specified by the lpRect parameter. A carriage return-line feed sequence also breaks the line. If this is not specified, output is on one line.
  • exTextSingleLine (0x20), displays text on a single line only. Carriage returns and line feeds do not break the line.
  • exTextExpandTabs (0x40), expands tab characters. The default number of characters per tab is eight.
  • exPlainText (0x80), treats the text as plain text.
  • exTextNoClip (0x0100), draws without clipping.
  • exHTMLTextNoColors (0x0200), ignores the and tags.
  • exTextCalcRect (0x0400), determines the width and height of the text.
  • exHTMLTextNoTags (0x0800), ignores all HTML tags.
  • exTextPathEllipsis (0x4000), for displayed text, replaces characters in the middle of the string with ellipses so that the result fits in the specified rectangle. If the string contains backslash (\) characters, exTextPathEllipsis preserves as much as possible of the text after the last backslash.
  • exTextEndEllipsis (0x8000), for displayed text, if the end of a string does not fit in the rectangle, it is truncated and ellipses are added. If a word that is not at the end of the string goes beyond the limits of the rectangle, it is truncated without ellipses.
  • exTextWordEllipsis (0x040000), truncates any word that does not fit in the rectangle and adds ellipses.
Type:
  • exontrol.DrawTextFormatEnum
Example
null {null}, centers the caption
32 or exontrol.DrawTextFormatEnum.exTextSingleLine {number}, defines a single-line caption
0x2A or exontrol.DrawTextFormatEnum.exTextSingleLine | exontrol.DrawTextFormatEnum.exTextAlignRight | exontrol.DrawTextFormatEnum.exTextAlignBottom {number}, defines a single-line caption right/bottom-aligned
FormatText

Groups :Groups

The Groups property defines the groups within the control. Groups are used to categorize events, allowing each group to contain its own set of events and be visually distinguished using different colors, captions, or other styling options. The Groups property allows you to define multiple groups, each having specific properties such as caption, identifier, and more. By default, it is set to null, meaning no groups are defined. You can use the Groups.Add method to add new groups to the control.

The getter of the Groups property returns an object of Groups type, while the setter of the Groups property accepts any of the following:

  • {string}, defines a single group with specified caption/identifier
  • {array(any)}, defines multiple groups, with specified caption/identifier/options, as an array of [caption] or [{GroupOptions}] type
  • {object}, defines multiple groups, where each property of the object defines a group with its options, of GroupOptions type
Type:
Example
The following sample defines two groups within the control, as object:

 {
   "G1":
   {
     eventShape: "red", 
     headerShape: "red"
   },
   "G2":
   {
     eventShape: "lime",
     headerShape: "lime"
   }
 }

The following sample defines two groups within the control, as array:

 [
   {
     caption: "G1",
     eventShape: "red", 
     headerShape: "red",
   },
   {
     caption: "G2",
     eventShape: "lime",
     headerShape: "lime",
   }
 ]
Groups

HeaderAllDayEventHeight :number

The HeaderAllDayEventHeight property defines the height of events displayed within the all-day header, relative to the control's font size. The ShowAllDayHeader property specifies whether the all-day header is visible. The all-day header is a dedicated section within the schedule control used to display events that span an entire day or more. By default, the HeaderAllDayEventHeight property is set to 1, meaning the height of events in the all-day header matches the control's font size.
Type:
  • number
Example
null {null}, the height of the events to display within the all-day header is the same as the size of the control's font (100%)
0 {number}, hides the all-day header
2 {number}, the height of the events to display within the all-day header is 2 times the size of the control's font
HeaderAllDayEventHeight

HeaderDayHeight :number

The HeaderDayHeight property defines the height of the day's header relative to the control's font size. It can be set to a specific value (for example, 2) to make the header height twice the font size, or set to null to use the default value of 1.5 times the font size (150%). Setting the HeaderDayHeight property to 0 hides the day's header. The day's header is the area within the schedule view that displays the day's name or number, and adjusting its height can improve readability and visual clarity, making it easier to distinguish between days.
Type:
  • number
Example
0 {number}, hides the day's header
2 {number}, the day's header height is twice the font size of the control
HeaderDayHeight

HeaderDayLongLabel :string

The HeaderDayLongLabel property defines the alternate HTML labels displayed in the day's header when the time scale is visible, while the HeaderDayShortLabel property defines alternate HTML labels when the time scale is hidden. The format of the HeaderDayLongLabel property is "ALT1[<|>ALT2<|>...][<=>EXPR]", where each ALT represents an HTML label that can include predefined built-in tags, and EXPR is an expression used to determine which label is displayed. The EXPR supports the value keyword which represents the date being queried, and it evaluates to a numeric value that specifies the index (zero-based) of the alternate label to be shown for that date. Additionally, if the EXPR returns -1, any negative value, or a value outside the range of alternate labels, the control automatically selects the label that best fits the width of the date header.

The ALT part of the label supports ex-HTLM tags (such as <b>, <i>, <fgcolor>, ...) and <%DATE%> tags as follows:

Name Description Sample
(day-patterns)
<%d%>Day of the month using one or two numeric digits, depending on the value1 - 31
<%dd%>Day of the month using exactly two numeric digits01 - 31
<%d1%>Weekday using its first letterS - S
<%loc_d1%>Weekday as a single-letter abbreviation based on the current user settingsS - S
<%d2%>Weekday using its first two lettersSu - Sa
<%loc_d2%>Weekday as a two-letter abbreviation based on the current user settingsSu - Sa
<%d3%>Weekday using its first three lettersSun - Sat
<%ddd%>Weekday using its first three lettersSun - Sat
<%loc_d3%>Weekday as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_ddd%>Sun - Sat
<%loc_ddd%>Weekday as a three-letter abbreviation based on the current user regional and language settingsSun - Sat
<%dddd%>Full name of the weekdaySunday - Saturday
<%loc_dddd%>Full weekday name based on the current user regional and language settingsSunday - Saturday
<%w%>Numeric day of the week1 - 7
<%y%>Numeric day of the year1 - 366
(week-patterns)
<%ww%>Week of the year1 - 53
(month-patterns)
<%m%>Month of the year using one or two numeric digits, as needed1 - 12
<%mm%>Month of the year using exactly two numeric digits01 - 12
<%mr%>Month of the year using Roman numerals, as neededI - XII
<%m1%>Month using its first letterJ - D
<%loc_m1%>Month as a single-letter abbreviation based on the current user settingsJ - D
<%m2%>Month using its first two lettersJa - De
<%loc_m2%>Month as a two-letter abbreviation based on the current user settingsJa - De
<%m3%>Month using its first three lettersJan - Dec
<%mmm%>Month using its first three lettersJan - Dec
<%loc_m3%>Month as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_mmm%>Jan - Dec
<%loc_mmm%>Month as a three-letter abbreviation based on the current user regional and language settingsJan - Dec
<%mmmm%>Full name of the monthJanuary - December
<%loc_mmmm%>Full month name based on the current user regional and language settingsJanuary - December
(year-patterns)
<%q%>Date shown as the quarter of the year1 - 4
<%hy%>Date shown as the half of the year1 - 2
<%loc_y%>Year represented by the last digit only, based on the current regional settings0 - 9
<%yy%>Last two digits of the year01 - 99
<%loc_yy%>Year represented by the last two digits only, based on the current regional settings; a leading zero is added for single-digit years01 - 99
<%yyyy%>Full year using four digits0100 - 9999
<%loc_yyyy%>Year represented using four or five digits, depending on the calendar in use. Thai Buddhist and Korean calendars use five-digit years; the "yyyy" pattern displays five digits for these calendars and four digits for all other supported calendars. Calendars with single-digit or two-digit years, such as the Japanese Emperor era, are formatted differently: single-digit years include a leading zero (for example, "03"), two-digit years use two digits (for example, "13"), and no additional leading zeros are applied0100 - 9999
<%i%>Numeric value displayed instead of a date, representing the number of milliseconds elapsed since the Unix Epoch, January 1, 1970, 00:00:00 UTC1767085565940
(localized era-patterns)
<%loc_g%>Period/era based on the current user regional and language settingsA,B
<%loc_gg%>Period/era based on the current user regional and language settingsAD,BC
(localized date-patterns)
<%loc_sdate%>Date in short format based on the current user regional and language settings12/31/2000
<%loc_ldate%>Date in long format based on the current user regional and language settingsDecember 31, 2000
<%loc_dsep%>Date separator based on the current user regional and language settings/
(time-patterns)
<%h%>Hour in one or two digits, as needed0 - 23
<%hh%>Hour in two digits00 - 23
<%h12%>Hour in 12-hour format, in one or two digits0/12 - 11
<%hh12%>Hour in 12-hour format, in two digits00/12 - 11
<%n%>Minute in one or two digits, as needed0 - 59
<%nn%>Minute in two digits00 - 59
<%s%>Second in one or two digits, as needed0 - 59
<%ss%>Second in two digits00 - 59
<%AM/PM%>12-hour clock with uppercase "AM" or "PM" as appropriateAM, PM
(localized time-patterns)
<%loc_AM/PM%>Time marker such as AM or PM based on the current user regional and language settingsAM, PM
<%loc_A/P%>Single-character time marker such as A or P based on the current user regional and language settingsA, P
<%loc_time%>Time based on the current user regional and language settings1:30:15 PM
<%loc_time24%>Time in 24-hour format without a time marker based on the current user regional and language settings13:30:15
<%loc_tsep%>Time separator based on the current user regional and language settings:
Type:
  • string
Example
null {null}, the date's header displays the label using default alternate-labels (and expression)
"" {string}, the date's header displays no date
"&lt;%loc_ldate%&gt;" {string}, displays the date in the long format using the current user regional and language settings
"&lt;%d3%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d2%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d1%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d%&gt;" {string}, the date's header displays one, two or three letters for the week day based on the best fit
"&lt;fgcolor red&gt;&lt;%d3%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d3%&gt;, &lt;%d%&gt;&lt;=&gt;month(value) = 1 ? 0 : 1" {string}, displays the date's header in red for January, and in black for the rest
HeaderDayLongLabel

HeaderDayShortLabel :string

The HeaderDayShortLabel property defines the alternate HTML labels displayed in the day's header when the time scale is hidden, while the HeaderDayLongLabel property defines alternate HTML labels when the time scale is visible. The format of the HeaderDayShortLabel property is "ALT1[<|>ALT2<|>...][<=>EXPR]", where each ALT represents an HTML label that supports predefined built-in tags, and EXPR is an expression used to determine which label is displayed. The EXPR supports the value keyword which represents the date being queried, and it evaluates to a numeric value that specifies the index (zero-based) of the alternate label to be shown for that date. Additionally, if the EXPR returns -1, any negative value, or a value outside the range of alternate labels, the control automatically selects the label that best fits the width of the date header.

The ALT part of the label supports ex-HTLM tags (such as <b>, <i>, <fgcolor>, ...) and <%DATE%> tags as follows:

Name Description Sample
(day-patterns)
<%d%>Day of the month using one or two numeric digits, depending on the value1 - 31
<%dd%>Day of the month using exactly two numeric digits01 - 31
<%d1%>Weekday using its first letterS - S
<%loc_d1%>Weekday as a single-letter abbreviation based on the current user settingsS - S
<%d2%>Weekday using its first two lettersSu - Sa
<%loc_d2%>Weekday as a two-letter abbreviation based on the current user settingsSu - Sa
<%d3%>Weekday using its first three lettersSun - Sat
<%ddd%>Weekday using its first three lettersSun - Sat
<%loc_d3%>Weekday as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_ddd%>Sun - Sat
<%loc_ddd%>Weekday as a three-letter abbreviation based on the current user regional and language settingsSun - Sat
<%dddd%>Full name of the weekdaySunday - Saturday
<%loc_dddd%>Full weekday name based on the current user regional and language settingsSunday - Saturday
<%w%>Numeric day of the week1 - 7
<%y%>Numeric day of the year1 - 366
(week-patterns)
<%ww%>Week of the year1 - 53
(month-patterns)
<%m%>Month of the year using one or two numeric digits, as needed1 - 12
<%mm%>Month of the year using exactly two numeric digits01 - 12
<%mr%>Month of the year using Roman numerals, as neededI - XII
<%m1%>Month using its first letterJ - D
<%loc_m1%>Month as a single-letter abbreviation based on the current user settingsJ - D
<%m2%>Month using its first two lettersJa - De
<%loc_m2%>Month as a two-letter abbreviation based on the current user settingsJa - De
<%m3%>Month using its first three lettersJan - Dec
<%mmm%>Month using its first three lettersJan - Dec
<%loc_m3%>Month as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_mmm%>Jan - Dec
<%loc_mmm%>Month as a three-letter abbreviation based on the current user regional and language settingsJan - Dec
<%mmmm%>Full name of the monthJanuary - December
<%loc_mmmm%>Full month name based on the current user regional and language settingsJanuary - December
(year-patterns)
<%q%>Date shown as the quarter of the year1 - 4
<%hy%>Date shown as the half of the year1 - 2
<%loc_y%>Year represented by the last digit only, based on the current regional settings0 - 9
<%yy%>Last two digits of the year01 - 99
<%loc_yy%>Year represented by the last two digits only, based on the current regional settings; a leading zero is added for single-digit years01 - 99
<%yyyy%>Full year using four digits0100 - 9999
<%loc_yyyy%>Year represented using four or five digits, depending on the calendar in use. Thai Buddhist and Korean calendars use five-digit years; the "yyyy" pattern displays five digits for these calendars and four digits for all other supported calendars. Calendars with single-digit or two-digit years, such as the Japanese Emperor era, are formatted differently: single-digit years include a leading zero (for example, "03"), two-digit years use two digits (for example, "13"), and no additional leading zeros are applied0100 - 9999
<%i%>Numeric value displayed instead of a date, representing the number of milliseconds elapsed since the Unix Epoch, January 1, 1970, 00:00:00 UTC1767085565940
(localized era-patterns)
<%loc_g%>Period/era based on the current user regional and language settingsA,B
<%loc_gg%>Period/era based on the current user regional and language settingsAD,BC
(localized date-patterns)
<%loc_sdate%>Date in short format based on the current user regional and language settings12/31/2000
<%loc_ldate%>Date in long format based on the current user regional and language settingsDecember 31, 2000
<%loc_dsep%>Date separator based on the current user regional and language settings/
(time-patterns)
<%h%>Hour in one or two digits, as needed0 - 23
<%hh%>Hour in two digits00 - 23
<%h12%>Hour in 12-hour format, in one or two digits0/12 - 11
<%hh12%>Hour in 12-hour format, in two digits00/12 - 11
<%n%>Minute in one or two digits, as needed0 - 59
<%nn%>Minute in two digits00 - 59
<%s%>Second in one or two digits, as needed0 - 59
<%ss%>Second in two digits00 - 59
<%AM/PM%>12-hour clock with uppercase "AM" or "PM" as appropriateAM, PM
(localized time-patterns)
<%loc_AM/PM%>Time marker such as AM or PM based on the current user regional and language settingsAM, PM
<%loc_A/P%>Single-character time marker such as A or P based on the current user regional and language settingsA, P
<%loc_time%>Time based on the current user regional and language settings1:30:15 PM
<%loc_time24%>Time in 24-hour format without a time marker based on the current user regional and language settings13:30:15
<%loc_tsep%>Time separator based on the current user regional and language settings:
Type:
  • string
Example
null {null}, the date's header displays the label using default alternate-labels (and expression)
"" {string}, the date's header displays no date
"&lt;%loc_sdate%&gt;" {string}, displays the date in the short format using the current user regional and language settings
"&lt;%d3%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d2%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d1%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d%&gt;" {string}, the date's header displays one, two or three letters for the week day based on the best fit
"&lt;fgcolor red&gt;&lt;%d3%&gt;, &lt;%d%&gt;&lt;|&gt;&lt;%d3%&gt;, &lt;%d%&gt;&lt;=&gt;month(value) = 1 ? 0 : 1" {string}, displays the date's header in red for January, and in black for the rest
HeaderDayShortLabel

HeaderGroupHeight :number

The HeaderGroupHeight property defines the height of the group's header (relative to the font size of the control). The HeaderGroupHeight property is used to calculate the height of the group's header when the control displays groups. If the HeaderGroupHeight property is set to 0, the control hides the group's header and does not display the name of the group. If the HeaderGroupHeight property is set to a value greater than 0, the control shows the group's header with a height equal to that value multiplied by the size of the control's font. For example, if you want to show the group's header with a height of 2 times the size of the control's font, you can set the HeaderGroupHeight property to 2. By default, the HeaderGroupHeight property is set to 2, which means that the control shows the group's header with a height of 2 times the size of the control's font.

The control displays groups if:

  • ShowGroupingEvents property is true
  • The Groups collection has visible elements. By default, the Groups collection contains no Group objects
Type:
  • number
Example
0 {number}, hides the group's header
2 {number}, the height of the group's header is 2 times the size of the control's font
HeaderGroupHeight

ImageAlign :number

The ImageAlign property defines the alignment of the image within the event, while the ImageSize property defines its dimensions (reserved for future use only). Together, these properties control how the image is displayed within the event, with ImageSize specifying the image's size and ImageAlign determining its position relative to the caption.

The value of ImageAlign can be:

  • 0, the image is on the left of the event's caption
  • 1, the image is on the right of the event's caption
  • 2, the image is on the top of the event's caption
  • 3, the image is on the bottom of the event's caption
Type:
  • number
Example
null {null}, the image is aligned left to the caption (default)
1 {number}, the image is displayed to the right of the event's caption
ImageAlign

ImageSize :any

The ImageSize property defines the size of the event's image, and the ImageAlign property defines its alignment within the event (reserved for future use only). Together, they control how the image is displayed relative to the caption. ImageSize sets the image dimensions, while ImageAlign determines its position in relation to the caption. For captions or labels that support ex-HTML formatting, images can be included using the ex-HTML tag; however, ImageSize does not affect these images. The tag supports a size attribute to specify the image's dimensions, for example: apple:182002 sets the image named "apple" to size 18.

The value of ImageSize can be:

  • {null}, Indicates that the event's image is displayed as it is (full-sized).
  • {number}, Specifies that the event's image is displayed into a square of giving size (same width and height). If 0 the event displays no image, if negative the event's image is stretched to giving square, else the event's picture is scaled to fit the giving rectangle.
  • {number[]}, Specifies an array of [aspect-width,aspect-height] type that defines the limits for width or/and height. The aspect-width and aspect-height define the width/height of the event's picture to scale or stretch to.
Type:
  • any
Example
null {null}, Indicates that the event's image is displayed as it is (full-sized).
0 {number}, no image is displayed
64 {number}, the image is scaled to fit a 64 x 64 rectangle
-64 {number}, the image is strected to a 64 x 64 rectangle
[32,64] {array}, scales the image to the largest ratio-rectangle (32 x 64) that fits the client
[-32,-64] {array}, stretches the image to a 32 x 64 rectangle
ImageSize

Layout :string

The Layout property saves or restores the UI layout of the control. The getter property of Layout returns a string that encodes the current UI layout for the entire object, while the setter property of Layout restores the UI layout of the object from an encoded string, previously returned by the Layout property. The Layout property of the control allows you to save and restore the UI layout of the control, including the layout of windows, calendar's selected date(s), selected events, control's zoom, size of the day, and UI layout of the groups (position, size). This functionality is particularly useful for preserving user preferences or creating templates for specific layouts.

Currently, the control's Layout property serializes the following:

  • layout of windows (size, dock, parent)
  • calendar's selected date(s)
  • selected events
  • control's zoom
  • size of the day
  • UI layout of the groups (position, size)
Type:
  • string
Example
The following statements are equivalents:

 oSchedule.SetLayout(layout), restores the control's layout from the giving layout string
 oSchedule.Layout = layout, restores the control's layout from the giving layout string

where oSchedule is an object of Schedule type and layout is a string expression that defines the UI layout to apply
Layout

Listeners :exontrol.Lts

The Listeners field defines the events of the control, as an object of exontrol.Lts type. The exontrol.Lts type supports forEach(callback, thisArg) method that helps you to enumerate the events the control supports. The on() method adds an event listener to the specified event or defines a keyboard shortcut. The on() method enables you to listen for events and execute custom code when those events occur, or to define keyboard shortcuts that trigger specific actions within the component. You can use the on() method to enhance the interactivity and functionality of your application by responding to user actions or keyboard inputs. Use the off() method to remove previously bound event handlers or keyboard shortcuts. The Events section lists the events the component supports.
Type:
  • exontrol.Lts
Example
The following sample shows how you can get all events the component currently supports:

oSchedule.Listeners.forEach(function(name)
{
 console.log(name);
});

The following sample displays information about the event being clicked:

oSchedule.Listeners.Add("onclick", function (oEvent)
{
 console.log(oEvent);
});

or

oSchedule.on("click", function (oEvent)
{
 console.log(oEvent);
});

where oSchedule is an object of Schedule type
Listeners

Locked :boolean

The Locked property locks or unlocks the control. The locked mode completely prevents user interaction with the control, while read-only mode only prevents modifications to events.
  • When Locked is set to True, the control is fully locked, and users cannot scroll, select, or interact with any events within it.
  • When Locked is set to False, the control behaves normally, allowing users to scroll, select, and interact with events.

In contrast, when the control is in read-only mode, users cannot create, resize, or move events, but they can still scroll, select, and interact with existing events. Therefore, the locked mode completely prevents user interaction with the control, while read-only mode only prevents modifications to events. The ReadOnly property makes the control read-only, while the Locked property makes the control locked (protected).

Type:
  • boolean
Example
false {boolean}, unlocks the control (can select any event)
true {boolean}, locks the control (can't select any event)
Locked

LongDateFormat :string

The LongDateFormat property defines how dates are displayed in long form (date only, without time). This property supports ex-HTML tags (such as <b>, <i>, <fgcolor>, ...), and <%DATE%> tags. The KnownProperty(exEventDisplayLongMargins) property (equivalent to using the <%=%257%> tag in an event's label) shows the event's start and end dates in long format according to the LongDateFormat and LongTimeFormat properties. For example, if LongDateFormat is set to "<%mmmm%>/<%d%>" and an event runs from April 3 to April 5, using <%=%257%> in the label will display April/3 - April/5. The eventDisplayMarginsSep field indicates the separator character(s) between start and end date-times. By default, the LongDateFormat property is set to "<%loc_ldate%>", which displays the date in the locale's long date format.

The known identifiers within the <%DATE%> tag are:

Name Description Sample
(day-patterns)
<%d%>Day of the month using one or two numeric digits, depending on the value1 - 31
<%dd%>Day of the month using exactly two numeric digits01 - 31
<%d1%>Weekday using its first letterS - S
<%loc_d1%>Weekday as a single-letter abbreviation based on the current user settingsS - S
<%d2%>Weekday using its first two lettersSu - Sa
<%loc_d2%>Weekday as a two-letter abbreviation based on the current user settingsSu - Sa
<%d3%>Weekday using its first three lettersSun - Sat
<%ddd%>Weekday using its first three lettersSun - Sat
<%loc_d3%>Weekday as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_ddd%>Sun - Sat
<%loc_ddd%>Weekday as a three-letter abbreviation based on the current user regional and language settingsSun - Sat
<%dddd%>Full name of the weekdaySunday - Saturday
<%loc_dddd%>Full weekday name based on the current user regional and language settingsSunday - Saturday
<%w%>Numeric day of the week1 - 7
<%y%>Numeric day of the year1 - 366
(week-patterns)
<%ww%>Week of the year1 - 53
(month-patterns)
<%m%>Month of the year using one or two numeric digits, as needed1 - 12
<%mm%>Month of the year using exactly two numeric digits01 - 12
<%mr%>Month of the year using Roman numerals, as neededI - XII
<%m1%>Month using its first letterJ - D
<%loc_m1%>Month as a single-letter abbreviation based on the current user settingsJ - D
<%m2%>Month using its first two lettersJa - De
<%loc_m2%>Month as a two-letter abbreviation based on the current user settingsJa - De
<%m3%>Month using its first three lettersJan - Dec
<%mmm%>Month using its first three lettersJan - Dec
<%loc_m3%>Month as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_mmm%>Jan - Dec
<%loc_mmm%>Month as a three-letter abbreviation based on the current user regional and language settingsJan - Dec
<%mmmm%>Full name of the monthJanuary - December
<%loc_mmmm%>Full month name based on the current user regional and language settingsJanuary - December
(year-patterns)
<%q%>Date shown as the quarter of the year1 - 4
<%hy%>Date shown as the half of the year1 - 2
<%loc_y%>Year represented by the last digit only, based on the current regional settings0 - 9
<%yy%>Last two digits of the year01 - 99
<%loc_yy%>Year represented by the last two digits only, based on the current regional settings; a leading zero is added for single-digit years01 - 99
<%yyyy%>Full year using four digits0100 - 9999
<%loc_yyyy%>Year represented using four or five digits, depending on the calendar in use. Thai Buddhist and Korean calendars use five-digit years; the "yyyy" pattern displays five digits for these calendars and four digits for all other supported calendars. Calendars with single-digit or two-digit years, such as the Japanese Emperor era, are formatted differently: single-digit years include a leading zero (for example, "03"), two-digit years use two digits (for example, "13"), and no additional leading zeros are applied0100 - 9999
<%i%>Numeric value displayed instead of a date, representing the number of milliseconds elapsed since the Unix Epoch, January 1, 1970, 00:00:00 UTC1767085565940
(localized era-patterns)
<%loc_g%>Period/era based on the current user regional and language settingsA,B
<%loc_gg%>Period/era based on the current user regional and language settingsAD,BC
(localized date-patterns)
<%loc_sdate%>Date in short format based on the current user regional and language settings12/31/2000
<%loc_ldate%>Date in long format based on the current user regional and language settingsDecember 31, 2000
<%loc_dsep%>Date separator based on the current user regional and language settings/
(time-patterns)
<%h%>Hour in one or two digits, as needed0 - 23
<%hh%>Hour in two digits00 - 23
<%h12%>Hour in 12-hour format, in one or two digits0/12 - 11
<%hh12%>Hour in 12-hour format, in two digits00/12 - 11
<%n%>Minute in one or two digits, as needed0 - 59
<%nn%>Minute in two digits00 - 59
<%s%>Second in one or two digits, as needed0 - 59
<%ss%>Second in two digits00 - 59
<%AM/PM%>12-hour clock with uppercase "AM" or "PM" as appropriateAM, PM
(localized time-patterns)
<%loc_AM/PM%>Time marker such as AM or PM based on the current user regional and language settingsAM, PM
<%loc_A/P%>Single-character time marker such as A or P based on the current user regional and language settingsA, P
<%loc_time%>Time based on the current user regional and language settings1:30:15 PM
<%loc_time24%>Time in 24-hour format without a time marker based on the current user regional and language settings13:30:15
<%loc_tsep%>Time separator based on the current user regional and language settings:
Type:
  • string
Example
null {null}, "&lt;%loc_ldate%&gt;"
"" {string}, nothing is displayed
"&lt;%loc_ldate%&gt;" {string}, displays the date in the long format using the current user regional and language settings
"&lt;%mm%&gt;/&lt;%dd%&gt;/&lt;%yyyy%&gt;" {string}, displays the date in mm/dd/yyyy format
LongDateFormat

LongTimeFormat :string

The LongTimeFormat property defines how times are displayed in long form (time only, without date). This property supports ex-HTML tags (such as <b>, <i>, <fgcolor>, ...) and <%DATE%> tags. The KnownProperty(exEventDisplayLongMargins) property (equivalent to using the <%=%257%> tag in an event's label) shows the event's start and end times in long format according to the LongDateFormat and LongTimeFormat properties. For example, if LongTimeFormat is set to "<%hh%>:<%nn%>:<%ss%> <%AM/PM%>" and an event runs from 5:00 PM to 6:00 PM, using <%=%257%> in the label will display 5:00:00 PM - 6:00:00 PM. The eventDisplayMarginsSep field indicates the separator character(s) between start and end date-times. By default, the LongTimeFormat property is set to "<%hh%>:<%nn%>:<%ss%> <%AM/PM%>", which displays time in hh:nn:ss AM/PM format.

The known identifiers within the <%DATE%> tag are:

Name Description Sample
(day-patterns)
<%d%>Day of the month using one or two numeric digits, depending on the value1 - 31
<%dd%>Day of the month using exactly two numeric digits01 - 31
<%d1%>Weekday using its first letterS - S
<%loc_d1%>Weekday as a single-letter abbreviation based on the current user settingsS - S
<%d2%>Weekday using its first two lettersSu - Sa
<%loc_d2%>Weekday as a two-letter abbreviation based on the current user settingsSu - Sa
<%d3%>Weekday using its first three lettersSun - Sat
<%ddd%>Weekday using its first three lettersSun - Sat
<%loc_d3%>Weekday as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_ddd%>Sun - Sat
<%loc_ddd%>Weekday as a three-letter abbreviation based on the current user regional and language settingsSun - Sat
<%dddd%>Full name of the weekdaySunday - Saturday
<%loc_dddd%>Full weekday name based on the current user regional and language settingsSunday - Saturday
<%w%>Numeric day of the week1 - 7
<%y%>Numeric day of the year1 - 366
(week-patterns)
<%ww%>Week of the year1 - 53
(month-patterns)
<%m%>Month of the year using one or two numeric digits, as needed1 - 12
<%mm%>Month of the year using exactly two numeric digits01 - 12
<%mr%>Month of the year using Roman numerals, as neededI - XII
<%m1%>Month using its first letterJ - D
<%loc_m1%>Month as a single-letter abbreviation based on the current user settingsJ - D
<%m2%>Month using its first two lettersJa - De
<%loc_m2%>Month as a two-letter abbreviation based on the current user settingsJa - De
<%m3%>Month using its first three lettersJan - Dec
<%mmm%>Month using its first three lettersJan - Dec
<%loc_m3%>Month as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_mmm%>Jan - Dec
<%loc_mmm%>Month as a three-letter abbreviation based on the current user regional and language settingsJan - Dec
<%mmmm%>Full name of the monthJanuary - December
<%loc_mmmm%>Full month name based on the current user regional and language settingsJanuary - December
(year-patterns)
<%q%>Date shown as the quarter of the year1 - 4
<%hy%>Date shown as the half of the year1 - 2
<%loc_y%>Year represented by the last digit only, based on the current regional settings0 - 9
<%yy%>Last two digits of the year01 - 99
<%loc_yy%>Year represented by the last two digits only, based on the current regional settings; a leading zero is added for single-digit years01 - 99
<%yyyy%>Full year using four digits0100 - 9999
<%loc_yyyy%>Year represented using four or five digits, depending on the calendar in use. Thai Buddhist and Korean calendars use five-digit years; the "yyyy" pattern displays five digits for these calendars and four digits for all other supported calendars. Calendars with single-digit or two-digit years, such as the Japanese Emperor era, are formatted differently: single-digit years include a leading zero (for example, "03"), two-digit years use two digits (for example, "13"), and no additional leading zeros are applied0100 - 9999
<%i%>Numeric value displayed instead of a date, representing the number of milliseconds elapsed since the Unix Epoch, January 1, 1970, 00:00:00 UTC1767085565940
(localized era-patterns)
<%loc_g%>Period/era based on the current user regional and language settingsA,B
<%loc_gg%>Period/era based on the current user regional and language settingsAD,BC
(localized date-patterns)
<%loc_sdate%>Date in short format based on the current user regional and language settings12/31/2000
<%loc_ldate%>Date in long format based on the current user regional and language settingsDecember 31, 2000
<%loc_dsep%>Date separator based on the current user regional and language settings/
(time-patterns)
<%h%>Hour in one or two digits, as needed0 - 23
<%hh%>Hour in two digits00 - 23
<%h12%>Hour in 12-hour format, in one or two digits0/12 - 11
<%hh12%>Hour in 12-hour format, in two digits00/12 - 11
<%n%>Minute in one or two digits, as needed0 - 59
<%nn%>Minute in two digits00 - 59
<%s%>Second in one or two digits, as needed0 - 59
<%ss%>Second in two digits00 - 59
<%AM/PM%>12-hour clock with uppercase "AM" or "PM" as appropriateAM, PM
(localized time-patterns)
<%loc_AM/PM%>Time marker such as AM or PM based on the current user regional and language settingsAM, PM
<%loc_A/P%>Single-character time marker such as A or P based on the current user regional and language settingsA, P
<%loc_time%>Time based on the current user regional and language settings1:30:15 PM
<%loc_time24%>Time in 24-hour format without a time marker based on the current user regional and language settings13:30:15
<%loc_tsep%>Time separator based on the current user regional and language settings:
Type:
  • string
Example
null {null}, "&lt;%hh%&gt;:&lt;%nn%&gt;:&lt;%ss%&gt; &lt;%AM/PM%&gt;"
"" {string}, nothing is displayed
"&lt;%loc_time24%&gt;" {string}, Indicates the time in 24 hours format without a time marker using the current user regional and language settings
"&lt;%hh%&gt;:&lt;%nn%&gt;:&lt;%ss%&gt;" {string}, displays the time in hh:nn:ss format (no time marker)
LongTimeFormat

MarkZones :MarkZones

The MarkZones property defines the mark-zones within the control, while the ShowMarkZone property specifies whether these zones are displayed in the background (behind events), in the foreground, or not at all. Mark-zones represent highlighted time intervals used to indicate periods such as non-working hours, lunch breaks, or other significant ranges. You can use the MarkZones.Add method to add new mark-zones to the control. By default, the MarkZones property is set to null, meaning no mark-zones are defined. To create a valid mark-zone, the Start and End properties of the MarkZoneOptions type must be specified.

The getter of the MarkZones property returns the control's mark-zones, as an object of MarkZones type, while the setter of the MarkZones property defines the mark-zones as any of the following:

  • {array(any)}, defines multiple mark-zones, with specified caption/identifier/options, as an array of [caption] or [{MarkZoneOptions}] type
  • {object}, defines multiple mark-zones, where each property of the object defines a mark-zone (where the property name indicates the caption of the mark-zone) with its options, of MarkZoneOptions type
Type:
Example
The following sample defines two mark-zones within the control, as object:

 {
   "inventory":
   {
     start: "#1/1/2022 08:00#",
     end: "#1/1/2022 09:00#",
     shape: "rgba(0,0,0,0.25)",
   },
   "break":
   {
     start: "#1/1/2022 12:15#",
     end: "#1/1/2022 13:15#",
   }
 }

The following sample defines two mark-zones within the control, as array:

 [
   {
     caption: "inventory",
     start: "#1/1/2022 08:00#",
     end: "#1/1/2022 09:00#",
     shape: "rgba(0,0,0,0.25)",
   },
   {
     caption: "break",
     start: "#1/1/2022 12:15#",
     end: "#1/1/2022 13:15#",
   }
 ]
MarkZones

Misc :MiscellaneousOptions

The Misc property defines miscellaneous configuration options for the control, as an object of MiscellaneousOptions type, including layout sizes, event spacing, drag-and-drop behavior, and text formatting for events, groups, and mark-zones. It allows fine-tuning of how the calendar or schedule view displays and interacts with events.

It is important to note that changing a field of the MiscellaneousOptions object does not automatically update the control. For example, oSchedule.Misc.padSelectEvent = 6 does not apply the change. Instead, you must assign the Misc property again, such as oSchedule.Misc = {padSelectEvent: 6}, so the control updates and applies the new value.

Type:
Example
{padSelectEvent: 6} {object}, sets the padding between the event's border and its content to 6 pixels
{dragDummyAlpha: 0.5} {object}, specifies the transparency to display the dummy-event being dragged
{dragDummyAlpha: 0.25, padSelectEvent: 4} {object}, sets the opacity of the drag dummy to 25% and adds a padding of 4 pixels around the selected event
Misc

OnResizeControl :exontrol.Schedule.OnResizeControlEnum

The OnResizeControl property defines which panel is resized when the entire control is resized. It can also be used to disable or hide the splitter, swap the content of panels, ensure the calendar fits its panel, or enable/disable the calendar panel when the cursor leaves the panels. By default, the OnResizeControl property is set to exResizePanelRight | exCalendarFit, meaning the right panel (the schedule view) is resized when the control is resized, and the calendar automatically fits its panel.
Type:
  • exontrol.Schedule.OnResizeControlEnum
Example
128 or exontrol.Schedule.OnResizeControlEnum.exDisableSplitter {number}, disables the splitter, so the user can not resize the panels using the control's vertical split bar
768 or exontrol.Schedule.OnResizeControlEnum.exChangePanels | exontrol.Schedule.OnResizeControlEnum.exHideSplitter {number}, shows the schedule view only (hides the calendar panel)
OnResizeControl

OnSelectDate :exontrol.Schedule.OnSelectDateEnum

The OnSelectDate property defines the action performed when the user selects new dates in the calendar panel. By default, the OnSelectDate property is set to exFitSelToView, which adjusts the day size (DayViewWidth and DayViewHeight properties) and scrolls the view so the selected dates fit within the schedule view. Setting OnSelectDate to exNoViewChange prevents any scrolling or layout changes when new dates are selected. Setting it to exEnsureVisibleDate scrolls the view to ensure that the selected date is visible within the schedule view. The onselchange event (of the Calendar property) occurs when the calendar's selection changes. It is triggered whenever the user selects, deselects, or modifies the current selection, whether the calendar supports single or multiple selection.
Type:
  • exontrol.Schedule.OnSelectDateEnum
Example
null {null}, equivalent of -1 or exontrol.Schedule.OnSelectDateEnum.exFitSelToView
0 or exontrol.Schedule.OnSelectDateEnum.exNoViewChange {number}, no scroll / change occurs whitin the schedule view once the calendar's selection is changed
OnSelectDate

Options :Schedule.Options

The Options property defines a collection of configurable settings that can be applied to a control, allowing you to customize its behavior and appearance. You can assign these options either directly through the Options property or programmatically, enabling you to update one or more settings at runtime. The oSV member of the control contains an SV object that defines the default schedule view. All options exposed by oSV are also available as properties of the control, allowing you to get or set them directly through the control's interface.

Every option of the Schedule.Options type has associated a property of the control. For instance, the option:

allowActions {string}, customizes the actions the user can perform once the user clicks or touches the control
is associated with the property:
AllowActions {string}, customizes the actions the user can perform once the user clicks or touches the control
which means that the following statements are equivalent:
oSchedule.Options = {allowActions: "scroll"}
oSchedule.SetOptions({allowActions: "scroll"})
oSchedule.AllowActions = "scroll"
oSchedule.SetAllowActions("scroll")
where oSchedule is an object of Schedule type

It is important to note that changing a field of the Schedule.Options object does not automatically update the control. For example, oSchedule.Options.allowActions = "scroll" does not apply the change. Instead, you must assign the Options property again, such as oSchedule.Options = {allowActions: "scroll"}, so the control updates and applies the new value.

Type:
Example
The following statements are equivalents:

 oSchedule.GetOptions(), returns the control's options
 oSchedule.Options, returns the control's options

where oSchedule is an object of Schedule type
Options

Pad :number|Array.<number>|string

The Pad property can be used to increase the size of an event by adding extra space around its content, while the PadSelectEvent property creates a gap between the event and its selection border, enhancing the visual distinction of selected events. By default, the Pad property is set to [2,2], meaning the event's width is increased by 4 pixels (2 pixels on each side) and its height is increased by 4 pixels (2 pixels on the top and bottom).

The value of the Pad property can be specified in different formats to provide flexibility in defining the padding:

  • {number} a numeric value, to pad horizontal and vertical size with the same value
  • {(string|number[])} a "x,y" or [x,y] type to specify the padding on horizontal and vertical side
Type:
  • number | Array.<number> | string
Example
null {null}, indicates that the default padding value of [4,4] is applied
0 {number}, indicates no padding
"8,4" {string}, increases the event's width with 2 * 8-pixels and event's height with 2 * 4-pixels
[8,4] {array}, increases the event's width with 2 * 8-pixels and event's height with 2 * 4-pixels
Pad

PaneMinWidthLeft :number

The PaneMinWidthLeft property defines the minimum width of the left panel, while the PaneWidthLeft property defines its actual width. Similarly, the PaneMinWidthRight property defines the minimum width of the right panel. The OnResizeControl property specifies which panel is resized when the entire control is resized. Setting PaneMinWidthLeft or PaneMinWidthRight to a specific value (for example, 196) enforces that minimum width in pixels, while setting it to null removes the constraint and allows the panel to be resized without a minimum width limit.
Type:
  • number
Example
196 {number}, the left panel has a minimum width of 196 pixels
PaneMinWidthLeft

PaneMinWidthRight :number

The PaneMinWidthRight property defines the minimum width of the right panel, while the PaneWidthRight property defines its actual width. Similarly, the PaneMinWidthLeft property defines the minimum width of the left panel. The OnResizeControl property specifies which panel is resized when the entire control is resized. Setting PaneMinWidthLeft or PaneMinWidthRight to a specific value (for example, 196) enforces that minimum width in pixels, while setting it to null removes the constraint and allows the panel to be resized without a minimum width limit.
Type:
  • number
Example
196 {number}, the right panel has a minimum width of 196 pixels
PaneMinWidthRight

PaneWidthLeft :number

The PaneWidthLeft property defines the width of the left panel, while the PaneWidthRight property defines the width of the right panel. The PaneMinWidthLeft property defines the minimum size(width) of the left panel. The OnResizeControl property specifies which panel is resized when the entire control is resized. Setting PaneWidthLeft or PaneWidthRight to 0 hides the corresponding panel, while setting it to a specific value (for example, 196) defines the panel's width in pixels.
Type:
  • number
Example
0 {number}, hides the left-panel (has no effect if OnResizeControl property does not include exCalendarFit flag)
196 {number}, the left panel has a width of 196 pixels
PaneWidthLeft

PaneWidthRight :number

The PaneWidthRight property defines the width of the right panel, while the PaneWidthLeft property defines the width of the left panel. The PaneMinWidthRight property defines the minimum size(width) of the right panel. The OnResizeControl property specifies which panel is resized when the entire control is resized. Setting PaneWidthLeft or PaneWidthRight to 0 hides the corresponding panel, while setting it to a specific value (for example, 196) defines the panel's width in pixels.
Type:
  • number
Example
0 {number}, hides the right-panel
196 {number}, the right panel has a width of 196 pixels
PaneWidthRight

ReadOnly :boolean

The ReadOnly property defines the control in read-only mode. When ReadOnly is set, users cannot create, resize, or move events within the control, but they can still scroll, select, and interact with existing events. In contrast, when Locked property is set, users cannot scroll, select, or interact with any events. Therefore, the read-only mode prevents modifications to events while still allowing interaction, whereas the locked mode completely disables all user interaction with the control. The ReadOnly property makes the control read-only, while the Locked property makes the control locked (protected).
Type:
  • boolean
Example
false {boolean}, the user can edit or drag any event
true {boolean}, the user can not edit or drag the events
ReadOnly

ScrollBars :exontrol.ScrollBarsEnum

The ScrollBars property determines which scroll bars the control displays. It accepts one or more ScrollBarsEnum flags combined with OR. By default, ScrollBars is set to exBoth, showing both horizontal and vertical scroll bars when the content exceeds the control's client area. Scroll bars are automatically hidden when not needed, unless the ScrollBars property includes exDisableNoHorizontal, exDisableNoVertical, or exDisableBoth flags. The ScrollPos property defines the horizontal and vertical scroll-position of the view. The onscroll event is fired whenever the user scrolls the control's content.

The ScrollBars property uses the exontrol.ScrollBarsEnum enumeration as explained:

  • exNoScroll (0), specifies that no scroll bars are shown (scroll is not allowed)
  • exHorizontal (1), specifies that only the horizontal scroll bar is shown
  • exVertical (2), specifies that only the vertical scroll bar is shown
  • exBoth (3), specifies that both horizontal and vertical scroll bars are shown if the content is larger than the control's client area
  • exDisableNoHorizontal (5), specifies that the horizontal scroll bar is always shown; it is disabled if it is unnecessary
  • exDisableNoVertical (10), specifies that the vertical scroll bar is always shown; it is disabled if it is unnecessary
  • exDisableBoth (15), specifies that both horizontal and vertical scroll bars are always shown; they are disabled if they are unnecessary
  • exHScrollOnThumbRelease (0x100), specifies that the control's content is horizontally scrolled as soon as the user releases the thumb of the horizontal scroll bar
  • exVScrollOnThumbRelease (0x200), specifies that the control's content is vertically scrolled as soon as the user releases the thumb of the vertical scroll bar
  • exScrollOnThumbRelease (0x300), specifies that the control's content is scrolled as soon as the user releases the thumb of the scroll bar
  • exHScrollEmptySpace (0x400), allows empty space when the control's content is horizontally scrolled to the end
  • exVScrollEmptySpace (0x800), allows empty space when the control's content is vertically scrolled to the end
  • exScrollEmptySpace (0xC00), allows empty space when the control's content is scrolled to the end
  • exExtendSBS (0x3000), specifies that the control's scroll bars are visible only when the cursor hovers the window; the control's client area is extended over the scroll bar portion
  • exMinSBS (0xC000), specifies that the control's scroll bars are shown as minimized
  • exHideSBS (0x10000), specifies that no scroll bars are shown (scroll is allowed)
Type:
  • exontrol.ScrollBarsEnum
Example
exontrol.ScrollBarsEnum.exBoth or 3 {number}, specifies that both horizontal and vertical scroll bars are shown if the content is larger than the control's client area
exontrol.ScrollBarsEnum.exNoScroll or 0 {number}, specifies that no scroll bars are shown (scroll is not allowed)
ScrollBars

ScrollPos :object

The ScrollPos property defines the horizontal and vertical scroll position of the view. It is an object of type {x, y}, where the x value specifies the horizontal scroll position and the y value specifies the vertical scroll position. Adjusting the ScrollPos property allows you to control which portion of the content is visible, enabling efficient navigation through the schedule. For example, setting ScrollPos to {x: 100} scrolls the view horizontally to position 100, while {x: 100, y: 50} scrolls horizontally to 100 and vertically to 50. The ScrollBars property specifies whether horizontal and vertical scroll bars are displayed, and the onscroll event is triggered whenever the user scrolls the control's content.
Type:
  • object
Example
{x: 100} {object}, scrolls the view horizontally to position 100
{x: 100, y: 50} {object}, scrolls horizontally to 100 and vertically to 50
ScrollPos

SelectEventStyle :Schedule.SelectEventStyleEnum

The SelectEventStyle property specifies how a selected event is displayed. The "select" shape (defined in the Shapes property) determines the shape and color used for the selected event. The SingleSel property defines whether the control supports single, multiple, or toggle selection. By default, the SelectEventStyle property is set to 0, which combines the "select" shape with the event's own shape.

The SelectEventStyle property can be set to one of the following values:

  • 0 {number}, the "select" shape is combined with the event's shape
  • 1 {number}, the "select" shape is displayed on the event's background. The padSelectEvent field specifies the space between the event's content and its selection border.
  • 2 {number}, the "select" shape is displayed on the event's background, but it is shown using the event's primitive (rectangle, round, oval...). The padSelectEvent field specifies the space between the event's content and its selection border.
Type:
Example
null {null} or 0 {number}, the "select" shape is combined with the event's shape
1 {number}, the "select" shape is displayed on the event's background
SelectEventStyle

Selection :any

The Selection property defines the control's selection. The SingleSel property defines whether the control supports single, multiple, or toggle selection. The SelectEventStyle property specifies how the selected event is displayed. The Selection property allows you to specify which events are currently selected within the control. The selection can be defined using different types of values, such as event indices, event keys, event references, or even an array of these types. The Event.Selected property indicates whether the event is selected or not. The Event.Selectable property indicates whether the event can be selected or not. The onselchange event notifies that the control's selection has been changed. By default, the Selection property is set to null, which means that no events are selected within the control.

The getter of the Selection property returns the control's selection, as one of the following:

  • null, indicates that the control has no selected-events
  • {Event}, indicates a single-selected event (while the control support single-selection only)
  • {Event[]}, defines a collection of selected-events within the control
while the setter of the Selection property defines the control's selection, as any of the following:
  • {null}, clears the entire selection (unselect all)
  • {number}, selects an event giving index within the events collection
  • {string}, selects an event giving its identifier/key
  • {Event}, selects an event giving its reference
  • {Event}, selects all events within the control
  • {array}, specifies an array of [type] type, where type could be any number, string or Event type.
Type:
  • any
Example
null {null}, clears the entire selection (unselect all)
[0,"A"] {array}, selects the events with the index 0 and key 'A'
Selection

Shapes :string

The Shapes property defines the shapes that each part of the control can display and is used to customize its visual appearance. It allows you to apply different shapes and colors to various parts of the control, enhancing its overall look and feel. For example, the string "green(event),lime(calendar-uiHighlight)" applies a green color to events and a lime color to calendar dates that contain events.

The format of the property is:

"shape(part),shape(part),..."
where:
  • "shape", defines the shape to apply on the UI part as one of the following:

    ◦ any of 140 color names any browser supports (such as red, blue, green, ...)
    ◦ hexadecimal colors, is specified with: #RRGGBB, where the RR (red), GG (green) and BB (blue) hexadecimal integers specify the components of the color. All values must be between 00 and FF (such as #0000ff which defines a blue background)
    ◦ hexadecimal colors with transparency, is specified with: #RRGGBBAA, where AA (alpha) value must be between 00 and FF (such as #0000ff80 which defines a semi-transparent blue background)
    ◦ RGB colors, is specified with the RGB(red, green, blue) function. Each parameter (red, green, and blue) defines the intensity of the color and can be an integer between 0 and 255( such as rgb(0,0,255) that defines a blue background)
    ◦ RGBA colors, are an extension of RGB color values with an alpha channel as RGBA(red, green, blue, alpha) function, where the alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque) ( such as rgba(0,0,255,0.5) which defines a semi-transparent blue background)
    ◦ HSL colors, is specified with the HSL(hue, saturation, lightness) function, where hue is a degree on the color wheel (from 0 to 360) - 0 (or 360) is red, 120 is green, 240 is blue. saturation is a percentage value; 0% means a shade of gray and 100% is the full color. lightness is also a percentage; 0% is black, 100% is white. HSL stands for hue, saturation, and lightness - and represents a cylindrical-coordinate representation of colors (such as hsl(240, 100%, 50%) that defines a blue background)
    ◦ HSLA colors, are an extension of HSL color values with an alpha channel - which specifies the opacity of the object as HSLA(hue, saturation, lightness, alpha) function, where alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque) (such as hsla(240, 100%, 50%,0.5) that defines a semi-transparent blue background)
    ◦ a JSON representation of the shape object to apply (while it starts with { character, such as '{"normal": {"primitive": "RoundRect","fillColor":"black","tfi": {"fgColor": "white"}}}')
    ◦ specifies the name of the field within the exontrol.Shapes.Schedule object (while it starts with a lowercase letter, such as shevent which refers to exontrol.Shapes.Schedule.shevent shape)
    ◦ specifies the name of the field within the exontrol.Shapes object (while it starts with an uppercase letter, such as Button which refers to exontrol.Shapes.Button shape)

  • "part", defines the name of the part the shape is applied on (as defined below)
The shapes property supports any of the following parts:
Part Description
"calendar-uiHighlight"defines the visual-appearance to highlight the date that contains events (similar with uiHighlight but applied to calendar-panel only) (The showHighlightEvent option specifies whether the control highlights the dates that contain events)
"date-all-day-header"defines the visual-appearance for the date's all-day-header (schedule view only)
"date-all-day-scroll-button"defines the visual-appearance for scroll-butttons to display within the all-day header
"date-frame"defines the visual-appearance for the frame around each date (schedule view only)
"date-frame-select"defines the visual-appearance for the frame around each selected date (schedule view only)
"date-grouping-header"defines the visual-appearance for the date's grouping-header (schedule view only)
"date-header"defines the visual-appearance for the date's header (schedule view only)
"dateAlt"defines the visual-appearance for alternate-date (schedule view only)
"dateAlt-header"defines the visual-appearance for the alternate-date's header (schedule view only)
"date-timeScale"defines the visual-appearance for the date's time-scale part (schedule view only)
"event"defines the visual-appearance for all events within the control. The Event.Shape property specifies the individual shape of the event.
"event-drag"defines additional visual-appearance to apply on the event being dragged
"frameFit"defines the visual-appearance to display the frame while fitting objects into the control's client area by drag
"frameSel"defines the visual appearance to display a frame while selecting objects by drag
"grouping-button"defines the visual-appearance for the header's grouping-button (schedule view only)
"mark-zone"defines the visual-appearance for all mark-zones within the control
"select"defines the visual-appearance of selected-event (the SelectEventStyle property specifies how the selected-event gets displayed)
"timeScale"defines the visual appearance for control's time-scale. The TimeScale.Shape property defines the custom shape for the time-scale header.
"uiHighlight"defines the visual-appearance to highlight the date that contains events (The showHighlightEvent option specifies whether the control highlights the dates that contain events)
Type:
  • string
Example
null {null}, specifies the default visual appearance
"" {string}, no shape (no visual appearance is applied to any part of the control)
"red(eventAlt)", "#FF0000(eventAlt)", "rgb(255,0,0)(eventAlt)", "rgba(255,0,0,1)(eventAlt)" {string}, shows alternate-events in red
'{"hover":{"fillColor":"black","tfi":{"fgColor":"white"}}}(event)' {string}, shows the event in white on a black-background, while the cursor hovers it
"xxx(d),yyy(d,m),zzz(y)"  {string}, specifies that the exontrol.Shapes.Schedule.xxx combined with exontrol.Shapes.Schedule.yyy object defines the visual appearance of "d" part of the control, exontrol.Shapes.Schedule.yyy object defines the visual appearance of "m" part of the control and exontrol.Shapes.Schedule.zzz object defines the visual appearance of "y" part of the control
Shapes

ShortDateFormat :string

The ShortDateFormat property specifies how dates are displayed in short form (date only, without time). This property supports ex-HTLM tags (such as <b>, <i>, <fgcolor>, ...) and <%DATE%> tags. The KnownProperty(exEventDisplayShortMargins) property (equivalent to using the <%=%256%> tag in an event's label) shows the event's start and end dates in short format according to the ShortDateFormat and ShortTimeFormat properties. For example, if ShortDateFormat is set to "<%mm%>/<%dd%>" and an event runs from April 3 to April 5, using <%=%256%> in the label will display 04/03 - 04/05. The eventDisplayMarginsSep field indicates the separator character(s) between start and end date-times. By default, the ShortDateFormat property is set to "<%loc_sdate%>", meaning the short date format is determined by the current user settings.

The known identifiers within the <%DATE%> tag are:

Name Description Sample
(day-patterns)
<%d%>Day of the month using one or two numeric digits, depending on the value1 - 31
<%dd%>Day of the month using exactly two numeric digits01 - 31
<%d1%>Weekday using its first letterS - S
<%loc_d1%>Weekday as a single-letter abbreviation based on the current user settingsS - S
<%d2%>Weekday using its first two lettersSu - Sa
<%loc_d2%>Weekday as a two-letter abbreviation based on the current user settingsSu - Sa
<%d3%>Weekday using its first three lettersSun - Sat
<%ddd%>Weekday using its first three lettersSun - Sat
<%loc_d3%>Weekday as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_ddd%>Sun - Sat
<%loc_ddd%>Weekday as a three-letter abbreviation based on the current user regional and language settingsSun - Sat
<%dddd%>Full name of the weekdaySunday - Saturday
<%loc_dddd%>Full weekday name based on the current user regional and language settingsSunday - Saturday
<%w%>Numeric day of the week1 - 7
<%y%>Numeric day of the year1 - 366
(week-patterns)
<%ww%>Week of the year1 - 53
(month-patterns)
<%m%>Month of the year using one or two numeric digits, as needed1 - 12
<%mm%>Month of the year using exactly two numeric digits01 - 12
<%mr%>Month of the year using Roman numerals, as neededI - XII
<%m1%>Month using its first letterJ - D
<%loc_m1%>Month as a single-letter abbreviation based on the current user settingsJ - D
<%m2%>Month using its first two lettersJa - De
<%loc_m2%>Month as a two-letter abbreviation based on the current user settingsJa - De
<%m3%>Month using its first three lettersJan - Dec
<%mmm%>Month using its first three lettersJan - Dec
<%loc_m3%>Month as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_mmm%>Jan - Dec
<%loc_mmm%>Month as a three-letter abbreviation based on the current user regional and language settingsJan - Dec
<%mmmm%>Full name of the monthJanuary - December
<%loc_mmmm%>Full month name based on the current user regional and language settingsJanuary - December
(year-patterns)
<%q%>Date shown as the quarter of the year1 - 4
<%hy%>Date shown as the half of the year1 - 2
<%loc_y%>Year represented by the last digit only, based on the current regional settings0 - 9
<%yy%>Last two digits of the year01 - 99
<%loc_yy%>Year represented by the last two digits only, based on the current regional settings; a leading zero is added for single-digit years01 - 99
<%yyyy%>Full year using four digits0100 - 9999
<%loc_yyyy%>Year represented using four or five digits, depending on the calendar in use. Thai Buddhist and Korean calendars use five-digit years; the "yyyy" pattern displays five digits for these calendars and four digits for all other supported calendars. Calendars with single-digit or two-digit years, such as the Japanese Emperor era, are formatted differently: single-digit years include a leading zero (for example, "03"), two-digit years use two digits (for example, "13"), and no additional leading zeros are applied0100 - 9999
<%i%>Numeric value displayed instead of a date, representing the number of milliseconds elapsed since the Unix Epoch, January 1, 1970, 00:00:00 UTC1767085565940
(localized era-patterns)
<%loc_g%>Period/era based on the current user regional and language settingsA,B
<%loc_gg%>Period/era based on the current user regional and language settingsAD,BC
(localized date-patterns)
<%loc_sdate%>Date in short format based on the current user regional and language settings12/31/2000
<%loc_ldate%>Date in long format based on the current user regional and language settingsDecember 31, 2000
<%loc_dsep%>Date separator based on the current user regional and language settings/
(time-patterns)
<%h%>Hour in one or two digits, as needed0 - 23
<%hh%>Hour in two digits00 - 23
<%h12%>Hour in 12-hour format, in one or two digits0/12 - 11
<%hh12%>Hour in 12-hour format, in two digits00/12 - 11
<%n%>Minute in one or two digits, as needed0 - 59
<%nn%>Minute in two digits00 - 59
<%s%>Second in one or two digits, as needed0 - 59
<%ss%>Second in two digits00 - 59
<%AM/PM%>12-hour clock with uppercase "AM" or "PM" as appropriateAM, PM
(localized time-patterns)
<%loc_AM/PM%>Time marker such as AM or PM based on the current user regional and language settingsAM, PM
<%loc_A/P%>Single-character time marker such as A or P based on the current user regional and language settingsA, P
<%loc_time%>Time based on the current user regional and language settings1:30:15 PM
<%loc_time24%>Time in 24-hour format without a time marker based on the current user regional and language settings13:30:15
<%loc_tsep%>Time separator based on the current user regional and language settings:
Type:
  • string
Example
null {null}, "&lt;%loc_sdate%&gt;"
"" {string}, nothing is displayed
"&lt;%loc_sdate%&gt;" {string}, displays the date in the short format using the current user regional and language settings
"&lt;%mm%&gt;/&lt;%dd%&gt;/&lt;%yyyy%&gt;" {string}, displays the date in mm/dd/yyyy format
ShortDateFormat

ShortTimeFormat :string

The ShortTimeFormat property defines how time values are displayed in short form (time only, without date). This property supports ex-HTLM tags (such as <b>, <i>, <fgcolor>, ...) and <%DATE%> tags. The KnownProperty(exEventDisplayShortMargins) property (equivalent to using the <%=%256%> tag in an event's label) shows the event's start and end times in short format according to the ShortDateFormat and ShortTimeFormat properties. For example, if ShortTimeFormat is set to "<%hh%>:<%nn%>" and an event runs from 9:05 to 17:30, using <%=%256%> in the label will display 09:05 - 17:30. The eventDisplayMarginsSep field indicates the separator character(s) between start and end date-times. By default, the ShortTimeFormat property is set to "<%h%>:<%nn%> <%AM/PM%>", meaning the short time format is determined by the current user settings.

The known identifiers within the <%DATE%> tag are:

Name Description Sample
(day-patterns)
<%d%>Day of the month using one or two numeric digits, depending on the value1 - 31
<%dd%>Day of the month using exactly two numeric digits01 - 31
<%d1%>Weekday using its first letterS - S
<%loc_d1%>Weekday as a single-letter abbreviation based on the current user settingsS - S
<%d2%>Weekday using its first two lettersSu - Sa
<%loc_d2%>Weekday as a two-letter abbreviation based on the current user settingsSu - Sa
<%d3%>Weekday using its first three lettersSun - Sat
<%ddd%>Weekday using its first three lettersSun - Sat
<%loc_d3%>Weekday as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_ddd%>Sun - Sat
<%loc_ddd%>Weekday as a three-letter abbreviation based on the current user regional and language settingsSun - Sat
<%dddd%>Full name of the weekdaySunday - Saturday
<%loc_dddd%>Full weekday name based on the current user regional and language settingsSunday - Saturday
<%w%>Numeric day of the week1 - 7
<%y%>Numeric day of the year1 - 366
(week-patterns)
<%ww%>Week of the year1 - 53
(month-patterns)
<%m%>Month of the year using one or two numeric digits, as needed1 - 12
<%mm%>Month of the year using exactly two numeric digits01 - 12
<%mr%>Month of the year using Roman numerals, as neededI - XII
<%m1%>Month using its first letterJ - D
<%loc_m1%>Month as a single-letter abbreviation based on the current user settingsJ - D
<%m2%>Month using its first two lettersJa - De
<%loc_m2%>Month as a two-letter abbreviation based on the current user settingsJa - De
<%m3%>Month using its first three lettersJan - Dec
<%mmm%>Month using its first three lettersJan - Dec
<%loc_m3%>Month as a three-letter abbreviation based on the current user regional and language settings; equivalent to <%loc_mmm%>Jan - Dec
<%loc_mmm%>Month as a three-letter abbreviation based on the current user regional and language settingsJan - Dec
<%mmmm%>Full name of the monthJanuary - December
<%loc_mmmm%>Full month name based on the current user regional and language settingsJanuary - December
(year-patterns)
<%q%>Date shown as the quarter of the year1 - 4
<%hy%>Date shown as the half of the year1 - 2
<%loc_y%>Year represented by the last digit only, based on the current regional settings0 - 9
<%yy%>Last two digits of the year01 - 99
<%loc_yy%>Year represented by the last two digits only, based on the current regional settings; a leading zero is added for single-digit years01 - 99
<%yyyy%>Full year using four digits0100 - 9999
<%loc_yyyy%>Year represented using four or five digits, depending on the calendar in use. Thai Buddhist and Korean calendars use five-digit years; the "yyyy" pattern displays five digits for these calendars and four digits for all other supported calendars. Calendars with single-digit or two-digit years, such as the Japanese Emperor era, are formatted differently: single-digit years include a leading zero (for example, "03"), two-digit years use two digits (for example, "13"), and no additional leading zeros are applied0100 - 9999
<%i%>Numeric value displayed instead of a date, representing the number of milliseconds elapsed since the Unix Epoch, January 1, 1970, 00:00:00 UTC1767085565940
(localized era-patterns)
<%loc_g%>Period/era based on the current user regional and language settingsA,B
<%loc_gg%>Period/era based on the current user regional and language settingsAD,BC
(localized date-patterns)
<%loc_sdate%>Date in short format based on the current user regional and language settings12/31/2000
<%loc_ldate%>Date in long format based on the current user regional and language settingsDecember 31, 2000
<%loc_dsep%>Date separator based on the current user regional and language settings/
(time-patterns)
<%h%>Hour in one or two digits, as needed0 - 23
<%hh%>Hour in two digits00 - 23
<%h12%>Hour in 12-hour format, in one or two digits0/12 - 11
<%hh12%>Hour in 12-hour format, in two digits00/12 - 11
<%n%>Minute in one or two digits, as needed0 - 59
<%nn%>Minute in two digits00 - 59
<%s%>Second in one or two digits, as needed0 - 59
<%ss%>Second in two digits00 - 59
<%AM/PM%>12-hour clock with uppercase "AM" or "PM" as appropriateAM, PM
(localized time-patterns)
<%loc_AM/PM%>Time marker such as AM or PM based on the current user regional and language settingsAM, PM
<%loc_A/P%>Single-character time marker such as A or P based on the current user regional and language settingsA, P
<%loc_time%>Time based on the current user regional and language settings1:30:15 PM
<%loc_time24%>Time in 24-hour format without a time marker based on the current user regional and language settings13:30:15
<%loc_tsep%>Time separator based on the current user regional and language settings:
Type:
  • string
Example
null {null}, "&lt;%h%&gt;:&lt;%nn%&gt; &lt;%AM/PM%&gt;"
"" {string}, nothing is displayed
"&lt;%loc_time%&gt;" {string}, indicates the time using the current user regional and language settings
"&lt;%hh%&gt;:&lt;%nn%&gt;" {string}, displays the time in hh:nn format
ShortTimeFormat

Shortcuts :exontrol.Sts

The Shortcuts field defines the shortcuts of the control, as an object of exontrol.Sts type. The Shortcuts field defines the shortcuts of the control, as an object of exontrol.Sts type. The on() method enables you to listen for events and execute custom code when those events occur, or to define keyboard shortcuts that trigger specific actions within the component. You can use the on() method to enhance the interactivity and functionality of your application by responding to user actions or keyboard inputs. Use the off() method to remove previously bound event handlers or keyboard shortcuts. In order to provide keyboard support for the component, the owner <canvas> element must include the tabIndex attribute, as <canvas ... tabIndex="0">. You can associated a function or a callback to any shortcut.
Type:
  • exontrol.Sts
Example
The following sample removes the selection (calls the RemoveSelection() method) once the user presses the Delete key:

oSchedule.Shortcuts.Add( "Delete", oSchedule.RemoveSelection, oSchedule );

where oSchedule is an object of Schedule type
Shortcuts

ShowAllDayHeader :boolean

The ShowAllDayHeader property shows or hides the header for all-day events. The all-day header is a dedicated section within the schedule control used to display events that span an entire day or more. The HeaderAllDayEventHeight property defines the height of events displayed within the all-day header, relative to the control's font size. The AllowMultiDaysEvent property specifies whether users can create events that span multiple days. The Event.AllDay property indicates an all-day event event. The time is ignored for all-day events, while it is shown in the all-day header. By default, the ShowAllDayHeader property is set to False, meaning the all-day header is hidden. Setting it to True makes the all-day header visible, allowing all-day events to be displayed separately from regular timed events.
Type:
  • boolean
Example
false{boolean} or null {null}, hides the control's all-day header
true{boolean}, shows the control's all-day header
ShowAllDayHeader

ShowEventLabels :boolean

The ShowEventLabels property specifies whether the short, long and extra labels of events are visible. The events caption remains visible (if defined) even when ShowEventLabels is set to False. The ShortLabel, LongLabel, and ExtraLabel properties of the Event object define the content of its labels, while the DefaultEventShortLabel, DefaultEventLongLabel, and DefaultEventExtraLabel properties define their default values (applies to events that do not have their own labels defined). The Event.Caption property defines the event's caption. By default, the ShowEventLabels property is True, meaning all labels are displayed.
Type:
  • boolean
Example
true {boolean}, the short, long and extra labels of the events are visible (default)
false {boolean}, the short, long and extra labels of the events are hidden
ShowEventLabels

ShowEvents :Schedule.ShowEventsEnum

The ShowEvents property defines which types of events are displayed within the control. Events are the core elements of the schedule control and represent scheduled items or appointments, each having properties such as start time, end time, caption, and more. The ShowEvents property allows you to control the visibility of different types of events within the schedule. The Event.Visible field indicates whether the event is visible or hidden. By default, it is set to -1 (exShowAllEvents), meaning that all events are displayed.
Type:
Example
-1 {number} or null {null}, the control displays all events, equivalent to -1 (exShowAllEvents)
0 {number}, hides the events
1 {number}, shows only the regular events (non-repetitive events)
3 {number} or "reg,rep" {string}, shows regular and repetitive events, where 3 is 1 (exShowRegularEvents) | 2 (exShowRepetitiveEvents)
ShowEvents

ShowGroupingEvents :boolean

The ShowGroupingEvents property specifies whether the schedule view displays grouped events, and it has effect only when the control includes groups. The DisplayGroupingButton property gets or sets a value that indicates whether the grouping button is displayed in the date header. The ApplyGroupingColors property specifies whether the schedule view shows the events using the colors of owner groups (group's eventShape field). When set to True, events are displayed grouped by their owner group. When set to False, all events are displayed in a single list without grouping. In grouped mode, each date is divided into sections for each group, and the group name is displayed in the header of each section. The AllowMoveEventToOtherGroup property indicates whether the event can be moved from a group to another by drag and drop. By default, the schedule view does not show grouped events (false).

The control displays groups if:

  • ShowGroupingEvents property is true
  • The Groups collection has visible elements. By default, the Groups collection contains no Group objects
Type:
  • boolean
Example
false {boolean}, the schedule view does not show grouped events (default)
true {boolean}, the schedule view shows grouped events
ShowGroupingEvents

ShowHighlightEvent :boolean

The ShowHighlightEvent property defines whether the control highlights dates that contain events. When enabled, the "uiHighlight" or "calendar-uiHighlight" shape is applied to dates with events, making them easier to identify and navigate within the schedule view. The calendar panel can visually emphasize these dates to improve usability. Setting the ShowHighlightEvent property to True enables this feature, while setting it to False disables it.
Type:
  • boolean
Example
true {boolean}, the control highlights the dates that contain events
false {boolean}, the control does not highlight the dates that contain events
ShowHighlightEvent

ShowMarkZone :Schedule.ShowMarkZoneEnum

The ShowMarkZone property defines how mark-zones are displayed within the control, while the MarkZones property defines the mark-zones themselves. Mark-zones represent highlighted time intervals used to indicate special periods such as non-working hours, lunch breaks, or other significant ranges. The ShowMarkZone property controls whether mark-zones are displayed in the background (behind events), in the foreground (in front of events), or not displayed at all. By default, the ShowMarkZone property is set to 2 (exShowMarkZonesFront), meaning mark-zones are displayed in the foreground.

The property accepts the following values:

  • 0 (exHideMarkZones) {number}, no mark-zone is displayed
  • 1 (exShowMarkZonesBack) {number}, the mark-zone(s) are displayed on the background (behind events)
  • 2 (exShowMarkZonesFront) {number}, the mark-zone(s) are displayed on the foreground
Type:
Example
null {null}, the mark-zones are displayed on front, equivalent to 2 (exShowMarkZonesFront)
0 {number}, hides the mark-zones
1 {number}, shows the mark-zones on the background (behind events)
ShowMarkZone

ShowViewCompact :exontrol.Schedule.ShowViewCompactEnum

The ShowViewCompact property defines how days are arranged within the schedule view. This option is useful for optimizing the display, such as showing more days in the view or aligning the days to match the calendar panel. By default, the ShowViewCompact property is set to exViewCalendarCompact, which arranges the schedule view days to match the calendar panel, except that the first day of the month either continues immediately after the last day of the previous month or starts a new row.
Type:
  • exontrol.Schedule.ShowViewCompactEnum
Example
-1 or exontrol.Schedule.ShowViewCompactEnum.exViewCalendarCompact {number}, the schedule view arranges the days as they are shown in the calendar panel, excepts that the first day of the month starts right after the last day of the previously month, or start to a new row.
3 or exontrol.Schedule.ShowViewCompactEnum.exViewSingleRowLockHeader {number}, the schedule view arranges all days to a single row (horizontally), while the date header is shown/locked on the top while the chart is vertically scrolled.
ShowViewCompact

SingleSel :Schedule.SingleSelEnum

The SingleSel property defines whether the control supports single, multiple, toggle selection. The Selection property defines the control's selection. The SelectEventStyle property specifies how the selected-event gets displayed. The selection mode can be set to enable single-selection, multiple-selection, or toggle selection. When single-selection is enabled, only one event can be selected at a time. When multiple-selection is enabled, users can select multiple events simultaneously. When toggle selection is enabled, clicking on an event toggles its selection state (selected/unselected). The selection behavior can be further customized using additional flags that control how users can select events, such as disabling selection with modifier keys or by dragging.
Type:
Example
0 or exontrol.Schedule.SingleSelEnum.exDisableSel {number}, disables selecting any event
3 or exontrol.Schedule.SingleSelEnum.exSingleSel | exontrol.Schedule.SingleSelEnum.exEnableSel {number}, enables control's single selection, so only a single event can be selected
6 or exontrol.Schedule.SingleSelEnum.exToggleSel | exontrol.Schedule.SingleSelEnum.exSingleSel {number}, enables control's single and toggle selection, which means that once a event is selected it gets unselected once it is clicked, or reverse, and only a single-event can be selected at once.
SingleSel

Statistics :string

The Statistics property returns statistics data of objects being hold by the control. The statistics data includes the control's size (client area), zoom, number of events that currently fits the view's client area, total number of events, and more. This method is useful for debugging purposes, allowing you to quickly retrieve and display relevant information about the control's current state and its contents.

The getter of the Statistics property returns statistics data of objects being hold by the control such as:

Size: 1,536x754
Zoom: 100%
Event: 32/55
Sel: 1
Type:
  • string
Example
The following statements are equivalents:

 oSchedule.GetStatistics(), gives statistics data of objects being hold by the control
 oSchedule.Statistics, gives statistics data of objects being hold by the control

where oSchedule is an object of Schedule type
Statistics

Tfi :string|object

The Tfi property defines the font attributes for the control's captions, allowing precise customization of their appearance by specifying the text style (such as bold or italic), font family, and font size, either as a string (e.g., "b monospace 16") or as an object (e.g., {bold: true, italic: false, fontName: "monospace", fontSize: 16}), and immediately applies these settings to update the displayed captions.

The setter property of type {string} accepts any of the following keywords (each keyword can be specified using first letters only such as "b" for "bold) separated by space characters:

  • bold, displays the text in bold (equivalent of <b> tag)
  • italic, displays the text in italics (equivalent of <i> tag)
  • underline, underlines the text (equivalent of <u> tag)
  • strikeout, specifies whether the text is strike-through (equivalent of <s> tag)
  • <fontName name>, specifies the font's family (equivalent of <font name> tag)
  • <fontSize size>, specifies the size of the font (equivalent of <font ;size> tag)
  • <fgColor CSSColor>, specifies the text's foreground color (equivalent of <fgcolor> tag)
  • <bgColor CSSColor>, specifies the text's background color (equivalent of <bgcolor> tag)
  • <shaColor CSSColor;width;offset>, defines the text's shadow (equivalent of <sha color;width;offset> tag)
  • <outColor CSSColor>, shows the text with outlined characters (CSScolor) (equivalent of <out color> tag)
  • <graColor CSSColor;mode;blend>, defines a gradient text (equivalent of <gra color;mode;blend> tag)

Any other word within the string value that's not recognized as a keyword is interpreted as:

  • name of the font (not a number), specifies the font's family (equivalent of <font name> tag)
  • size of the font (number), specifies the size of the font (equivalent of <font ;size> tag)

The setter property of {object} type supports any of the following fields:

  • bold {boolean}, displays the text in bold (equivalent of <b> tag)
  • italic {boolean}, displays the text in italics (equivalent of <i> tag)
  • underline {boolean}, underlines the text (equivalent of <u> tag)
  • strikeout {boolean}, specifies whether the text is strike-through (equivalent of <s> tag)
  • fontName {string}, specifies the font's family (equivalent of <font name> tag)
  • fontSize {number}, specifies the size of the font (equivalent of <font ;size> tag)
  • fgColor {string}, specifies the text's foreground color (CSScolor) (equivalent of <fgcolor> tag)
  • bgColor {string}, specifies the text's background color (CSScolor) (equivalent of <bgcolor> tag)
  • shaColor {object}, specifies an object of {color, width, offset} type that defines the text's shadow (equivalent of <sha color;width;offset> tag), where:
    • color {string}, defines the color of the text's shadow (CSScolor)
    • width {number}, defines the size of the text's shadow
    • offset {number}, defines the offset to show the text's shadow relative to the text
  • outColor {string}, shows the text with outlined characters (CSScolor) (equivalent of <out color> tag)
  • graColor {object}, specifies an object of {color, mode, blend} type that defines a gradient text (equivalent of <gra color;mode;blend> tag), where:
    • color {string}, defines the gradient-color (CSScolor)
    • mode {number}, defines the gradient direction as 0 (left-right), 1 (default, top-bottom), 2 (left-center-right), and 3 (top-center-bottom)
    • blend {number}, defines the gradient blend as a value between 0 and 1

CSSColor or CSS legal color values can be specified by the following methods:

  • Hexadecimal colors, is specified with: #RRGGBB, where the RR (red), GG (green) and BB (blue) hexadecimal integers specify the components of the color. All values must be between 00 and FF. For example, #0000ff value is rendered as blue, because the blue component is set to its highest value (ff) and the others are set to 00.
  • Hexadecimal colors with transparency, is specified with: #RRGGBBAA, where AA (alpha) value must be between 00 and FF. For example, #0000ff80 defines a semi-transparent blue.
  • RGB colors, is specified with the RGB(red, green, blue) function. Each parameter (red, green, and blue) defines the intensity of the color and can be an integer between 0 and 255. For example, rgb(0,0,255) defines the blue color.
  • RGBA colors, are an extension of RGB color values with an alpha channel as RGBA(red, green, blue, alpha) function, where the alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). For example, rgba(0,0,255,0.5) defines a semi-transparent blue.
  • HSL colors, is specified with the HSL(hue, saturation, lightness) function, where hue is a degree on the color wheel (from 0 to 360) - 0 (or 360) is red, 120 is green, 240 is blue. saturation is a percentage value; 0% means a shade of gray and 100% is the full color. lightness is also a percentage; 0% is black, 100% is white. HSL stands for hue, saturation, and lightness - and represents a cylindrical-coordinate representation of colors. For example, hsl(240, 100%, 50%) defines the blue color.
  • HSLA colors, are an extension of HSL color values with an alpha channel - which specifies the opacity of the object as HSLA(hue, saturation, lightness, alpha) function, where alpha parameter is a number between 0.0 (fully transparent) and 1.0 (fully opaque). For example, hsla(240, 100%, 50%,0.5) defines a semi-transparent blue.
  • Predefined/Cross-browser color names, 140 color names are predefined in the HTML and CSS color specification. For example, blue defines the blue color.
Type:
  • string | object
Example
null {null}, the tfi field is ignored
"bold monospace 16 &lt;fg blue&gt;" {string}, defines Monospace font of 16px height, bold and blue
{bold: true, fontName: "monospace", fontSize: 16, fgColor: "blue"} {object}, defines Monospace font of 16px height, bold and blue
Tfi

TimeScale :TimeScaleOptions

The TimeScale property defines the options to apply on the control's time-scale, as an object of TimeScaleOptions type. The time-scale is a visual representation of the time intervals within the schedule control, which helps users to understand the timing and duration of events in relation to the overall schedule. The time-scale appears as a vertical axis that displays time units such as hours, minutes, or seconds, depending on the level of detail you want to show. The TimeScale property allows you to customize the appearance and behavior of the time-scale, including the time unit, the format of the time labels, and more. The DayStartTime property specifies the time the day starts from, in "HH[:MM]" format. The DayEndTime property specifies the time the day ends to, in "HH[:MM]" format. By default, the TimeScale property is set to null, which means that the control uses its default settings for the time-scale.

It is important to note that changing a field of the TimeScaleOptions object does not automatically update the control. For example, oSchedule.TimeScale.cursor = "pointer" does not apply the change. Instead, you must assign the TimeScale property again, such as oSchedule.TimeScale = {cursor: "pointer"}, so the control updates and applies the new value.

Type:
Example
The following sample defines the time-scale to show hours without AM/PM designations

{
  width: 36,
  allowResize: false,
  majorTimeLabel: "&lt;%hh%&gt;:&lt;%nn%&gt; ",
  minorTimeLabel: ":&lt;%nn%&gt; ",
  shape: "rgba(0,0,0,0.10)"
}
TimeScale

ToolTipDelay :number

The ToolTipDelay property defines the time the mouse pointer must hover over an object before the tool tip appears. Setting it to 0 makes tool tips appear immediately, while a higher value (for example, 128) introduces a delay to prevent accidental pop-ups when moving the mouse quickly across the control. The ToolTipPopDelay property determines how long the tool tip remains visible (in milliseconds) if the mouse pointer stays stationary, and the ToolTipWidth property sets the maximum width of the control's tool tip in pixels.
Type:
  • number
Example
0 {number}, the tooltip is shown "immediately"
128 {number}, the tooltip is displayed in 128 ms.
ToolTipDelay

ToolTipPopDelay :number

The ToolTipPopDelay property defines the duration, in milliseconds, that a tooltip remains visible when the mouse pointer is stationary over a control. The ToolTipPopDelay property is expressed in milliseconds. The ToolTipDelay property defines how long the mouse pointer must hover over an object before the tooltip appears. The ToolTipWidth property specifies the width of the tooltip window in pixels. By default, the tooltip remains visible for 5000 milliseconds.
Type:
  • number
Example
0 {number}, no tooltip is shown for any object (disabled)
-1 {number}, the tooltip stays indefinitely (negative)
1000 {number}, the tooltip is visible for 1 second
ToolTipPopDelay

ToolTipWidth :number

The ToolTipWidth property defines the width of the tooltip window, in pixels. The ToolTipWidth property gets or sets the width of the tooltip window, in pixels. The ToolTipWidth property accepts a number value that specifies the width of the tooltip window, in pixels. The ToolTipDelay property gets or sets how long the mouse pointer must point to an object before the tool tip appears. The ToolTipPopDelay property gets or sets the period in ms of time the tool top remains visible if the mouse pointer is stationary within a control.
Type:
  • number
Example
0 {number}, no tooltip is shown for any object (disabled)
-1 {number}, the tooltip's content is displayed on a single line (without limit the width of it)
300 {number}, the tooltip's max-width is 300 pixels
ToolTipWidth

UndoRedoQueueLength :number

The UndoRedoQueueLength property sets a limit on the Undo/Redo queue, which stores the history of actions performed on the control. Limiting the queue helps manage memory usage and maintain performance. The UndoRedoQueueLength getter retrieves the current maximum number of actions the queue can hold, while the setter defines this limit. Multiple actions can be grouped into a single block using StartBlockUndoRedo and EndBlockUndoRedo, and such a block counts as a single action in the Undo/Redo queue. The AllowUndoRedo property enables or disables the Undo/Redo functionality, while the Undo() and Redo() methods reverse or repeat the last action or a series of actions. Specifies the maximum number of Undo/Redo actions that may be stored to the control's Undo/Redo queue as explained:
    negative {number}, the control's Undo/Redo queue is limitless 0 {number}, the control's Undo/Redo feature is disabled positive {number}, specifies the maximum number of Undo/Redo actions that may be stored to the control's Undo/Redo queue
Type:
  • number
Since:
  • 2.0
Example
-1 {number}, the Undo/Redo queue is limitless
1 {number}, the Undo/Redo queue limits the number of actions to store to 1 (one action or one block of actions)
UndoRedoQueueLength

UpdateEventsLabel :string

The UpdateEventsLabel property defines the label displayed while moving or resizing events, while the CreateEventLabel property defines the label shown when creating events. The FormatEventUpdateLabel option defines how the label is formatted. These properties support ex-HTML tags (such as <b>, <i>, <fgcolor>, ...), as well as <%=formula%> tags. The <%=formula%> tag evaluates a format expression that can include placeholders like %1, %2, and so on, where each placeholder corresponds to a specific event property (for example, %1 refers to ExEventStartDateTime, %2 to ExEventEndDateTime). By default, the UpdateEventsLabel property is set to: "<%=%256%>
<%=((1:=int(0:= %7))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>", which displays the event's short margins on the first line and its duration (in days, hours, and minutes) on the second line while moving or resizing events.

The known placeholders that can be used in the formula are:

  • %1 (exEventStartDateTime) {Date}, indicates the starting date/time of the event. This property gets the Start property of the event. The Start property defines the lower margin of the event, and it includes the date and the time values. The exEventStartDate specifies the DATE value only, while the exEventStartTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%1)%>" displays the day of the week where the event starts
  • %2 (exEventEndDateTime) {Date}, indicates the ending date/time of the event. This property gets or sets the End property of the event. The End property defines the upper margin of the event, and it includes the date and the time values. The exEventEndDate specifies the DATE value only, while the exEventEndTime includes the TIME value only. For instance, the LabelProperty = "<%=weekday(%2)%>" gets the day of the week where the event ends.
  • %3 (exEventAllDay) {boolean}, indicates if the current event is an all day event. This property is equivalent with the event's AllDay property which indicates if the current event is an all-day event. For instance, the LabelProperty = "<%=%3 ? `All-Day-Event: `: ``%><%=%256%>", displays automatically an "All-Day-Event: " prefix for all-day events. If the event is not an all-day event, the <%=%256%>, or exEventDisplayShortMargins, short margins of the events are displayed.
  • %4 (exEventGroupID) {any}, specifies the identifier/index of the event's group. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupLabel property indicates the Caption property of the Group's event. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%4%>
    <%=%256%>" displays on the first line, the group's identifier, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %5 (exEventCaption) {string}, indicates the caption of the event. The Caption property of the event specifies the custom caption that can be displayed on the label, without having to change the event's label. For instance, the LabelProperty = "<%=%256%>
    <%=%5%>" displays on the first line, the event's short margins, while on the second line displays the event's caption. Once you update or edit the event's Caption, the event's body automatically shows the new caption.
  • %6 (exEventUserData) {any}, indicates the extra data associated with the event. The UserData property of the event indicates an extra data associated with the event. For instance, the LabelProperty = "<%=%256%>
    <%=%6%>" displays on the first line, the event's short margins, while on the second line displays the event's user data. Once you update or edit the event's UserData, the event's body automatically shows the new label.
  • %7 (exEventDuration) {number}, specifies the duration of the event. The returned values is of float type, and it indicates the duration of the event in days. For instance, the 1.5 indicates, 1 day and 12 hours. For instance, the LabelProperty = "<%=%256%>
    <%=((1:=int(0:= (date(%2)-date(%1)))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%>" displays on the first line, the event's short margins, while on the second line displays the event's durations in days, hours and minutes. Once you update or edit the event's margins, the event's body automatically shows the new length. You can use the MoveBy method to delay the current event with a specified value time. You can use the SetKnownProperty(exEventDuration) to change the event's duration.
  • %8 (exEventRepetitiveExpression) {string}, specifies the repetitive expression of the event. The Event.Repetitive property indicates the expression that determines whether the event is repetitive. For instance, the LabelProperty = "<%=%256%>
    <%=len(%8)? `repetitive event`:``%>" displays repetitive event for repetitive events.
  • %12 (exEventID) {string}, specifies the event's unique key/identifier/index.
  • %256 (exEventDisplayShortMargins) {string}, displays the margins of the event in a short format (read-only). The ShortDateFormat property defines the short date format. The ShortTimeFormat property defines the short time format.
  • %257 (exEventDisplayLongMargins) {string}, displays the margins of the event in a long format (read-only). The LongDateFormat property defines the long date format. The LongTimeFormat property defines the long time format.
  • %258 (exEventStartDate) {Date}, gets the starting date ( not including the time ) of the event (read-only). You can use this property to get the starting date of the event.
  • %259 (exEventStartTime) {number}, gets the starting time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the starting time of the event.
  • %260 (exEventEndDate) {Date}, gets the ending date ( not including the time ) of the event (read-only). You can use this property to get the ending date of the event.
  • %261 (exEventEndTime) {number}, gets the ending time ( not including the date ) of the event, as a number between 0 and 1 (read-only). You can use this property to get the ending time of the event.
  • %262 (exEventGroupLabel) {string}, gets the label of the owner group (read-only). The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. The exEventGroupTitle property indicates the Title property of the Group's event. For instance, the LabelProperty = "<%=%262%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %263 (exEventGroupTitle) {string}, gets the title of the owner group (read-only). The exEventGroupTitle property indicates the Title property of the Group's event. The exEventGroupLabel property indicates the Caption property of the Group's event. The GroupID property of the event indicates the identifier of the group that event belongs to. For instance, the LabelProperty = "<%=%263%>
    <%=%256%>" displays on the first line, the group's caption, and the short margins of the event on the second line. The caption of the label is automatically updated once an event is moved from a group to another.
  • %264 (exEventRepetitive) {boolean}, Indicates if the current event is a repetitive event. (read-only). You can use this flag to specify whether Repetitive property of the Event object is not empty, and valid.
Type:
  • string
Example
null {null}, the control's default label is shown while resizing or moving events ("&lt;%=%256%&gt;&lt;br&gt;&lt;%=((1:=int(0:= %7)) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%&gt;")
"" {string}, no label is shown for the event to resize or move
"Start: &lt;%=%1%&gt;&lt;br&gt;End: &lt;%=%2%&gt;" {string}, displays the starting margin of the even on the first line, while on the second line it displays the ending point of the event
"Duration: &lt;%=((1:=int(0:= %7)) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')%&gt;" {string},  displays the duration of the event in days, hours and minutes
UpdateEventsLabel

WheelChange :number

The WheelChange property defines the amount the calendar scrolls when the user rolls the mouse wheel. This setting allows you to adjust the sensitivity of the mouse wheel interaction with the control.
  • Setting wheelChange to 0 disables mouse wheel actions, preventing the control from changing when the wheel is scrolled
  • Setting wheelChange to a positive number, such as 5, increases the control's value by that amount each time the wheel is rotated, enabling faster adjustments

By modifying this value, you can fine-tune the control's responsiveness, making it easier for users to perform precise changes or larger adjustments as needed.

Type:
  • number
Example
0 {number}, locks any action the mouse's wheel performs
18 {number}, scrolls the control by 18-pixels when mouse's wheel is rotated (CTRL + wheel scrolls horizontally)
WheelChange

Zoom :number

The Zoom property defines the zoom factor of the control's content. The zoom factor determines how much the control's content is magnified or reduced. Once the user adjusts the browser's zoom level, the control automatically recalculates its zoom factor to maintain the correct scaling of its content. The ZoomLevels property defines the allowed zoom levels the user can select from.
Type:
  • number
Example
null {null}, Specifies normal-view (100%)
150 {number}, Indicates that the control's label is magnfied to 150%
Zoom

ZoomLevels :string

The ZoomLevels property defines the allowed zoom levels for the control and can be specified as a comma-separated string of numeric values (e.g., "50,100,150,200"). These values represent the percentage levels at which users can zoom in or out of the control's content. The ZoomLevels property works together with the Zoom property to provide a range of zoom options. For example, if ZoomLevels is set to "50,100,150,200", users can choose from these predefined zoom levels to adjust their view of the content.
Type:
  • string
Example
null {null}, Specifies that the control's zoom factor is always 100%
150 {number}, Specifies that the control's zoom factor is always 150%
"50,100,200,350" {string}, Indicates that the zoom-factor can be any of selected values, and the levels of zoom-factor is 50% to 350%
ZoomLevels

oSV :SV

The oSV field defines the base schedule-view of control. The schedule-view is the main view of the control, which displays the time intervals and events in a structured manner. The oSV field holds a reference to the current schedule-view being displayed within the control. The schedule-view is responsible for rendering the events, time intervals, and other visual elements of the schedule. It provides the core functionality for displaying and interacting with the scheduled items. The AddScheduleView() method allows you to add new schedule-views to the control, while the RemoveScheduleView() method allows you to remove existing schedule-views from the control. Almost all properties and methods of the oSV field are exposed through the control, allowing you to access and manipulate the schedule view directly from the control itself. For instance, oSchedule.oSV.Copy() is equivalent to oSchedule.Copy(), where oSchedule is an object of Schedule type.
Type:
oSV

Methods

Scroll(key)

The Scroll() method scrolls the window based on the giving key. The Scroll() method scrolls the view without changing the selection. The ScrollPos property scrolls horizontally and/or vertically the control's default view. The onscroll event is fired when the user scrolls the view by mouse, touch or keyboard, or when the view's scroll is changed programmatically by ScrollPos property.
Parameters:
Name Type Description
key string Specifies a key to determines the direction to scroll the view as follows:
  • "Home" {string}, scrolls to the left/top of the control
  • "End" {string}, scrolls to the right/end of the control
  • "Prior" or "PageUp"{string}, scrolls by a page left/up
  • "Next" or "PageDown" {string}, scrolls by a page right/down
  • "Up" or "ArrowUp" {string}, scrolls up
  • "Down" or "ArrowDown" {string}, scrolls down
  • "Left" or "ArrowLeft" {string}, scrolls left
  • "Right" or "ArrowRight" {string}, scrolls right
Example
The following sample code shows how to scroll the view by a page up or down using the Scroll() method:

 oSchedule.on("{PageUp}", oSchedule.Scroll.bind(oSchedule, "PageUp"));
 oSchedule.on("{PageDown}", oSchedule.Scroll.bind(oSchedule, "PageDown"));

where oSchedule is an object of Schedule type
Scroll

AddScheduleView(name, attributesopt) → {SV}

The AddScheduleView() method creates a new view to display the events. The control supports multiple schedule-views, and each view can be used to display different sets of events or the same events in different ways. For instance, you can create one view to display the events in a daily layout and another view to display the events in a weekly layout. Each schedule-view is hosted within its own window, allowing you to customize the layout and appearance of each view independently. The control's default schedule-view is named "schedule", and it is created by default when the control is initialized. You can create additional views with unique names using the AddScheduleView() method, and manage their visibility and content as needed. The RemoveScheduleView() method removes a schedule-view already created by AddScheduleView() method.
Parameters:
Name Type Attributes Description
name string defines the name of the schedule-view to be created. It must be an unique name. The "schedule" defines the control's default-schedule view, and it is reserved. If missing, the "schedule.split" is used instead.
attributes exontrol.W.Options <optional>
A exontrol.W.Options that defines the attributes of the window.
Properties
Name Type Description
Visible boolean The Visible field indicates whether the window is visible or hidden.
VisibleExtends string The VisibleExtends field specifies the list of windows the current window depends to be visible or hidden. A string expression that specifies the list of windows the current window's visibility depends on as explained:
  • if the VisibleExtends property includes the window itself, the window is visible if any window in VisibleExtends is visible, else
  • if the VisibleExtends property does NOT includes the window itself, the window is hidden if any window in VisibleExtends is hidden (or the window is visible if all VisibleExtends windows are visible)
AllowKeys boolean The AllowKeys field specifies whether the window can receive the Keys events. By default, only the canvas window receives all the keys.
Enabled boolean The Enabled field specifies whether the window is enabled or disabled (the window is protected and shown in gray).
Resizable boolean The Resizable field indicates whether the window is resizable or fixed.
Locked boolean The Locked field specifies that the window is locked (the window is protected).
Dock exontrol.WDT The Dock field specifies how the control borders are docked to its parent control and determines how a control is resized with its parent. The exontrol.WDT type supports the following values:
  • N(0), the window is not docked (none)
  • T(1), the window's top edge is docked to the top of its containing window (top)
  • B(2), the window's bottom edge is docked to the bottom of its containing window (bottom)
  • L(3), the window's left edge is docked to the left edge of its containing window (left)
  • R(4), the window's right edge is docked to the right edge of its containing window (right)
  • F(5), all the window's edges are docked to all edges of its containing window and sized appropriately (fill)
Size number The Size field defines the width/height of the window when it is docked.
SizeExtends string The SizeExtends field specifies the list of windows that shares the same size. Once a window is resized, all its SizeExtends windows are sized the same as the current one.
Client Array.<number> The Client field specifies position of the window relative to the parent window, as an array of [x,y,width,height] type.
Background string The Background field defines the window's background color ( CSS Color ) or null/undefined if not provided.
Foreground string The Foreground field defines the window's foreground color ( CSS Color ) or null/undefined if not provided.
Opacity number The Opacity field indicates the window's opacity, as a number between 0 and 1 (1 is not transparent at all, 0.5 is 50% see-through, and 0 is completely transparent).
HoverBackground string The HoverBackground field, defines the window's background color while the cursor hovers it ( CSS Color ) or null/undefined if not provided.
HoverForeground string The HoverForeground field defines the window's foreground color while the cursor hovers it( CSS Color ) or null/undefined if not provided.
HoverOpacity number The HoverOpacity field indicates the window's opacity, as a number between 0 and 1 (1 is not transparent at all, 0.5 is 50% see-through, and 0 is completely transparent), when the cursor hovers it.
DrawWindowFrame boolean The DrawWindowFrame field indicates whether the window draws its frame.
Extends string The Extends field indicates a list of windows separated by comma character to extend the current's client area to. The windows(child windows) must have the z-order greater than the z-order of the current window, else they will be ignored. The Extends field changes the z-order of the windows as well.
HoverExtends string The HoverExtends field specifies the list of windows separated by comma character that receives the hover-events once the cursor hovers the current window.
AllowXChg boolean The AllowXChg field specifies whether the window can exchange its UI position with another window. Only windows with AllowXChg field set can be exchanged.
XChgID string The XChgID field specifies the general expression, whose evaluated result defines the caption to be displayed on the window's anchor-exchange part. The expression supports keywords like index, name and shortname, that indicates the window's index, a value starting from 0, the window's name and short-name. The evaluated result can include exontrol's HTML tags that will be applied on the window's anchor-exchange element. If the expression is not valid, the XChgID value is used as it is.
Control object The Control field defines the control associated with the window (for internal use only).
HScroll string The HScroll field defines window's horizontal scroll bar. A string expression that indicates the name of the window that hosts an exontrol.SB control or an object of exontrol.SB type that defines the window's horizontal scroll bar (for internal use only).
VScroll string The VScroll field defines window's vertical scroll bar. A string expression that indicates the name of the window that hosts an exontrol.SB control or an object of exontrol.SB type that defines the window's vertical scroll bar (for internal use only).
Layout string The Layout field defines the properties (separated by comma) the GetLayout/SetLayout methods of CW saves/restores (for internal use only).
Returns:
Returns the newly created view as an object of SV type. Returns null, in case there is already a window with specified name.
Type
SV
Example
oSchedule.AddScheduleView("2nd",{Background: "black", Foreground: "white", Dock: 3}), adds a new schedule-view panel, docked to the left-size, with a black-background and a white-foreground
AddScheduleView

BeginUpdate()

The BeginUpdate() method suspends the control's render until the EndUpdate() method is called. It maintains performance, while multiple changes occurs within the control. The BeginUpdate() method is mostly used when you want to perform multiple changes to the control without refreshing the control after each change, and once all changes are performed, you can call the EndUpdate() method to refresh the control. You can use the Update() method to perform multiple changes at once. The Smooth() method makes the control transition smoothly from the current layout to a new layout. In short, it applies a gradual, animated change to the layout generated by the callback, instead of switching instantly. The BeginUpdate/EndUpdate() methods are not required to be called when you use the Update() or Smooth() methods, because the methods already maintain performance while performing multiple changes to the control.
Example
oSchedule.BeginUpdate();
  // performs multiple changes to the control
oSchedule.EndUpdate();
BeginUpdate

BlockUndoRedo(callback, thisArg)

The BlockUndoRedo() method records the Undo/Redo operations as a block. The BlockUndoRedo() method calls StartBlockUndoRedo / EndBlockUndoRedo methods. The BlockUndoRedo() method accepts a callback function that includes the Undo/Redo operations to be recorded as a block. The GroupUndoRedoActions() method groups the next to current Undo/Redo actions into a single block The AllowUndoRedo property enables or disables the Undo/Redo feature. These features let you remove or repeat single or multiple UI actions, but all actions must be undone or redone in the order you did or undid them - you can't skip actions. The undo/redo actions are recorded to the control's undo/redo queue, which can be limited by the UndoRedoQueueLength property. The Undo() method undoes the last action or a sequence of actions, while the Redo() method redoes the last action that was undone (reverses the Undo method). For instance, if an event has been moved, Undo means moves back the event to its position before move.
Parameters:
Name Type Description
callback callback Specifies a function of callback() type.
thisArg any Indicates the value of "this" keyword during the callback, or the control itself if missing.
Example
The following statements are equivalents:

 oSchedule.StartBlockUndoRedo();
  // multiple Undo/Redo operations to be recorded as a block
 oSchedule.EndBlockUndoRedo();

or

 oSchedule.BlockUndoRedo(function()
 {
   // multiple Undo/Redo operations to be recorded as a block
 });
BlockUndoRedo

CanRedo() → {boolean}

The CanRedo() method indicates whether the control can perform a Redo operation. The Undo() method undoes the last action or a sequence of actions. The Redo() method redoes the last action that was undone (reverses the Undo method). For instance, if an event has been moved, Undo means moves back the event to its position before move. The Undo and Redo features let you remove or repeat single or multiple UI actions, but all actions must be undone or redone in the order you did or undid them - you can't skip actions. The undo/redo actions are recorded to the control's undo/redo queue, which can be limited by the UndoRedoQueueLength property. The AllowUndoRedo property enables or disables the Undo/Redo feature.
Since:
  • 2.0
Returns:
Returns true if the control can perform a Redo operation
Type
boolean
Example
false {boolean}, no Redo operation is permitted
true {boolean}, a Redo operation is available
CanRedo

CanUndo() → {boolean}

The CanUndo() method indicates whether the control can perform an Undo operation. The Undo() method undoes the last action or a sequence of actions. The Redo() method redoes the last action that was undone (reverses the Undo method). For instance, if an event has been moved, Undo means moves back the event to its position before move. The Undo and Redo features let you remove or repeat single or multiple UI actions, but all actions must be undone or redone in the order you did or undid them - you can't skip actions. The undo/redo actions are recorded to the control's undo/redo queue, which can be limited by the UndoRedoQueueLength property. The AllowUndoRedo property enables or disables the Undo/Redo feature.
Since:
  • 2.0
Returns:
Returns true if the control can perform an Undo operation
Type
boolean
Example
false {boolean}, no Undo operation is permitted
true {boolean}, an Undo operation is available
CanUndo

Clear()

The Clear() method clears the events, groups and mark-zones. The Events.Clear() method removes all events from the control. The Groups.Clear() method removes all groups from the control. The MarkZones.Clear() method removes all mark-zones from the control.
Since:
  • 2.1

Copy()

The Copy() method copies the current selection of events (appointments) to the clipboard. The Cut, Copy, and Paste methods work only when the control is visible. The Copy() method generates the data to export to the clipboard from the selected events by calling the onCopy() method, and then sets this data in the clipboard. The onCopy() method can be overridden to customize the default data format for derived objects. By default, onCopy() returns an object of {e(vents)} type, where e(vents) is a collection of [{EventOptions}] objects representing the selected events (appointments). The clipboard data is stored as a JSON representation of the object returned by onCopy(), which can later be retrieved by the Paste() method through the Clipboard API.
Since:
  • 2.1
Example
The following samples demonstrate how to implement the Copy, Cut, and Paste methods for the control using the Clipboard API when the user presses the CTRL + C, CTRL + X, CTRL + V (the "See text and images copied to the clipboard /Allow/Block" message may occur due security permissions):

 oSchedule.on("{CTRL + C}", oSchedule.Copy)
 oSchedule.on("{CTRL + X}", oSchedule.Cut)
 oSchedule.on("{CTRL + V}", oSchedule.Paste)

Please note that the control requires focus, so CTRL + C, CTRL + X or CTRL + V will work only when the control has focus. In the same manner, the tabIndex attribute must be present in the definition of the HTML element that hosts the control.
Copy

Cut()

The Cut() method moves the current selection of events (appointments) to the Clipboard. In short, the Cut() method copies the current selection to the clipboard by calling the Copy() method, and then removes the selected events from the schedule by calling the RemoveSelection() method. The Cut, Copy, and Paste methods work only when the control is visible. The Cut() method is used to cut the selected events (appointments) to the clipboard, and the Paste() method is used to paste them back into the schedule.
Since:
  • 2.1
Example
The following samples demonstrate how to implement the Copy, Cut, and Paste methods for the control using the Clipboard API when the user presses CTRL + C, CTRL + X, CTRL + V (the "See text and images copied to the clipboard /Allow/Block" message may occur due to security permissions):

 oSchedule.on("{CTRL + C}", oSchedule.Copy)
 oSchedule.on("{CTRL + X}", oSchedule.Cut)
 oSchedule.on("{CTRL + V}", oSchedule.Paste)

Please note that the control requires focus, so CTRL + C, CTRL + X or CTRL + V will work only when the control has focus. In the same manner, the tabIndex attribute must be present in the definition of the HTML element that hosts the control.
Cut

EndBlockUndoRedo()

The EndBlockUndoRedo() method ends recording the Undo/Redo operations as a block. You can use the StartBlockUndoRedo / EndBlockUndoRedo methods to group multiple Undo/Redo operations into a single-block. The BlockUndoRedo() method records the Undo/Redo operations as a block. The AllowUndoRedo property enables or disables the Undo/Redo feature. These features let you remove or repeat single or multiple UI actions, but all actions must be undone or redone in the order you did or undid them - you can't skip actions. The undo/redo actions are recorded to the control's undo/redo queue, which can be limited by the UndoRedoQueueLength property. The Undo() method undoes the last action or a sequence of actions, while the Redo() method redoes the last action that was undone (reverses the Undo method). For instance, if an event has been moved, Undo means moves back the event to its position before move.
Since:
  • 2.0
Example
oSchedule.StartBlockUndoRedo()
   ...
 oSchedule.EndBlockUndoRedo()
EndBlockUndoRedo

EndUpdate()

The EndUpdate() method resumes the control's render, after it is suspended by the BeginUpdate() method. The EndUpdate() method is mostly used after calling the BeginUpdate() method, to refresh the control after performing multiple changes to the control. You can use the Update() method to perform multiple changes at once. The Smooth() method makes the control transition smoothly from the current layout to a new layout. In short, it applies a gradual, animated change to the layout generated by the callback, instead of switching instantly. BeginUpdate/EndUpdate() methods are not required to be called when you use the Update() or Smooth() methods, because the methods already maintain performance while performing multiple changes to the control.
Example
oSchedule.BeginUpdate();
 // performs multiple changes to the control
oSchedule.EndUpdate();
EndUpdate

EnsureVisibleClient(clientA, ensureOptsopt)

The EnsureVisibleClient() method ensures that the specified client fits within the control's client area. The EnsureVisibleDate() method scrolls the schedule view so the giving date(s) fit the view's client-rectangle. The EnsureVisibleSelection() method is an alias of EnsureVisibleClient and ensures that the specified selection fits within the control's client area. The EnsureVisibleClient() method can adjust the control's scale or zoom factor to fully fit the client if the allowScale option is set to true. Additionally, if the nearestFit option is set to true, it ensures that the corner of the object nearest to the window's client area is visible; this option only applies when the object's size is larger than the window's client area.
Parameters:
Name Type Attributes Description
clientA object The client parameter could be any of the following:
  • clientA {number[]}, specifies an array of [x,y,width,height] type that indicates the absolute-coordinates of the layout-rectangle to fit into the control's client area
  • clientA {Event}, indicates an object of {Event} type that indicates the event to fit the client area of the control
  • clientA {MarkZone}, indicates an object of {MarkZone} type that indicates the mark-zone to fit the client area of the control
  • clientA {Date}, indicates an object of {Date} type that indicates the date and time to fit the client area of the control
ensureOpts object <optional>
Specifies different options to run the current method as explained:
  • force {boolean}, forces the EnsureVisibleClient()'s smooth operation to run, not matter if no zoom/scale or scrol changed
  • allowScale {boolean}, updates the control's scale/zoom-factor to ensure full-fit the client
  • allowScroll {number}, specifies whether horizontal/vertical is allowed as explained:
    • 3 {number}/{null}/{undefined}, allows scrolling horizontal and vertical as required
    • 0 {number}, no horizontal or vertical scroll is allowed
    • 1 {number}, horizontal scroll is allowed
    • 2 {number}, vertical scroll is allowed
  • nearestFit {boolean}, ensures that corner of the object nearest the window's client area fits it (it has effect only if the size of the object is greater than size of the window's client area)
  • duration {number}, specifies the time in ms the control is smoothly performs the changes
  • thisArg {any}, specifies the value of "this" keyword during the cbkI/cbkT callbacks
  • cbkR {callback}, specifies a function of callback(p) type that's invoked once the EnsureVisibleClient()'s smooth operation runs (p {number}, specifies the progress of the smooth so far, as a value between 0 and 1)
  • cbkI {callback}, specifies a function of callback() type that's invoked once the EnsureVisibleClient()'s smooth operation begins
  • cbkT {callback}, specifies a function of callback() type that's invoked once the EnsureVisibleClient()'s smooth operation ends
Example
oSchedule.EnsureVisibleClient([100, 100, 50, 50]), ensures that the rectangle of [x:100,y:100,width:50,height:50] absolute-coordinates fits within the control's client area
 oSchedule.EnsureVisibleClient(oSchedule.Event(0)), ensures that the event with id 0 fits within the control's client area
EnsureVisibleClient

EnsureVisibleDate(dateopt, flagsopt)

The EnsureVisibleDate() method scrolls the schedule view so the giving date(s) fit the view's client-rectangle. The EnsureVisibleClient() method ensures that the specified client(event) fits within the control's client area. The EnsureVisibleSelection() method is an alias of EnsureVisibleClient and ensures that the specified selection fits within the control's client area. The EnsureVisibleDate() method does nothing if the giving date(s) already fit the view's client-rectangle or the dates are not part of the view's layout (the view's layout contains all dates of one year). The EnsureVisibleDate() method can scroll horizontally and/or vertically as specified by the flags parameter.
Parameters:
Name Type Attributes Description
date any <optional>
Specifies a date or a collection of dates to ensure that fits the view's client rectangle.

The date parameter can be one of the following:

  • date {null|undefined}, ensures that the first visible date of the layout fits the schedule view's client area
  • date {Date}, specifies a date to ensure that fits the view's client rectangle
  • date {Date[]}, specifies an array of dates to ensure that fit the view's client rectangle
flags number <optional>
Specifies the flags to run the EnsureVisibleDate() method as explained:
  • 1 {number}, allows horizontal scroll
  • 2 {number}, allows vertical scroll

If flags is missing, the method uses the default value of 3, which allows both horizontal and vertical scroll.

Example
oSchedule.EnsureVisibleDate(), ensures that the first visible date of the layout fits the schedule view's client area
oSchedule.EnsureVisibleDate(new Date(2021,0,1)), ensures that Jan 1st, 2021 fits within the control's client area
EnsureVisibleDate

EnsureVisibleSelection(ensureOptsopt)

The EnsureVisibleSelection() method scrolls the schedule's view to ensure that the current selection of events (appointments) is visible within the control's client area. The Selection property can be used to set or retrieve the selected events. The EnsureVisibleDate() method can be used to ensure that specific date(s) fit within the schedule's view. The EnsureVisibleClient() method can be used to ensure that a specific client (event or time range) fits within the schedule's view. The EnsureVisibleSelection() method retrieves the current selection and determines the time range that covers all selected events. It then calls the EnsureVisibleClient() method with the calculated range to adjust the view accordingly. This ensures that all selected events are visible within the schedule, providing a better user experience when working with selections.
Parameters:
Name Type Attributes Description
ensureOpts object <optional>
Specifies different options to run the current method as explained:
  • selection {array}, holds an array of events as [Event] type to fit into current-view (if not specified, the method uses the current selection of the control)
  • duration {number}, specifies the time in ms the control is smoothly performs the changes (0 indicates no animation, the default value is the control's smooth value)
Example
oSchedule.EnsureVisibleSelection(), scrolls the schedule's view to ensure that the current selection fits within the visible area
EnsureVisibleSelection

Event(id) → {Event}

The Event() method returns an event based on the specified identifier, index, or object reference. It is equivalent to calling Events.Item(id) method. The id parameter can be a number (representing the event's index), a string (representing the event's identifier/key), or an object reference (representing the event itself). If no event matches the specified id, the method returns null; otherwise, it returns an Event object representing the requested event.
Parameters:
Name Type Description
id any The event parameter could be any of the following:
  • event {number}, indicates a numeric value that defines the index of the event to request
  • event {string}, specifies a string expression that defines the identifier/key of the event to request
  • event {Event}, specifies the object reference to the event to request for
Returns:
Returns null or an object of Event type
Type
Event
Example
The following statements are equivalents:

 oSchedule.Event(0) {Event}, returns the first event of the control
 oSchedule.Events.Item(0) {Event}, returns the first event of the control

where oSchedule is an object of Schedule type
Event

FitToClient(range)

The FitToClient() method ensures that the entire schedule (if null/undefined) or a specified time range fits within the control's visible area. The FitToClient() method is typically used to fit the entire schedule or a specific time interval into the control's view, while the EnsureVisibleClient() method is used to ensure that a specific client (event or time range) is visible within the schedule. The EnsureVisibleSelection() method ensures that the current selection of events fits within the visible area. The Home() method resets the view (zoom level, if applicable) and scrolls the schedule to its initial position.
Parameters:
Name Type Description
range any Indicates null for the entire schedule or a value that defines the time range to fit into view (for example, a start/end date or equivalent structure).
Example
oSchedule.FitToClient(), fits the entire schedule into the control's visible area
FitToClient

Group(id) → {Group}

The Group() method returns the group based on its index or identifier. The Event.GroupID property can be used to associate an event with a specific group, allowing the event to inherit the visual styling and properties of that group. The Group(id) method is equivalent with Groups.Item(id) method. The id parameter can be a number (representing the group's index), a string (representing the group's identifier/caption), or an object reference (representing the group itself). If no group matches the specified id, the method returns null; otherwise, it returns a Group object representing the requested group.
Parameters:
Name Type Description
id any The group parameter could be any of the following:
  • group {number}, indicates a numeric value that defines the index of the group to request
  • group {string}, specifies a string expression that defines the identifier of the group to request
  • group {Group}, specifies the object reference to the group to request for
Returns:
Returns null or an object of Group type
Type
Group
Example
The following statements are equivalents:

 oSchedule.Group(0) {Group}, returns the first group of the control
 oSchedule.Groups.Item(0) {Group}, returns the first group of the control

where oSchedule is an object of Schedule type
Group

GroupUndoRedoActions(countopt)

The GroupUndoRedoActions() method groups the next to current Undo/Redo actions into a single block. The BlockUndoRedo() method records the Undo/Redo operations as a block. The BlockUndoRedo() method calls StartBlockUndoRedo / EndBlockUndoRedo methods. The BlockUndoRedo() method accepts a callback function that includes the Undo/Redo operations to be recorded as a block. The AllowUndoRedo property enables or disables the Undo/Redo feature.
Parameters:
Name Type Attributes Description
count number <optional>
Indicates the number of actions to group (if missing all actions are grouped).
Since:
  • 2.0
Example
GroupUndoRedoActions(), groups all Undo/Redo operations into a block
GroupUndoRedoActions

Home()

The Home() method zooms to 100% and scrolls the control to the first-date in the layout (usually the Jan 1st). The FitToClient() method ensures that the entire schedule (if null/undefined) or a specified time range fits within the control's visible area. The FitToClient() method is typically used to fit the entire schedule or a specific time interval into the control's view, while the EnsureVisibleClient() method is used to ensure that a specific client (event or time range) is visible within the schedule. The EnsureVisibleSelection() method ensures that the current selection of events fits within the visible area. The Home() method resets the view (zoom level, if applicable) and scrolls the schedule to its initial position.
Example
oSchedule.Home(), zooms to 100% and scrolls the control to the first-date in the layout (usually the Jan 1st)
Home

MarkZone(id) → {MarkZone}

The MarkZone() method returns the mark-zone based on its index or identifier. The MarkZone(id) method is equivalent with MarkZones.Item(id) method. The id parameter can be a number (representing the mark-zone's index), a string (representing the mark-zone's identifier/caption), or an object reference (representing the mark-zone itself). If no mark-zone matches the specified id, the method returns null; otherwise, it returns a MarkZone object representing the requested mark-zone.
Parameters:
Name Type Description
id any The mark-zone parameter could be any of the following:
  • mark-zone {number}, indicates a numeric value that defines the index of the mark-zone to request
  • mark-zone {string}, specifies a string expression that defines the identifier of the mark-zone to request
  • mark-zone {MarkZone}, specifies the object reference to the mark-zone to request for
Returns:
Returns null or an object of MarkZone type
Type
MarkZone
Example
The following statements are equivalents:

 oSchedule.MarkZone(0) {MarkZone}, returns the first mark-zone of the control
 oSchedule.MarkZones.Item(0) {MarkZone}, returns the first mark-zone of the control

where oSchedule is an object of Schedule type
MarkZone

Paste()

The Paste() method pastes the contents of the Clipboard into the schedule. The Cut, Copy, and Paste methods work only when the control is visible. The Paste() method retrieves the clipboard data through the Clipboard API, and then calls the onPaste() method to add the events (appointments) represented by this data into the schedule. The onPaste() method can be overridden to customize how the clipboard data is processed for derived objects. By default, onPaste() expects an object of {e(vents)} type, where e(vents) is a collection of [{EventOptions}] objects representing the events (appointments) to be pasted. The Paste() method also ensures that the newly pasted events are visible within the schedule's view, adjusting the view if necessary.
Since:
  • 2.1
Example
The following samples demonstrate how to implement the Copy, Cut, and Paste methods for the control using the Clipboard API when the user presses CTRL + C, CTRL + X, CTRL + V (the "See text and images copied to the clipboard /Allow/Block" message may occur due to security permissions):

 oSchedule.on("{CTRL + C}", oSchedule.Copy)
 oSchedule.on("{CTRL + X}", oSchedule.Cut)
 oSchedule.on("{CTRL + V}", oSchedule.Paste)

Please note that the control requires focus, so CTRL + C, CTRL + X or CTRL + V will work only when the control has focus. In the same manner, the tabIndex attribute must be present in the definition of the HTML element that hosts the control.
Paste

Redo()

The Redo() method reapplies the last undone action (reverses the Undo method). For example, if an event was moved, Undo() restores it to its previous position, while Redo() moves it again to the new position. Undo and Redo let you remove or repeat single or multiple UI actions, but all actions must be undone or redone in the order they occurred - skipping actions is not allowed. Actions are recorded in the control's Undo/Redo queue, which can be limited using the UndoRedoQueueLength property. The AllowUndoRedo property enables or disables Undo/Redo functionality. You can press Ctrl+Z to undo an action, and Ctrl+Y to redo an action that was undone.
Since:
  • 2.0
Example
oSchedule.Redo(), redoes the last action that was undone
Redo

RedoListAction(actionopt, countopt) → {string}

The RedoListAction() method retrieves the actions currently available to redo. Similarly, UndoListAction() returns the actions available to undo. Both methods accept an optional action parameter to filter actions using a mask pattern. The Undo() method reverses the last action or a sequence of actions, while Redo() reapplies the last undone action.
Parameters:
Name Type Attributes Description
action string <optional>
Specifies null(to list all Redo actions) or the mask-pattern to match the action to list. Space sparates multiple mask-pattern.

The mask-pattern supports wild characters as explained:

  • * (Any), masks any combination of characters
  • ? (Alphabetic), masks a letter such as [a-z] or [A-Z]
  • # (Digit), masks a digit character, [0-9]
  • [...] (Alternative), masks any characters that are contained in the [] brackets. For instance, the [abcA-C] mask
count number <optional>
Indicates the number of Redo actions to list (if missing all Redo actions are listed).
Since:
  • 2.0
Returns:
Returns the list of Redo actions that can be performed
Type
string
Example
oSchedule.RedoListAction(), lists all Redo actions that can be executed
  oSchedule.RedoListAction("*Event"), lists all "*Event" Redo actions that can be executed, such as AddEvent, RemoveEvent, UpdateEvent or MoveEvent
  oSchedule.RedoListAction("AddEvent"), lists first "AddEvent" Redo actions that can be executed
RedoListAction

RedoRemoveAction(actionopt, countopt)

The RedoRemoveAction() method removes the first actions from the Redo queue. Similarly, UndoRemoveAction() removes the first actions from the Undo queue. Both methods accept an optional action parameter to filter actions using a mask pattern. The Undo() method reverses the last action or a sequence of actions, while Redo() reapplies the last undone action. You can press Ctrl+Z to undo an action, and Ctrl+Y to redo an action that was undone.
Parameters:
Name Type Attributes Description
action string <optional>
Specifies null(to remove all Redo actions) or the mask-pattern to match the action to remove. Space sparates multiple mask-pattern. The mask-pattern supports wild characters as explained:
  • * (Any), masks any combination of characters
  • ? (Alphabetic), masks a letter such as [a-z] or [A-Z]
  • # (Digit), masks a digit character, [0-9]
  • [...] (Alternative), masks any characters that are contained in the [] brackets. For instance, the [abcA-C] mask
count number <optional>
Indicates the number of actions to remove (if missing all actions are removed) from the Redo queue.
Since:
  • 2.0
Example
RedoRemoveAction(), removes all actions from the Redo queue
  RedoRemoveAction("*Event"), removes all "*Event" actions, such as AddEvent, RemoveEvent, UpdateEvent or MoveEvent, from the Redo queue
  RedoRemoveAction("AddEvent"), removes the first "AddEvent" Redo action from the Redo queue
RedoRemoveAction

Refresh()

The Refresh() method forces the control to redraw and update its layout without modifying any of its properties or data. It is typically used when the visual appearance needs to be recalculated or repainted, even though no structural or state changes were made.

For example, call Refresh() when:

  • The control's container has been resized and the layout must be recalculated.
  • External CSS or styling changes affect the control's appearance.
  • The control becomes visible after being hidden.
  • You need to ensure the UI is visually synchronized with its current internal state.

The method does not alter the control's data, options, or configuration - it only updates the rendered output.

Example
oSchedule.Refresh(), refreshes the control
Refresh

RemoveScheduleView(name)

The RemoveScheduleView() method removes the view already created by the <AddScheduleView() method. The control supports multiple schedule-views, and each view can be used to display different sets of events or the same events in different ways. For instance, you can create one view to display the events in a daily layout and another view to display the events in a weekly layout. Each schedule-view is hosted within its own window, allowing you to customize the layout and appearance of each view independently. The control's default schedule-view is named "schedule", and it is created by default when the control is initialized. You can create additional views with unique names using the AddScheduleView() method, and manage their visibility and content as needed. The RemoveScheduleView() method removes a schedule-view already created by AddScheduleView() method.
Parameters:
Name Type Description
name string defines the name of the schedule-view to be removed. The "schedule" defines the control's default-schedule view, and it can not be removed.
Example
oSchedule.RemoveScheduleView("2nd"), removes the schedule-view named "2nd"
RemoveScheduleView

RemoveSelection() → {number}

The RemoveSelection() method deletes the selected-events. The UnselectAll() method clears the control's selection. The Selection property defines the control's selection. The SelectEventStyle property specifies how the selected event is displayed. The Event.Selected property indicates whether the event is selected or not. The Event.Selectable property indicates whether the event can be selected or not. The onselchange event notifies that the control's selection has been changed.
Returns:
Returns the number of the events being deleted
Type
number
Example
oSchedule.RemoveSelection(), deletes the selected-events
RemoveSelection

ScheduleView(name) → {SV}

The ScheduleView() method gets the schedule-view by name (which was previously created by the AddScheduleView()> method). The control supports multiple schedule-views, and each view can be used to display different sets of events or the same events in different ways. For instance, you can create one view to display the events in a daily layout and another view to display the events in a weekly layout. Each schedule-view is hosted within its own window, allowing you to customize the layout and appearance of each view independently. The control's default schedule-view is named "schedule", and it is created by default when the control is initialized. You can create additional views with unique names using the AddScheduleView() method, and manage their visibility and content as needed. The RemoveScheduleView() method removes a schedule-view already created by AddScheduleView() method.
Parameters:
Name Type Description
name string defines the name of the schedule-view to request ("schedule" defines the control's default-schedule view).
Returns:
Returns null or the an object of SV type associated with the name
Type
SV
Example
oSchedule.ScheduleView("2nd") {SV}, gets the schedule-view named "2nd" as an object of SV type
ScheduleView

SelectAll(toSelect)

The SelectAll(toSelect) method selects all events within the control. The Selection property defines the control's selection. The SelectEventStyle property specifies how the selected event is displayed. The Event.Selected property indicates whether the event is selected or not. The Event.Selectable property indicates whether the event can be selected or not. The onselchange event notifies that the control's selection has been changed.
Parameters:
Name Type Description
toSelect any Specifies the events to select within the control as one of the following values:
  • null {null}, unselects any event within the control
  • undefined or "all" {string}, selects all events within the control
  • "vis" {string}, selects just the visible-events within the control (only the events that fit the current view)
Example
oSchedule.SelectAll("vis"), selects the visible events only
SelectAll

Smooth(callback, thisArg, oSmoothOptsopt, thisArg)

The Smooth() method makes the control transition smoothly from the current layout to a new layout. In short, it applies a gradual, animated change to the layout generated by the callback, instead of switching instantly. The smooth-transition goes from the current layout to the new layout generated by the callback. The smooth field defines the time in ms the control goes from one layout to another. The BeginUpdate/EndUpdate() methods are not required to be called when you use the Update() or Smooth() methods, because the methods already maintain performance while performing multiple changes to the control.
Parameters:
Name Type Attributes Description
callback callback Indicates a callback function that generates the new layout for the control ( such as removing or adding new events to the control). The callback is provided with no arguments.
thisArg any Specifies the value of this keyword for callback functions. If missing, the SV object reference is used instead.
oSmoothOpts object <optional>
Indicates an object of {cbkR,cbkI,cbkT} type that defines callback to invoke when Smooth operation begins, progress and ends as explained below:
  • cbkR {callback}, specifies a function of callback(oSmooth) type that's invoked while Smooth progressively runs
  • cbkI {callback}, specifies a function of callback(oSmooth) type that's invoked once the Smooth operation begins
  • cbkT {callback}, specifies a function of callback(oSmooth) type that's invoked once the Smooth operation ends
The oSmooth's parameter of cbkI, cbkR or cbkT callbacks is undefined while no animated-smooth, else it includes the following:
  • oW {exontrol.W}, indicates the current window as an object of exontrol.W
  • oZ {exontrol.WS}, holds the current visible-windows as an object of exontrol.WS([exontrol.W => [x,y,width,height]]) type (before apply the callback)
  • oNewZ {exontrol.WS}, holds the new visible-windows as an object of exontrol.WS([exontrol.W => [x,y,width,height]]) type (after callback has been applied)
  • rgWFT {object}, holds a collection of changes within windows as an object of exontrol.M1([exontrol.W => {from: [x,y,width,height], to: [x,y,width,height]}]) type
  • oWRend {exontrol.W}, indicates the window being rendered during the "Smooth" animation. For instance, if no UI window has been affected, invalidates the current window only, else renders the entire-canvas
  • progress {number}, specifies the state of the "Smooth" animation as a value between 0 and 1 (used by oSmooth.oNewZ.cbkget to define the ratio of window's UI rectange from/to)
Additionally, the oSmooth parameter includes the following:
  • mV2FT {map}, specifies a map of [view => {"events":{from,to,stkFT},"scroll":{f(rom),t(o)},...}] type that holds the from/to visible-objects for each part of each view
  • cbkHI {callback}, defines the rectangle a hidden-object should go to
thisArg any defines the value of "this" keyword during cbkI, cbkR or cbkT callbacks.
Example
The following sample demonstrates how to use the Smooth() method to perform a smooth transition, such as when adding or removing elements from the control:

 oSchedule.Smooth(function()
 {
  ...
 });
Smooth

Soom(zoomTo, oPointAbsopt)

The Soom() method zooms or/and scrolls the control's content. The Soom() method can be used to smoothly zoom in or out of the control's content and scroll to a specific point within the content. This method is particularly useful for providing a better user experience when navigating through large or detailed content, allowing users to focus on specific areas while maintaining context. The zoomTo parameter specifies the target zoom factor, while the oPointAbs parameter determine the point to scroll into view. By using the Soom() method, developers can create interactive and dynamic interfaces that enhance user engagement with the control's content. The Home() method can be used to reset the view to the default state, showing the entire content at its original size and position, while the FitToClient() method ensures that the entire (null/undefined) or given layout fits the control's client area.
Parameters:
Name Type Attributes Description
zoomTo number Indicates a numeric value that defines the target-zoom factor as a value between 10 and 1000 (no zoom if null or undefined).
oPointAbs object <optional>
Specifies an object of {x,y} or array as [x,y] type that specifies the absolute-coordinates of the point to scroll into the client.
Example
oSchedule.Soom(100, [0,0]), zooms to 100% and brings the origin (0,0) at its original position (Home)
Soom

StartBlockUndoRedo()

The StartBlockUndoRedo() method begins recording all subsequent Undo/Redo operations into a single block until EndBlockUndoRedo() is called. This allows multiple Undo/Redo actions to be grouped as one. The BlockUndoRedo() method records the Undo/Redo operations as a block. The AllowUndoRedo property enables or disables Undo/Redo functionality. These features let you undo or redo single or multiple UI actions, but actions must be reversed in the order they were performed - skipping is not allowed. All undo/redo actions are recorded in the control's Undo/Redo queue, which can be limited using the UndoRedoQueueLength property. The Undo() method reverses the last action or a sequence of actions, while Redo() reapplies the last undone action. For example, if an event was moved, Undo() returns it to its previous position.
Since:
  • 2.0
Example
oSchedule.StartBlockUndoRedo()
   ...
 oSchedule.EndBlockUndoRedo()
StartBlockUndoRedo

Undo()

The Undo() method reverses the last action or a sequence of actions, while Redo() reapplies the last undone action. For example, if an event was moved, Undo() restores it to its previous position. Undo and Redo let you remove or repeat single or multiple UI actions, but all actions must be undone or redone in the order they occurred - skipping actions is not allowed. Actions are recorded in the control's Undo/Redo queue, which can be limited using the UndoRedoQueueLength property. The AllowUndoRedo property enables or disables Undo/Redo functionality. You can press Ctrl+Z to undo an action, and Ctrl+Y to redo an action that was undone.
Since:
  • 2.0
Example
oSchedule.Undo(), undoes the last control operation
Undo

UndoListAction(actionopt, countopt) → {string}

The UndoListAction() method retrieves the actions currently available to undo. Similarly, RedoListAction() returns the actions available to redo. Both methods accept an optional action parameter to filter actions using a mask pattern. The Undo() method reverses the last action or a sequence of actions, while Redo() reapplies the last undone action.
Parameters:
Name Type Attributes Description
action string <optional>
Specifies null(to list all Undo actions) or the mask-pattern to match the action to list. Space sparates multiple mask-pattern.

The mask-pattern supports wild characters as explained:

  • * (Any), masks any combination of characters
  • ? (Alphabetic), masks a letter such as [a-z] or [A-Z]
  • # (Digit), masks a digit character, [0-9]
  • [...] (Alternative), masks any characters that are contained in the [] brackets. For instance, the [abcA-C] mask
count number <optional>
Indicates the number of Undo actions to list (if missing all Undo actions are listed).
Since:
  • 2.0
Returns:
Returns the list of Undo actions that can be performed
Type
string
Example
oSchedule.UndoListAction(), lists all Undo actions that can be executed
  oSchedule.UndoListAction("*Event"), lists all "*Event" Undo actions that can be executed, such as AddEvent, RemoveEvent, UpdateEvent or MoveEvent.
  oSchedule.UndoListAction("AddEvent",1), lists first "AddEvent" Undo actions that can be executed
UndoListAction

UndoRemoveAction(actionopt, countopt)

The UndoRemoveAction() method removes the last actions from the Undo queue. Similarly, RedoRemoveAction() removes the last actions from the Redo queue. Both methods accept an optional action parameter to filter actions using a mask pattern. The Undo() method reverses the last action or a sequence of actions, while Redo() reapplies the last undone action. You can press Ctrl+Z to undo an action, and Ctrl+Y to redo an action that was undone.
Parameters:
Name Type Attributes Description
action string <optional>
Specifies null(to remove all Undo actions) or the mask-pattern to match the action to remove. Space sparates multiple mask-pattern. The mask-pattern supports wild characters as explained:
  • * (Any), masks any combination of characters
  • ? (Alphabetic), masks a letter such as [a-z] or [A-Z]
  • # (Digit), masks a digit character, [0-9]
  • [...] (Alternative), masks any characters that are contained in the [] brackets. For instance, the [abcA-C] mask
count number <optional>
Indicates the number of actions to remove (if missing all actions are removed) from the Undo queue.
Since:
  • 2.0
Example
UndoRemoveAction(), removes all actions from the Undo queue
  UndoRemoveAction("*Event"), removes all "*Event" actions, such as AddEvent, RemoveEvent, UpdateEvent or MoveEvent, from the Undo queue
  UndoRemoveAction("AddEvent"), removes the first "AddEvent" Undo action from the Undo queue
UndoRemoveAction

UnselectAll()

The UnselectAll() method clears the control's selection. The Selection property defines the control's selection. The SelectEventStyle property specifies how the selected event is displayed. The Event.Selected property indicates whether the event is selected or not. The Event.Selectable property indicates whether the event can be selected or not. The onselchange event notifies that the control's selection has been changed.
Example
The following statements are equivalents:

 oSchedule.UnselectAll(), clears the control's selection
 oSchedule.SelectAll(null), clears the control's selection

where oSchedule is an object of Schedule type
UnselectAll

Update(callback, thisArgopt)

The Update() method locks the control's paint during the callback, and invalidates the control once the method ends. The BeginUpdate/EndUpdate() methods are not required to be called when you use the Update() or Smooth() methods, because the methods already maintain performance while performing multiple changes to the control. The BeginUpdate/EndUpdate() methods are not required to be called when you use the Update() or Smooth() methods, because the methods already maintain performance while performing multiple changes to the control.
Parameters:
Name Type Attributes Description
callback callback Indicates a callback to perform changes within the control.
thisArg any <optional>
Specifies the value of "this" keyword during the callback. If missing/empty/undefined the thisArg points to the control itself, as an object of Schedule type.
Example
oSchedule.Update(function()
{
 // performs multiple changes to the control
});
Update

feE(callback, thisArgopt)

The feE() method (short for forEachEvent) invokes the callback for each event of the control (enumerates the events, as they were added). The feE() method is useful when you want to perform an action for each event of the control, such as display the caption of each event, or change the color of all events. The feEU() method invokes the callback for each event of the control, until the callback returns a truthy value (enumerates the events, as they were added). The Events.Item and Events.Count properties can be used also to enumerate the events, but the feE() and feEU() methods are more convenient and efficient.
Parameters:
Name Type Attributes Description
callback callback A function of callback(oEvent) type that's called for every event, where oEvent is:
  • oEvent {Event}, specifies an event of Event type
thisArg any <optional>
Indicates the value of "this" keyword during the callback. If missing/empty/undefined the thisArg points to the control itself, as an object of Schedule type.
Example
The following sample displays the start date-time of each event of the control:

oSchedule.feE(function(oEvent)
{
   console.log(oEvent.Start)
})
feE

feEU(callback, thisArgopt) → {any}

The feEU() method (short for forEachEventUntil) invokes the callback for each event of the control, until the callback returns a truthy value (enumerates the events, as they were added). The feEU() method is useful when you want to perform an action for each event of the control, such as display the caption of each event, or change the color of all events, until a specific event is reached. The Events.Item and Events.Count properties can be used also to enumerate the events, but the feE() and feEU() methods are more convenient and efficient.
Parameters:
Name Type Attributes Description
callback callback A function of callback(oEvent) {any} type that's called for every event, where oEvent is
  • oEvent {Event}, specifies an event of Event type
thisArg any <optional>
Indicates the value of "this" keyword during the callback. If missing/empty/undefined the thisArg points to the control itself, as an object of Schedule type.
Returns:
Returns the last-value of the callback
Type
any
Example
The following sample displays the start date-time of first non-repetitive event of the control:

console.log(oSchedule.feEU(function(oEvent)
{
   return !oEvent.isRepetitive() && oEvent.Start || "";
}))
feEU

off(event, listener, methodopt)

The off() method removes a previously bound handler from a specified event, allowing you to stop listening for that event and prevent the associated actions from being executed. Also removes keyboard shortcuts previously defined using the on() method. The event name is case-insensitive and may or may not include the 'on' prefix. For example, 'click' is equivalent to 'onclick' and vice versa. If the event parameter is missing/empty/undefined, all event handlers are removed from the control. If the listener parameter is missing/empty/undefined, all handlers of the specified event are removed. If the method parameter is missing/empty/undefined, the listener[type]() function is used to compare and remove the handler(s).
Parameters:
Name Type Attributes Description
event string Indicates the event to unbind, which can either be:
  • event {string}, the name of the event to unbind. The event name is case-insensitive and may or may not include the 'on' prefix. For example, 'click' is equivalent to 'onclick' and vice versa.
  • event {string}, a string that encloses a shortcut in {}, such as "{Ctrl + A}", to unbind the keyboard shortcut
listener object | callback Defines the listener to remove, which can either be:
  • listener {callback}, a JavaScript callback function that was previously bound to the event (the method parameter has no effect)
  • listener {object}, an object that implements a notification method (e.g., listener[method](oEvent) or listener[type](oEvent)) that was previously used to handle the event
method string <optional>
Defines an optional case-sensitive string specifying the method on the listener to remove. If not provided, the listener[type]() function is used. This parameter is ignored when the listener is a JavaScript callback function.
Since:
  • 4.4
Example
The following example removes the click event handler from the control:

oSchedule.off("click");

where oSchedule is an object of Schedule type.

This sample is equivalent to:

oSchedule.Listeners.Remove("onclick");

The following example removes all event handlers from the control:

oSchedule.off();

where oSchedule is an object of Schedule type.

This sample is equivalent to:

oSchedule.Listeners.Clear();

or

oSchedule.Listeners.Remove();
off

on(event, listener, methodopt) → {object}

The on() method adds an event listener to the specified event or defines a keyboard shortcut. The on() method enables you to listen for events and execute custom code when those events occur, or to define keyboard shortcuts that trigger specific actions within the component. You can use the on() method to enhance the interactivity and functionality of your application by responding to user actions or keyboard inputs. Use the off() method to remove previously bound event handlers or keyboard shortcuts.
Parameters:
Name Type Attributes Description
event string Specifies the event to listen for or a keyboard shortcut, in one of the following forms:
  • If the value is in the "{shortcut}" form (for example, "{Ctrl + A}"), it defines a keyboard shortcut. The callback is triggered when that key combination is pressed. To provide keyboard support for the component, the <canvas> element that hosts it needs to be focusable. To achieve this, you must include the tabIndex attribute in the canvas HTML tag (for example, <canvas tabIndex="0"></canvas>).

    See Shortcuts for more information. (for example, on("{Ctrl + A}", callback)). The shortcut-feature for on/off methods is supported from version 5.0.

  • Otherwise, the value is treated as a standard event name (for example, "click"), and the callback is invoked when that event occurs on the component. The event name is case-insensitive and may or may not include the 'on' prefix. For example, 'click' is equivalent to 'onclick' and vice versa.

    See Listeners for more information. (for example, on("click", callback)).

listener object | callback Defines the listener to add, which can either be:
  • listener {callback}, a JavaScript callback function to handle the event directly (the method parameter has not effect)
  • listener {object}, an object that implements a notification method (e.g., listener[method](oEvent) or listener[type](oEvent)) to handle the event when it occurs
method string <optional>
Defines an optional case-sensitive string specifying the method on the listener to handle the event. If not provided, the listener[type]() function is used. This parameter is ignored when the listener is a JavaScript callback function.
Since:
  • 4.4
Returns:
Returns the listeners of the specified type, as an exontrol.Arr({callback, thisArg, lock, name, equal}) type, which includes the following new members:
  • type {string}, specifies a case-sensitive string that specifies the type of event to listen for
  • do(event) {callback}, indicates a function that can be invoked to trigger the specified event for all listeners registered for that event type
where:
  • callback {callback}, defines the listener's callback function
  • thisArg {any}, defines the value of this during the listener's callback execution
  • lock {number}, locks or unlocks the invocation of the listener's callback
  • name {string}, defines the name of the callback, mostly used for debugging purposes
  • equal(oCompareListenerCallback) {callback}, indicates a function of callback(oCompareListenerCallback) {boolean} type compares the current object with the provided object. It returns true if the objects contain the same data
Type
object
Example
The following example logs event details when the control is clicked:

oSchedule.on("click", function(oEvent)
{
  console.log(oEvent);
});

where oSchedule is an object of Schedule type.

This sample is quivalent of 

oSchedule.Listeners.Add("onclick", function (oEvent)
{
  console.log(oEvent);
});
on

Events

onaddevent

The onaddevent event occurs once a new event has been added to the Events collection. The event is triggered when an event is added, either programmatically or through drag-and-drop. The Events.Add() method creates and adds a new event into the control. The onaddevent event allows you to execute custom code in response to the addition of a new event, such as updating the user interface, performing calculations, or triggering other actions based on the new event's properties. The event is triggered after the new event has been successfully added to the Events collection, and it provides an object of Event type as a parameter, which contains information about the newly added event. The event is triggered if event is added by code or by drag-and-drop.
Parameters:
Name Type Description
oEvent Event Indicates an object of Event type being added.
Example
The following samples display the event being added:

 oSchedule.on("addevent", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.Listeners.Add("onaddevent", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.onaddevent = function (oEvent)
 {
  console.log(oEvent);
 }

where oSchedule is an object of Schedule type
onaddevent

oncalselchange

The oncalselchange event notifies that the calendar's selection has been changed (dates). The Calendar property of the control provides a reference to the calendar object, which can be used to access the selected dates and other calendar-related information. The event handler for oncalselchange receives an event object that contains details about the selection change, including the selected dates. You can use this event to perform actions based on the user's selection, such as updating other parts of the UI or fetching related data. The onselchange event is triggered whenever there is a change in the selection of events within the schedule view, allowing you to respond to user interactions effectively.
Parameters:
Name Type Description
oEvent object holds the control's selection, as explained:
  • oEvent {null}, indicates that the calendar has no selected dates
  • oEvent {Event}, indicates an object of Event type that defines the calendar's single-event selected
  • oEvent {array}, specifies an array of [Event] type that holds all selected events within the calendar
Example
The following samples display the calendar's selection once it changes:

 oSchedule.on("calselchange", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.Listeners.Add("oncalselchange", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.Calendar.on("selchange", function(oEvent)
 {
  console.log(exontrol.ToString.Quote(oEvent));
 })

or

 oSchedule.oncalselchange = function (oEvent)
 {
  console.log(oEvent);
 }

where oSchedule is an object of Schedule type
oncalselchange

onremoveevent

The onremoveevent event occurs once an event has been removed from the Events collection. The event is triggered when an event is removed, either programmatically or through drag-and-drop. The Events.Remove() method removes an event from the control. The onremoveevent event allows you to execute custom code in response to the removal of an event, such as updating the user interface, performing calculations, or triggering other actions based on the removed event's properties. The event is triggered after the event has been successfully removed from the Events collection, and it provides an object of Event type as a parameter, which contains information about the removed event. The event is triggered if event is removed by code or by drag-and-drop.
Parameters:
Name Type Description
oEvent Event Indicates an object of Event type being removed.
Example
The following samples display the event being removed:

 oSchedule.on("removeevent", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.Listeners.Add("onremoveevent", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.onremoveevent = function (oEvent)
 {
  console.log(oEvent);
 }

where oSchedule is an object of Schedule type
onremoveevent

onselchange

The onselchange event notifies that the control's selection has been changed (events). The Selection property defines the control's current selection, while the SingleSel property specifies whether the control supports single, multiple, or toggle selection. The Selection property allows you to specify which events are selected, using values such as event indices, keys, references, or arrays of these. The Event.Selected property indicates whether an event is currently selected, and the Event.Selectable property specifies whether an event can be selected. This event is not triggered when the user changes the selection in the calendar panel (such as clicking a date), so to handle that action, use the oncalselchange event or Calendar.on("selchange") event as shown in the example below.
Parameters:
Name Type Description
oEvent object holds the control's selection, as explained:
  • oEvent {null}, indicates that the control has no selected events
  • oEvent {Event}, indicates an object of Event type that defines the control's single-event selected
  • oEvent {array}, specifies an array of [Event] type that holds all selected events within the control
Example
The following samples display the control's selection once it changes:

 oSchedule.on("selchange", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.Listeners.Add("onselchange", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.onselchange = function (oEvent)
 {
  console.log(oEvent);
 }

The following sample displays the selected date in the calendar panel once the user clicks a date (changes the selection in the calendar panel):

 oSchedule.on("calselchange", function (oEvent)
 {
  console.log(oEvent);
 })

or

 oSchedule.Calendar.on("selchange", function(oEvent)
 {
  console.log(exontrol.ToString.Quote(oEvent));
 })

where oSchedule is an object of Schedule type
onselchange