UNPKG

react-planner-viewer

Version:

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

67 lines (57 loc) 1.73 kB
import { select, unselectAll, showHeatMap, } from '../utils/layer-operations'; import { SELECT_AREA, SHOW_HEAT_MAP_AREAS } from '../constants'; import { Vertex } from '../models'; export default function (state, action) { switch (action.type) { case SELECT_AREA: return selectArea(state, action.layerID, action.areaID); case SHOW_HEAT_MAP_AREAS: return showHeatMapAreas(state, action.layerID, action.heatMapValues, action.colors); default: return state; } } function selectArea(state, layerID, areaID) { let scene = state.scene; scene = scene.merge({ layers: scene.layers.map(unselectAll), selectedLayer: layerID }); scene = scene.updateIn(['layers', layerID], layer => layer.withMutations(layer => { let area = layer.getIn(['areas', areaID]); select(layer, 'areas', areaID); const areaVertices = area.vertices; const areaLinesIds = []; const allLines = layer.lines.forEach(line => { const lineVertices = line.get('vertices'); const lineBelongsToArea = lineVertices.every(vert => areaVertices.includes(vert)); if(lineBelongsToArea){ select(layer, 'lines', line.get('id')); } }); }) ); return state.merge({ scene, sceneHistory: state.sceneHistory.push(scene) }) } function showHeatMapAreas(state, layerID, heatMapValues, colors) { let scene = state.scene; scene = scene.merge({ layers: scene.layers.map(unselectAll), selectedLayer: layerID }); scene = scene.updateIn(['layers', layerID], layer => layer.withMutations(layer => { showHeatMap(layer, heatMapValues, colors); }) ); return state.merge({ scene, sceneHistory: state.sceneHistory.push(scene) }) }