# Гант ## npm npm видит чуть больше 70 пакетов ![73 пакета](https://i.imgur.com/uDCvUwe.png) ### Анализ основных ребят из npm (15 штук): *тут нет форков и откровенно пустых пакетов/пакетов без документации/дублей* - 🟡 Жёлтым отмечены популярные для форков проекты (больше кружочков - больше форков) - 🟢 Зелёным - те,которые нравятся мне - 🔴 Красным - те, что точно вычеркнем - 💰 платные | Оценка | Название + Ссылка | Объём | Дата последнего обновления | Качество документации | Подходит ли она нам | Особенности | | ------ | ----------------- | ----- | --------------------- | --------------------- | ------------------- | ----------- | |🟡🟡|[frappe-gantt-react](https://www.npmjs.com/package/frappe-gantt-react) | 553 kB | 4 года назад | Есть маленький сайтик с демо и документация в гите оцениваю, как 5/10 | **Скорее нет**. Подходит только если у нас не строгий дизайн и то, что написано на "*червячках*" может быть выведено в попапе, тогда подходит (кастомизируется только попап) + нет кастомизации языка календаря. В демо нет менюшки для задач| Достаточно популярная (200 скачиваний в неделю) + на неё есть много wrapper-ов (как минимум два на данный момент в npm видела) | |🔴💰|[gantt-schedule-timeline-calendar](https://www.npmjs.com/package/@leogle/gantt-schedule) | 5.3 Мб| 6 месяцев назад | Высокое, но, на мой вкус, мало примеров| **Нет**. Слишком дорого и слишком много лишнего | самая качественная по мнению npm-а. Решает очень широкий спектр проблем. Платная. Дорогая | |🟡🟡🟡🟢 |[gantt-chart-react](https://www.npmjs.com/package/gantt-chart-react) aka [gantt-task-react](https://www.npmjs.com/package/gantt-task-react)| 692 kB | 4 месяца назад (создана около двух лет назад)| Нет сайта, но много достаточно понятных таблиц с типами. Кастомизируется не всё, но хоть как-то | **Неплохо**. Более менее похожа на наш дизайн (менюшка сбоку), судя по количеству форков, достаточно гибкая и читаемая. Можно как раз под себя и пересобрать | Самая поддерживаемая по мнению npm. Минималистичная. Есть дубли в npm (очень много), значит популярна (до 2000 скачиваний в неделю). | |🟡🟢| [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)| 20.9 MB | год назад, поддержка низкая |Документация лежит в отдельной [ссылке](https://ibm.github.io/gantt-chart/packages/ibm-gantt-chart-docs/storybook/?path=/story/storybook-examples--row-layout). Если она соответствует действительности, то это не такая уж плохая документация, но прмеров откровенно мало. Однако, есть пример с большой производительностью | **Не очень, но м.б**, документация мне не нравится |npm её отмечает как одну из самых сбалансированных либ, 400 скачиваний в неделю, т.е. популярна | |💰🔴|[gantt-react](https://www.npmjs.com/package/gantt-react)| | | | **НЕТ** | Переоценена, платная, видно, что собрано на одном из бесплатных решений | |🔴|[@j.k.bi/react-gantt](https://www.npmjs.com/package/@j.k.bi/react-gantt) | 86.3 kB | год назад | Поддержка плохая, популярность нулевая| **Нет** | Милый проектик, но без развития| | 💰🔴 |[ej2-react-gantt](https://www.npmjs.com/package/@syncfusion/ej2-react-gantt)|1.89 MB | 7 дней назад| **Не нашла в открытом доступе** | **Нет**, дорогая, очень не russian-friendly | Платный, но красивый, 2к скачиваний в неделю. Выглядит удобно| |🔴|[react-gantt](https://www.npmjs.com/package/react-gantt)|54.2 kB| 4 года назад...| Не самая худшая, на таблицах|Нет, очень давняя поддержка| 150 скачиваний в неделю, очень минималистичная, даже слишком| |🔴|[react-gantt-chart](https://www.npmjs.com/package/react-gantt-chart)|210 kB|8 месяцев назад|Она есть, она не так уж плоха, лучше, чем [ibm-gantt-chart](https://www.npmjs.com/package/ibm-gantt-chart)|**Нет**, дизайн убогий. Но **можно использовать, как пример** форка [gantt-task-react](https://www.npmjs.com/package/gantt-task-react)|Что-то уникальное, 100 скачиваний в неделю. Является форком [gantt-task-react](https://www.npmjs.com/package/gantt-task-react), но достаточно продвинутым, чтобы быть отмеченным, как уникальный продукт| |🟢|[react-gantt-elastic](https://www.npmjs.com/package/react-gantt-elastic)|251 kB| три года назад| Хорошая документация, нравится демо, но, возможно, не совсем наш случай| **Не очень, но м.б**, но и не так уж плохо| 10 скачиваний в неделю, но красивенько| |🔴|[ng-gantt-chart-custom](https://www.npmjs.com/package/ng-gantt-chart-custom)| 1.03 MB | несколько часов назад | Есть, но не идеальная|**Нет**, ибо **свелт** | симпотичная, плотная, 200 скачиваний в неделю, развивается | |🔴🟡|[r-gantt-chart](https://www.npmjs.com/package/r-gantt-chart)||4 года назад| мало| **Нет**|чудо от товарищей-китайцев| |🔴|[pimpos-react-native-gantt-chart](https://www.npmjs.com/package/pimpos-react-native-gantt-chart)|10.4 kB| 9 месяцев назад| есть, но мало| **НЕТ**|react-native, нет дэмки| |🔴💰|[smart-webcomponents-react](https://www.npmjs.com/package/smart-webcomponents-react)|**69.5 MB**|2 месяца назад|Хорошая|**нет** | самое приятное и дешёвое, что я на данный момент видела из платного (400\$). Библиотека из огромной кучи компонент, не только Гант| |🔴|[react-d3gantt](https://www.npmjs.com/package/react-d3gantt)|271 kB|4 года назад|Примерно нет, но и не нужна|**Нет**, конечно, но код потырить можно|Воспринивать, как пример того, что модно сделать с Гантом на d3| :::success ### Итог: - Из всего представленного в npm мне нравится вариант **сделать форк** [**gantt-task-react**](https://www.npmjs.com/package/gantt-task-react) - Альтернативные варианты: [ibm-gantt-chart](https://www.npmjs.com/package/ibm-gantt-chart) и [ng-gantt-chart-custom](https://www.npmjs.com/package/ng-gantt-chart-custom) - Из платных вариантов пока ничего не нравится: или слишком дорого, или слишком всё и сразу ::: ## Варианты из других источников: 1. [AnyGantt - JS Gantt charts](https://www.anychart.com/products/anygantt/overview/) - кажется тут прям значительно больше функционала, чем нам надо, но достаточно дёшево 2. [Highcharts](https://www.highcharts.com/demo/gantt) - согласна с описанием "чуть пострашнее" и чуть подороже 3. Frappe рассмотрен в части npm 4. [Webix](https://webix.com) - дорогой и огромный, лучше уж тогда [smart-webcomponents-react](https://www.npmjs.com/package/smart-webcomponents-react) :::success ### Итог: - Варианты с open-сорса звучат чуть-чуть приятнее + нет проблем с оплатой ::: ## Гант под чистый js ![](https://i.imgur.com/9pwKqTd.png) ![](https://i.imgur.com/ntgT4oM.png) > npm очень любит панд, если вам был интересно Тут пропускала то, что по тэгам касалось только других фреемворков (vue, angular) + то, что уже видела + то, что заведомо пустое и совсем без документации | Оценка | Название + Ссылка | Объём | Дата последнего обновления | Качество документации | Подходит ли она нам | Особенности | | ------ | ----------------- | ----- | --------------------- | --------------------- | ------------------- | ----------- | |🔴|[Gantt-elastic](https://www.npmjs.com/package/gantt-group)|9.56 MB|9 дней назад|Есть даже сайтик отдельный, но... он показывает примеры **только на vue** |**Нет**|Есть версия для реакта, она была в обзоре выше, но поддерживаемость у этого варианта выше| |🟡🟢🟢|[dhtmlxGantt](https://www.npmjs.com/package/dhtmlx-gantt)|5.18 MB|25 дней назад|Есть документация с кучей примеров|**Да**|Есть примеры, где не тупит на больших данных. Кажется, есть платная версия. В либе учтены локализации. Всё ещё не нашла, как рендерить компонент задачи, но это, возможно, временно| |💰|[fusioncharts](https://www.npmjs.com/package/fusioncharts)|||||Не уверена в его релевантности, но сохраню| |🔴|[js-gantt-chart](https://www.npmjs.com/package/js-gantt-chart)|382 kB|3 года назад|Не больше, чем родительский пакет|**Нет**|Основан на frappe-gant| |🔴💰|[ej2-gantt](https://www.npmjs.com/package/@syncfusion/ej2-gantt)|20.5 MB|несколько часов назад||**Нет**, очень дорогой|Полная версия платного инструмента, рассмотренного ранее| |🔴|[4d-gantt-chart](https://www.npmjs.com/package/4d-gantt-chart)|6.1 MB|2 месяца назад|Не обнаружена|**Нет**, ужасный дизайн|| |🟢|[gantt](https://www.npmjs.com/package/gantt)|248 kB|год назад|Есть, достаточно понятная| **Маловероятно**, ибо текст внутри червей всё ещё не вписать, но оставлю зелёную пометку, т.к. инструмент хороший|Товарищи на канвасе, 90 скачиваний в неделю| |🔴💰|[smart-webcomponents](https://www.npmjs.com/package/smart-webcomponents)||||Нет|Версия smart webcomponents не на реакт| |🟢|[ts-gantt](https://www.npmjs.com/package/ts-gantt)|331 kB|месяц назад|Она есть, но она маленькая, т.к. проект маленький|**Маловероятно**, слишком туго с поддержкой и всё ещё не вижу надписей в теле червей, зелёный - за уникальность и старание|точно есть локализация, 31 скачивание в неделю| |🔴|[d3-gantt-chart](https://www.npmjs.com/package/d3-gantt-chart)||5 лет назад|Почти остуствует|**Нет**|Можно использовать как базу, если делать на d3| |🔴|[<gantt-chart\>](https://www.npmjs.com/package/@nextbitlabs/gantt-chart)|67 kB|3 года назад|Почти нет|**Нет**, мало функционала|Кто знал, что на девятой странице поиска можно найти что-то новое| |🔴|[chartjs-plugin-gantt](https://www.npmjs.com/package/chartjs-plugin-gantt)|133 kB|3 года назад|Что-то есть, но мало, хотя и функционала мало|**Нет**, очень мало функционала|База| // Интересная альтернатива (?) d3 https://www.npmjs.com/package/markgojs :::success ### Итог (за 29.11.22 и обработку npm-а): Вариант 1. **сделать форк** [**gantt-task-react**](https://www.npmjs.com/package/gantt-task-react) Вариант 2. юзать [dhtmlxGantt](https://www.npmjs.com/package/dhtmlx-gantt) Альтернативные варианты: [ibm-gantt-chart](https://www.npmjs.com/package/ibm-gantt-chart) и [ng-gantt-chart-custom](https://www.npmjs.com/package/ng-gantt-chart-custom) - маловероятны ::: ## Альтернативные подходы - компоненты с большими таблицами - d3 js и его аналоги ## Список требований 1. Отображение в виде задача-подзадача 2. Группировки. например по исполнителям, командам, заказчикм (произвольно) 3. Редактирвоание сроков и после редактирвоания обновляется задача на диаграмме 3.1. можно мышкой таскать задачу 4. Ввод новой задачи/подзадачи 5. Отображение связей (одну задачу можно делать только после окончания другой) 6. Процент выполнения задания 7. Инструмент должен вытягивать до 1 тыс задач 8. Можно ли при вводе задания нового открыть карточку для ввода всех необходимых полей > Комментарии > - если у нас есть способ отображать задача-подзадача вложенностью 2, то мы можем и задавать группировку просто отправляя правильную последовательность данных > - ввод новой подзадачи всегда возможен, вопрос в том, можем ли мы добавить дейчтвие на клик по ней ### Таблица по требованиям | Пакет | 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)", которая включает в себя достаточно много функционала. ## Что такое dhtml, как работает выбранное решение? [DHTML](https://www.geeksforgeeks.org/dhtml-introduction/) > But in true ways, **there is noting that as dynamic in DHTML**, there is only the enclosing of different technologies like CSS, HTML, JS, DOM, and different sets of static languages which make it as dynamic.