summaryrefslogtreecommitdiff
path: root/src/sagas
diff options
context:
space:
mode:
Diffstat (limited to 'src/sagas')
-rw-r--r--src/sagas/index.js6
-rw-r--r--src/sagas/topology.js36
2 files changed, 40 insertions, 2 deletions
diff --git a/src/sagas/index.js b/src/sagas/index.js
index a064de33..5cb25202 100644
--- a/src/sagas/index.js
+++ b/src/sagas/index.js
@@ -8,7 +8,7 @@ import {
FETCH_LATEST_DATACENTER,
START_NEW_ROOM_CONSTRUCTION
} from "../actions/topology/building";
-import {DELETE_MACHINE} from "../actions/topology/machine";
+import {ADD_UNIT, DELETE_MACHINE, DELETE_UNIT} from "../actions/topology/machine";
import {ADD_MACHINE, DELETE_RACK, EDIT_RACK_NAME} from "../actions/topology/rack";
import {ADD_RACK_TO_TILE, DELETE_ROOM, EDIT_ROOM_NAME} from "../actions/topology/room";
import {DELETE_CURRENT_USER, FETCH_AUTHORIZATIONS_OF_CURRENT_USER} from "../actions/users";
@@ -18,11 +18,13 @@ import {
onAddMachine,
onAddRackToTile,
onAddTile,
+ onAddUnit,
onCancelNewRoomConstruction,
onDeleteMachine,
onDeleteRack,
onDeleteRoom,
onDeleteTile,
+ onDeleteUnit,
onEditRackName,
onEditRoomName,
onFetchLatestDatacenter,
@@ -48,4 +50,6 @@ export default function* rootSaga() {
yield takeEvery(ADD_RACK_TO_TILE, onAddRackToTile);
yield takeEvery(ADD_MACHINE, onAddMachine);
yield takeEvery(DELETE_MACHINE, onDeleteMachine);
+ yield takeEvery(ADD_UNIT, onAddUnit);
+ yield takeEvery(DELETE_UNIT, onDeleteUnit);
}
diff --git a/src/sagas/topology.js b/src/sagas/topology.js
index 9eab4368..f507b2ad 100644
--- a/src/sagas/topology.js
+++ b/src/sagas/topology.js
@@ -7,7 +7,7 @@ import {
fetchLatestDatacenterSucceeded,
startNewRoomConstructionSucceeded
} from "../actions/topology/building";
-import {deleteMachineSucceeded} from "../actions/topology/machine";
+import {addUnitSucceeded, deleteMachineSucceeded, deleteUnitSucceeded} from "../actions/topology/machine";
import {addMachineSucceeded, deleteRackSucceeded, editRackNameSucceeded} from "../actions/topology/rack";
import {addRackToTileSucceeded, deleteRoomSucceeded, editRoomNameSucceeded} from "../actions/topology/room";
import {addRoomToDatacenter} from "../api/routes/datacenters";
@@ -18,6 +18,7 @@ import {
deleteMachineInRackOnTile,
deleteRackFromTile,
deleteTile,
+ updateMachineInRackOnTile,
updateRackOnTile
} from "../api/routes/tiles";
import {
@@ -262,3 +263,36 @@ export function* onDeleteMachine() {
console.log(error);
}
}
+
+export function* onAddUnit(action) {
+ try {
+ const tileId = yield select(state => state.interactionLevel.tileId);
+ const position = yield select(state => state.interactionLevel.position);
+ const machine = yield select(state => state.objects.machine[state.objects.rack[
+ state.objects.tile[tileId].objectId].machineIds[position - 1]]);
+ const updatedMachine = Object.assign({}, machine,
+ {[action.unitType + "Ids"]: [...machine[action.unitType + "Ids"], action.id]});
+
+ yield call(updateMachineInRackOnTile, tileId, position, updatedMachine);
+ yield put(addUnitSucceeded(action.unitType, action.id));
+ } catch (error) {
+ console.log(error);
+ }
+}
+
+export function* onDeleteUnit(action) {
+ try {
+ const tileId = yield select(state => state.interactionLevel.tileId);
+ const position = yield select(state => state.interactionLevel.position);
+ const machine = yield select(state => state.objects.machine[state.objects.rack[
+ state.objects.tile[tileId].objectId].machineIds[position - 1]]);
+ const unitIds = machine[action.unitType + "Ids"].slice();
+ unitIds.splice(action.index, 1);
+ const updatedMachine = Object.assign({}, machine, {[action.unitType + "Ids"]: unitIds});
+
+ yield call(updateMachineInRackOnTile, tileId, position, updatedMachine);
+ yield put(deleteUnitSucceeded(action.unitType, action.index));
+ } catch (error) {
+ console.log(error);
+ }
+}