diff options
Diffstat (limited to 'src/sagas')
| -rw-r--r-- | src/sagas/index.js | 6 | ||||
| -rw-r--r-- | src/sagas/topology.js | 36 |
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); + } +} |
