Bryntum Gantt for Vaadin - Vaadin Add-on Directory
A Vaadin add-on for Bryntum Gantt (the MIT licensed Community tier). Show and edit project schedules with tasks, dependencies and a scheduling engine using a plain Java API.A Vaadin add-on wrapping [Bryntum Gantt](https://bryntum.com/products/gantt/). Since Bryntum 8, the Community tier of
Bryntum Gantt is MIT licensed and published to the public npm registry, so the add-on works out of the box: the
`@bryntum/gantt-community` npm package is pulled in automatically by the Vaadin build, nothing needs to be
downloaded manually.

Requirements: Vaadin 25+, Java 21+.
## Usage
```java
GanttChart gantt = new GanttChart();
Task launch = gantt.addTask("Launch SaaS Product");
Task webServer = launch.addChild("Setup web server");
Task apache = webServer.addChild("Install Apache", LocalDate.now(), 3);
apache.setPercentDone(50);
Task ports = webServer.addChild("Configure ports", LocalDate.now(), 2);
gantt.addDependency(apache, ports).setLag(1);
// Edits made in the browser (drag, resize, cell & task editing) are synchronized
// to the Task objects, and rescheduled tasks are reported as well
gantt.addTasksChangedListener(e -> e.getTasks().forEach(task -> saveToDb(task)));
gantt.addTasksRemovedListener(e -> e.getTasks().forEach(task -> deleteFromDb(task)));
add(gantt);
```
Other features of the Java API:
* `setColumns(Column.wbs(), Column.name(), Column.startDate(), Column.of("enddate").withWidth(120))` - define grid columns
* `setReadOnly(true)` - disable editing
* `zoomToFit()`, `scrollToTask(task)`, `setZoomToFitOnLoad(false)`
* `addTask`, `removeTask`, `addDependency`, `removeDependency`, `findTask(id)`
* `refresh()` - push changes to the browser after modifying `Task`/`Dependency` objects directly
The server side model is the source of truth. Adding tasks, creating dependencies and re-parenting tasks in the
browser are disabled for now, those are done via the Java API.
Note that the Community tier contains a subset of Bryntum Gantt features (see the
[feature table](https://www.npmjs.com/package/@bryntum/gantt-community)). Features like the full task editor,
critical paths, baselines or PDF export require a commercial Bryntum license and the `-core`/`-enterprise` packages.