summaryrefslogtreecommitdiff
path: root/frontend/src/components/app/map/groups/TopologyGroup.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/app/map/groups/TopologyGroup.js')
-rw-r--r--frontend/src/components/app/map/groups/TopologyGroup.js40
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