import { OPEN_EXPERIMENT_SUCCEEDED } from "../actions/experiments"; import { GO_DOWN_ONE_INTERACTION_LEVEL, GO_FROM_BUILDING_TO_ROOM, GO_FROM_RACK_TO_MACHINE, GO_FROM_ROOM_TO_RACK } from "../actions/interaction-level"; import { OPEN_SIMULATION_SUCCEEDED } from "../actions/simulations"; import { SET_CURRENT_DATACENTER } from "../actions/topology/building"; export function interactionLevel(state = { mode: "BUILDING" }, action) { switch (action.type) { case OPEN_EXPERIMENT_SUCCEEDED: case OPEN_SIMULATION_SUCCEEDED: case SET_CURRENT_DATACENTER: return { mode: "BUILDING" }; case GO_FROM_BUILDING_TO_ROOM: return { mode: "ROOM", roomId: action.roomId }; case GO_FROM_ROOM_TO_RACK: return { mode: "RACK", roomId: state.roomId, tileId: action.tileId }; case GO_FROM_RACK_TO_MACHINE: return { mode: "MACHINE", roomId: state.roomId, tileId: state.tileId, position: action.position }; case GO_DOWN_ONE_INTERACTION_LEVEL: if (state.mode === "ROOM") { return { mode: "BUILDING" }; } else if (state.mode === "RACK") { return { mode: "ROOM", roomId: state.roomId }; } else if (state.mode === "MACHINE") { return { mode: "RACK", roomId: state.roomId, tileId: state.tileId }; } else { return state; } default: return state; } }