diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/actions/topology/building.js | 35 | ||||
| -rw-r--r-- | src/actions/topology/machine.js | 35 | ||||
| -rw-r--r-- | src/actions/topology/rack.js | 30 | ||||
| -rw-r--r-- | src/actions/topology/room.js | 18 | ||||
| -rw-r--r-- | src/sagas/topology.js | 54 |
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); } |
