all files / src/visualizations/deckgl/ AnimatableDeckGLContainer.jsx

59.09% Statements 13/22
0% Branches 0/4
0% Functions 0/3
57.14% Lines 12/21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60                                                                                                
import React from 'react';
import PropTypes from 'prop-types';
 
import DeckGLContainer from './DeckGLContainer';
import PlaySlider from '../PlaySlider';
 
const propTypes = {
  getLayers: PropTypes.func.isRequired,
  start: PropTypes.number.isRequired,
  end: PropTypes.number.isRequired,
  step: PropTypes.number.isRequired,
  values: PropTypes.array.isRequired,
  disabled: PropTypes.bool,
  viewport: PropTypes.object.isRequired,
  children: PropTypes.node,
};
 
const defaultProps = {
  disabled: false,
  step: 1,
};
 
export default class AnimatableDeckGLContainer extends React.Component {
  constructor(props) {
    super(props);
    const { getLayers, start, end, step, values, disabled, viewport, ...other } = props;
    this.state = { values, viewport };
    this.other = other;
  }
  componentWillReceiveProps(nextProps) {
    this.setState({ values: nextProps.values, viewport: nextProps.viewport });
  }
  render() {
    const layers = this.props.getLayers(this.state.values);
    return (
      <div>
        <DeckGLContainer
          {...this.other}
          viewport={this.state.viewport}
          layers={layers}
          onViewportChange={newViewport => this.setState({ viewport: newViewport })}
        />
        {!this.props.disabled &&
        <PlaySlider
          start={this.props.start}
          end={this.props.end}
          step={this.props.step}
          values={this.state.values}
          onChange={newValues => this.setState({ values: newValues })}
        />
        }
        {this.props.children}
      </div>
    );
  }
}
 
AnimatableDeckGLContainer.propTypes = propTypes;
AnimatableDeckGLContainer.defaultProps = defaultProps;