vis.js is a dynamic, browser-based visualization library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

13 KiB

vis.js history

not yet released, version 3.0.1-SNAPSHOT


  • Implemented function getVisibleItems(), which returns the items visible in the current window.
  • Added options margin.item.horizontal and margin.item.vertical, which allows to specify different margins horizontally/vertically.
  • Removed check for number of arguments in callbacks onAdd, onUpdate, onRemove, and onMove.
  • Refactored the code to commonjs modules, which are browserifyable. This allows to create custom bundles.
  • Fixed items in groups sometimes being displayed but not positioned correctly.
  • Fixed range where the end of the first is equal to the start of the second sometimes being stacked instead of put besides each other when item.margin=0 due to round-off errors.

Network (formerly named Graph)

  • Expanded smoothCurves options for improved support for large clusters.
  • Added multiple types of smoothCurve drawing for greatly improved performance.
  • Option for inherited edge colors from connected nodes.
  • Option to disable the drawing of nodes or edges on drag.
  • Fixed support nodes not being cleaned up if edges are removed.
  • Improved edge selection detection for long smooth curves.
  • Fixed dot radius bug.
  • Updated max velocity of nodes to three times it's original value.
  • Made "stabilized" event fire every time the network stabilizes.
  • Fixed drift in dragging nodes while zooming.
  • Fixed recursively constructing of hierarchical layouts.
  • Added borderWidth option for nodes.
  • Implemented new Hierarchical view solver.
  • Fixed an issue with selecting nodes when the web page is scrolled down.

