Adom Gantt
Public Made by Adomby adom
Interactive Gantt chart viewer for project timelines, with a table view and an analytics page over the same data. Data-driven, dark by default with a print-friendly light mode, and fully editable in the browser: drag bars to move or resize, multi-select and batch-shift dates, manage dependency arrows inline, reorder rows, filter by phase, and undo. One click auto-schedules the whole plan so every dependency lines up finish-to-start on working days, skipping weekends and US federal holidays, push
Subtasks: nest tasks under a task, collapse them like a section, drag to nest or un-nest
Request
Add subtasks to tasks. A task's subtasks sit under it in the left-hand list and collapse under it, the same way rows collapse under a section header.
In the left-hand list, you should be able to drag a subtask out so it becomes a separate task, and drag a task onto another task so it becomes a subtask of that one. ClickUp's subtasks are the model to borrow from.
Suggested behaviour
Rows and collapse
- A task with subtasks gets the same chevron and row count a section header has. Its subtasks are indented under it.
- Collapse state is view state in
prefs.collapsed, like a section's: per person, never written to the plan. Collapse all / Expand all covers subtasks too. - A collapsed parent's bar still shows the span of its subtasks, from the earliest start to the latest end, so the chart reads correctly with the detail hidden.
- Optionally, a view setting in the style of ClickUp's: show subtasks collapsed, expanded, or as separate tasks.
Drag to nest and un-nest
This builds on the existing hold-to-lift reorder in the label column and the Table:
- Drop onto the middle of a task row: the dragged row becomes that task's last subtask.
- Drop between rows: a reorder, as today. The drop line is indented to show the level the row will land at. Moving the pointer left or right over a gap changes the level, outdenting to a top-level task or indenting under the row above.
- A subtask dragged out between two top-level rows becomes a task.
- Dragging a parent moves its subtasks with it. Dropping it into another section moves the subtasks into that section too.
- Each nest, un-nest or move is one undo entry and one changelog event.
- A keyboard path to match, such as Alt+Right / Alt+Left to indent and outdent, next to the existing Alt+Up / Alt+Down. Tab and Shift+Tab already walk fields, so they're taken.
Subtasks are full tasks
Subtasks have their own dates, owner, status, effort, tags and dependencies. Auto-schedule, Critical, the filters and Analytics treat them like any other task.
Data
An optional parent on a task, holding the parent task's id, the same way deps names tasks. When parent is absent, the row is a top-level task, so existing plans don't change. A subtask always sits in its parent's section.
Open questions
- Depth: only one level (task, then subtask), or nested subtasks as ClickUp allows? One level covers this request.
- Parent dates: a hard rollup, where the parent always spans its subtasks and can't be dragged narrower, or only shown that way when collapsed?
- Hours: when a parent and its subtasks both carry
effort, should Analytics count only the subtasks so nothing is counted twice? - Deleting a parent: delete its subtasks too, or promote them to tasks?
- Filters: when a subtask matches the owner filter but its parent does not, show the parent dimmed for context?
- Import/export: a
parentcolumn in CSV. MS Project XML outline levels and Jira's parent field could map onto it.