summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/actions/topology/building.js35
-rw-r--r--src/actions/topology/machine.js35
-rw-r--r--src/actions/topology/rack.js30
-rw-r--r--src/actions/topology/room.js18
-rw-r--r--src/sagas/topology.js54
5 files changed, 42 insertions, 130 deletions
diff --git a/src/actions/topology/building.js b/src/actions/topology/building.js
index 87abbf5b..9f2d4590 100644
--- a/src/actions/topology/building.js
+++ b/src/actions/topology/building.js
@@ -1,5 +1,3 @@
-import {addIdToStoreObjectListProp, removeIdFromStoreObjectListProp} from "../objects";
-
export const FETCH_TOPOLOGY_OF_DATACENTER = "FETCH_TOPOLOGY_OF_DATACENTER";
export const FETCH_TOPOLOGY_OF_DATACENTER_SUCCEEDED = "FETCH_TOPOLOGY_OF_DATACENTER_SUCCEEDED";
export const FETCH_LATEST_DATACENTER = "FETCH_LATEST_DATACENTER";
@@ -43,13 +41,9 @@ export function startNewRoomConstruction() {
}
export function startNewRoomConstructionSucceeded(roomId) {
- return (dispatch, getState) => {
- const {currentDatacenterId} = getState();
- dispatch(addIdToStoreObjectListProp("datacenter", currentDatacenterId, "roomIds", roomId));
- dispatch({
- type: START_NEW_ROOM_CONSTRUCTION_SUCCEEDED,
- roomId
- });
+ return {
+ type: START_NEW_ROOM_CONSTRUCTION_SUCCEEDED,
+ roomId
};
}
@@ -74,13 +68,8 @@ export function cancelNewRoomConstruction() {
}
export function cancelNewRoomConstructionSucceeded() {
- return (dispatch, getState) => {
- const {currentDatacenterId, construction} = getState();
- dispatch(removeIdFromStoreObjectListProp("datacenter", currentDatacenterId, "roomIds",
- construction.currentRoomInConstruction));
- dispatch({
- type: CANCEL_NEW_ROOM_CONSTRUCTION_SUCCEEDED
- });
+ return {
+ type: CANCEL_NEW_ROOM_CONSTRUCTION_SUCCEEDED
};
}
@@ -108,23 +97,9 @@ export function addTile(positionX, positionY) {
};
}
-export function addTileSucceeded(tileId) {
- return (dispatch, getState) => {
- const {construction} = getState();
- dispatch(addIdToStoreObjectListProp("room", construction.currentRoomInConstruction, "tileIds", tileId));
- };
-}
-
export function deleteTile(tileId) {
return {
type: DELETE_TILE,
tileId
}
}
-
-export function deleteTileSucceeded(tileId) {
- return (dispatch, getState) => {
- const {construction} = getState();
- dispatch(removeIdFromStoreObjectListProp("room", construction.currentRoomInConstruction, "tileIds", tileId));
- };
-}
diff --git a/src/actions/topology/machine.js b/src/actions/topology/machine.js
index e11c7d1d..48d88052 100644
--- a/src/actions/topology/machine.js
+++ b/src/actions/topology/machine.js
@@ -1,6 +1,3 @@
-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";
@@ -11,17 +8,6 @@ export function deleteMachine() {
};
}
-export function deleteMachineSucceeded() {
- return (dispatch, getState) => {
- const {interactionLevel, objects} = getState();
- const rack = objects.rack[objects.tile[interactionLevel.tileId].objectId];
- const machineIds = [...rack.machineIds];
- machineIds[interactionLevel.position - 1] = null;
- dispatch(goDownOneInteractionLevel());
- dispatch(addPropToStoreObject("rack", rack.id, {machineIds}));
- };
-}
-
export function addUnit(unitType, id) {
return {
type: ADD_UNIT,
@@ -30,16 +16,6 @@ export function addUnit(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,
@@ -47,14 +23,3 @@ export function deleteUnit(unitType, index) {
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}));
- };
-}
diff --git a/src/actions/topology/rack.js b/src/actions/topology/rack.js
index cb6ec387..043d6190 100644
--- a/src/actions/topology/rack.js
+++ b/src/actions/topology/rack.js
@@ -1,6 +1,3 @@
-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";
@@ -12,42 +9,15 @@ export function editRackName(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}));
- };
-}
diff --git a/src/actions/topology/room.js b/src/actions/topology/room.js
index 07cf2b1d..884c7e84 100644
--- a/src/actions/topology/room.js
+++ b/src/actions/topology/room.js
@@ -1,6 +1,4 @@
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";
@@ -15,13 +13,6 @@ export function editRoomName(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
@@ -55,12 +46,3 @@ export function deleteRoom() {
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));
- };
-}
diff --git a/src/sagas/topology.js b/src/sagas/topology.js
index 0f1856f5..d1e42d70 100644
--- a/src/sagas/topology.js
+++ b/src/sagas/topology.js
@@ -1,15 +1,16 @@
import {call, put, select} from "redux-saga/effects";
-import {addPropToStoreObject, addToStore} from "../actions/objects";
+import {goDownOneInteractionLevel} from "../actions/interaction-level";
+import {
+ addIdToStoreObjectListProp,
+ addPropToStoreObject,
+ addToStore,
+ removeIdFromStoreObjectListProp
+} from "../actions/objects";
import {
- addTileSucceeded,
cancelNewRoomConstructionSucceeded,
- deleteTileSucceeded,
fetchLatestDatacenterSucceeded,
startNewRoomConstructionSucceeded
} from "../actions/topology/building";
-import {addUnitSucceeded, deleteMachineSucceeded, deleteUnitSucceeded} from "../actions/topology/machine";
-import {addMachineSucceeded, deleteRackSucceeded, editRackNameSucceeded} from "../actions/topology/rack";
-import {deleteRoomSucceeded, editRoomNameSucceeded} from "../actions/topology/room";
import {addRoomToDatacenter} from "../api/routes/datacenters";
import {addTileToRoom, deleteRoom, updateRoom} from "../api/routes/rooms";
import {
@@ -151,6 +152,7 @@ export function* onStartNewRoomConstruction() {
});
const roomWithEmptyTileList = Object.assign({}, room, {tileIds: []});
yield put(addToStore("room", roomWithEmptyTileList));
+ yield put(addIdToStoreObjectListProp("datacenter", datacenterId, "roomIds", room.id));
yield put(startNewRoomConstructionSucceeded(room.id));
} catch (error) {
console.log(error);
@@ -159,8 +161,10 @@ export function* onStartNewRoomConstruction() {
export function* onCancelNewRoomConstruction() {
try {
+ const datacenterId = yield select(state => state.currentDatacenterId);
const roomId = yield select(state => state.construction.currentRoomInConstruction);
yield call(deleteRoom, roomId);
+ yield put(removeIdFromStoreObjectListProp("datacenter", datacenterId, "roomIds", roomId));
yield put(cancelNewRoomConstructionSucceeded());
} catch (error) {
console.log(error);
@@ -176,7 +180,7 @@ export function* onAddTile(action) {
positionY: action.positionY
});
yield put(addToStore("tile", tile));
- yield put(addTileSucceeded(tile.id));
+ yield put(addIdToStoreObjectListProp("room", roomId, "tileIds", tile.id));
} catch (error) {
console.log(error);
}
@@ -184,8 +188,9 @@ export function* onAddTile(action) {
export function* onDeleteTile(action) {
try {
+ const roomId = yield select(state => state.construction.currentRoomInConstruction);
yield call(deleteTile, action.tileId);
- yield put(deleteTileSucceeded(action.tileId));
+ yield put(removeIdFromStoreObjectListProp("room", roomId, "tileIds", action.tileId));
} catch (error) {
console.log(error);
}
@@ -197,7 +202,7 @@ export function* onEditRoomName(action) {
const room = Object.assign({}, yield select(state => state.objects.room[roomId]));
room.name = action.name;
yield call(updateRoom, room);
- yield put(editRoomNameSucceeded(action.name));
+ yield put(addPropToStoreObject("room", roomId, {name: action.name}));
} catch (error) {
console.log(error);
}
@@ -205,9 +210,11 @@ export function* onEditRoomName(action) {
export function* onDeleteRoom() {
try {
+ const datacenterId = yield select(state => state.currentDatacenterId);
const roomId = yield select(state => state.interactionLevel.roomId);
yield call(deleteRoom, roomId);
- yield put(deleteRoomSucceeded());
+ yield put(goDownOneInteractionLevel());
+ yield put(removeIdFromStoreObjectListProp("datacenter", datacenterId, "roomIds", roomId));
} catch (error) {
console.log(error);
}
@@ -220,7 +227,7 @@ export function* onEditRackName(action) {
const rack = Object.assign({}, yield select(state => state.objects.rack[rackId]));
rack.name = action.name;
yield call(updateRackOnTile, tileId, rack);
- yield put(editRackNameSucceeded(action.name));
+ yield put(addPropToStoreObject("rack", rackId, {name: action.name}));
} catch (error) {
console.log(error);
}
@@ -230,7 +237,9 @@ export function* onDeleteRack() {
try {
const tileId = yield select(state => state.interactionLevel.tileId);
yield call(deleteRackFromTile, tileId);
- yield put(deleteRackSucceeded());
+ yield put(goDownOneInteractionLevel());
+ yield put(addPropToStoreObject("tile", tileId, {objectType: undefined}));
+ yield put(addPropToStoreObject("tile", tileId, {objectId: undefined}));
} catch (error) {
console.log(error);
}
@@ -257,6 +266,8 @@ export function* onAddMachine(action) {
try {
const tileId = yield select(state => state.interactionLevel.tileId);
const rackId = yield select(state => state.objects.tile[state.interactionLevel.tileId].objectId);
+ const rack = yield select(state => state.objects.rack[rackId]);
+
const machine = yield call(addMachineToRackOnTile, tileId, {
id: -1,
rackId,
@@ -268,7 +279,10 @@ export function* onAddMachine(action) {
storageIds: [],
});
yield put(addToStore("machine", machine));
- yield put(addMachineSucceeded(machine));
+
+ const machineIds = [...rack.machineIds];
+ machineIds[machine.position - 1] = machine.id;
+ yield put(addPropToStoreObject("rack", rackId, {machineIds}));
} catch (error) {
console.log(error);
}
@@ -278,8 +292,12 @@ export function* onDeleteMachine() {
try {
const tileId = yield select(state => state.interactionLevel.tileId);
const position = yield select(state => state.interactionLevel.position);
+ const rack = yield select(state => state.objects.rack[state.objects.tile[tileId].objectId]);
yield call(deleteMachineInRackOnTile, tileId, position);
- yield put(deleteMachineSucceeded());
+ const machineIds = [...rack.machineIds];
+ machineIds[position - 1] = null;
+ yield put(goDownOneInteractionLevel());
+ yield put(addPropToStoreObject("rack", rack.id, {machineIds}));
} catch (error) {
console.log(error);
}
@@ -296,11 +314,13 @@ export function* onAddUnit(action) {
return;
}
+ const units = [...machine[action.unitType + "Ids"], action.id];
const updatedMachine = Object.assign({}, machine,
- {[action.unitType + "Ids"]: [...machine[action.unitType + "Ids"], action.id]});
+ {[action.unitType + "Ids"]: units});
yield call(updateMachineInRackOnTile, tileId, position, updatedMachine);
- yield put(addUnitSucceeded(action.unitType, action.id));
+
+ yield put(addPropToStoreObject("machine", machine.id, {[action.unitType + "Ids"]: units}));
} catch (error) {
console.log(error);
}
@@ -317,7 +337,7 @@ export function* onDeleteUnit(action) {
const updatedMachine = Object.assign({}, machine, {[action.unitType + "Ids"]: unitIds});
yield call(updateMachineInRackOnTile, tileId, position, updatedMachine);
- yield put(deleteUnitSucceeded(action.unitType, action.index));
+ yield put(addPropToStoreObject("machine", machine.id, {[action.unitType + "Ids"]: unitIds}));
} catch (error) {
console.log(error);
}