← Files Build Web Data VisualizationARCHIVED FILE
references/gantt-interaction-patterns.md
4.6 KB · Sep 30, 2026 · 22:49 UTC
# Gantt Interaction Patterns ## What Problem This Solves This reference defines useful Gantt interactions without turning the chart into a maze of hidden states. ## When To Use It Use this for interactive, editable, exploratory, dashboard, or product Gantt surfaces. ## Layout Contract - Use a frozen task grid on the left and a horizontally scrollable timeline on the right. - Keep row heights stable so bars, labels, dependency anchors, focus rings, and hover states cannot shift the layout. - Keep time-axis controls near the timeline: day/week/month/quarter/year, today, fit, and date range. - Place row filters, grouping, and search near the task grid. - Keep selection details in a side panel, drawer, or row expansion so hover is only preview. - Preserve vertical row alignment between grid and timeline during virtualization. ## Navigation - Horizontal pan by scrollbar, trackpad, drag handle, or timeline minimap. Do not trap page scrolling without a clear control. - Zoom by explicit controls first. Wheel or pinch zoom should be opt-in and reversible. - Provide `today`, `fit project`, `selected task`, and `reset filters` controls. - Support expand/collapse for hierarchy and group rows. - Preserve selection and scroll position when filters or zoom levels change where possible. ## Inspection - Hover can preview start, finish, duration, owner, status, progress, and key dependencies. - Click or keyboard selection commits the task and exposes details, source links, comments, audit trail, and dependency impact. - Dependency inspection should highlight predecessor and successor chains without lighting up the entire graph. - Critical path, baselines, non-working time, and dependencies should be toggles when they make the default view too dense. ## Editing - Drag to move a task only when the user has permission and the scheduling engine can validate the change. - Resize start or finish only when date changes are allowed and duration rules are clear. - Dependency editing must show valid drop targets, dependency type, lag, and cycle prevention. - Batch edits need preview and undo because schedule changes can shift many tasks. - Parent rows should not be directly edited when they are rollups from child tasks. - Manual scheduling, fixed dates, constraints, calendars, and locked tasks need visible affordances before a drag starts. ## Validation And Conflict Behavior - Block or warn on dependency cycles, missing targets, invalid ranges, and impossible calendar dates. - Explain when a move shifts downstream tasks, violates a deadline, or changes the critical path. - Show source-system sync failures separately from visual validation failures. - For optimistic updates, keep a pending state and a rollback path. - For collaborative editing, handle stale schedule versions and conflicts explicitly. ## Common Controls - Search by task name, ID, assignee, owner, milestone, source key, or WBS. - Filter by owner, team, phase, status, risk, critical path, date range, dependency problem, and unscheduled tasks. - Sort by WBS, start date, finish date, owner, status, slack, variance, or priority. - Group by phase, workstream, team, resource, release, location, or source system. - Toggle dependencies, baselines, critical path, labels, non-working time, completed tasks, and resource workload. - Export current view, selected range, full schedule, PDF/image snapshot, CSV/TSV data, or source-system handoff file when supported. ## Mobile And Narrow Layout - Do not squeeze an enterprise Gantt into an unreadable miniature. - Prefer a list of phases or tasks with compact inline bars and a detail view. - Use a milestone summary or selected-time-window view for stakeholder reading. - Keep date labels and owner/status visible without hover. - Use horizontal timeline scroll only when the target users actually need schedule editing on narrow screens. ## Common Mistakes - Making every dependency line visible all the time. - Making hover the only way to read dates or blockers. - Allowing drag edits before defining scheduling rules and undo. - Using custom wheel behavior that fights browser scroll. - Showing dense labels inside bars that clip at small durations. - Updating source data on every pointer move instead of on commit. - Hiding permissions, locks, and calculated rollups until after edit failure. ## Source Links - [DHTMLX Gantt docs](https://docs.dhtmlx.com/gantt/) - [Bryntum Gantt features](https://bryntum.com/products/gantt/features/) - [Highcharts Gantt docs](https://www.highcharts.com/docs/gantt/getting-started-gantt) - [Frappe Gantt docs](https://frappe.io/gantt) - [FullCalendar resource timeline](https://fullcalendar.io/docs/timeline-view)
SHA-256: bbd4a9c8a067f52b671f706e74183922da53d1ce6c04ca818f2985f23f5a8311