From 42778e8be409b97059fa519b53c303cdba502e01 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Tue, 5 Sep 2017 09:30:42 +0200 Subject: Implement rack creation --- src/sagas/index.js | 3 +++ src/sagas/topology.js | 25 +++++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) (limited to 'src/sagas') diff --git a/src/sagas/index.js b/src/sagas/index.js index a076736c..e58c966f 100644 --- a/src/sagas/index.js +++ b/src/sagas/index.js @@ -2,6 +2,7 @@ import {takeEvery} from "redux-saga/effects"; import {LOG_IN} from "../actions/auth"; import {ADD_SIMULATION, DELETE_SIMULATION} from "../actions/simulations"; import { + ADD_RACK_TO_TILE, ADD_TILE, CANCEL_NEW_ROOM_CONSTRUCTION, DELETE_TILE, @@ -13,6 +14,7 @@ import {DELETE_CURRENT_USER, FETCH_AUTHORIZATIONS_OF_CURRENT_USER} from "../acti import {onDeleteCurrentUser} from "./profile"; import {onSimulationAdd, onSimulationDelete} from "./simulations"; import { + onAddRackToTile, onAddTile, onCancelNewRoomConstruction, onDeleteTile, @@ -34,4 +36,5 @@ export default function* rootSaga() { yield takeEvery(ADD_TILE, onAddTile); yield takeEvery(DELETE_TILE, onDeleteTile); yield takeEvery(EDIT_ROOM_NAME, onEditRoomName); + yield takeEvery(ADD_RACK_TO_TILE, onAddRackToTile); } diff --git a/src/sagas/topology.js b/src/sagas/topology.js index c029c861..22f70f25 100644 --- a/src/sagas/topology.js +++ b/src/sagas/topology.js @@ -1,6 +1,7 @@ import {call, put, select} from "redux-saga/effects"; import {addPropToStoreObject, addToStore} from "../actions/objects"; import { + addRackToTileSucceeded, addTileSucceeded, cancelNewRoomConstructionSucceeded, deleteTileSucceeded, @@ -10,7 +11,7 @@ import { } from "../actions/topology"; import {addRoomToDatacenter} from "../api/routes/datacenters"; import {addTileToRoom, deleteRoom, updateRoom} from "../api/routes/rooms"; -import {deleteTile} from "../api/routes/tiles"; +import {addRackToTile, deleteTile} from "../api/routes/tiles"; import { fetchAndStoreCoolingItem, fetchAndStoreDatacenter, @@ -89,7 +90,7 @@ export function* onStartNewRoomConstruction() { datacenterId, roomType: "SERVER" }); - const roomWithEmptyTileList = Object.assign(room, {tileIds: []}); + const roomWithEmptyTileList = Object.assign({}, room, {tileIds: []}); yield put(addToStore("room", roomWithEmptyTileList)); yield put(startNewRoomConstructionSucceeded(room.id)); } catch (error) { @@ -99,7 +100,7 @@ export function* onStartNewRoomConstruction() { export function* onCancelNewRoomConstruction() { try { - const roomId = yield select(state => state.currentRoomInConstruction); + const roomId = yield select(state => state.construction.currentRoomInConstruction); yield call(deleteRoom, roomId); yield put(cancelNewRoomConstructionSucceeded()); } catch (error) { @@ -109,7 +110,7 @@ export function* onCancelNewRoomConstruction() { export function* onAddTile(action) { try { - const roomId = yield select(state => state.currentRoomInConstruction); + const roomId = yield select(state => state.construction.currentRoomInConstruction); const tile = yield call(addTileToRoom, { roomId, positionX: action.positionX, @@ -142,3 +143,19 @@ export function* onEditRoomName(action) { console.log(error); } } + +export function* onAddRackToTile(action) { + try { + const rack = yield call(addRackToTile, action.tileId, { + id: -1, + name: "Rack", + capacity: 5, + powerCapacityW: 100, + machines: 20 + }); + yield put(addToStore("rack", rack)); + yield put(addRackToTileSucceeded(action.tileId, rack.id)); + } catch (error) { + console.log(error); + } +} -- cgit v1.2.3