Skip to content

Gantt

HTMLRevoGridElement (Extended from global)

Section titled “HTMLRevoGridElement (Extended from global)”

Properties added to the grid element for Gantt configuration and data.

interface HTMLRevoGridElement {
/** Top-level Gantt plugin configuration. */
gantt?: GanttPluginConfig;
/** Dependency links between tasks. */
ganttDependencies?: readonly DependencyEntity[];
/** Working calendars (working days, holidays, hours per day). */
ganttCalendars?: readonly CalendarEntity[];
/** Available resources (people, equipment). */
ganttResources?: readonly ResourceEntity[];
/** Task–resource assignments. */
ganttAssignments?: readonly AssignmentEntity[];
/** Historical baseline snapshots for schedule comparison. */
ganttBaselines?: readonly BaselineSnapshot[];
/** Columns to hide from the task table. */
hideColumns?: readonly string[] | string;
}

HTMLRevoGridElementEventMap (Extended from global)

Section titled “HTMLRevoGridElementEventMap (Extended from global)”
interface HTMLRevoGridElementEventMap {
'gantt-dependency-hover': GanttDependencyInteractionDetail;
'gantt-dependency-select': GanttDependencyInteractionDetail;
'gantt-task-create': GanttCreateTaskOptions | undefined;
'gantt-task-indent': GanttTaskHierarchyActionDetail | undefined;
'gantt-task-outdent': GanttTaskHierarchyActionDetail | undefined;
'gantt-zoom-in': undefined;
'gantt-zoom-out': undefined;
'gantt-zoom-set-level': GanttZoomSetLevelDetail;
'gantt-panel-resize': GanttPanelResizeEventDetail;
'gantt-before-task-change': GanttBeforeTaskChangeDetail;
'gantt-before-dependency-change': GanttBeforeDependencyChangeDetail;
'gantt-before-assignment-change': GanttBeforeAssignmentChangeDetail;
}

The GanttPlugin is an enterprise plugin for RevoGrid that adds a full-featured Gantt chart timeline alongside the standard data grid.

Key Features:

  • Interactive Timeline – Task bars, milestones, and summary rollups on a scrollable, zoomable time axis.
  • Dependency Arrows – FS, SS, FF, SF links with drag-to-create.
  • Critical Path – Automatic calculation and visual highlighting.
  • Baseline Comparison – Overlay a saved baseline beneath task bars.
  • Resource Assignments – Assign resources and display labels on task bars.
  • Drag & Drop – Move, resize, and adjust progress directly on the timeline.
  • Multi-Level Zoom – Smooth zooming from day to year.
  • Task Hierarchy – Indent/outdent, expand/collapse, and auto WBS codes.
  • Calendar-Aware Scheduling – Working days, holidays, and multiple calendars.
  • Visual Decorations – Time-range bands, project line, non-working-day shading, task markers.
  • Before-Change Events – Cancelable events for all mutations.

Usage:

  • Assign GanttPlugin to the grid’s plugins array.
  • Set project config via grid.gantt.
  • Set task data via grid.source.
  • Set dependencies, calendars, resources, assignments, and baselines via the corresponding gantt* properties.
import { GanttPlugin } from '@revolist/revogrid-enterprise';
import type { GanttPluginConfig } from '@revolist/revogrid-enterprise';
const grid = document.createElement('revo-grid');
grid.plugins = [GanttPlugin];
grid.gantt = {
id: 'my-project',
name: 'My Project',
version: '1',
currency: 'USD',
timeZone: 'UTC',
primaryCalendarId: 'cal-1',
updatedAt: '2026-01-01T00:00:00Z',
zoomPreset: 'week',
};
grid.source = tasks;
grid.ganttDependencies = dependencies;
grid.ganttCalendars = calendars;

Top-level configuration for the Gantt plugin.

interface GanttPluginConfig {
/** Unique project identifier. */
readonly id: EntityId;
/** Project display name. */
readonly name: string;
/** Project data schema version. */
readonly version: string;
/** Currency code (e.g. "USD"). */
readonly currency: string;
/** IANA time zone (e.g. "America/New_York"). */
readonly timeZone: string;
/** Default calendar for new tasks. */
readonly primaryCalendarId: CalendarId;
/** ISO 8601 timestamp of last modification. */
readonly updatedAt: ISODateTimeString;
/** Pre-defined zoom level. */
readonly zoomPreset?: TimelineZoomPreset;
/** Advanced zoom configuration. */
readonly zoom?: TimelineZoomConfig;
/** Scheduling engine options. */
readonly scheduling?: GanttSchedulingConfig;
/** Enable inline task creation. */
readonly allowTaskCreate?: boolean;
/** Restrict creatable dependency types. */
readonly allowedDependencyTypes?: readonly DependencyType[];
/** Filter the resource list. */
readonly resourceFilterIds?: readonly ResourceId[];
/** Visual overlay options. */
readonly visuals?: GanttVisualConfig;
}

Controls visual overlays and decorations on the timeline.

interface GanttVisualConfig {
/** Show baseline bars beneath task bars. */
readonly showBaseline?: boolean;
/** Highlight tasks on the critical path. */
readonly showCriticalPath?: boolean;
/** Display task names on timeline bars. */
readonly showTaskLabels?: boolean;
/** Which baseline to display. */
readonly baselineId?: BaselineId;
/** Vertical "today" / status-date line. */
readonly projectLineDate?: ISODateString;
/** Highlighted date ranges on the background. */
readonly timeRanges?: readonly GanttTimeRange[];
/** Shade weekends and holidays. */
readonly shadeNonWorkingTime?: boolean;
/** Hook to produce per-task markers. */
readonly taskMarkerHook?: GanttTaskMarkerHook;
}

