ttk-app-core
Version:
enterprise develop framework
61 lines (51 loc) • 1.68 kB
JavaScript
import { Map, fromJS } from 'immutable';
import { reducer as MetaReducer } from 'edf-meta-engine';
import config from './config';
import extend from './extend';
import { getInitState } from './data';
class reducer {
constructor(option) {
this.metaReducer = option.metaReducer;
this.extendReducer = option.extendReducer;
this.config = config.current;
}
init = (state, option) => {
const initState = getInitState();
return this.metaReducer.init(state, initState);
};
load = (state, value) => {
if (value && value.list) {
state = this.metaReducer.sf(state, 'data.list', fromJS(value.list));
}
if (value && value.page) {
let page = {
current: value.page.currentPage,
total: value.page.totalCount,
pageSize: value.page.pageSize
};
state = this.metaReducer.sf(state, 'data.pagination', fromJS(page));
}
return state;
};
selectRow = (state, rowIndex, checked) => {
state = this.metaReducer.sf(state, `data.list.${rowIndex}.selected`, checked);
return state;
};
selectAll = (state, checked, gridName) => {
state = this.extendReducer.gridReducer.selectAll(state, checked, gridName);
return state;
};
enable = (state, res, index) => {
if (res) {
state = this.metaReducer.sf(state, `data.list.${index}`, fromJS(res));
}
return state;
};
}
export default function creator(option) {
const metaReducer = new MetaReducer(option),
extendReducer = extend.reducerCreator({ ...option, metaReducer }),
o = new reducer({ ...option, metaReducer, extendReducer }),
ret = { ...metaReducer, ...extendReducer.gridReducer, ...o };
return { ...ret };
}