diff options
Diffstat (limited to 'src/actions/topology/rack.js')
| -rw-r--r-- | src/actions/topology/rack.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/actions/topology/rack.js b/src/actions/topology/rack.js new file mode 100644 index 00000000..cb6ec387 --- /dev/null +++ b/src/actions/topology/rack.js @@ -0,0 +1,53 @@ +import {goDownOneInteractionLevel} from "../interaction-level"; +import {addPropToStoreObject} from "../objects"; + +export const EDIT_RACK_NAME = "EDIT_RACK_NAME"; +export const DELETE_RACK = "DELETE_RACK"; +export const ADD_MACHINE = "ADD_MACHINE"; + +export function editRackName(name) { + return { + type: EDIT_RACK_NAME, + name + }; +} + +export function editRackNameSucceeded(name) { + return (dispatch, getState) => { + const {objects, interactionLevel} = getState(); + dispatch(addPropToStoreObject("rack", objects.tile[interactionLevel.tileId].objectId, {name})); + }; +} + +export function deleteRack() { + return { + type: DELETE_RACK + }; +} + +export function deleteRackSucceeded() { + return (dispatch, getState) => { + const {interactionLevel} = getState(); + const currentTileId = interactionLevel.tileId; + dispatch(goDownOneInteractionLevel()); + dispatch(addPropToStoreObject("tile", currentTileId, {objectType: undefined})); + dispatch(addPropToStoreObject("tile", currentTileId, {objectId: undefined})); + }; +} + +export function addMachine(position) { + return { + type: ADD_MACHINE, + position + }; +} + +export function addMachineSucceeded(machine) { + return (dispatch, getState) => { + const {objects, interactionLevel} = getState(); + const rack = objects.rack[objects.tile[interactionLevel.tileId].objectId]; + const machineIds = [...rack.machineIds]; + machineIds[machine.position - 1] = machine.id; + dispatch(addPropToStoreObject("rack", rack.id, {machineIds})); + }; +} |
