razbensimon / react-vis-timeline

React component for the vis-timeline module
MIT License
62 stars 48 forks source link
component react reactjs vis-timeline visjs visualization wrapper

React vis-timeline component

React component for the vis-timeline timeline module.

vis-timeline documentation

example chart

Installation

npm install --save react-vis-timeline

OR

yarn add react-vis-timeline

Getting Started

import Timeline from 'react-vis-timeline'

// https://visjs.github.io/vis-timeline/docs/timeline/#Configuration_Options

const options = {
  width: '100%',
  height: '100px',
  // ...
  // ...
}

// JSX
<Timeline options={options} />

What are the differences from react-visjs-timeline ?

Supported Features

Items

Items follow the exact same for format as they do in `vis-timeline``. See the vis-timeline documentation for more information.

const items = [{
  start: new Date(2010, 7, 15),
  end: new Date(2010, 8, 2),  // end is optional
  content: 'Trajectory A',
}]

<Timeline
  options={options}
  initialItems={items}
/>

Groups

Groups follow the exact same for format as they do in vis-timeline. See the vis-timeline documentation for more information.

const groups = [{
  id: 1,
  content: 'Group A',
}]

<Timeline
  options={options}
  initialGroups={groups}
/>

Custom Times

CustomTimes defined more declaratively in the component, via the customTimes prop.

const customTimes = [
  {
    id: 'one',
    datetime: new Date()
  },
  {
    id: 'two',
    datetime: 'Tue May 10 2016 16:17:44 GMT+1000 (AEST)'
  }
]

When the customTimes prop changes, the updated times will be reflected in the timeline.

Events

All events are supported via prop function handlers. The prop name follows the convention <eventName>Handler and the specified function will receive the same arguments as the vis-timeline counterparts. Some vis-timeline event names are not camelcased (e.g. rangechange), so the corresponding React prop names need to follow that convention where necessary:

<Timeline
  options={options}
  clickHandler={clickHandler}
  rangechangeHandler={rangeChangeHandler}
/>

function clickHandler(props) {
  // handle click event
}

function rangeChangeHandler(props) {
  // handle range change
}

Animation

You can enable animation (when the options start/end values change) by passing a prop of animation to the component. The available options for this prop follow the same conventions as setWindow in vis-timeline. So you can either pass a boolean value (true by default) or an object specifying your animation configuration, e.g:

// animate prop...
{
  duration: 3000,
  easingFunction: 'easeInQuint'
}

Styling

Import your custom CSS after you import the component from the module, e.g:

import Timeline from 'react-vis-timeline';
import './my-custom-css.css';