GPL version of Javascript Gantt Chart

Overview

dhtmlxGantt

dhtmlx.com npm: v.7.0.13 License: GPL v2

Getting started | Features | Follow us | License | Useful links

dhtmlxGantt is an open source JavaScript Gantt chart that helps you illustrate a project schedule in a nice-looking chart.

It can show the dependencies between tasks as lines and allows you to set up different relationships between tasks (finish-to-start, start-to-start, finish-to-finish, start-to-finish).

dhtmlxGantt provides a flexible API and a large number of event handlers, which gives you the freedom to customize it for your needs.

gantt-demo

Check more samples >

Getting started

Add files:

<script src="dhtmlxgantt.js" ></script>
<link rel="stylesheet" href="dhtmlxgantt.css" type="text/css">

Add markup:

<div id="gantt_here" style='width:100%; height:100vh;'></div>

And initialize:

gantt.config.date_format = "%Y-%m-%d %H:%i";
gantt.init("gantt_here");
gantt.parse({
  data: [
    {id: 1, text: "Project #1", start_date: null, duration: null, parent:0, progress: 0, open: true},
    {id: 2, text: "Task #1", start_date: "2019-08-01 00:00", duration:5, parent:1, progress: 1},
    {id: 3, text: "Task #2", start_date: "2019-08-06 00:00", duration:2, parent:1, progress: 0.5},
    {id: 4, text: "Task #3", start_date: null, duration: null, parent:1, progress: 0.8, open: true},
    {id: 5, text: "Task #3.1", start_date: "2019-08-09 00:00", duration:2, parent:4, progress: 0.2},
    {id: 6, text: "Task #3.2", start_date: "2019-08-11 00:00", duration:1, parent:4, progress: 0}
  ],
  links:[
    {id:1, source:2, target:3, type:"0"},
    {id:2, source:3, target:4, type:"0"},
    {id:3, source:5, target:6, type:"0"}
  ]
});

==> Check the live demo

Complete guides

All tutorials

https://docs.dhtmlx.com/gantt/desktop__howtostart_guides.html

Video guides

https://www.youtube.com/user/dhtmlx/videos

Features

Functionality GNU GPL v2 Commercial Enterprise Ultimate
Standard features ✔️ ✔️ ✔️ ✔️
Auto scheduling ✔️ ✔️ ✔️
Baselines, deadlines and other custom elements ✔️ ✔️ ✔️
Critical path calculation ✔️ ✔️ ✔️
Custom content in the overlay ✔️ ✔️ ✔️
Custom tasks types ✔️ ✔️ ✔️
Decimal units for tasks durations ✔️ ✔️ ✔️
Dynamic loading ✔️ ✔️ ✔️
Expanding/collapsing split tasks ✔️ ✔️ ✔️
Free local module for MS Project export/import ✔️
Free local PDF/PNG export module ✔️ ✔️
MS Project link formatting ✔️ ✔️ ✔️
Multiple resources per task ✔️ ✔️ ✔️
Online export to PDF/PNG without watermark 1 year 1 year Perpetual
Project-level work calendars ✔️ ✔️ ✔️
Project and milestones task types ✔️ ✔️ ✔️
Resizing grid columns and the grid itself from the UI ✔️ ✔️ ✔️
Resource histogram ✔️ ✔️ ✔️
Resource management ✔️ ✔️ ✔️
S-curve to show the progress of a project ✔️ ✔️ ✔️
Setting task types automatically ✔️ ✔️ ✔️
Several Gantt charts on 1 page ✔️ ✔️
Simple API for hiding/showing columns of the grid ✔️ ✔️ ✔️
Splitting tasks into subtasks ✔️ ✔️ ✔️
Tasks grouping ✔️ ✔️ ✔️
Time constraints for tasks ✔️ ✔️ ✔️
Working calendar for the whole project ✔️ ✔️ ✔️

Follow us

Star our GitHub repo

Check our roadmap for future updates 🔧

Read us on Medium 📰

Follow us on Twitter 🐦

Like our page on Facebook 👍

License

