diff options
| author | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-09-07 22:15:17 +0200 |
|---|---|---|
| committer | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-09-23 10:05:58 +0200 |
| commit | 1b5d2658f9ec06308b2a5ed062f6f5b4798ed733 (patch) | |
| tree | 84d35684a50f897fc4c5f460bed595adf22c9e66 /src/actions/topology/room.js | |
| parent | 8218c3d3c21bfa7c4f3ee4872722b9b1261576fb (diff) | |
Reorganize actions and state tree
Diffstat (limited to 'src/actions/topology/room.js')
| -rw-r--r-- | src/actions/topology/room.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/actions/topology/room.js b/src/actions/topology/room.js new file mode 100644 index 00000000..12133330 --- /dev/null +++ b/src/actions/topology/room.js @@ -0,0 +1,73 @@ +import {findTileWithPosition} from "../../util/tile-calculations"; +import {goDownOneInteractionLevel} from "../interaction-level"; +import {addPropToStoreObject, removeIdFromStoreObjectListProp} from "../objects"; + +export const EDIT_ROOM_NAME = "EDIT_ROOM_NAME"; +export const DELETE_ROOM = "DELETE_ROOM"; +export const START_RACK_CONSTRUCTION = "START_RACK_CONSTRUCTION"; +export const STOP_RACK_CONSTRUCTION = "STOP_RACK_CONSTRUCTION"; +export const ADD_RACK_TO_TILE = "ADD_RACK_TO_TILE"; + +export function editRoomName(name) { + return { + type: EDIT_ROOM_NAME, + name + }; +} + +export function editRoomNameSucceeded(name) { + return (dispatch, getState) => { + const {interactionLevel} = getState(); + dispatch(addPropToStoreObject("room", interactionLevel.roomId, {name})); + }; +} + +export function startRackConstruction() { + return { + type: START_RACK_CONSTRUCTION + }; +} + +export function stopRackConstruction() { + return { + type: STOP_RACK_CONSTRUCTION + }; +} + +export function addRackToTile(positionX, positionY) { + return (dispatch, getState) => { + const {objects, interactionLevel} = getState(); + const currentRoom = objects.room[interactionLevel.roomId]; + const tiles = currentRoom.tileIds.map(tileId => objects.tile[tileId]); + const tile = findTileWithPosition(tiles, positionX, positionY); + + if (tile !== null) { + dispatch({ + type: ADD_RACK_TO_TILE, + tileId: tile.id + }); + } + }; +} + +export function addRackToTileSucceeded(tileId, rackId) { + return dispatch => { + dispatch(addPropToStoreObject("tile", tileId, {objectType: "RACK"})); + dispatch(addPropToStoreObject("tile", tileId, {objectId: rackId})); + }; +} + +export function deleteRoom() { + return { + type: DELETE_ROOM + }; +} + +export function deleteRoomSucceeded() { + return (dispatch, getState) => { + const {currentDatacenterId, interactionLevel} = getState(); + const currentRoomId = interactionLevel.roomId; + dispatch(goDownOneInteractionLevel()); + dispatch(removeIdFromStoreObjectListProp("datacenter", currentDatacenterId, "roomIds", currentRoomId)); + }; +} |
