2017-01-20 16:22:57 +01:00
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
* List reducer
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import { fromJS } from 'immutable';
|
|
|
|
|
import {
|
2017-04-10 16:28:30 +02:00
|
|
|
SET_CURRENT_MODEL_NAME,
|
2017-01-23 20:04:12 +01:00
|
|
|
LOAD_RECORDS,
|
2017-04-11 11:34:59 +02:00
|
|
|
LOADED_RECORDS,
|
|
|
|
|
LOAD_COUNT,
|
|
|
|
|
LOADED_COUNT,
|
2017-04-11 11:53:00 +02:00
|
|
|
CHANGE_PAGE,
|
2017-04-11 13:44:47 +02:00
|
|
|
CHANGE_SORT,
|
2017-04-11 17:35:40 +02:00
|
|
|
CHANGE_LIMIT,
|
2017-01-20 16:22:57 +01:00
|
|
|
} from './constants';
|
|
|
|
|
|
2017-01-23 20:04:12 +01:00
|
|
|
const initialState = fromJS({
|
2017-05-11 10:54:44 +02:00
|
|
|
currentModel: false,
|
|
|
|
|
currentModelNamePluralized: false,
|
2017-04-11 11:34:59 +02:00
|
|
|
loadingRecords: true,
|
2017-03-20 22:08:49 +01:00
|
|
|
records: false,
|
2017-04-11 11:34:59 +02:00
|
|
|
loadingCount: true,
|
|
|
|
|
count: false,
|
|
|
|
|
currentPage: 1,
|
2017-04-11 17:35:40 +02:00
|
|
|
limit: 10,
|
2017-04-11 13:44:47 +02:00
|
|
|
sort: 'id',
|
2017-01-23 20:04:12 +01:00
|
|
|
});
|
2017-01-20 16:22:57 +01:00
|
|
|
|
|
|
|
|
function listReducer(state = initialState, action) {
|
|
|
|
|
switch (action.type) {
|
2017-04-10 16:28:30 +02:00
|
|
|
case SET_CURRENT_MODEL_NAME:
|
2017-01-23 20:04:12 +01:00
|
|
|
return state
|
2017-04-25 17:32:29 +02:00
|
|
|
.set('currentModelName', action.modelName)
|
|
|
|
|
.set('currentModelNamePluralized', action.modelNamePluralized);
|
2017-03-20 22:08:49 +01:00
|
|
|
case LOAD_RECORDS:
|
2017-05-11 10:54:44 +02:00
|
|
|
return state.set('loadingRecords', true);
|
2017-01-23 20:04:12 +01:00
|
|
|
case LOADED_RECORDS:
|
2017-05-11 10:54:44 +02:00
|
|
|
return state.set('loadingRecords', false).set('records', action.records);
|
2017-04-11 11:34:59 +02:00
|
|
|
case LOAD_COUNT:
|
2017-05-11 10:54:44 +02:00
|
|
|
return state.set('loadingCount', true);
|
2017-04-11 11:34:59 +02:00
|
|
|
case LOADED_COUNT:
|
2017-05-11 10:54:44 +02:00
|
|
|
return state.set('loadingCount', false).set('count', action.count);
|
2017-04-11 11:53:00 +02:00
|
|
|
case CHANGE_PAGE:
|
2017-05-11 10:54:44 +02:00
|
|
|
return state.set('currentPage', action.page);
|
2017-04-11 13:44:47 +02:00
|
|
|
case CHANGE_SORT:
|
2017-05-11 10:54:44 +02:00
|
|
|
return state.set('sort', action.sort);
|
2017-04-11 17:35:40 +02:00
|
|
|
case CHANGE_LIMIT:
|
2017-05-11 10:54:44 +02:00
|
|
|
return state.set('limit', action.limit);
|
2017-01-20 16:22:57 +01:00
|
|
|
default:
|
|
|
|
|
return state;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default listReducer;
|