1
0
mirror of https://github.com/mgerb/mywebsite synced 2026-01-14 19:42:49 +00:00

handling sensors with redux

This commit is contained in:
2016-09-05 18:27:52 +00:00
parent be5e95b6cf
commit 0e8d2e5b2b
15 changed files with 200 additions and 69 deletions

View File

@@ -0,0 +1,44 @@
//import typs
import * as types from '../constants/app';
//defaults -
const defaultState = {
preview: {
posts: []
},
post: "",
fetched: false,
fetching: false,
postLimit: 10
};
//default reducer
export default function app(state = defaultState, action) {
//every reducer gets called when an action is called - we check for the type to modify our state accordingly
switch (action.type) {
case types.INIT_PREVIEW:
return Object.assign({}, state, {
preview: Object.assign({}, state.preview, action.posts),
fetched: true,
fetching: false
});
case types.LOAD_POST:
return Object.assign({}, state, {
post: action.post,
fetched: true,
fetching: false
});
case types.FETCHING:
return Object.assign({}, state, {
fetched: false,
fetching: true
});
case types.INCREASE_POST_LIMIT:
return Object.assign({}, state, {
postLimit: state.postLimit + 10
});
}
//return present state if no actions get called
return state;
}

View File

@@ -0,0 +1,14 @@
//just using one reducer - use combineReducers from redux to modularize things
import {combineReducers} from 'redux';
import {routerReducer} from 'react-router-redux';
import app from './app';
import sensor from './sensor';
const allReducers = combineReducers({
app,
sensor,
routing: routerReducer
});
export default allReducers;

View File

@@ -0,0 +1,59 @@
//import typs
import * as types from '../constants/sensor';
//defaults -
const defaultState = {
list : [],
infoMonth: [],
infoYear: [],
fetchingList: false,
fetchingInfoMonth: false,
fetchingInfoYear: false,
fetchedList: false,
fetchedInfoMonth: false,
fetchedInfoYear: false
};
//default reducer
export default function app(state = defaultState, action) {
switch(action.type){
case types.FETCHING_LIST:
return Object.assign({}, state, {
fetchingList: true,
fetchedList: false
});
case types.FETCHING_INFO_MONTH:
return Object.assign({}, state, {
fetchingInfoMonth: true,
fetchedInfoMonth: false
});
case types.FETCHING_INFO_YEAR:
return Object.assign({}, state, {
fetchingInfoYear: true,
fetchedInfoYear: false
});
case types.LOAD_SENSOR_LIST:
return Object.assign({}, state, {
list: action.sensor_list,
fetchingList: false,
fetchedList: true
});
case types.LOAD_SENSOR_INFO_MONTH:
return Object.assign({}, state, {
infoMonth: action.sensor_info,
fetchingInfoMonth: false,
fetchedInfoMonth: true
});
case types.LOAD_SENSOR_INFO_YEAR:
return Object.assign({}, state, {
infoYear: action.sensor_info,
fetchingInfoYear: false,
fetchedInfoYear: true
});
}
//return present state if no actions get called
return state;
}