summaryrefslogtreecommitdiff
path: root/src/actions/topology/machine.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/actions/topology/machine.js')
-rw-r--r--src/actions/topology/machine.js39
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}));
+ };
+}