Gantt Timeline and Zoom
The Gantt timeline can be configured at two levels:
zoomPresetfor fast setup with built-in levels.zoomfor full control over levels, wheel behavior, and anchor strategy.
Quick Start with zoomPreset
Section titled “Quick Start with zoomPreset”Use a built-in preset when you only need a standard timeline scale:
grid.gantt = { // ...required project fields zoomPreset: 'week-month',};Supported presets:
'minute-hour'(15-minute ticks grouped by hour)'hour-day'(hour ticks grouped by day)'day-week''week-month''month-quarter''quarter-year''year-quarter''multi-year-quarter'
By default, the interactive zoom ladder starts at day-week and excludes the intraday presets for performance. Use zoomPreset: 'hour-day', zoomPreset: 'minute-hour', or explicit zoom.levels when an intraday timeline is required.
Time Modes
Section titled “Time Modes”Gantt timeline modes are defined by tickUnit + headerRows in each zoom level.
minute-hour: 15-minute timeline resolution for intraday planning windows.hour-day: hourly timeline resolution grouped under day headers.day-week: daily planning view.week-month: weekly planning view.month-quarter: monthly planning view.quarter-year,year-quarter,multi-year-quarter: portfolio and long-range views.
Recommended usage pattern:
- Opt into
minute-hourfor short execution windows and handoffs. - Opt into
hour-dayfor same-day and next-day coordination. - Use
day-weekor coarser for baseline and milestone planning.
Full Zoom Configuration
Section titled “Full Zoom Configuration”Use zoom when you need custom levels, min/max bounds, locale, or wheel interaction rules.
grid.gantt = { // ...required project fields zoomPreset: 'week-month', zoom: { enabled: true, defaultLevelId: 'hour-day', minLevelId: 'minute-hour', maxLevelId: 'quarter-year', locale: 'en-US', zoomAnchorMode: 'pointer', wheelZoomEnabled: true, wheelZoomTrigger: 'ctrlKey', wheelZoomMode: 'discrete', invertWheelDirection: false, },};Custom Zoom Levels
Section titled “Custom Zoom Levels”You can define your own zoom.levels list from finest to coarsest.
grid.gantt = { // ...required project fields zoom: { levels: [ { id: 'minute-hour', label: '15 Min / Hour', tickUnit: 'minute', tickCount: 15, tickWidth: 44, headerRows: [ { id: 'day', unit: 'day' }, { id: 'hour', unit: 'hour' }, { id: 'minute', unit: 'minute', count: 15 }, ], }, { id: 'hour-day', label: 'Hour / Day', tickUnit: 'hour', tickWidth: 52, headerRows: [ { id: 'day', unit: 'day' }, { id: 'hour', unit: 'hour' }, ], }, { id: 'day-week', label: 'Day / Week', tickUnit: 'day', tickWidth: 56, headerRows: [ { id: 'week', unit: 'week' }, { id: 'day', unit: 'day' }, ], }, { id: 'week-month', label: 'Week / Month', tickUnit: 'week', tickWidth: 84, headerRows: [ { id: 'month', unit: 'month' }, { id: 'week', unit: 'week' }, ], }, { id: 'month-quarter', label: 'Month / Quarter', tickUnit: 'month', tickWidth: 120, headerRows: [ { id: 'year', unit: 'year' }, { id: 'month', unit: 'month' }, ], }, ], defaultLevelId: 'hour-day', },};Wheel Zoom Options
Section titled “Wheel Zoom Options”Control whether users can zoom with the mouse wheel and which modifier key is required.
grid.gantt = { // ...required project fields zoom: { wheelZoomEnabled: true, wheelZoomTrigger: 'metaKey', // macOS Cmd key wheelZoomMode: 'smooth-discrete', invertWheelDirection: false, },};Available wheelZoomTrigger values:
'ctrlKey''metaKey''altKey''shiftKey''none'
Anchor Behavior During Zoom
Section titled “Anchor Behavior During Zoom”zoomAnchorMode controls which point in the viewport stays stable when switching levels:
'pointer': keeps the date under the mouse pointer fixed.'center': keeps the center date fixed.'start': keeps the left edge date fixed.
grid.gantt = { // ...required project fields zoom: { zoomAnchorMode: 'center', },};Timeline Overlays
Section titled “Timeline Overlays”Timeline visuals are configured in visuals.
grid.gantt = { // ...required project fields visuals: { projectLineDate: '2026-04-06', timeRanges: [ { id: 'sprint-1', startDate: '2026-04-06', endDate: '2026-04-17', label: 'Sprint 1', color: '#5B8DEF', }, { id: 'freeze', startDate: '2026-05-18', endDate: '2026-05-22', label: 'Code Freeze', color: '#F59E0B', }, ], shadeNonWorkingTime: true, },};