Loading...
Loading...
Implement, configure, and customize the Syncfusion React Gantt Chart component. Use this when building project scheduling applications with task timelines, dependencies, and resource management. Covers GanttComponent setup, task constraints, taskbar customization, filtering, sorting, Excel/PDF export, critical path analysis, milestones, predecessors, resource view, and baseline tracking.
npx skill4agent add syncfusion/react-ui-components-skills syncfusion-react-gantt-chartGanttComponentGanttComponenttaskFieldsgridLines'Both''Horizontal''Vertical''None'DataManagertaskFieldsurlbatchUrlQuery.addParams()loadAjaxloadChildOnDemand={false}hasChildMappingactionFailuretaskModetaskFields.dependency"2FS""2FS+3d""2SS+2h""2FS,3FS""2FS+3h""2FS-1d"addPredecessorremovePredecessorupdatePredecessorconnectorLineWidthconnectorLineBackgroundautoUpdatePredecessorOffset={true}autoUpdatePredecessorOffset={false}updateOffsetOnTaskbarEdit={true}updateOffsetOnTaskbarEdit={false}actionBeginrequestType === 'validateLinkedTask'respectLink={true}removeLink={true}preserveLinkWithEditing={true}allowParentDependency={true}false.e-gantt-dependency-view-containerenablePredecessorValidation={false}taskFields.constraintTypetaskFields.constraintDatetaskModetimelineViewModeHourDayWeekMonthYearunitformatcountformatterformattertimelineUnitSizeweekStartDayhighlightWeekends={true}zoomIn()zoomOut()fitToProject()ColumnsDirectivevalueAccessorvalueAccessorrowDataBoundtreeColumnIndexqueryCellInfocollapseAllParentTaskstaskFields.expandStatelocalStorageenableWBSenableAutoWbsUpdatetaskFields.wbsPredecessorheaderTemplatetreeGrid.textWrapSettings.wrapModegetColumnByFieldrefreshHeadereditTemplatefrozenColumnsFreezeallowResizingResizeminWidthmaxWidthallowResizing={false}resizeSettings.modereorderColumnsrefreshColumnsresizeStartresizingresizeStopallowReorderingReorderallowReordering={false}reorderColumnsreorderColumnByIndexreorderColumnByTargetIndexcolumnDragStartcolumnDragcolumnDropshowColumnMenuColumnMenucolumnMenuClickshowColumnMenu={false}queryCellInfoQueryCellInfoEventArgsrowSpancolSpancelldatacolumncolSpanrowSpanrowDataBoundaddRecord()mode: 'Dialog'mode: 'Auto'deleteRow()showDeleteConfirmDialogtaskFields.segmentssplitTask()mergeTask()editTypestringeditnumericeditdatepickereditdatetimepickereditdropdowneditbooleaneditedit.paramsaddDialogFieldseditDialogFieldsUrlAdaptorurlbatchUrladdedchangeddeletedvalidationRulesColumnDirectiverequiredminmaxminLengthdateregex[fn, 'message']allowFiltering={true}FilterParentChildBothNonesearchSettingsfieldsoperatorignoreCasefilterSettings.columnsfilterByColumn()clearFiltering()sortSettingsselectRowselectCellresourcestaskFields.resourceInfoviewType='ResourceView'enableMultiTaskbar={true}showOverAllocatedTasks={true}resourceFields.unitresourceFields.groupqueryTaskbarInfoAddEditDeleteUpdateCancelSearchExpandAllCollapseAllIndentOutdentZoomInZoomOutZoomToFitCriticalPathExcelExportCsvExportPdfExportColumnChooserUndoRedoSplitTaskMergeTaskUndoRedoUndoRedoSplitTaskEditItemModeltoolbarClickSplitTaskMergeTaskConvertDeleteDependencycontextMenuClickcontextMenuOpenargs.hideItemsholidaysHolidayModelDayMarkersworkWeekincludeWeekenddayWorkingTimetaskFields.workworkUnittimezonesplitterSettings.positionsplitterSettings.columnIndexsplitterSettings.viewsetSplitterPosition()splitterResizeStartsplitterResizingsplitterResizedwidthheightwidth='100%'height='100%'scrollToDate('MM/dd/yyyy')ganttChartModule.scrollObject.setScrollTop(px)enableVirtualization={true}VirtualScrollenableTimelineVirtualization={true}projectStartDateprojectEndDatetreeGrid.filterModule.filteredResultenableUndoRedoUndoRedoundoRedoActionsundoRedoStepsCount'Undo''Redo'Ctrl+ZCtrl+Yundo()redo()enablePersistence={true}ididenableImmutableMode={true}isPrimaryKey={true}loadingIndicator.indicatorType'Spinner''Shimmer'showSpinner()hideSpinner()localeL10n.load()'gantt'enableRtl={true}format='yMd'format='dd/MM/yyyy'format='C2'format='N2'format='P0'autoFitColumns()cancelEdit()openAddDialog()openEditDialog()deleteRecord()convertToMilestone()changeTaskMode()updateRecordByID()updateRecordByIndex()updateTaskId()updateDataSource()updateProjectDates()enableItems()expandByIndex()collapseByIndex()clearUndoCollection()clearRedoCollection()getUndoActions()getRedoActions()getCurrentViewData()getRecordByID()getTaskByUniqueID()getTaskInfo()getTaskbarHeight()getExpandedRecords()getGanttColumns()getGridColumns()getDurationString()getWorkString()getRowByID()getRowByIndex()removeSortColumn()selectCells()reorderRows()scrollToTask()updateChartScrollOffset()loadcreateddataBoundactionBeginactionCompleterequestTypetaskbarEditingtaskbarEditedtaskbarClickexpandingcollapsingexpandedcollapsedrowSelectedrowDeselectedcellSelectedcellDeselectedexcelExportCompletepdfExportCompleteresizeStartresizingresizeStopcolumnDragStartcolumnDragcolumnDropargs.cancel = trueimport * as React from 'react';
import { GanttComponent, ColumnsDirective, ColumnDirective, Inject, Edit, Toolbar, Selection } from '@syncfusion/ej2-react-gantt';
import { TaskFieldsModel, EditSettingsModel } from '@syncfusion/ej2-gantt';
// In App.css:
// @import "../node_modules/@syncfusion/ej2-gantt/styles/tailwind3.css";
// (plus base, buttons, calendars, dropdowns, grids, inputs, layouts,
// lists, navigations, notifications, popups, richtexteditor, treegrid)
const data = [
{
TaskID: 1, TaskName: 'Project Initiation',
StartDate: new Date('04/02/2024'), EndDate: new Date('04/21/2024'),
subtasks: [
{ TaskID: 2, TaskName: 'Identify Site Location', StartDate: new Date('04/02/2024'), Duration: 4, Progress: 50 },
{ TaskID: 3, TaskName: 'Perform Soil Test', StartDate: new Date('04/02/2024'), Duration: 4, Progress: 50, Predecessor: '2' },
{ TaskID: 4, TaskName: 'Soil Test Approval', StartDate: new Date('04/08/2024'), Duration: 0, Predecessor: '3FS', Progress: 50 },
]
}
];
const taskFields: TaskFieldsModel = {
id: 'TaskID',
name: 'TaskName',
startDate: 'StartDate',
endDate: 'EndDate',
duration: 'Duration',
progress: 'Progress',
dependency: 'Predecessor',
child: 'subtasks',
};
const editSettings: EditSettingsModel = { allowEditing: true, allowAdding: true, allowDeleting: true, allowTaskbarEditing: true };
function App() {
return (
<GanttComponent
dataSource={data}
taskFields={taskFields}
editSettings={editSettings}
toolbar={['Add', 'Edit', 'Delete', 'Cancel', 'Update', 'Search', 'ZoomIn', 'ZoomOut', 'ZoomToFit']}
height="450px"
>
<ColumnsDirective>
<ColumnDirective field="TaskID" width="80" />
<ColumnDirective field="TaskName" headerText="Task Name" width="250" />
<ColumnDirective field="StartDate" />
<ColumnDirective field="Duration" />
<ColumnDirective field="Progress" />
</ColumnsDirective>
<Inject services={[Edit, Toolbar, Selection]} />
</GanttComponent>
);
}
export default App;<GanttComponent
editSettings={{ allowEditing: true, mode: 'Dialog' }}
>
<Inject services={[Edit]} />
</GanttComponent><GanttComponent
editSettings={{ allowEditing: true, mode: 'Auto' }}
>
<Inject services={[Edit]} />
</GanttComponent>const ganttRef = React.useRef<GanttComponent>(null);
const addTask = () => {
ganttRef.current?.addRecord({ TaskID: 10, TaskName: 'New Task', Duration: 3 }, 'Below', 1);
};<GanttComponent toolbar={['ExcelExport']} allowExcelExport={true}>
<Inject services={[ExcelExport, Toolbar]} />
</GanttComponent><GanttComponent toolbar={['PdfExport']} allowPdfExport={true}>
<Inject services={[PdfExport, Toolbar]} />
</GanttComponent><ColumnsDirective>
<ColumnDirective field="TaskName" validationRules={{ required: true }} />
<ColumnDirective field="Duration" validationRules={{ min: 1, max: 100 }} />
</ColumnsDirective>const ganttRef = React.useRef<GanttComponent>(null);
ganttRef.current?.scrollToDate('04/28/2024');<ColumnDirective field="TaskName" minWidth="100" maxWidth="400" allowResizing={true} />const ganttRef = React.useRef<GanttComponent>(null);
// By field names:
(ganttRef.current as any).treeGrid.reorderColumns(['Duration', 'Progress'], 'TaskName');
// By index:
(ganttRef.current as any).treeGrid.reorderColumnByIndex(2, 0);// In taskFields — map a boolean field that controls initial expand state:
const taskFields = { ..., expandState: 'isExpand' };
// Or collapse all on load:
<GanttComponent collapseAllParentTasks={true} .../>| Feature | Service to Inject |
|---|---|
| Editing (add/edit/delete/taskbar drag) | |
| Filtering | |
| Sorting | |
| Toolbar | |
| Selection | |
| Day Markers / Holidays / Event Markers | |
| Critical Path | |
| Excel / CSV Export | |
| PDF Export | |
| Undo / Redo | |
| Column Menu | |
| Context Menu | |
| Virtual Scrolling | |
| Row Drag and Drop | |
| Column Reordering | |
| Frozen Columns | |
| Column Resizing | |
import { GanttComponent, Inject, Edit, Filter, Sort, Toolbar, Selection } from '@syncfusion/ej2-react-gantt';
<GanttComponent ...>
<Inject services={[Edit, Filter, Sort, Toolbar, Selection]} />
</GanttComponent>| Prop | Type | Purpose |
|---|---|---|
| object[] / DataManager | Task data (local or remote via DataManager) |
| TaskFieldsModel | Field mapping for task properties |
| EditSettingsModel | Enable add/edit/delete/taskbar editing |
| string[] | Toolbar items to render |
| Auto / Manual / Custom | Scheduling mode |
| object[] | Resource data collection |
| ResourceFieldsModel | Resource field mapping |
| boolean | Enable sorting |
| boolean | Enable filtering |
| boolean | Enable column reorder |
| boolean | Enable column resize |
| boolean | Enable Excel export |
| boolean | Enable PDF export |
| string[] | Actions tracked by undo/redo |
| TimelineSettingsModel | Timeline tiers and unit config |
| SplitterSettingsModel | Grid/chart panel ratio |
| boolean | Shade weekend columns |
| HolidayModel[] | Mark holiday dates |
| EventMarkerModel[] | Vertical markers on timeline |
| number | Column index showing expand/collapse icons |
| boolean | Collapse all parent rows on initial load |
| boolean | Auto-generate WBS codes from task hierarchy |
| boolean | Recalculate WBS codes after CRUD/sort/DnD |
| number | Number of left-pinned (frozen) columns |
| boolean | Show multiple taskbars per resource row |
| string | |
| boolean | Show column-level menu (sort, filter, autofit) |
| string[] | Restrict which column menu items are shown |
| boolean | Enable column chooser dialog via toolbar |
| boolean | Enable row/cell selection |
| SelectionSettingsModel | Selection mode ( |
| string | Grid lines style: |
| boolean | Show baseline bars alongside actual taskbars |
| string | CSS color for baseline bars |
| boolean | Highlight critical path tasks and connectors |
| boolean | Enable right-to-left layout |
| string | Locale code (e.g. |
| boolean | Enable row drag-and-drop reordering/reparenting |
| boolean | Only re-render changed rows on data updates (requires |
| boolean | Persist UI state (sort, filter, column widths) to localStorage |
| object | Loading animation type: |
| string[] | Working days, e.g. |
| boolean | Count weekends as working days for duration calculation |
| string | IANA timezone for the Gantt (e.g. |
| boolean | Highlight over-allocated resources in ResourceView |
| boolean | Enable undo/redo tracking (inject |
| number | Maximum undo/redo history steps (default: 10) |
| boolean | Row virtualization for large data sets |
| boolean | Timeline (horizontal) virtualization |
| number | Uniform row height in pixels |
| number | Height of taskbars in pixels (must be ≤ |
| number | Width of dependency connector lines |
| string | Color of dependency connector lines |