summaryrefslogtreecommitdiff
path: root/src/reducers/states.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/reducers/states.js')
-rw-r--r--src/reducers/states.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/reducers/states.js b/src/reducers/states.js
new file mode 100644
index 00000000..a9eb4ce8
--- /dev/null
+++ b/src/reducers/states.js
@@ -0,0 +1,33 @@
+import {combineReducers} from "redux";
+import {ADD_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_TO_STATES) {
+ return Object.assign(
+ {},
+ state,
+ {
+ [action.tick]: Object.assign(
+ {},
+ state[action.tick],
+ {[action.object.id]: action.object}
+ )
+ }
+ );
+ }
+
+ return state;
+ };
+}