summaryrefslogtreecommitdiff
path: root/frontend/src/reducers/states.js
diff options
context:
space:
mode:
authorGeorgios Andreadis <info@gandreadis.com>2020-06-29 15:47:09 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 16:08:41 +0200
commit90fae26aa4bd0e0eb3272ff6e6524060e9004fbb (patch)
treebf6943882f5fa5f3114c01fc571503c79ee1056d /frontend/src/reducers/states.js
parent7032a007d4431f5a0c4c5e2d3f3bd20462d49950 (diff)
Prepare frontend repository for monorepo
This change prepares the frontend Git repository for the monorepo residing at https://github.com/atlarge-research.com/opendc. To accomodate for this, we move all files into a frontend subdirectory.
Diffstat (limited to 'frontend/src/reducers/states.js')
-rw-r--r--frontend/src/reducers/states.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/frontend/src/reducers/states.js b/frontend/src/reducers/states.js
new file mode 100644
index 00000000..793f7b7d
--- /dev/null
+++ b/frontend/src/reducers/states.js
@@ -0,0 +1,33 @@
+import { combineReducers } from "redux";
+import { ADD_BATCH_TO_STATES } from "../actions/states";
+
+export const states = combineReducers({
+ task: objectStates("task"),
+ room: objectStates("room"),
+ rack: objectStates("rack"),
+ machine: objectStates("machine")
+});
+
+function objectStates(type) {
+ return (state = {}, action) => {
+ if (action.objectType !== type) {
+ return state;
+ }
+
+ if (action.type === ADD_BATCH_TO_STATES) {
+ const batch = {};
+ for (let i in action.objects) {
+ batch[action.objects[i].tick] = Object.assign(
+ {},
+ state[action.objects[i].tick],
+ batch[action.objects[i].tick],
+ { [action.objects[i][action.objectType + "Id"]]: action.objects[i] }
+ );
+ }
+
+ return Object.assign({}, state, batch);
+ }
+
+ return state;
+ };
+}