diff options
Diffstat (limited to 'src/actions')
| -rw-r--r-- | src/actions/topology/machine.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/actions/topology/machine.js b/src/actions/topology/machine.js index af258a6f..e11c7d1d 100644 --- a/src/actions/topology/machine.js +++ b/src/actions/topology/machine.js @@ -2,6 +2,8 @@ import {goDownOneInteractionLevel} from "../interaction-level"; import {addPropToStoreObject} from "../objects"; export const DELETE_MACHINE = "DELETE_MACHINE"; +export const ADD_UNIT = "ADD_UNIT"; +export const DELETE_UNIT = "DELETE_UNIT"; export function deleteMachine() { return { @@ -19,3 +21,40 @@ export function deleteMachineSucceeded() { dispatch(addPropToStoreObject("rack", rack.id, {machineIds})); }; } + +export function addUnit(unitType, id) { + return { + type: ADD_UNIT, + unitType, + id + }; +} + +export function addUnitSucceeded(unitType, id) { + return (dispatch, getState) => { + const {objects, interactionLevel} = getState(); + const machine = objects.machine[objects.rack[objects.tile[interactionLevel.tileId].objectId] + .machineIds[interactionLevel.position - 1]]; + const units = [...machine[unitType + "Ids"], id]; + dispatch(addPropToStoreObject("machine", machine.id, {[unitType + "Ids"]: units})); + }; +} + +export function deleteUnit(unitType, index) { + return { + type: DELETE_UNIT, + unitType, + index + }; +} + +export function deleteUnitSucceeded(unitType, index) { + return (dispatch, getState) => { + const {objects, interactionLevel} = getState(); + const machine = objects.machine[objects.rack[objects.tile[interactionLevel.tileId].objectId] + .machineIds[interactionLevel.position - 1]]; + const unitIds = machine[unitType + "Ids"].slice(); + unitIds.splice(index, 1); + dispatch(addPropToStoreObject("machine", machine.id, {[unitType + "Ids"]: unitIds})); + }; +} |