interface GanttSchedulingConfig {
/** Exclude holidays from task duration calculations. */
readonly excludeHolidaysFromDuration?: boolean;
}

A single task (work item) in the project.

interface TaskEntity {
readonly id: TaskId;
readonly projectId: EntityId;
readonly parentId: TaskId | null;
readonly wbsCode: string;
readonly name: string;
readonly type: TaskType; // 'summary' | 'task' | 'milestone'
readonly status: TaskStatus; // 'not-started' | 'in-progress' | 'done' | 'blocked'
readonly startDate: ISODateString;
readonly endDate: ISODateString;
readonly durationDays: number;
readonly manuallyScheduled?: boolean;
readonly inactive?: boolean;
readonly constraintType?: TaskConstraintType;
readonly constraintDate?: ISODateString;
readonly deadlineDate?: ISODateString;
readonly progressPercent: number;
readonly calendarId: CalendarId;
readonly isCritical: boolean;
readonly notes?: string;
readonly tags: readonly string[];
}

A directed link between two tasks.

interface DependencyEntity {
readonly id: DependencyId;
readonly predecessorTaskId: TaskId;
readonly successorTaskId: TaskId;
readonly type: DependencyType; // 'finish-to-start' | 'start-to-start' | 'finish-to-finish' | 'start-to-finish'
readonly lagDays: number;
}

Working schedule for tasks and resources.

interface CalendarEntity {
readonly id: CalendarId;
readonly name: string;
readonly timeZone: string;
readonly workingDays: readonly number[]; // ISO weekdays 1–7
readonly holidays: readonly ISODateString[];
readonly hoursPerDay: number;
}

A person, team, or piece of equipment.

interface ResourceEntity {
readonly id: ResourceId;
readonly name: string;
readonly role: string;
readonly calendarId: CalendarId;
readonly allocationCapacity: number;
readonly hourlyCost: number;
}

Links a resource to a task.

interface AssignmentEntity {
readonly id: AssignmentId;
readonly taskId: TaskId;
readonly resourceId: ResourceId;
readonly allocationUnits: number;
readonly responsibility: string;
}

Point-in-time snapshot for schedule comparison.

interface BaselineSnapshot {
readonly id: BaselineId;
readonly name: string;
readonly capturedAt: ISODateTimeString;
readonly tasks: readonly BaselineTaskSnapshot[];
}
interface BaselineTaskSnapshot {
readonly taskId: TaskId;
readonly startDate: ISODateString;
readonly endDate: ISODateString;
readonly durationDays: number;
readonly progressPercent: number;
}

ConstantValueDetail Type
GANTT_DEPENDENCY_HOVER_EVENT'gantt-dependency-hover'GanttDependencyInteractionDetail
GANTT_DEPENDENCY_SELECT_EVENT'gantt-dependency-select'GanttDependencyInteractionDetail
GANTT_TASK_CREATE_EVENT'gantt-task-create'GanttCreateTaskOptions | undefined
GANTT_TASK_INDENT_EVENT'gantt-task-indent'GanttTaskHierarchyActionDetail | undefined
GANTT_TASK_OUTDENT_EVENT'gantt-task-outdent'GanttTaskHierarchyActionDetail | undefined
GANTT_ZOOM_IN_EVENT'gantt-zoom-in'undefined
GANTT_ZOOM_OUT_EVENT'gantt-zoom-out'undefined
GANTT_ZOOM_SET_LEVEL_EVENT'gantt-zoom-set-level'GanttZoomSetLevelDetail
GANTT_PANEL_RESIZE_EVENT'gantt-panel-resize'GanttPanelResizeEventDetail
GANTT_BEFORE_TASK_CHANGE_EVENT'gantt-before-task-change'GanttBeforeTaskChangeDetail
GANTT_BEFORE_DEPENDENCY_CHANGE_EVENT'gantt-before-dependency-change'GanttBeforeDependencyChangeDetail
GANTT_BEFORE_ASSIGNMENT_CHANGE_EVENT'gantt-before-assignment-change'GanttBeforeAssignmentChangeDetail

interface GanttBeforeTaskChangeDetail {
readonly action: 'move' | 'resize' | 'create' | 'edit' | 'progress' | 'indent' | 'outdent';
readonly taskId: TaskId;
readonly changes: Partial<TaskEntity>;
readonly previousValues: Partial<TaskEntity>;
}
interface GanttBeforeDependencyChangeDetail {
readonly action: 'create' | 'delete' | 'edit';
readonly dependencyId: DependencyId | null;
readonly dependency: DependencyEntity;
readonly previousDependency?: DependencyEntity;
}
interface GanttBeforeAssignmentChangeDetail {
readonly action: 'edit';
readonly taskId: TaskId;
readonly assignments: readonly AssignmentEntity[];
readonly previousAssignments: readonly AssignmentEntity[];
}

Creates a pre-configured column definition for a standard task-table field.

function createDefaultTaskTableColumn(prop: string): ColumnRegular | null;

Creates the timeline column appended to the right side of the grid.

function createGanttColumn(scale: TimelineScale): ColumnRegular;