dhtmlxGantt v.7.0.13 Standard

This version of dhtmlxGantt is distributed under GPL 2.0 license and can be legally used in GPL projects.

To use dhtmlxGantt in non-GPL projects (and get Pro version of the product), please obtain Commercial/Enterprise or Ultimate license on our site https://dhtmlx.com/docs/products/dhtmlxGantt/#licensing or contact us at [email protected]

(c) XB Software Ltd.

Useful links

Comments
  • update 6.0 error  getResourceAssignments is not defined

    update 6.0 error getResourceAssignments is not defined

    Just import dhtmlxgantt.js and init

    common.js.js:789 ReferenceError: getResourceAssignments is not defined
        at r (dhtmlxgantt.js?a6f4:4213)
        at Array.t.exports (dhtmlxgantt.js?a6f4:4266)
        at t.exports (dhtmlxgantt.js?a6f4:4470)
        at t.exports (dhtmlxgantt.js?a6f4:8629)
        at Object.getGanttInstance (dhtmlxgantt.js?a6f4:8636)
        at Object.eval (dhtmlxgantt.js?a6f4:8645)
        at i (dhtmlxgantt.js?a6f4:16)
        at eval (dhtmlxgantt.js?a6f4:43)
        at eval (dhtmlxgantt.js?a6f4:44)
        at Object.3843 (1.js:1329)
    
    opened by Sapphire2k 11
  • Ability to Import as a Module

    Ability to Import as a Module

    I see there's an npm module published, and when installing it to my project I attempted to import it via Webpack with import gantt from 'dhtmlx-gantt';. After this didn't work I took a look at the source code and saw that nothing's being exported as a module.

    Since this is an npm module after all, wouldn't it make sense to make this a module to be used by module bundlers / loaders?

    opened by mpalmr 7
  • Dhtmlx-gantt upgrade to 6.1.8 or more gantt rendering is incomplete

    Dhtmlx-gantt upgrade to 6.1.8 or more gantt rendering is incomplete

    version:6.1.8

    question

    I use dhtmlx-gantt for initial rendering. When the number of tasks exceeds 15, the image rendered by gantt is only fixed at 15, after the 15th is all blank, nothing is displayed, but the position is still retained, check the element found. Not rendered

    Click to view image

    opened by CodeDreamfy 6
  • TypeScript declarations prevent `dhtmlx-gantt` from being imported as a module

    TypeScript declarations prevent `dhtmlx-gantt` from being imported as a module

    Hi,

    The declare module statements in the TypeScript declaration files prevent it from being imported as an ES module, as gantt and Gantt are not installable modules from npm.

    The declaration statements should be updated to reflect the names of the packages from where they are installed. I can submit a PR with these changes.

    declare module "gantt" {
        export = gantt;
    }
    

    should read

    declare module "dhtmlx-gantt" {
        export = gantt;
    }
    

    as dhtmlx-gantt is the name of the installable module.

    If Gantt Enterprise is an installable module, then perhaps it should be distributed under its own dhtmlx-gantt-enterprise module. Typing declarations for modules should not have more than one ambient module declaration in it.

    Cheers! 👍

    opened by tylerjwatson 5
  • Inline Editors not working after component destroy in Angular

    Inline Editors not working after component destroy in Angular

    Dhtmlx-gantt version: 7.1.13

    I am using the free version of dhtmlx-gantt. This means that I won't be able to initialize a new gantt instance on component render. I perform some clean-up of the gantt instance on destroy, which is mostly removing all events and tooltips. Although this has been working well so far, the inline editors only work the first time. After the first time, none of the events related to the inline events fire (events that are created using the gantt.ext.inlineEditors.attachEvent method).

    opened by AntoRin 3
  • DataProcessor doesn't handle rejected promise

    DataProcessor doesn't handle rejected promise

    v6.2.7 _sendData only handles success: actionPromise.then(_onResolvedCreateUpdate); That is why the task row doesn't get "gantt_error" style applied when promise is rejected.

    opened by yuriy-harbuzyuk 3
  • gantt can't edit  when reinit

    gantt can't edit when reinit

    1 2

    gantt can't edit when reinit

     gantt.config.columns =[
    					{
    						label: 'name',
    						name: "text",
    						tree: true,
    						resize: true,
    						width: 250,
    						editor: {
    							type: "text",
    							map_to: "text"
    						}
    					},
    					
    				];
        	
        gantt.init("gantt_here");
    	gantt.parse(tasks);
    
    function reinit() {
    	gantt.init("gantt_here2");
    }
    
    '
    opened by dzchengang 3
  • Per column sort config

    Per column sort config

    The change allows to configure the sorting of columns in 3 ways:

    • Setting sort to false

          gantt.config.columns[1].sort = false
      

      Disable sorting for that column

    • Setting sort to a function

          gantt.config.columns[1].sort = function(a,b) {
                  return weird_computation(a,b);
          };
      

    the column will be sorted according to the provided sorting functions.

    • Setting sort to a different field of the task

          gantt.config.columns[1].sort = 'other_field';
      

    The column will be sorted according to the values of that other field.

    opened by yanick 3
  • Unable to Purchase license

    Unable to Purchase license

    I'm not sure if this is the right place to ask the question but after trying emails, help forms and the Canada based help desk (3 times) i'm not sure where else to ask.

    We are trying to purchase the Gannt license (enterprise) for my company, a large financial products/exchange company but due to our purchase policies this can only be done via a PO process. To do this I need to set up DHTMLX/Payproglobal as a company on our purchasing systems to get a PO number to make the purchase through the Payproglobal run online purchase site. So far I've rung the help desk three times and been asked to email another part of Payproglobal to get the necessary information we need ([email protected]) and we have had no reply to any of these emails. We have supplied Payproglobal a telephone number to ring and not had a call back.

    Does anyone here know how we can get around this issue, or have any influence on getting Payproplobal to respond to our request for information?

    opened by gdotp01 2
  • Timeline rendering problem

    Timeline rendering problem

    Hello, In the process of sliding left and right, when the actual time interval is much larger than the plan interval, the actual time is not rendered when the plan timeline stops rendering.Thanks

    opened by lishenhello 2
  • Angular 9 problems - Gantt is not defined

    Angular 9 problems - Gantt is not defined

    We're using DHTMLXGantt pro version within Angular application. It used to work fine for some time, but after updating angular from 8 to 9 (Ivy is disabled) I'm getting the following error in runtime:

    Uncaught ReferenceError: Gantt is not defined
        at Object../node_modules/@pdtec/dhtmlx-gantt-pro/codebase/locale/locale_de.js (index.ts:132)
    

    It displays no errors with Angular8.

    The DHTMLXGantt library is called @pdtec/dhtmlx-gantt-pro because we pack downloaded sources into our private repository under @pdtec/dhtmlx-gantt-pro name.

    The gantt sources are imported into main app component:

    import { Component, ElementRef, Inject, Input, OnDestroy, OnInit, Optional, ViewChild, ViewEncapsulation } from '@angular/core';
    import '@pdtec/dhtmlx-gantt-pro';
    import '@pdtec/dhtmlx-gantt-pro/codebase/ext/dhtmlxgantt_auto_scheduling';
    import '@pdtec/dhtmlx-gantt-pro/codebase/ext/dhtmlxgantt_grouping';
    import '@pdtec/dhtmlx-gantt-pro/codebase/ext/dhtmlxgantt_marker';
    import '@pdtec/dhtmlx-gantt-pro/codebase/ext/dhtmlxgantt_undo';
    (...)
    @Component({
        encapsulation: ViewEncapsulation.None, // to be able to style the diagram
        selector: 'marble-gantt-diagram',
        styleUrls: ['./ng-gantt-diagram.component.scss'],
        templateUrl: './ng-gantt-diagram.component.html'
    })
    export class MarbleGanttDiagramComponent implements OnInit, OnDestroy {
        (...)
    }
    

    I already tried importing it into main app .module file, but it does not fix the error.

    This does not seems to be related to any specific DHTMLXGantt version.

    Could you please help us out solving the issue?

    opened by Melmoth-the-Wanderer 2
  • Issue with DHTMLX Connector

    Issue with DHTMLX Connector

    Hi all,

    Before my migration on PHP 7 I was using DHTMLX with mysql and it as working well. My grids were loading perfectly through the connector. Now, I have changed in db_common to myqli instead of mysql and my grids are not loading at all.

    Do you have any ideas please ?

    opened by ArnaudBOc 0
  • Cannot read custom columns from MPP imports

    Cannot read custom columns from MPP imports

    I am using the following block of code to import MPP files:

    gantt.importFromMSProject({ data: file, taskProperties: ["Notes", "Name", "Start", "Finish", "Start1", "Finish1"], callback: function (project) {}...

    Given that "Start", "Finish", "Start1", "Finish1" are all names of columns in the MPP file. But after import, the properties "Start1" and "Finish1" happen to be null, while the properties "Start" and "Finish" happen to be time in hours - although the file clearly has dates.

    opened by AntoRin 0
  • how can I use dhtmlx gannt in vue or angular or react?

    how can I use dhtmlx gannt in vue or angular or react?

    The dhtmlx gantt plug-in is used in Vue. When you navigate to the page again, the arrow callback function of the previous attachEvent will be executed, resulting in an error. Because the previous vue instance has been destroyed, the previous $ref.xxx attribute does not exist. gantt.attachEvent('onAfterTaskDrag', () => { this.$refs.markerLine.getLines(); }); Therefore, how can I use dhtmlx gannt in vue, or angular or react?

    I can only destroy the events in the page with detachEvent. Do I bind them again?

    opened by Hsensor 6
  • Type definition for config.start_date and config.end_date

    Type definition for config.start_date and config.end_date

    In the type definition file, the configuration values GanttConfigOptions.start_date and GanttConfigOptions.end_date are set as Date. However, they are undefined when the Gantt is initialized.

    Since they are typed without undefined, this also means that the values cannot be set to undefined again in Typescript code (at least when strictNullChecks is true). Could this be fixed in a future version?

    opened by DanielRose 1
  • Property 'form_blocks' does not exist on type 'GanttStatic'.

    Property 'form_blocks' does not exist on type 'GanttStatic'.

    hello I'm septe.

    I have isse when I want to implement multi select input in my project.

    Property 'form_blocks' does not exist on type 'GanttStatic'. block

    how to fix it. could any one help me please

    base project : react typeScript

    ` gantt.form_blocks['multiselect'] = { render: function(sns) { var height = (sns.height || '23') + 'px'; var html = "

    '; return html; },

      set_value: function(node, value, ev, sns) {
        node.style.overflow = 'visible';
        node.parentNode.style.overflow = 'visible';
        node.style.display = 'inline-block';
        var select = $(node.firstChild) as any;
    
        if (value) {
          value = (value + '').split(',');
          select.val(value);
        } else {
          select.val([]);
        }
    
        select.chosen();
        if (sns.onchange) {
          select.change(() => {
            sns.onchange.call(this);
          });
        }
        select.trigger('chosen:updated');
        select.trigger('change');
      },
    
      get_value: function(node, ev) {
        var value = $(node.firstChild).val();
        return value;
      },
    
      focus: function(node) {
        $(node.firstChild).focus();
      },
    };
    `
    
    opened by septe01 1
Releases(v7.1.13)
This plugin for Chart.js that makes your bar chart to 100% stacked bar chart.

chartjs-plugin-stacked100 This plugin for Chart.js that makes your bar chart to 100% stacked bar chart. Requires Chart.js 3.x. Demo: https://y-takey.g

y-take 106 Jan 3, 2023
Open Source Javascript Gantt

Frappe Gantt A simple, interactive, modern gantt chart library for the web View the demo » Install npm install frappe-gantt Usage Include it in your

Frappe 3.5k Dec 30, 2022
TradeX-chart is a trade chart written in plain (vanilla) JavaScript with minimal dependencies

TradeX-chart is a trade chart written in plain (vanilla) JavaScript with minimal dependencies; use it with any framework or backend.

null 24 Dec 12, 2022
A Simple Dashboard Chart in Laravel Nova using Chart JS

A Simple Dashboard Chart in Laravel Nova using Chart JS. Starting create your own dashboard with Chart JS Integration can save your time and help you maintain consistency across standard elements such as Bar, Stacked, Line, Area, Doughnut and Pie Chart.

Kuncoro Wicaksono 177 Jan 4, 2023
Chart.js plugin to defer initial chart updates

Chart.js plugin to defer initial chart updates until the user scrolls and the canvas appears inside the viewport, and thus trigger the initial chart a

Chart.js 97 Nov 9, 2022
Bar Funnel Chart extension for Chart.js

Chart.BarFunnel.js Provides a Bar Funnel Chart for use with Chart.js Documentation To create a Bar Funnel Chart, include Chart.BarFunnel.js after Char

Chart.js 58 Nov 24, 2022
:bar_chart: Re-usable, easy interface JavaScript chart library based on D3.js

billboard.js is a re-usable, easy interface JavaScript chart library, based on D3 v4+. The name "billboard" comes from the famous billboard chart whic

NAVER 5.4k Jan 1, 2023
TChart.js - simple and configurable Bar and Line Chart library in Javascript

TChart.js Simple and configurable Bar and Line Chart library in Javascript Description TChart.js is a canvas-based simple Javascript Bar and Line Char

null 4 Mar 3, 2021
Java library for use with Chart.js javascript library

Chart.java Chart.java enables integration with the excellent Chart.js library from within a Java application. Usage example In Java: BarDataset datase

Marceau Dewilde 102 Dec 16, 2022
Redefined chart library built with React and D3

Recharts Introduction Recharts is a Redefined chart library built with React and D3. The main purpose of this library is to help you to write charts i

recharts 19.4k Jan 2, 2023
:bar_chart: A D3-based reusable chart library

c3 c3 is a D3-based reusable chart library that enables deeper integration of charts into web applications. Follow the link for more information: http

C3.js 9.2k Jan 2, 2023
🍞📊 Beautiful chart for data visualization.

?? ?? Spread your data on TOAST UI Chart. TOAST UI Chart is Beautiful Statistical Data Visualization library. ?? Packages The functionality of TOAST U

NHN 5.2k Jan 2, 2023
:bar_chart: A library of modular chart components built on D3

Plottable Plottable is a library of chart components for creating flexible, custom charts for websites. It is built on top of D3.js and provides highe

Palantir Technologies 2.9k Dec 31, 2022
Chart image and QR code web API

QuickChart QuickChart is a service that generates images of charts from a URL. Because these charts are simple images, they are very easy to embed in

Ian Webster 1.3k Dec 25, 2022
📈 A small, fast chart for time series, lines, areas, ohlc & bars

?? μPlot A small (~35 KB min), fast chart for time series, lines, areas, ohlc & bars (MIT Licensed) Introduction μPlot is a fast, memory-efficient Can

Leon Sorokin 7.5k Jan 7, 2023
🍞📊 Beautiful chart for data visualization.

?? ?? Spread your data on TOAST UI Chart. TOAST UI Chart is Beautiful Statistical Data Visualization library. ?? Packages The functionality of TOAST U

NHN 5.2k Jan 6, 2023
The power of Chart.js in Jupyter !

The power of Chart.js in Jupyter Notebooks Installation You can install ipychart from your terminal using pip or conda: # using pip $ pip install ipyc

Nicolas H 68 Dec 8, 2022
Chart.js bindings for OCaml

chartjs-ocaml: OCaml bindings for Chart.js This library provides OCaml bindings for the Chart.js charting library and some popular plugins. Following

Alex Yanin 13 Aug 20, 2022
J2CL and GWT Charts library based on CHART.JS

Charba - J2CL and GWT Charts library based on CHART.JS What's Charba GWT Web toolkit doesn't have charting library available out of the box. There are

Pepstock.org 56 Dec 17, 2022