2014-07-07, version 3.0.0


  • Implemented support for displaying a title for both items and groups.

  • Fixed auto detected item type being preferred over the global item type.

  • Throws an error when constructing without new keyword.

  • Removed the 'rangeoverflow' item type. Instead, one can use a regular range and change css styling of the item contents to:

      .vis.timeline .item.range .content {
        overflow: visible;
  • Fixed the height of background and foreground panels of groups.

  • Fixed ranges in the Timeline sometimes overlapping when dragging the Timeline.

  • Fixed DataView not working in Timeline.

Network (formerly named Graph)

  • Renamed Graph to Network to prevent confusion with the visualizations Graph2d and Graph3d.
    • Renamed option dragGraph to dragNetwork.
  • Now throws an error when constructing without new keyword.
  • Added pull request from Vukk, user can now define the edge width multiplier when selected.
  • Fixed graph.storePositions().
  • Extended Selection API with selectNodes and selectEdges, deprecating setSelection.
  • Fixed multiline labels.
  • Changed hierarchical physics solver and updated docs.


  • Added first iteration of the Graph2d.


  • Now throws an error when constructing without new keyword.

2014-06-19, version 2.0.0


  • Implemented function destroy to neatly cleanup a Timeline.
  • Implemented support for dragging the timeline contents vertically.
  • Implemented options zoomable and moveable.
  • Changed default value of option showCurrentTime to true.
  • Internal refactoring and simplification of the code.
  • Fixed property className of groups not being applied to related contents and background elements, and not being updated once applied.


  • Reduced the timestep a little for smoother animations.
  • Fixed dataManipulation.initiallyVisible functionality (thanks theGrue).
  • Forced typecast of fontSize to Number.
  • Added editing of edges using the data manipulation toolkit.


  • Renamed option convert to type.

2014-06-06, version 1.1.0


  • Select event now triggers repeatedly when selecting an already selected item.
  • Renamed Timeline.repaint() to Timeline.redraw() to be consistent with the other visualisations of vis.js.
  • Fixed Timeline.clear() not resetting a configured options.start and options.end.


  • Fixed error with zero nodes with hierarchical layout.
  • Added focusOnNode function.
  • Added hover option.
  • Added dragNodes option. Renamed movebale to dragGraph option.
  • Added hover events (hoverNode, blurNode).


  • Ported Graph3D from Chap Links Library.

2014-05-28, version 1.0.2


  • Implemented option minHeight, similar to option maxHeight.
  • Implemented a method clear([what]), to clear items, groups, and configuration of a Timeline instance.
  • Added function repaint() to force a repaint of the Timeline.
  • Some tweaks in snapping dragged items to nice dates.
  • Made the instance of moment.js packaged with vis.js accessibly via vis.moment.
  • A newly created item is initialized with end property when option type is "range" or "rangeoverflow".
  • Fixed a bug in replacing the DataSet of groups via Timeline.setGroups(groups).
  • Fixed a bug when rendering the Timeline inside a hidden container.
  • Fixed axis scale being determined wrongly for a second Timeline in a single page.


  • Added zoomable and moveable options.
  • Changes setOptions to avoid resetting view.
  • Interchanged canvasToDOM and DOMtoCanvas to correspond with the docs.

2014-05-09, version 1.0.1


  • Fixed width of items with type rangeoverflow.
  • Fixed a bug wrongly rendering invisible items after updating them.


  • Added coordinate conversion from DOM to Canvas.
  • Fixed bug where the graph stopped animation after settling in playing with physics.
  • Fixed bug where hierarchical physics properties were not handled.
  • Added events for change of view and zooming.

2014-05-02, version 1.0.0


  • Large refactoring of the Timeline, simplifying the code.
  • Great performance improvements.
  • Improved layout of box-items inside groups.
  • Items can now be dragged from one group to another.
  • Implemented option stack to enable/disable stacking of items.
  • Implemented function fit, which sets the Timeline window such that it fits all items.
  • Option editable can now be used to enable/disable individual manipulation actions (add, updateTime, updateGroup, remove).
  • Function setWindow now accepts an object with properties start and end.
  • Fixed option autoResize forcing a repaint of the Timeline with every check rather than when the Timeline is actually resized.
  • Fixed select event fired repeatedly when clicking an empty place on the Timeline, deselecting selected items).
  • Fixed initial visible window in case items exceed zoomMax. Thanks @Remper.
  • Fixed an offset in newly created items when using groups.
  • Fixed height of a group not reckoning with the height of the group label.
  • Option order is now deprecated. This was needed for performance improvements.
  • More examples added.
  • Minor bug fixes.


  • Added recalculate hierarchical layout to update node event.
  • Added arrowScaleFactor to scale the arrows on the edges.


  • A DataSet can now be constructed with initial data, like new DataSet(data, options).

2014-04-18, version 0.7.4


  • Fixed IE9 bug.
  • Style fixes.
  • Minor bug fixes.

2014-04-16, version 0.7.3


  • Fixed color bug.
  • Added pull requests from kannonboy and vierja: tooltip styling, label fill color.

2014-04-09, version 0.7.2


  • Fixed edge select bug.
  • Fixed zoom bug on empty initialization.

2014-03-27, version 0.7.1


  • Fixed edge color bug.
  • Fixed select event bug.
  • Clarified docs, stressing importance of css inclusion for correct display of navigation an manipulation icons.
  • Improved and expanded playing with physics (configurePhysics option).
  • Added highlights to navigation icons if the corresponding key is pressed.
  • Added freezeForStabilization option to improve stabilization with cached positions.

2014-03-07, version 0.7.0


  • Changed navigation CSS. Icons are now always correctly positioned.
  • Added stabilizationIterations option to graph.
  • Added storePosition() method to save the XY positions of nodes in the DataSet.
  • Separated allowedToMove into allowedToMoveX and allowedToMoveY. This is required for initializing nodes from hierarchical layouts after storePosition().
  • Added color options for the edges.

2014-03-06, version 0.6.1


  • Bugfix graphviz examples.
  • Bugfix labels position for smooth curves.
  • Tweaked graphviz example physics.
  • Updated physics documentation to stress importance of configurePhysics.


  • Fixed a bug with options margin.axis and margin.item being ignored when setting them to zero.
  • Some clarifications in the documentation.

