diff options
Diffstat (limited to 'frontend/src/components/app/map/groups/TopologyGroup.js')
| -rw-r--r-- | frontend/src/components/app/map/groups/TopologyGroup.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/frontend/src/components/app/map/groups/TopologyGroup.js b/frontend/src/components/app/map/groups/TopologyGroup.js new file mode 100644 index 00000000..a40a1d41 --- /dev/null +++ b/frontend/src/components/app/map/groups/TopologyGroup.js @@ -0,0 +1,40 @@ +import React from 'react' +import { Group } from 'react-konva' +import GrayContainer from '../../../../containers/app/map/GrayContainer' +import RoomContainer from '../../../../containers/app/map/RoomContainer' +import Shapes from '../../../../shapes/index' + +const TopologyGroup = ({ topology, interactionLevel }) => { + if (!topology) { + return <Group/> + } + + if (interactionLevel.mode === 'BUILDING') { + return ( + <Group> + {topology.roomIds.map(roomId => ( + <RoomContainer key={roomId} roomId={roomId}/> + ))} + </Group> + ) + } + + return ( + <Group> + {topology.roomIds + .filter(roomId => roomId !== interactionLevel.roomId) + .map(roomId => <RoomContainer key={roomId} roomId={roomId}/>)} + {interactionLevel.mode === 'ROOM' ? <GrayContainer/> : null} + {topology.roomIds + .filter(roomId => roomId === interactionLevel.roomId) + .map(roomId => <RoomContainer key={roomId} roomId={roomId}/>)} + </Group> + ) +} + +TopologyGroup.propTypes = { + topology: Shapes.Topology, + interactionLevel: Shapes.InteractionLevel, +} + +export default TopologyGroup |
