# Гант и требования
## Список требований
1. Отображение в виде задача-подзадача
2. Группировки. например по исполнителям, командам, заказчикм (произвольно)
3. Редактирвоание сроков и после редактирвоания обновляется задача на диаграмме
3.1. можно мышкой таскать задачу
4. Ввод новой задачи/подзадачи
5. Отображение связей (одну задачу можно делать только после окончания другой)
6. Процент выполнения задания
7. Инструмент должен вытягивать до 1 тыс задач
8. Можно ли при вводе задания нового открыть карточку для ввода всех необходимых полей
> Комментарии
> - если у нас есть способ отображать задача-подзадача вложенностью 2, то мы можем и задавать группировку просто отправляя правильную последовательность данных
> - ввод новой подзадачи всегда возможен, вопрос в том, можем ли мы добавить действие на клик по ней
## Таблица по требованиям
Пакеты взяты из выборки npm, описанной 07.12.22 на созвоне
### Условные обозначения
- ==подсвечены те элементы, которые требуют более тчательной проверки, которая займёт дополнительное время==
- 🟡 - частота форков
- 💰 - платное решение
| Пакет | Score | RU time* | Подзадачи | Вложенность >= 2, группировки | Изменение сроков мышкой | Стрелочки | Процент выполнения | Масштабируемость | Можно ли отследить клик на задачу | Редактирование тела червя |
|-------|-------|---------|-----------|-------------------------------|----------------------------|-----------|-------------------|------------------|-----------------------------------|---------------------------|
|🟡🟡 [frappe-gantt-react](https://www.npmjs.com/package/frappe-gantt-react)|3 ± 1|--|--|--|+|+|+|==?==|--|--|
|💰900$ [gantt-schedule-timeline-calendar](https://www.npmjs.com/package/@leogle/gantt-schedule) - можно тыкать локально, блочит по портам|**8 ± 1**|+|+|+|+|+|+|+!|==на червя, возможно, больше==|+ можно описание и картинку точно|
|🟡🟡🟡 [gantt-task-react](https://www.npmjs.com/package/gantt-task-react)|7|+|+|--|+|+|+|+|+|форком|
|🟡 [ibm-gantt-chart](https://www.npmjs.com/package/ibm-gantt-chart), aka [ibm-gantt-chart-react](https://www.npmjs.com/package/ibm-gantt-chart-react)|4 ± 2|--|+|+|- только перетаскивание|+|==--==|+|==?==|--|
|💰 2500$/год [ej2-react-gantt](https://www.npmjs.com/package/@syncfusion/ej2-react-gantt)|6 ± 1|--|+|+|+|+|+|+|==+==|--|
| [react-gantt-elastic](https://www.npmjs.com/package/react-gantt-elastic) - база `gantt-schedule-timeline-calendar`|5 ± 1|+|+|+|==+== потенциально есть, примера нет|--|+|**--**|+|--|
|💰 400$ [smart-webcomponents-react](https://www.npmjs.com/package/smart-webcomponents-react)|**8**|+|+|+|+!|+!|+|+|+|--|
|🟡 [dhtmlxGantt](https://www.npmjs.com/package/dhtmlx-gantt)|**9**|+|+|+|+|!+|+|+|+|+, хорошее|
|💰[fusioncharts](https://www.npmjs.com/package/fusioncharts)|1 ± 1|--|--|--|--|+? не стрелочные|+|==?==|--|--|
|[gantt](https://www.npmjs.com/package/gantt)|2 ± 1|--|--|--|--|+|+|==?==|--|--|
|[ts-gantt](https://www.npmjs.com/package/ts-gantt)|6 ± 1|+|+|+|+!|--|+|+|==?==|--|
|💰 [AnyGantt - JS Gantt charts](https://www.anychart.com/products/anygantt/overview/)|**8**|+|+|+|+|+|+|+|+|--|
|💰 [Highcharts](https://www.highcharts.com/demo/gantt)|3 ± 4|--|+|==--==|--|+|+|==--==|==--==|==--==|
|💰 [Webix](https://webix.com)|**7 ± 1**|+|+|+|+|+|+|==?==|+|--|
Из таблицы видно, что нашим требованиям действительно лучше всего удовлетвояет dhtmlxGantt.
## Нужно ли нам платить за это решение?
Есть проект [dhtmlxGantt](https://github.com/DHTMLX/gantt), подходит нам по всем требованиям, примеров много, всё хорошо. Проблема одна - я не могу понять, на сколько он платный. Обычно, когда локально разворачивала платные пакеты, они открывались только на стандартных портах (`8000`, `8080` и `3000`). На остальные ругались и просили платить. А тут и пакет, вроде, в `npm`, и ключа никакого никуда не просит. Локально на экзотических портах разворачивается, работает
[Сайт](https://dhtmlx.com/docs/products/dhtmlxGantt/), вроде, красноречиво говорит "я стою 700$ минимум". С другой стороны, репозиторий ни гите и дока говорит, что есть некая "[стандартная версия](https://docs.dhtmlx.com/gantt/desktop__editions_comparison.html)", которая включает в себя достаточно много функционала.
## Что делать?
**Вариант 1.** Рискнуть и взять dhtmlxGant и надеяться, что на проде всё пойдёт хорошо и без оплаты. Учитывая, что при оплате они отправляют исходный код библиотеки, то они дуда кладут прям новый функционал. Функционал, который лежит [в репозитории](https://github.com/DHTMLX/gantt) в таком случае должен оказаться доступным при любом случае. Проблема в том, что требования к использованию бесплатной версии - open-source-ность проекта. Однако, не известно, как эти требования проверяются.

Скачать содержимое репозитория так же можно с сайта по [ссылке](https://dhtmlx.com/docs/products/dhtmlxGantt/download.shtml) (нужно проскроллить). Там же есть сравнение платной и бесплатной версии.
**Вариант 2.** Взять что-то более простое и доработать под нас
**Вариант 3.** Готова выслушать альтернативные предложения