The JavaScript Scheduler component's timeline is very flexible, and it supports a range of slot sizes, from minutes to years. It offers multiple built-in scale units, and you also have the option to build the timeline manually by specifying individual cells.
The timeline can be non-linear (using different slot durations), and non-continuous (allowing you to skip selected time slots, such as non-business hours or days).
Read more about the scheduler scale [doc.daypilot.org].
The following Scheduler configuration sets the timeline slot size to one hour:
{ scale: "Hour", }
In the following example, the Scheduler is configured to display slots each representing one day:
{ scale: "Day", }
This Scheduler timeline uses one week as the basic time unit:
{ scale: "Week", }
This timeline a uses slot size of one month:
{ scale: "Month", }
The longest built-in slot duration is one year:
{ scale: "Year", }
To use a timeline with slot sizes smaller than one hour, or to generate a non-standard slot size, you can define the slot size by specifying a custom number of minutes.
This example configures the Scheduler to use 15-minute slots:
{ scale: "CellDuration", cellDuration: 15, }
You can hide non-business hours and days (e.g. weekends) from the timeline.
{ showNonBusiness: false, businessBeginsHour: 6, businessEndsHour: 18, }
You can customize the timeline further by hiding custom time cells using the onIncludeTimeCell event handler:
{ // ... onIncludeTimeCell: (args) => { if (args.cell.start.getHours() === 13) { // lunch break args.cell.visible = false; } }, }
Read more about hiding non-business hours [doc.daypilot.org].
The timeline doesn’t have to be linear, allowing for flexibility in display options. For instance, days of the current month can be displayed using a one-day-per-cell scale, while the following months can be displayed using a one-month-per-cell scale.
Read more about using a custom timeline [doc.daypilot.org].
You can configure the Scheduler time headers by specifying the header rows, their scale units (day, week, month, etc.), and date/time format.
{ timeHeaders = [ {groupBy: 'Month'}, {groupBy: 'Week'}, {groupBy: 'Day', format: "d"} ], }
Read more about time header rows and groups [doc.daypilot.org].
You can customize the individual time header cells using the onBeforeTimeHeaderRender event handler. This allows you to use custom text/HTML in the time header, change the appearance using CSS, and add icons or action buttons.
{ onBeforeTimeHeaderRender: (args) => { if (args.header.start.getDayOfWeek() === 6) { args.header.html = "Sat"; } }, }
Read more about time header customization [doc.daypilot.org].