2017-03-29 15:06:50 +08:00

225 lines
5.7 KiB
JavaScript

const getDefaultState = () => ({
user: [],
dio: {
di: [],
do: [],
diSt: {},
doSt: {}
},
log: {
list: [],
page: {}
},
leone: {
scanList: [],
list: [],
status: [],
scanning: false
},
iogroup: {
list: [],
do: [],
leone: []
},
schedule: {
list: [],
do: [],
leone: [],
iogroup: []
},
modbus: {
list: [],
log: []
},
link: {
list: []
},
selectdev: []
})
const listsReducer = (state = getDefaultState(), action) => {
switch (action.type) {
case 'user_list':
return {...state, user: action.user };
case 'clear_user_list':
return {...state, user: [] };
case 'dio_list':
return {...state,
dio: {
...state.dio,
di: action.di,
do: action.do
}
};
case 'dio_status':
return {...state,
dio: {
...state.dio,
diSt: action.diSt,
doSt: action.doSt
}
};
case 'clear_dio':
return {...state, dio: {...getDefaultState().dio } };
case 'log_list':
return {...state,
log: {
list: action.list,
page: action.page
}
};
case 'clear_log':
return {...state, log: {...getDefaultState().log } };
case 'leone_list':
return {
...state,
leone: {
...state.leone,
list: action.list,
status: action.status
}
};
case 'leone_scanning':
return {
...state,
leone: {
...state.leone,
scanning: true
}
}
case 'leone_scan':
return {
...state,
leone: {
...state.leone,
scanList: action.list,
scanning: false
}
};
case 'leone_clear_scan':
return {
...state,
leone: {
...state.leone,
scanList: []
}
}
case 'clear_leone':
return {...state, leone: {...getDefaultState().leone } };
case 'iogroup_list':
return {
...state,
iogroup: {
...state.iogroup,
list: action.list,
do: action.do,
leone: action.leone
}
};
case 'clear_iogroup':
return {...state, iogroup: {...getDefaultState().iogroup } };
case 'select_list':
return {
...state,
selectdev: action.list
};
case 'clear_select_list':
return {
...state,
selectdev: []
};
case 'schedule_list':
return {
...state,
schedule: {
list: action.list,
do: action.dos,
leone: action.les,
iogroup: action.ios
}
};
case 'clear_schedule':
return {...state,
schedule: {
...getDefaultState().schedule
}
}
case 'modbus_list':
return {...state, modbus:{
...state.modbus,
list: action.list
}}
case 'mb_data':
return {
...state,
modbus: {
...state.modbus,
list: state.modbus.list.map(t=> mb_data(t, action))
}
}
case 'mb_iostatus':
return {
...state,
modbus: {
...state.modbus,
list: state.modbus.list.map(t=> mb_data(t, action))
}
}
case 'mb_log':
return {
...state,
modbus: {
...state.modbus,
log: action.list
}
}
case 'clear_modbus':
return {...state, modbus: {...getDefaultState().modbus}};
case 'link_list':
return {
...state,
link: {
list: action.list
}
}
case 'clear_link':
return {
...state,
link:{
...getDefaultState().link
}
}
default:
return state;
}
}
function mb_data(state = {}, action){
switch(action.type){
case 'mb_data':
if(action.id != state.uid) return state;
return {
...state,
iolist: action.iolist || [],
aioset: action.aioset || []
};
case 'mb_iostatus':
if(action.id != state.uid) return state;
let json = {};
json[action.iotype] = action.list;
return {
...state,
status: {
...(state.status || {}),
...json
}
};
default:
return {
...state,
iolist: state.iolist || []
};
}
}
export default listsReducer;