UNPKG

react-planner-viewer

Version:

react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode

63 lines (53 loc) 1.63 kB
import React from 'react'; import {Map} from 'immutable'; import {createStore} from 'redux'; import {Provider} from 'react-redux'; import ReactPlanner from './react-planner'; import PropTypes from 'prop-types'; import MyCatalog from './catalog/myCatalog/myCatalog'; import * as PlannerModels from './models'; import PlannerReducer from './reducers/reducer'; let AppState = Map({ 'react-planner': new PlannerModels.State() }); //define reducer let reducer = (state, action) => { state = state || AppState; state = state.update('react-planner', plannerState => PlannerReducer(plannerState, action)); return state; }; let store = createStore(reducer, null); class ReactPlannerViewer extends React.Component { render() { let {width, height, project, scene, heatMapValues, heatMapColors, onSelectArea} = this.props; return ( <Provider store={store}> <ReactPlanner catalog={MyCatalog} width={width} height={height} newScene={scene} heatMapColors={heatMapColors} heatMapValues={heatMapValues} onSelectArea={onSelectArea} stateExtractor={state => state.get('react-planner')} /> </Provider> ); } } ReactPlannerViewer.propTypes = { heatMapColors: PropTypes.array, heatmapValues: PropTypes.arrayOf(PropTypes.object), width: PropTypes.number, height: PropTypes.number, onSelectArea: PropTypes.func, scene: PropTypes.object, }; ReactPlannerViewer.defaultProps = { heatMapValues: [], width: 300, height: 300, onSelectArea: (areaName)=>{}, } export default ReactPlannerViewer;