diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-07-21 15:04:22 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-07-22 14:23:09 +0200 |
| commit | 54f424a18cc21a52ea518d40893218a07ab55989 (patch) | |
| tree | d754d2705a5daf93178f20ea2a2e39046c6dce8a /opendc-web/opendc-web-ui/src/redux/reducers/interaction-level.js | |
| parent | 28a4259c43e6180723b15a8c36a9b36871420f8a (diff) | |
feat(ui): Extract topology construction out of Sagas
This change updates the OpenDC frontend to perform the construction of
the topology directly in the reducers instead of performing the
mutations in Redux Sagas as side effects. This allows us to nicely map
actions to mutations in the reducers.
Diffstat (limited to 'opendc-web/opendc-web-ui/src/redux/reducers/interaction-level.js')
| -rw-r--r-- | opendc-web/opendc-web-ui/src/redux/reducers/interaction-level.js | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/opendc-web/opendc-web-ui/src/redux/reducers/interaction-level.js b/opendc-web/opendc-web-ui/src/redux/reducers/interaction-level.js index 9f23949f..b30c68b9 100644 --- a/opendc-web/opendc-web-ui/src/redux/reducers/interaction-level.js +++ b/opendc-web/opendc-web-ui/src/redux/reducers/interaction-level.js @@ -4,14 +4,12 @@ import { GO_FROM_RACK_TO_MACHINE, GO_FROM_ROOM_TO_RACK, } from '../actions/interaction-level' -import { SET_CURRENT_TOPOLOGY } from '../actions/topology/building' +import { DELETE_MACHINE } from '../actions/topology/machine' +import { DELETE_RACK } from '../actions/topology/rack' +import { DELETE_ROOM } from '../actions/topology/room' export function interactionLevel(state = { mode: 'BUILDING' }, action) { switch (action.type) { - case SET_CURRENT_TOPOLOGY: - return { - mode: 'BUILDING', - } case GO_FROM_BUILDING_TO_ROOM: return { mode: 'ROOM', @@ -49,6 +47,21 @@ export function interactionLevel(state = { mode: 'BUILDING' }, action) { } else { return state } + case DELETE_MACHINE: + return { + mode: 'RACK', + roomId: state.roomId, + tileId: state.tileId, + } + case DELETE_RACK: + return { + mode: 'ROOM', + roomId: state.roomId, + } + case DELETE_ROOM: + return { + mode: 'BUILDING', + } default: return state } |
