From 5b4ab37ac7be2b2c34e2fad928b0cd7f3a837263 Mon Sep 17 00:00:00 2001 From: jc0b Date: Tue, 21 Jul 2020 21:22:03 +0200 Subject: prefab start --- frontend/src/actions/modals/prefabs.js | 14 +++++++++++ frontend/src/actions/prefabs.js | 45 ++++++++++++++++++++++++++++++++++ frontend/src/api/routes/prefabs.js | 40 ++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 frontend/src/actions/modals/prefabs.js create mode 100644 frontend/src/actions/prefabs.js create mode 100644 frontend/src/api/routes/prefabs.js (limited to 'frontend/src') diff --git a/frontend/src/actions/modals/prefabs.js b/frontend/src/actions/modals/prefabs.js new file mode 100644 index 00000000..826565d2 --- /dev/null +++ b/frontend/src/actions/modals/prefabs.js @@ -0,0 +1,14 @@ +export const OPEN_NEW_PREFAB_MODAL = 'OPEN_NEW_PREFAB_MODAL' +export const CLOSE_NEW_PREFAB_MODAL = 'CLOSE_PREFAB_MODAL' + +export function openNewPrefabModal() { + return { + type: OPEN_NEW_PREFAB_MODAL, + } +} + +export function closeNewPrefabModal() { + return { + type: CLOSE_NEW_PREFAB_MODAL, + } +} diff --git a/frontend/src/actions/prefabs.js b/frontend/src/actions/prefabs.js new file mode 100644 index 00000000..3f1558ce --- /dev/null +++ b/frontend/src/actions/prefabs.js @@ -0,0 +1,45 @@ +export const ADD_PREFAB = 'ADD_PREFAB' +export const ADD_PREFAB_SUCCEEDED = 'ADD_PREFAB_SUCCEEDED' +export const DELETE_PREFAB = 'DELETE_PREFAB' +export const DELETE_PREFAB_SUCCEEDED = 'DELETE_PREFAB_SUCCEEDED' +export const OPEN_PREFAB_SUCCEEDED = 'OPEN_PREFAB_SUCCEEDED' + + +export function addPrefab(name) { + return (dispatch, getState) => { + const { auth } = getState() + dispatch({ + type: ADD_PREFAB, + name, + userId: auth.userId, + }) + } +} + +export function addPrefabSucceeded(authorization) { + return { + type: ADD_PREFAB_SUCCEEDED, + authorization, + } +} + +export function deletePrefab(id) { + return { + type: DELETE_PREFAB, + id, + } +} + +export function deletePrefabSucceeded(id) { + return { + type: DELETE_PREFAB_SUCCEEDED, + id, + } +} + +export function openPrefabSucceeded(id) { + return { + type: OPEN_PREFAB_SUCCEEDED, + id, + } +} diff --git a/frontend/src/api/routes/prefabs.js b/frontend/src/api/routes/prefabs.js new file mode 100644 index 00000000..8a1debfa --- /dev/null +++ b/frontend/src/api/routes/prefabs.js @@ -0,0 +1,40 @@ +import { sendRequest } from '../index' +import { deleteById, getById } from './util' + +export function getPrefab(prefabId) { + return getById('/prefabs/{prefabId}', { prefabId }) +} + +export function addPrefab(prefab) { + return sendRequest({ + path: '/prefabs', + method: 'POST', + parameters: { + body: { + prefab, + }, + path: {}, + query: {}, + }, + }) +} + +export function updatePrefab(prefab) { + return sendRequest({ + path: '/prefabs/{prefabId}', + method: 'PUT', + parameters: { + body: { + prefab, + }, + path: { + prefabId: prefab._id, + }, + query: {}, + }, + }) +} + +export function deletePrefab(prefabId) { + return deleteById('/prefabs/{prefabId}', { prefabId }) +} -- cgit v1.2.3 From a4ce2e57a52c226b62ac663dc629f3667e4fb2b4 Mon Sep 17 00:00:00 2001 From: jc0b Date: Fri, 24 Jul 2020 12:19:55 +0200 Subject: changes to prefabs with giorgios --- frontend/src/actions/prefabs.js | 18 +++--------------- frontend/src/reducers/objects.js | 4 ++++ 2 files changed, 7 insertions(+), 15 deletions(-) (limited to 'frontend/src') diff --git a/frontend/src/actions/prefabs.js b/frontend/src/actions/prefabs.js index 3f1558ce..8d262772 100644 --- a/frontend/src/actions/prefabs.js +++ b/frontend/src/actions/prefabs.js @@ -1,25 +1,13 @@ export const ADD_PREFAB = 'ADD_PREFAB' -export const ADD_PREFAB_SUCCEEDED = 'ADD_PREFAB_SUCCEEDED' export const DELETE_PREFAB = 'DELETE_PREFAB' export const DELETE_PREFAB_SUCCEEDED = 'DELETE_PREFAB_SUCCEEDED' export const OPEN_PREFAB_SUCCEEDED = 'OPEN_PREFAB_SUCCEEDED' - +//infer rackID from state in saga later export function addPrefab(name) { - return (dispatch, getState) => { - const { auth } = getState() - dispatch({ - type: ADD_PREFAB, - name, - userId: auth.userId, - }) - } -} - -export function addPrefabSucceeded(authorization) { return { - type: ADD_PREFAB_SUCCEEDED, - authorization, + type: ADD_PREFAB, + name, } } diff --git a/frontend/src/reducers/objects.js b/frontend/src/reducers/objects.js index b4db0a6b..dd2b61cb 100644 --- a/frontend/src/reducers/objects.js +++ b/frontend/src/reducers/objects.js @@ -1,3 +1,6 @@ +//TODO: add prefabs + + import { combineReducers } from 'redux' import { ADD_ID_TO_STORE_OBJECT_LIST_PROP, @@ -24,6 +27,7 @@ export const objects = combineReducers({ scheduler: object('scheduler'), portfolio: object('portfolio'), scenario: object('scenario'), + prefab: object('prefab'), }) function object(type, defaultState = {}) { -- cgit v1.2.3 From 697a4be020d58e7d93966dd577fa590d73bf8d34 Mon Sep 17 00:00:00 2001 From: jc0b Date: Mon, 27 Jul 2020 16:48:51 +0200 Subject: Create prefabs from topologies --- .../sidebars/topology/rack/AddPrefabComponent.js | 10 ++++ .../sidebars/topology/rack/RackSidebarComponent.js | 2 + .../sidebars/topology/rack/AddPrefabContainer.js | 13 +++++ frontend/src/sagas/index.js | 4 ++ frontend/src/sagas/objects.js | 67 +++++++++++++--------- frontend/src/sagas/prefabs.js | 17 ++++++ 6 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 frontend/src/components/app/sidebars/topology/rack/AddPrefabComponent.js create mode 100644 frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js create mode 100644 frontend/src/sagas/prefabs.js (limited to 'frontend/src') diff --git a/frontend/src/components/app/sidebars/topology/rack/AddPrefabComponent.js b/frontend/src/components/app/sidebars/topology/rack/AddPrefabComponent.js new file mode 100644 index 00000000..75418f9d --- /dev/null +++ b/frontend/src/components/app/sidebars/topology/rack/AddPrefabComponent.js @@ -0,0 +1,10 @@ +import React from 'react' + +const AddPrefabComponent = ({ onClick }) => ( +
+ + Save this rack to a prefab +
+) + +export default AddPrefabComponent diff --git a/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js b/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js index c04e46d8..78414736 100644 --- a/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js +++ b/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js @@ -4,6 +4,7 @@ import DeleteRackContainer from '../../../../../containers/app/sidebars/topology import MachineListContainer from '../../../../../containers/app/sidebars/topology/rack/MachineListContainer' import RackNameContainer from '../../../../../containers/app/sidebars/topology/rack/RackNameContainer' import './RackSidebarComponent.css' +import AddPrefabContainer from "../../../../../containers/app/sidebars/topology/rack/AddPrefabContainer"; const RackSidebarComponent = () => { return ( @@ -11,6 +12,7 @@ const RackSidebarComponent = () => {
+
diff --git a/frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js b/frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js new file mode 100644 index 00000000..9d0a2c74 --- /dev/null +++ b/frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js @@ -0,0 +1,13 @@ +import { connect } from 'react-redux' +import {addPrefab} from "../../../../../actions/prefabs"; +import AddPrefabComponent from "../../../../../components/app/sidebars/topology/rack/AddPrefabComponent"; + +const mapDispatchToProps = (dispatch) => { + return { + onClick: () => dispatch(addPrefab('name')), + } +} + +const AddPrefabContainer = connect(undefined, mapDispatchToProps)(AddPrefabComponent) + +export default AddPrefabContainer diff --git a/frontend/src/sagas/index.js b/frontend/src/sagas/index.js index 9f6c4809..6a1f2af3 100644 --- a/frontend/src/sagas/index.js +++ b/frontend/src/sagas/index.js @@ -36,6 +36,8 @@ import { onFetchAuthorizationsOfCurrentUser, onFetchLoggedInUser } from './users import { ADD_TOPOLOGY, DELETE_TOPOLOGY } from '../actions/topologies' import { ADD_SCENARIO, DELETE_SCENARIO, OPEN_SCENARIO_SUCCEEDED, UPDATE_SCENARIO } from '../actions/scenarios' import { onAddScenario, onDeleteScenario, onOpenScenarioSucceeded, onUpdateScenario } from './scenarios' +import {onAddPrefab} from "./prefabs"; +import {ADD_PREFAB} from "../actions/prefabs"; export default function* rootSaga() { yield takeEvery(LOG_IN, onFetchLoggedInUser) @@ -73,4 +75,6 @@ export default function* rootSaga() { yield takeEvery(ADD_SCENARIO, onAddScenario) yield takeEvery(UPDATE_SCENARIO, onUpdateScenario) yield takeEvery(DELETE_SCENARIO, onDeleteScenario) + + yield takeEvery(ADD_PREFAB, onAddPrefab) } diff --git a/frontend/src/sagas/objects.js b/frontend/src/sagas/objects.js index 83d71a42..a561e4b4 100644 --- a/frontend/src/sagas/objects.js +++ b/frontend/src/sagas/objects.js @@ -149,7 +149,31 @@ export const updateTopologyOnServer = function* (id) { export const getTopologyAsObject = function* (id, keepIds) { const topologyStore = yield select(OBJECT_SELECTORS['topology']) const roomStore = yield select(OBJECT_SELECTORS['room']) + + return { + _id: keepIds ? id : undefined, + name: topologyStore[id].name, + rooms: topologyStore[id].roomIds.map((roomId) => ({ + _id: keepIds ? roomId : undefined, + name: roomStore[roomId].name, + tiles: roomStore[roomId].tileIds.map((tileId) => (call(getTileById, tileId, keepIds))), + })), + } +} + +export const getTileById = function* (id, keepIds) { const tileStore = yield select(OBJECT_SELECTORS['tile']) + return { + _id: keepIds ? id : undefined, + positionX: tileStore[id].positionX, + positionY: tileStore[id].positionY, + rack: !tileStore[id].rackId + ? undefined + : call(getRackById, tileStore[id].rackId, keepIds), + } +} + +export const getRackById = function* (id, keepIds) { const rackStore = yield select(OBJECT_SELECTORS['rack']) const machineStore = yield select(OBJECT_SELECTORS['machine']) const cpuStore = yield select(OBJECT_SELECTORS['cpu']) @@ -158,38 +182,25 @@ export const getTopologyAsObject = function* (id, keepIds) { const storageStore = yield select(OBJECT_SELECTORS['storage']) return { - _id: keepIds ? id : undefined, - name: topologyStore[id].name, - rooms: topologyStore[id].roomIds.map((roomId) => ({ - _id: keepIds ? roomId : undefined, - name: roomStore[roomId].name, - tiles: roomStore[roomId].tileIds.map((tileId) => ({ - _id: keepIds ? tileId : undefined, - positionX: tileStore[tileId].positionX, - positionY: tileStore[tileId].positionY, - rack: !tileStore[tileId].rackId - ? undefined - : { - _id: keepIds ? rackStore[tileStore[tileId].rackId]._id : undefined, - name: rackStore[tileStore[tileId].rackId].name, - capacity: rackStore[tileStore[tileId].rackId].capacity, - powerCapacityW: rackStore[tileStore[tileId].rackId].powerCapacityW, - machines: rackStore[tileStore[tileId].rackId].machineIds - .filter((m) => m !== null) - .map((machineId) => ({ - _id: keepIds ? machineId : undefined, - position: machineStore[machineId].position, - cpus: machineStore[machineId].cpuIds.map((id) => cpuStore[id]), - gpus: machineStore[machineId].gpuIds.map((id) => gpuStore[id]), - memories: machineStore[machineId].memoryIds.map((id) => memoryStore[id]), - storages: machineStore[machineId].storageIds.map((id) => storageStore[id]), - })), - }, + _id: keepIds ? rackStore[id]._id : undefined, + name: rackStore[id].name, + capacity: rackStore[id].capacity, + powerCapacityW: rackStore[id].powerCapacityW, + machines: rackStore[id].machineIds + .filter((m) => m !== null) + .map((machineId) => ({ + _id: keepIds ? machineId : undefined, + position: machineStore[machineId].position, + cpus: machineStore[machineId].cpuIds.map((id) => cpuStore[id]), + gpus: machineStore[machineId].gpuIds.map((id) => gpuStore[id]), + memories: machineStore[machineId].memoryIds.map((id) => memoryStore[id]), + storages: machineStore[machineId].storageIds.map((id) => storageStore[id]), })), - })), } } + + export const fetchAndStoreAllTraces = () => fetchAndStoreObjects('trace', call(getAllTraces)) export const fetchAndStoreAllSchedulers = function* () { diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js new file mode 100644 index 00000000..94570404 --- /dev/null +++ b/frontend/src/sagas/prefabs.js @@ -0,0 +1,17 @@ +import {call, put, select} from "redux-saga/effects"; +import {addToStore} from "../actions/objects"; +import {addPrefab} from "../api/routes/prefabs"; +import {getTopologyAsObject} from "./objects"; + +export function* onAddPrefab(action) { + try { + const currentRackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rack._id) + const currentRackJson = yield call(getTopologyAsObject, currentRackId) + //TODO: yield call the function in saga to export the specific part of the topology + const prefab = yield call(addPrefab, { name: action.name, rack: currentRackJson }) + yield put(addToStore('prefab', prefab)) + + } catch (error) { + console.error(error) + } +} -- cgit v1.2.3 From 39aa5c22d893769fcfa8501eaa95c82014906a2a Mon Sep 17 00:00:00 2001 From: jc0b Date: Tue, 28 Jul 2020 17:49:17 +0200 Subject: Some debugging stuff --- frontend/src/sagas/prefabs.js | 1 + 1 file changed, 1 insertion(+) (limited to 'frontend/src') diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js index 94570404..1756095c 100644 --- a/frontend/src/sagas/prefabs.js +++ b/frontend/src/sagas/prefabs.js @@ -5,6 +5,7 @@ import {getTopologyAsObject} from "./objects"; export function* onAddPrefab(action) { try { + //console.log("DEBUG: " + state.objects.tile[state.interactionLevel.tileId].rack._id) const currentRackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rack._id) const currentRackJson = yield call(getTopologyAsObject, currentRackId) //TODO: yield call the function in saga to export the specific part of the topology -- cgit v1.2.3 From 488d9ae5df13dcea208fc5cb3d609e0a9472bf53 Mon Sep 17 00:00:00 2001 From: jc0b Date: Tue, 28 Jul 2020 20:40:48 +0200 Subject: More stuff for review --- frontend/src/sagas/objects.js | 37 +++++++++++++++++++++++++++++-------- frontend/src/sagas/prefabs.js | 3 ++- 2 files changed, 31 insertions(+), 9 deletions(-) (limited to 'frontend/src') diff --git a/frontend/src/sagas/objects.js b/frontend/src/sagas/objects.js index a561e4b4..a10fdcbe 100644 --- a/frontend/src/sagas/objects.js +++ b/frontend/src/sagas/objects.js @@ -146,30 +146,51 @@ export const updateTopologyOnServer = function* (id) { yield call(updateTopology, topology) } +export const getAllRooms = function* (roomIds, keepIds) { + const roomStore = yield select(OBJECT_SELECTORS['room']) + let rooms = [] + + for(let i in roomIds){ + let tiles = yield call(getAllRoomTiles, roomStore[i].tileIds, keepIds) + rooms.push({ + _id: keepIds ? i : undefined, + name: roomStore[i].name, + tiles: tiles, + } + ) + } + return rooms +} + export const getTopologyAsObject = function* (id, keepIds) { const topologyStore = yield select(OBJECT_SELECTORS['topology']) - const roomStore = yield select(OBJECT_SELECTORS['room']) + const rooms = yield call(getAllRooms, topologyStore[id].roomIds, keepIds) return { _id: keepIds ? id : undefined, name: topologyStore[id].name, - rooms: topologyStore[id].roomIds.map((roomId) => ({ - _id: keepIds ? roomId : undefined, - name: roomStore[roomId].name, - tiles: roomStore[roomId].tileIds.map((tileId) => (call(getTileById, tileId, keepIds))), - })), + rooms: rooms, + } +} + +export const getAllRoomTiles = function* (room, keepIds) { + let tiles = [] + + for(let i in room.tileIds){ + tiles.push(yield call(getTileById, i, keepIds)) } + return tiles } export const getTileById = function* (id, keepIds) { const tileStore = yield select(OBJECT_SELECTORS['tile']) return { _id: keepIds ? id : undefined, - positionX: tileStore[id].positionX, + positionX: tileStore[id].positionX, positionY: tileStore[id].positionY, rack: !tileStore[id].rackId ? undefined - : call(getRackById, tileStore[id].rackId, keepIds), + : yield call(getRackById, tileStore[id].rackId, keepIds), } } diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js index 1756095c..80ba2f80 100644 --- a/frontend/src/sagas/prefabs.js +++ b/frontend/src/sagas/prefabs.js @@ -5,7 +5,8 @@ import {getTopologyAsObject} from "./objects"; export function* onAddPrefab(action) { try { - //console.log("DEBUG: " + state.objects.tile[state.interactionLevel.tileId].rack._id) + const state = yield select((state) => state) + console.log("DEBUG: " + state.objects.tile[state.interactionLevel.tileId].rack._id) const currentRackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rack._id) const currentRackJson = yield call(getTopologyAsObject, currentRackId) //TODO: yield call the function in saga to export the specific part of the topology -- cgit v1.2.3 From cd93fc94b2bf4e7b10f168c7dd04a7affba60f33 Mon Sep 17 00:00:00 2001 From: jc0b Date: Wed, 29 Jul 2020 11:53:57 +0200 Subject: Debugging RoomStore --- frontend/src/actions/prefabs.js | 1 - frontend/src/reducers/objects.js | 3 --- frontend/src/sagas/objects.js | 43 ++++++++++++++++++++++------------------ frontend/src/sagas/prefabs.js | 1 - 4 files changed, 24 insertions(+), 24 deletions(-) (limited to 'frontend/src') diff --git a/frontend/src/actions/prefabs.js b/frontend/src/actions/prefabs.js index 8d262772..c112feed 100644 --- a/frontend/src/actions/prefabs.js +++ b/frontend/src/actions/prefabs.js @@ -3,7 +3,6 @@ export const DELETE_PREFAB = 'DELETE_PREFAB' export const DELETE_PREFAB_SUCCEEDED = 'DELETE_PREFAB_SUCCEEDED' export const OPEN_PREFAB_SUCCEEDED = 'OPEN_PREFAB_SUCCEEDED' -//infer rackID from state in saga later export function addPrefab(name) { return { type: ADD_PREFAB, diff --git a/frontend/src/reducers/objects.js b/frontend/src/reducers/objects.js index dd2b61cb..1f721b2e 100644 --- a/frontend/src/reducers/objects.js +++ b/frontend/src/reducers/objects.js @@ -1,6 +1,3 @@ -//TODO: add prefabs - - import { combineReducers } from 'redux' import { ADD_ID_TO_STORE_OBJECT_LIST_PROP, diff --git a/frontend/src/sagas/objects.js b/frontend/src/sagas/objects.js index a10fdcbe..9c9b19b8 100644 --- a/frontend/src/sagas/objects.js +++ b/frontend/src/sagas/objects.js @@ -146,38 +146,43 @@ export const updateTopologyOnServer = function* (id) { yield call(updateTopology, topology) } +export const getTopologyAsObject = function* (id, keepIds) { + const topologyStore = yield select(OBJECT_SELECTORS['topology']) + + const rooms = yield call(getAllRooms, topologyStore[id].roomIds, keepIds) + return { + _id: keepIds ? id : undefined, + name: topologyStore[id].name, + rooms: rooms, + } +} + export const getAllRooms = function* (roomIds, keepIds) { const roomStore = yield select(OBJECT_SELECTORS['room']) + + console.log("DEBUG: roomIds has value " + roomIds) + console.log("DEBUG: roomStore has value " + roomStore) + console.log("DEBUG: size of roomStore is " + roomStore.length) let rooms = [] for(let i in roomIds){ - let tiles = yield call(getAllRoomTiles, roomStore[i].tileIds, keepIds) + console.log("DEBUG: on iteration " + i + ", roomStore has value = " + roomStore[i]) + let tiles = yield call(getAllRoomTiles, roomStore[i], keepIds) rooms.push({ - _id: keepIds ? i : undefined, - name: roomStore[i].name, - tiles: tiles, + _id: keepIds ? i : undefined, + name: roomStore[i].name, + tiles: tiles, } ) } return rooms } -export const getTopologyAsObject = function* (id, keepIds) { - const topologyStore = yield select(OBJECT_SELECTORS['topology']) - - const rooms = yield call(getAllRooms, topologyStore[id].roomIds, keepIds) - return { - _id: keepIds ? id : undefined, - name: topologyStore[id].name, - rooms: rooms, - } -} - -export const getAllRoomTiles = function* (room, keepIds) { +export const getAllRoomTiles = function* (roomStore, keepIds) { let tiles = [] - - for(let i in room.tileIds){ - tiles.push(yield call(getTileById, i, keepIds)) + console.log("DEBUG: roomStore = " + roomStore) + for(let i in roomStore.tileIds){ + tiles.push(yield call(getTileById, roomStore.tileIds[i], keepIds)) } return tiles } diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js index 80ba2f80..93af105a 100644 --- a/frontend/src/sagas/prefabs.js +++ b/frontend/src/sagas/prefabs.js @@ -9,7 +9,6 @@ export function* onAddPrefab(action) { console.log("DEBUG: " + state.objects.tile[state.interactionLevel.tileId].rack._id) const currentRackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rack._id) const currentRackJson = yield call(getTopologyAsObject, currentRackId) - //TODO: yield call the function in saga to export the specific part of the topology const prefab = yield call(addPrefab, { name: action.name, rack: currentRackJson }) yield put(addToStore('prefab', prefab)) -- cgit v1.2.3 From 0a984529480c08aaf6af9f6f657d4ed805e77d49 Mon Sep 17 00:00:00 2001 From: jc0b Date: Wed, 29 Jul 2020 12:22:15 +0200 Subject: replaced yield calls() --- frontend/src/sagas/objects.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'frontend/src') diff --git a/frontend/src/sagas/objects.js b/frontend/src/sagas/objects.js index 9c9b19b8..cc19eb75 100644 --- a/frontend/src/sagas/objects.js +++ b/frontend/src/sagas/objects.js @@ -149,7 +149,7 @@ export const updateTopologyOnServer = function* (id) { export const getTopologyAsObject = function* (id, keepIds) { const topologyStore = yield select(OBJECT_SELECTORS['topology']) - const rooms = yield call(getAllRooms, topologyStore[id].roomIds, keepIds) + const rooms = yield getAllRooms(topologyStore[id].roomIds, keepIds) return { _id: keepIds ? id : undefined, name: topologyStore[id].name, @@ -167,7 +167,7 @@ export const getAllRooms = function* (roomIds, keepIds) { for(let i in roomIds){ console.log("DEBUG: on iteration " + i + ", roomStore has value = " + roomStore[i]) - let tiles = yield call(getAllRoomTiles, roomStore[i], keepIds) + let tiles = yield getAllRoomTiles(roomStore[i], keepIds) rooms.push({ _id: keepIds ? i : undefined, name: roomStore[i].name, @@ -182,7 +182,7 @@ export const getAllRoomTiles = function* (roomStore, keepIds) { let tiles = [] console.log("DEBUG: roomStore = " + roomStore) for(let i in roomStore.tileIds){ - tiles.push(yield call(getTileById, roomStore.tileIds[i], keepIds)) + tiles.push(yield getTileById(roomStore.tileIds[i], keepIds)) } return tiles } @@ -195,7 +195,7 @@ export const getTileById = function* (id, keepIds) { positionY: tileStore[id].positionY, rack: !tileStore[id].rackId ? undefined - : yield call(getRackById, tileStore[id].rackId, keepIds), + : yield getRackById(tileStore[id].rackId, keepIds), } } -- cgit v1.2.3 From b817af6802c1168f17f87308aa922bee5f629a24 Mon Sep 17 00:00:00 2001 From: jc0b Date: Wed, 29 Jul 2020 17:31:31 +0200 Subject: Adding prefabs works now --- frontend/src/sagas/objects.js | 7 ++++--- frontend/src/sagas/prefabs.js | 13 ++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) (limited to 'frontend/src') diff --git a/frontend/src/sagas/objects.js b/frontend/src/sagas/objects.js index cc19eb75..58dee6be 100644 --- a/frontend/src/sagas/objects.js +++ b/frontend/src/sagas/objects.js @@ -148,7 +148,8 @@ export const updateTopologyOnServer = function* (id) { export const getTopologyAsObject = function* (id, keepIds) { const topologyStore = yield select(OBJECT_SELECTORS['topology']) - + console.log(topologyStore) + //console.log("DEBUG: roomIds = " + topologyStore[id].roomIds) const rooms = yield getAllRooms(topologyStore[id].roomIds, keepIds) return { _id: keepIds ? id : undefined, @@ -167,10 +168,10 @@ export const getAllRooms = function* (roomIds, keepIds) { for(let i in roomIds){ console.log("DEBUG: on iteration " + i + ", roomStore has value = " + roomStore[i]) - let tiles = yield getAllRoomTiles(roomStore[i], keepIds) + let tiles = yield getAllRoomTiles(roomStore[roomIds[i]], keepIds) rooms.push({ _id: keepIds ? i : undefined, - name: roomStore[i].name, + name: roomStore[roomIds[i]].name, tiles: tiles, } ) diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js index 93af105a..1c21215a 100644 --- a/frontend/src/sagas/prefabs.js +++ b/frontend/src/sagas/prefabs.js @@ -1,14 +1,17 @@ import {call, put, select} from "redux-saga/effects"; import {addToStore} from "../actions/objects"; import {addPrefab} from "../api/routes/prefabs"; -import {getTopologyAsObject} from "./objects"; +import {getRackById, getTopologyAsObject} from "./objects"; export function* onAddPrefab(action) { try { - const state = yield select((state) => state) - console.log("DEBUG: " + state.objects.tile[state.interactionLevel.tileId].rack._id) - const currentRackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rack._id) - const currentRackJson = yield call(getTopologyAsObject, currentRackId) + // const state = yield select((state) => state) + // console.log("DEBUG: tileId = " + state.interactionLevel.tileId) + // console.log(state.objects.tile[state.interactionLevel.tileId]) + // console.log("DEBUG: " + state.objects.tile[state.interactionLevel.tileId].rackId) + const currentRackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rackId) + console.log("DEBUG: currentRackId = " + currentRackId) + const currentRackJson = yield getRackById(currentRackId, false) const prefab = yield call(addPrefab, { name: action.name, rack: currentRackJson }) yield put(addToStore('prefab', prefab)) -- cgit v1.2.3 From 24ab4cdd1f07f99abb7b64866fba7122fad86bf9 Mon Sep 17 00:00:00 2001 From: jc0b Date: Wed, 29 Jul 2020 17:34:11 +0200 Subject: Code cleanup --- frontend/src/sagas/objects.js | 8 +------- frontend/src/sagas/prefabs.js | 5 ----- 2 files changed, 1 insertion(+), 12 deletions(-) (limited to 'frontend/src') diff --git a/frontend/src/sagas/objects.js b/frontend/src/sagas/objects.js index 58dee6be..b65df4cc 100644 --- a/frontend/src/sagas/objects.js +++ b/frontend/src/sagas/objects.js @@ -148,8 +148,6 @@ export const updateTopologyOnServer = function* (id) { export const getTopologyAsObject = function* (id, keepIds) { const topologyStore = yield select(OBJECT_SELECTORS['topology']) - console.log(topologyStore) - //console.log("DEBUG: roomIds = " + topologyStore[id].roomIds) const rooms = yield getAllRooms(topologyStore[id].roomIds, keepIds) return { _id: keepIds ? id : undefined, @@ -161,13 +159,9 @@ export const getTopologyAsObject = function* (id, keepIds) { export const getAllRooms = function* (roomIds, keepIds) { const roomStore = yield select(OBJECT_SELECTORS['room']) - console.log("DEBUG: roomIds has value " + roomIds) - console.log("DEBUG: roomStore has value " + roomStore) - console.log("DEBUG: size of roomStore is " + roomStore.length) let rooms = [] for(let i in roomIds){ - console.log("DEBUG: on iteration " + i + ", roomStore has value = " + roomStore[i]) let tiles = yield getAllRoomTiles(roomStore[roomIds[i]], keepIds) rooms.push({ _id: keepIds ? i : undefined, @@ -181,7 +175,7 @@ export const getAllRooms = function* (roomIds, keepIds) { export const getAllRoomTiles = function* (roomStore, keepIds) { let tiles = [] - console.log("DEBUG: roomStore = " + roomStore) + for(let i in roomStore.tileIds){ tiles.push(yield getTileById(roomStore.tileIds[i], keepIds)) } diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js index 1c21215a..ea84fdfd 100644 --- a/frontend/src/sagas/prefabs.js +++ b/frontend/src/sagas/prefabs.js @@ -5,12 +5,7 @@ import {getRackById, getTopologyAsObject} from "./objects"; export function* onAddPrefab(action) { try { - // const state = yield select((state) => state) - // console.log("DEBUG: tileId = " + state.interactionLevel.tileId) - // console.log(state.objects.tile[state.interactionLevel.tileId]) - // console.log("DEBUG: " + state.objects.tile[state.interactionLevel.tileId].rackId) const currentRackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rackId) - console.log("DEBUG: currentRackId = " + currentRackId) const currentRackJson = yield getRackById(currentRackId, false) const prefab = yield call(addPrefab, { name: action.name, rack: currentRackJson }) yield put(addToStore('prefab', prefab)) -- cgit v1.2.3 From d5ba9d54bea49a1433c5d8f3759eecf180250241 Mon Sep 17 00:00:00 2001 From: jc0b Date: Wed, 29 Jul 2020 17:38:12 +0200 Subject: Fix frontend build failure --- frontend/src/sagas/prefabs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'frontend/src') diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js index ea84fdfd..287a3cf8 100644 --- a/frontend/src/sagas/prefabs.js +++ b/frontend/src/sagas/prefabs.js @@ -1,7 +1,7 @@ import {call, put, select} from "redux-saga/effects"; import {addToStore} from "../actions/objects"; import {addPrefab} from "../api/routes/prefabs"; -import {getRackById, getTopologyAsObject} from "./objects"; +import {getRackById} from "./objects"; export function* onAddPrefab(action) { try { -- cgit v1.2.3 From ac5b33c83f38f9b2799c0f2a871b86052121e8ac Mon Sep 17 00:00:00 2001 From: jc0b Date: Wed, 29 Jul 2020 17:42:27 +0200 Subject: yarn format on prefabs --- .../sidebars/topology/rack/RackSidebarComponent.js | 2 +- .../sidebars/topology/rack/AddPrefabContainer.js | 4 ++-- frontend/src/sagas/index.js | 4 ++-- frontend/src/sagas/objects.js | 21 ++++++++------------- frontend/src/sagas/prefabs.js | 9 ++++----- 5 files changed, 17 insertions(+), 23 deletions(-) (limited to 'frontend/src') diff --git a/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js b/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js index 78414736..d7127114 100644 --- a/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js +++ b/frontend/src/components/app/sidebars/topology/rack/RackSidebarComponent.js @@ -4,7 +4,7 @@ import DeleteRackContainer from '../../../../../containers/app/sidebars/topology import MachineListContainer from '../../../../../containers/app/sidebars/topology/rack/MachineListContainer' import RackNameContainer from '../../../../../containers/app/sidebars/topology/rack/RackNameContainer' import './RackSidebarComponent.css' -import AddPrefabContainer from "../../../../../containers/app/sidebars/topology/rack/AddPrefabContainer"; +import AddPrefabContainer from '../../../../../containers/app/sidebars/topology/rack/AddPrefabContainer' const RackSidebarComponent = () => { return ( diff --git a/frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js b/frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js index 9d0a2c74..c941e745 100644 --- a/frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js +++ b/frontend/src/containers/app/sidebars/topology/rack/AddPrefabContainer.js @@ -1,6 +1,6 @@ import { connect } from 'react-redux' -import {addPrefab} from "../../../../../actions/prefabs"; -import AddPrefabComponent from "../../../../../components/app/sidebars/topology/rack/AddPrefabComponent"; +import { addPrefab } from '../../../../../actions/prefabs' +import AddPrefabComponent from '../../../../../components/app/sidebars/topology/rack/AddPrefabComponent' const mapDispatchToProps = (dispatch) => { return { diff --git a/frontend/src/sagas/index.js b/frontend/src/sagas/index.js index 6a1f2af3..6332b2fb 100644 --- a/frontend/src/sagas/index.js +++ b/frontend/src/sagas/index.js @@ -36,8 +36,8 @@ import { onFetchAuthorizationsOfCurrentUser, onFetchLoggedInUser } from './users import { ADD_TOPOLOGY, DELETE_TOPOLOGY } from '../actions/topologies' import { ADD_SCENARIO, DELETE_SCENARIO, OPEN_SCENARIO_SUCCEEDED, UPDATE_SCENARIO } from '../actions/scenarios' import { onAddScenario, onDeleteScenario, onOpenScenarioSucceeded, onUpdateScenario } from './scenarios' -import {onAddPrefab} from "./prefabs"; -import {ADD_PREFAB} from "../actions/prefabs"; +import { onAddPrefab } from './prefabs' +import { ADD_PREFAB } from '../actions/prefabs' export default function* rootSaga() { yield takeEvery(LOG_IN, onFetchLoggedInUser) diff --git a/frontend/src/sagas/objects.js b/frontend/src/sagas/objects.js index b65df4cc..ebce1f0a 100644 --- a/frontend/src/sagas/objects.js +++ b/frontend/src/sagas/objects.js @@ -161,14 +161,13 @@ export const getAllRooms = function* (roomIds, keepIds) { let rooms = [] - for(let i in roomIds){ + for (let i in roomIds) { let tiles = yield getAllRoomTiles(roomStore[roomIds[i]], keepIds) rooms.push({ - _id: keepIds ? i : undefined, - name: roomStore[roomIds[i]].name, - tiles: tiles, - } - ) + _id: keepIds ? i : undefined, + name: roomStore[roomIds[i]].name, + tiles: tiles, + }) } return rooms } @@ -176,8 +175,8 @@ export const getAllRooms = function* (roomIds, keepIds) { export const getAllRoomTiles = function* (roomStore, keepIds) { let tiles = [] - for(let i in roomStore.tileIds){ - tiles.push(yield getTileById(roomStore.tileIds[i], keepIds)) + for (let i in roomStore.tileIds) { + tiles.push(yield getTileById(roomStore.tileIds[i], keepIds)) } return tiles } @@ -188,9 +187,7 @@ export const getTileById = function* (id, keepIds) { _id: keepIds ? id : undefined, positionX: tileStore[id].positionX, positionY: tileStore[id].positionY, - rack: !tileStore[id].rackId - ? undefined - : yield getRackById(tileStore[id].rackId, keepIds), + rack: !tileStore[id].rackId ? undefined : yield getRackById(tileStore[id].rackId, keepIds), } } @@ -220,8 +217,6 @@ export const getRackById = function* (id, keepIds) { } } - - export const fetchAndStoreAllTraces = () => fetchAndStoreObjects('trace', call(getAllTraces)) export const fetchAndStoreAllSchedulers = function* () { diff --git a/frontend/src/sagas/prefabs.js b/frontend/src/sagas/prefabs.js index 287a3cf8..16cf3d62 100644 --- a/frontend/src/sagas/prefabs.js +++ b/frontend/src/sagas/prefabs.js @@ -1,7 +1,7 @@ -import {call, put, select} from "redux-saga/effects"; -import {addToStore} from "../actions/objects"; -import {addPrefab} from "../api/routes/prefabs"; -import {getRackById} from "./objects"; +import { call, put, select } from 'redux-saga/effects' +import { addToStore } from '../actions/objects' +import { addPrefab } from '../api/routes/prefabs' +import { getRackById } from './objects' export function* onAddPrefab(action) { try { @@ -9,7 +9,6 @@ export function* onAddPrefab(action) { const currentRackJson = yield getRackById(currentRackId, false) const prefab = yield call(addPrefab, { name: action.name, rack: currentRackJson }) yield put(addToStore('prefab', prefab)) - } catch (error) { console.error(error) } -- cgit v1.2.3