Security News
Opengrep Emerges as Open Source Alternative Amid Semgrep Licensing Controversy
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
frappe-gantt
Advanced tools
A modern, configurable, Gantt library for the web.
Gantt charts are bar charts that visually illustrate a project's tasks, schedule, and dependencies. With Frappe Gantt, you can build beautiful, customizable, Gantt charts with ease.
You can use it anywhere from hobby projects to tracking the goals of your team at the worksplace.
ERPNext uses Frappe Gantt.
We needed a Gantt View for ERPNext. Surprisingly, we couldn't find a visually appealing Gantt library that was open source - so we decided to build it. Initially, the design was heavily inspired by Google Gantt and DHTMLX.
Install with:
npm install frappe-gantt
Include it in your HTML:
<script src="frappe-gantt.umd.js"></script>
<link rel="stylesheet" href="frappe-gantt.css">
Or from the CDN:
<script src="https://cdn.jsdelivr.net/npm/frappe-gantt/dist/frappe-gantt.umd.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/frappe-gantt/dist/frappe-gantt.css">
Start using Gantt:
let tasks = [
{
id: '1',
name: 'Redesign website',
start: '2016-12-28',
end: '2016-12-31',
progress: 20
},
...
]
let gantt = new Gantt("#gantt", tasks);
Frappe Gantt offers a wide range of options to customize your chart.
Option | Description | Possible Values | Default |
---|---|---|---|
arrow_curve | Curve radius of arrows connecting dependencies. | Any positive integer. | 5 |
auto_move_label | Move task labels when user scrolls horizontally. | true , false | false |
bar_corner_radius | Radius of the task bar corners (in pixels). | Any positive integer. | 3 |
bar_height | Height of task bars (in pixels). | Any positive integer. | 30 |
container_height | Height of the container. | auto - dynamic container height to fit all tasks - or any positive integer (for pixels). | auto |
column_width | Width of each column in the timeline. | Any positive integer. | 45 |
date_format | Format for displaying dates. | Any valid JS date format string. | YYYY-MM-DD |
upper_header_height | Height of the upper header in the timeline (in pixels). | Any positive integer. | 45 |
lower_header_height | Height of the lower header in the timeline (in pixels). | Any positive integer. | 30 |
snap_at | Snap tasks at particular intervel while resizing or dragging. | Any interval (see below) | 1d |
infinite_padding | Whether to extend timeline infinitely when user scrolls. | true , false | true |
holidays | Highlighted holidays on the timeline. | Object mapping CSS colors to holiday types. Types can either be a) 'weekend', or b) array of strings or date objects or objects in the format {date: ..., label: ...} | { 'var(--g-weekend-highlight-color)': 'weekend' } |
ignore | Ignored areas in the rendering | weekend or Array of strings or date objects (weekend can be present to the array also). | [] |
language | Language for localization. | ISO 639-1 codes like en , fr , es . | en |
lines | Determines which grid lines to display. | none for no lines, vertical for only vertical lines, horizontal for only horizontal lines, both for complete grid. | both |
move_dependencies | Whether moving a task automatically moves its dependencies. | true , false | true |
padding | Padding around task bars (in pixels). | Any positive integer. | 18 |
popup_on | Event to trigger the popup display. | click or hover | click |
readonly_progress | Disables editing task progress. | true , false | false |
readonly_dates | Disables editing task dates. | true , false | false |
readonly | Disables all editing features. | true , false | false |
scroll_to | Determines the starting point when chart is rendered. | today , start , end , or a date string. | today |
show_expected_progress | Shows expected progress for tasks. | true , false | false |
today_button | Adds a button to navigate to today’s date. | true , false | true |
view_mode | The initial view mode of the Gantt chart. | Day , Week , Month , Year . | Day |
view_mode_select | Allows selecting the view mode from a dropdown. | true , false | false |
Apart from these ones, two options - popup
and view_modes
(plural, not singular) - are available. They have "sub"-APIs, and thus are listed separately.
The view_modes
option determines all the available view modes for the chart. It should be an array of objects.
Each object can have the following properties:
name
(string) - the name of view mode.padding
(interval) - the time above.step
- the interval of each columnlower_text
(date format string or function) - the format for text in lower header. Blank string for none. The function takes in currentDate
, previousDate
, and lang
, and should return a string.upper_text
(date format string or function) - the format for text in upper header. Blank string for none. The function takes in currentDate
, previousDate
, and lang
, and should return a string.upper_text_frequency
(number) - how often the upper text has a value. Utilized in internal calculation to improve performance.thick_line
(function) - takes in currentDate
, returns Boolean determining whether the line for that date should be thicker than the others.Three other options allow you to override general configuration for this view mode alone:
date_format
column_width
snap_at
For details, see the above table.popup
is a function. If it returns
false
, there will be no popup.undefined
, the popup will be rendered based on manipulation within the functionThe function receives one object as an argument, containing:
task
- the task as an objectchart
- the entire Gantt chartget_title
, get_subtitle
, get_details
(functions) - get the relevant section as a HTML node.set_title
, set_subtitle
, set_details
(functions) - take in the HTML of the relevant sectionadd_action
(function) - accepts two parameters, html
and func
- respectively determining the HTML of the action and the callback when the action is pressed.Frappe Gantt exposes a few helpful methods for you to interact with the chart:
Name | Description | Parameters |
---|---|---|
.update_options | Re-renders the chart after updating specific options. | new_options - object containing new options. |
.change_view_mode | Updates the view mode. | view_mode - Name of view mode or view mode object (see above) and maintain_pos - whether to go back to current scroll position after rerendering, defaults to false . |
.scroll_current | Scrolls to the current date | No parameters. |
.update_task | Re-renders a specific task bar alone | task_id - id of task and new_details - object containing the task properties to be updated. |
If you want to contribute enhancements or fixes:
cd
into project directory.pnpm i
to install dependencies.pnpm run build
to build files - or pnpm run build-dev
to build and watch for changes.index.html
in your browser.FAQs
A simple, modern, interactive gantt library for the web
We found that frappe-gantt demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.