import React from 'react'; import PropTypes from 'prop-types';
import style from 'PVWStyle/ReactWidgets/ScatterPlotCameraControl.mcss'; import InlineToggleButtonWidget from '../InlineToggleButtonWidget';
const SELECTED_COLOR = '#cdcdcd'; const DEFAULT_COLOR = '#fff';
export default class ScatterPlotCameraControl extends React.Component { constructor(props) { super(props);
this.changeProjection = (item) => { const mode = item.label; props.manager.updateProjection(mode, props.name);
this.forceUpdate(); };
this.resetCamera = () => { this.props.manager.resetCamera(props.name, true); };
this.onAction = (item) => { if (item.action) { this[item.action](item); } }; }
render() { if (!this.props.manager) { return null; } const activeProjection = this.props.manager.getProjection();
return ( <div className={style.container} title="ScatterPlot Camera"> <InlineToggleButtonWidget activeColor={DEFAULT_COLOR} defaultColor={DEFAULT_COLOR} height="21px" options={[ { action: 'resetCamera', icon: style.resetCameraButton }, { action: 'changeProjection', label: 'X' }, { action: 'changeProjection', label: 'Y' }, { action: 'changeProjection', label: 'Z' }, ]} onChange={this.onAction} /> <InlineToggleButtonWidget active={['2D', '3D'].indexOf(activeProjection)} activeColor={SELECTED_COLOR} defaultColor={DEFAULT_COLOR} height="21px" options={[ { label: '2D', action: 'changeProjection' }, { label: '3D', action: 'changeProjection' }, ]} onChange={this.onAction} /> </div> ); } }
ScatterPlotCameraControl.propTypes = { manager: PropTypes.object, name: PropTypes.string, };
ScatterPlotCameraControl.defaultProps = { manager: undefined, name: undefined, };
|