UNPKG

ttk-app-core

Version:
124 lines (107 loc) 4.79 kB
import { Map, fromJS } from 'immutable' import { reducer as MetaReducer } from 'edf-meta-engine' import utils from 'edf-utils' import config from './config' import { getInitState } from './data' import changeToOption from './utils/changeToOption' import moment from 'moment' class reducer { constructor(option) { this.metaReducer = option.metaReducer this.config = config.current } init = (state, option) => { const initState = getInitState() return this.metaReducer.init(state, initState) } load = (state, {response, noInitDate}) => { const { dtoList, page, accountList, columnDto, voucherStateList, voucherTypeList, displayDate, loading } = response state = this.metaReducer.sf(state, 'data.list', fromJS(dtoList)) state = this.metaReducer.sf(state, 'data.pagination', fromJS(page)) if (accountList) { state = this.metaReducer.sf(state, 'data.other.accountList', fromJS(changeToOption(accountList, 'codeAndName', 'id'))) } if (columnDto) { state = this.metaReducer.sf(state, 'data.other.columnDto', fromJS(columnDto.columnDetails)) // state = this.metaReducer.sf(state, 'data.other.ts', fromJS(columnDto.ts)) } if (voucherStateList) { state = this.metaReducer.sf(state, 'data.other.voucherStateOption', fromJS(changeToOption(voucherStateList, 'name', 'id'))) } if (voucherTypeList) { state = this.metaReducer.sf(state, 'data.other.sourceVoucherTypeIdOption', fromJS(changeToOption(voucherTypeList, 'name', 'id'))) } if( displayDate && !noInitDate ){ state = this.metaReducer.sf( state, 'data.searchValue.date_end', utils.date.transformMomentDate(displayDate) ) state = this.metaReducer.sf( state, 'data.searchValue.date_start', utils.date.transformMomentDate(displayDate) ) state = this.metaReducer.sf(state, 'data.searchValue.displayDate', displayDate) } if( typeof loading == 'boolean' ){ state = this.metaReducer.sf(state, 'data.other.loading', loading) } // state = this.metaReducer.sf(state, 'data.tableKey', Math.random()) // state = this.metaReducer.sf(state, 'data.tableKey', Math.floor(Math.random()*100000)) return state } tableLoading = (state, loading) => { return this.metaReducer.sf(state, 'data.loading', loading) } update = (state, { path, value }) => { return this.metaReducer.sf(state, path, fromJS(value)) } updateArr = (state, arr) => { arr.forEach(item => { state = this.metaReducer.sf(state, item.path, fromJS(item.value)) }) return state } tableSettingVisible = (state, { value, data }) => { state = this.metaReducer.sf(state, 'data.showTableSetting', value) data = this.metaReducer.gf(state, 'data.other.columnDto') return state } settingOptionsUpdate = (state, {visible, data}) => { state = this.metaReducer.sf(state, 'data.other.columnDto', fromJS(data)) state = this.metaReducer.sf(state, 'data.showTableSetting', visible) return state } normalSearchChange = (state, { path, value }) => { state = this.metaReducer.sf(state, `data.normalSearch.${path}`, fromJS(value)) return state } searchUpdate = (state, value) => { return this.metaReducer.sf(state, 'data.searchValue', fromJS(value)) } tableOnchange = (state, value) => { state = this.metaReducer.sf(state, 'data.list', fromJS(value)) state = this.metaReducer.sf(state, 'data.key', Math.random()) //state = this.metaReducer.sf(state, 'data.pagination', fromJS(response.pagination)) //state = this.metaReducer.sf(state, 'data.filter', fromJS(response.filter)) return state } sortReduce = (state, value) => { state = this.metaReducer.sf(state, `data.sort`, fromJS(value)) return state } setTableScroll = (state, value) => { let tableOption = { x: 1090, y: value } state = this.metaReducer.sf(state, 'data.tableOption', fromJS(tableOption)) return state } setTableOption = (state, value) => { return this.metaReducer.sf(state, 'data.tableOption', fromJS(value)) } } export default function creator(option) { const metaReducer = new MetaReducer(option), o = new reducer({ ...option, metaReducer }) return { ...metaReducer, ...o } }