octree-gva/Zeitline

View on GitHub
packages/zeitline-react/demo/src/index.js

Summary

Maintainability
A
1 hr
Test Coverage
import React, {Component} from 'react'
import {render} from 'react-dom'

import Zeitline from '../../src'

// const eventsSource = {
//   eventClick(props) {
//     console.log(props);
//   },

//   beginDrag(props) {
//     // Return the data describing the dragged item
//     const item = { id: props.id };
//     return item;
//   }
// };

// Demo with the Zeitline component
class ZeitlineDemo extends Component {

  constructor(props) {
    super(props);

    this.state = {
      numberOfEvents: 1,
      data: [
        {date: new Date('29 Apr 2017'), label: 'test3a'},
        {date: new Date('29 Apr 2017'), label: 'test3b'},
        {date: new Date('1 May 2017'), label: 'test3c'},
        {date: new Date('10 May 2017'), label: 'test3d 10 May 2017'},
        {date: new Date('25 May 2017'), label: 'test4 25 May 2017'},
        {date: new Date('25 May 2017'), label: 'test4B'},
        {date: new Date('30 May 2017'), label: 'test4C'},
        {date: new Date('10 Jun 2017'), label: 'test_Jun1'},
        {date: new Date('15 Jun 2017'), label: 'test_Jun2'},
        {date: new Date('15 Jun 2017'), label: 'a'},
        {date: new Date('20 Jun 2017'), label: 'a'},
        {date: new Date('25 Jun 2017'), label: 'a'},
        {date: new Date('30 Jun 2017'), label: 'a'},
        {date: new Date('01 Jul 2017'), label: 'a'},
        {date: new Date('10 Jul 2017'), label: 'a'},
        {date: new Date('15 Jul 2017'), label: 'a'},
        {date: new Date('20 Jul 2017'), label: 'a'},
        {date: new Date('23 Jul 2017'), label: 'a'},
        {date: new Date('24 Jul 2017'), label: 'a'},
        {date: new Date('25 Jul 2017'), label: 'a'},
        {date: new Date('26 Jul 2017'), label: 'a'},
        {date: new Date('27 Jul 2017'), label: 'a'},
        {date: new Date('31 Jul 2017'), label: 'a'},
        {date: new Date('10 Aug 2017'), label: 'test5'},
        {date: new Date('Sep 2017'), label: 'test6'},
        {date: new Date('10 Oct 2017'), label: 'test6'},
        {date: new Date('24 Dec 2017'), label: 'test7'},
        {date: new Date('31 Dec 2017'), label: 'test8'},
        {date: new Date('Jan 2018'), label: 'test9'},
        {date: new Date('Feb 2018'), label: 'test9'},
        {date: new Date('10 May 2018'), label: 'test10'},
        {date: new Date('10 May 2018'), label: 'test11'},
        {date: new Date('25 May 2018'), label: 'test13'},
        {date: new Date('Aug 2018'), label: 'test12'},
        {date: new Date('Jan 2019'), label: 'test13'},
        {date: new Date('Jan 2021'), label: 'test14'},
        {date: new Date('Jan 2022'), label: 'test15'},
        {date: new Date('Jan 2027'), label: 'test16'},
      ]
    };

    this.addEvent = this.addEvent.bind(this);

    this.addInterval = this.addInterval.bind(this);
  }

  addEvent() {
    this.setState({
      ...this.state,
      numberOfEvents: (this.state.numberOfEvents % 30) + 1,
      data: [
        ...this.state.data,
        {
          date: new Date(this.state.numberOfEvents + ' Dec 2017'),
          label: this.state.numberOfEvents
        },
      ],
    });
  }

  addInterval() {
    console.log('interv');

    this.setState({
      ...this.state,
      intervals: [
        ...this.state.intervals,
        [new Date('2017-04-01'), new Date('2017-06-01'), 350],
      ]
    });
  }

  render() {
    console.log('demo', this.state)

    return <div>
      <h1>Zeitline Demo</h1>
      <Zeitline
        width={1000}
        data={this.state.data}
        intervals={this.state.intervals || []}
      />
      <div>
        <button onClick={this.addEvent}>Add an event</button>
        <button onClick={this.addInterval}>Add interval</button>
      </div>
    </div>
  }
}

render(<ZeitlineDemo/>, document.querySelector('#demo'))