2014-03-05, version 0.6.0


  • Added Physics Configuration option. This makes tweaking the physics system to suit your needs easier.
  • Click and doubleClick events.
  • Initial zoom bugfix.
  • Directions for Hierarchical layout.
  • Refactoring and bugfixes.

2014-02-20, version 0.5.1

  • Fixed broken bower module.

2014-02-20, version 0.5.0


  • Editable Items: drag items, add new items, update items, and remove items.
  • Implemented options selectable, editable.
  • Added events timechange and timechanged when dragging the custom time bar.
  • Multiple items can be selected using ctrl+click or shift+click.
  • Implemented functions setWindow(start, end) and getWindow().
  • Fixed scroll to zoom not working on IE in standards mode.


  • Editable nodes and edges: create, update, and remove them.
  • Support for smooth, curved edges (on by default).
  • Performance improvements.
  • Fixed scroll to zoom not working on IE in standards mode.
  • Added hierarchical layout option.
  • Overhauled physics system, now using Barnes-Hut simulation by default. Great performance gains.
  • Modified clustering system to give better results.
  • Adaptive performance system to increase visual performance (60fps target).


  • Renamed functions subscribe and unsubscribe to on and off respectively.

2014-01-31, version 0.4.0


  • Implemented functions on and off to create event listeners for events rangechange, rangechanged, and select.
  • Implemented function select to get and set the selected items.
  • Items can be selected by clicking them, muti-select by holding them.
  • Fixed non working start and end options.


  • Fixed longstanding bug in the force calculation, increasing simulation stability and fluidity.
  • Reworked the calculation of the Graph, increasing performance for larger datasets (up to 10x!).
  • Support for automatic clustering in Graph to handle large (>50000) datasets without losing performance.
  • Added automatic initial zooming to Graph, to more easily view large amounts of data.
  • Added local declustering to Graph, freezing the simulation of nodes outside of the cluster.
  • Added support for key-bindings by including mouseTrap in Graph.
  • Added navigation controls.
  • Added keyboard navigation.
  • Implemented functions on and off to create event listeners for event select.

2014-01-14, version 0.3.0

  • Moved the generated library to folder ./dist
  • Css stylesheet must be loaded explicitly now.
  • Implemented options showCurrentTime and showCustomTime. Thanks @fi0dor.
  • Implemented touch support for Timeline.
  • Fixed broken Timeline options min and max.
  • Fixed not being able to load vis.js in node.js.

2013-09-20, version 0.2.0

  • Implemented full touch support for Graph.
  • Fixed initial empty range in the Timeline in case of a single item.
  • Fixed field className not working for items.

2013-06-20, version 0.1.0

  • Added support for DataSet to Graph. Graph now uses an id based set of nodes and edges instead of a row based array internally. Methods getSelection and setSelection of Graph now accept a list with ids instead of rows.
  • Graph is now robust against edges pointing to non-existing nodes, which can occur easily while dynamically adding/removing nodes and edges.
  • Implemented basic support for groups in the Timeline.
  • Added documentation on DataSet and DataView.
  • Fixed selection of nodes in a Graph when the containing web page is scrolled.
  • Improved date conversion.
  • Renamed DataSet option fieldTypes to convert.
  • Renamed function vis.util.cast to vis.util.convert.

2013-06-07, version 0.0.9

  • First working version of the Graph imported from the old library.
  • Documentation added for both Timeline and Graph.

2013-05-03, version 0.0.8

  • Performance improvements: only visible items are rendered.
  • Minor bug fixes and improvements.

2013-04-25, version 0.0.7

  • Sanitized the published packages on npm and bower.

2013-04-25, version 0.0.6

  • Css is now packaged in the javascript file, and automatically loaded.
  • The library uses node style dependency management for modules now, used with Browserify.

2013-04-16, version 0.0.5

  • First working version of the Timeline.
  • Website created.