webio-node/src/actions/index.js

649 lines
17 KiB
JavaScript

/**
* add message to dialog queue
* @param {string} msg
* @param {function} act
*/
export const add_dialog_msg =(msg, act) => ({
type: 'dialog_addmsg',
msg: msg,
act: act || null
});
/**
* remove dialog queue first message
*/
export const remove_dialog_msg = () => ({
type: 'dialog_remove_first'
});
/**
* set i18next object
* @param {object} i18n i18next object
*/
export const set_i18n = (i18n) => ({
type: 'i18n_set_ctx',
i18n: i18n
});
/**
* Toggle Menu open/close
* @param {bool} flag switch menu open/close
*/
export const toggle_menu = (flag) => ({
type: flag ? 'ui_show_menu' : 'ui_hide_menu'
});
/**
* ToGGle Loading open/close
* @param {bool} flag
*/
export const toggle_loading = (flag) => ({
type: flag ? 'ui_show_loading' : 'ui_hide_loading'
});
/**
*
* @param {object} data
*/
export const getRequest = (data = {}) => {
let json = {
method: 'post',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
mode:'cors'
};
let token = sessionStorage.getItem('token');
if(token) json.headers['x-auth-token'] = token;
json.body = JSON.stringify({data});
return json;
}
export const get_network_info = () => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/system/getnetwork', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1){
return dispatch(add_dialog_msg(json.message));
}
let j = {};
if('data' in json && 'record' in json.data && json.data.record.length > 0) j = json.data.record[0];
return dispatch(network_info(j));
});
}
const network_info = (json) => ({
type: 'network_info',
network: json
});
export const set_network_info = (dhcpMode, ip, netmask, gateway, dns) => dispatch => {
dispatch(toggle_loading(1));
let type = dhcpMode ? 'dhcp' : 'manual';
let req = getRequest();
let json = {
data:{
type,
ip,
netmask,
gateway,
dns
}
}
req.body = JSON.stringify(json);
return fetch('/api/system/updatenetwork', req)
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_network_info());
});
}
export const get_system_time = () => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/system/gettime', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1){
return dispatch(add_dialog_msg(json.message));
}
let t = '';
if('data' in json && 'record' in json.data && json.data.record.length > 0) t = json.data.record[0].time;
return dispatch(system_time(t));
});
}
const system_time = (time) => ({
type: 'system_time',
time
});
export const set_system_time = time => dispatch => {
dispatch(toggle_loading(1));
let req = getRequest({time});
return fetch('/api/system/updatetime', req)
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_system_time());
});
}
export const get_user_list = () => dispatch => {
dispatch(toggle_loading(1));
let req = getRequest();
return fetch('/api/system/getuserlist', req)
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(user_list(json.data.record));
});
}
const user_list = (user) => ({
type: 'user_list',
user
})
const userApi = (url, data = {}) => dispatch => {
dispatch(toggle_loading(1));
let req = getRequest(data);
return fetch(url, req)
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_user_list());
});
}
export const edit_user = (data) => dispatch => {
return dispatch(userApi('/api/system/edituser', data));
}
export const add_user = (data) => dispatch => {
return dispatch(userApi('/api/system/adduser', data));
}
export const del_user = (data) => dispatch => {
return dispatch(userApi('/api/system/deluser', data));
}
export const get_dio_info = () => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/dio/getdioinfo', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(dioinfo(json.data.rt.do || [], json.data.rt.di || []));
});
}
export const get_dio_status = () => dispatch => {
return fetch('/api/dio/getio', getRequest())
.then(response => response.json())
.then(json => {
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(diostatus(json.data.rt.do, json.data.rt.di));
});
}
export const set_do_status = (data) => dispatch => {
return fetch('/api/dio/dotrun', getRequest(data))
.then(response => response.json())
.then(json => {
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
})
}
export const set_dio_info = (data) => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/dio/setdioinfo', getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_dio_info());
})
}
const diostatus = (doSt, diSt) => ({
type: 'dio_status',
doSt,
diSt
})
const dioinfo = (dod, did) => ({
type: 'dio_list',
do: dod,
di: did
});
export const get_log_list = (p = 1) => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/log/getlog', getRequest({p}))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(loglist(json.data.record, json.data.page));
});
}
const loglist = (list, page) => ({
type: 'log_list',
list,
page
});
export const scan_leone = (data) => (dispatch, getState) => {
dispatch(toggle_loading(1));
dispatch(set_scanning());
return fetch('/api/leone/scanleone', getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
let {i18n} = getState();
if(json.data.record.length == 0) return dispatch(add_dialog_msg(i18n&&i18n.t? i18n.t('tip.scan_empty') : ''));
return dispatch(show_scan_leone(json.data.record));
})
}
export const clear_scan_leone = (clrRemote = false) => dispatch => {
dispatch(clear_scan());
return fetch('/api/leone/clearscanleone', getRequest())
.then(response => response.json())
.then(json => {
return ;
});
}
export const add_scan_leone = (data) => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/leone/addscanleone', getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
dispatch(clear_scan());
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_leone_list());
})
}
export const get_leone_list = (showLoading = true) => dispatch => {
if(showLoading) dispatch(toggle_loading(1));
return fetch('/api/leone/getleonelist', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(leone_list(json.data.record, json.data.rt.status));
});
}
export const del_leone = (data) => dispatch => {
dispatch(leone_api('/api/leone/delleone', data));
}
export const add_leone = data => dispatch => {
dispatch(leone_api('/api/leone/addleone', data));
}
export const edit_leone = data => dispatch => {
dispatch(leone_api('/api/leone/editleone', data));
}
const leone_api = (url, data) => dispatch => {
dispatch(toggle_loading(1));
return fetch(url, getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_leone_list());
});
}
const clear_scan = () => ({
type: 'leone_clear_scan'
})
const set_scanning = () => ({
type: 'leone_scanning'
})
const show_scan_leone = (list) => ({
type: 'leone_scan',
list
});
const leone_list = (list, status) => ({
type: 'leone_list',
list,
status
})
export const io_cmd = (data, cb = null) => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/iocmd/iocmd', getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
if(cb && typeof cb == 'function') return cb();
});
}
export const get_iogroup_list = () => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/iogroup/getiogrouplist', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(iogroup_list(json.data.record, json.data.rt.do, json.data.rt.leone));
});
}
const iogroup_list = (list, doa, leone) => ({
type: 'iogroup_list',
list,
do: doa,
leone
});
const group_api = (url, data) => dispatch => {
dispatch(toggle_loading(1));
return fetch(url, getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_iogroup_list());
});
}
export const del_iogroup = (data) => dispatch => {
dispatch(group_api('/api/iogroup/deliogroup', data));
}
export const add_iogroup = (data) => dispatch => {
dispatch(group_api('/api/iogroup/addiogroup', data));
}
export const edit_iogroup = (data) => dispatch => {
dispatch(group_api('/api/iogroup/editiogroup', data));
}
export const get_select_list = (data) => dispatch => {
return fetch('/api/system/getselectlist', getRequest(data))
.then(response => response.json())
.then(json => {
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(select_list(json.data.record || []));
})
}
export const clear_select_list = () => ({
type: 'clear_select_list'
})
const select_list = (list) => ({
type: 'select_list',
list
})
const schedule_api = (url, data) => dispatch => {
dispatch(toggle_loading(1));
return fetch(url, getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(get_schedule_list());
})
}
const schedule_list = (list, dos, les, ios) => ({
type: 'schedule_list',
list,
dos,
les,
ios
});
export const get_schedule_list = () => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/schedule/getschedulelist', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
return dispatch(schedule_list(json.data.record || [], json.data.rt.do || [], json.data.rt.leone || [], json.data.rt.iogroup || []));
})
}
export const add_schedule = (data) => dispatch => {
dispatch(schedule_api('/api/schedule/addschedule', data));
}
export const del_schedule = (data) => dispatch => {
dispatch(schedule_api('/api/schedule/delschedule', data));
}
export const edit_schedule = (data) => dispatch => {
dispatch(schedule_api('/api/schedule/editschedule', data));
}
export const sw_schedule = (data) => dispatch => {
dispatch(schedule_api('/api/schedule/swschedule', data));
}
export const clear_userlist = () => ({
type: 'clear_userlist'
});
export const clear_dio = () => ({
type: 'clear_dio'
});
export const clear_leone =() => ({
type: 'clear_leone'
});
export const clear_log = () => ({
type: 'clear_log'
});
export const clear_iogroup = () => ({
type: 'clear_iogroup'
});
export const clear_schedule = () => ({
type: 'clear_schedule'
});
export const get_modbus_list = () => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/modbus/getmodbuslist', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1 ) return dispatch(add_dialog_msg(json.message));
dispatch(modbus_list(json.data.record || []));
});
}
const modbus_list = list => ({
type: 'modbus_list',
list
});
export const clear_modbus = () => ({
type: 'clear_modbus'
})
const modbus_api = (url, data) => dispatch => {
dispatch(toggle_loading(1));
return fetch(url, getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
dispatch(get_modbus_list());
})
}
export const del_modbus = (data) => dispatch => {
dispatch(modbus_api('/api/modbus/delmodbus', data));
}
export const add_modbus = data => dispatch => {
dispatch(modbus_api('/api/modbus/addmodbus', data));
}
export const edit_modbus = data => dispatch => {
dispatch(modbus_api('/api/modbus/editmodbus', data));
}
export const get_mb_data = data => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/modbus/getmodbus', getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
dispatch(mb_data(data.id, json.data.rt.iolist || [], json.data.rt.aioset || []));
})
}
const mb_data = (id, iolist, aioset) => ({
type: 'mb_data',
id,
iolist,
aioset
})
export const get_mb_iostatus = data => dispatch => {
return fetch('/api/modbus/getiostatus', getRequest(data))
.then(response => response.json())
.then(json => {
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
dispatch(mb_iostatus(data.id, data.type, json.data.record || []));
})
}
const mb_iostatus = (id, iotype, list) => ({
type: 'mb_iostatus',
id,
iotype,
list
});
const mb_iolist_api = (url, data) => dispatch => {
dispatch(toggle_loading(1))
return fetch(url, getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
dispatch(get_mb_data({id: data.devuid}));
});
}
const mb_aio_api = (url, data) => dispatch => {
dispatch(toggle_loading(1))
return fetch(url, getRequest(data))
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
dispatch(get_mb_data({id: data.devuid}));
});
}
export const edit_mb_iolist = data => dispatch => {
return dispatch(mb_iolist_api('/api/modbus/editiolist', data));
}
export const add_mb_iolist = data => dispatch => {
return dispatch(mb_iolist_api('/api/modbus/addiolist', data));
}
export const del_mb_iolist = data => dispatch => {
return dispatch(mb_iolist_api('/api/modbus/deliolist', data));
}
export const add_mb_aio = data => dispatch => {
return dispatch(mb_aio_api('/api/modbus/addaioset', data));
}
export const edit_mb_aio = data => dispatch => {
return dispatch(mb_aio_api('/api/modbus/editaioset', data));
}
export const del_mb_aio = data => dispatch => {
return dispatch(mb_aio_api('/api/modbus/delaioset', data));
}
export const get_link_list = () => dispatch => {
dispatch(toggle_loading(1));
return fetch('/api/link/getlinklist', getRequest())
.then(response => response.json())
.then(json => {
dispatch(toggle_loading(0));
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
dispatch(link_list(json.data.record || []))
})
}
const link_list = (list) => ({
type: 'link_list',
list
})
export const clear_link = () => ({
type: 'clear_link'
})
const link_api = (url, data) => dispatch => {
return fetch(url, getRequest(data))
.then(response => response.json())
.then(json => {
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
dispatch(get_link_list());
})
}
export const add_link = (data) => dispatch => {
dispatch(link_api('/api/link/addlink', data));
}
export const del_link = (data) => dispatch => {
dispatch(link_api('/api/link/dellink', data));
}
export const sw_link_active = (data) => dispatch => {
dispatch(link_api('/api/link/swlinkactive', data));
}
export const get_dashboard = () => dispatch => {
return fetch('/api/system/dashboard', getRequest())
.then(response => response.json())
.then(json => {
if(json.status != 1) return dispatch(add_dialog_msg(json.message));
let rt = json.data.rt;
dispatch(dashboard(rt.ip[0]? rt.ip[0].ip : '', rt.version[0]? rt.version[0].version : '', rt.di, rt.leone))
})
}
const dashboard = (ip, version, di, leone) => ({
type: 'dashboard',
ip,
version,
di,
leone
})
export const toggle_dashboard = (flag) => ({
type: flag ? 'ui_show_dashboard' : 'ui_hide_dashboard'
})
export const clear_dashboard = () => ({
type: 'clear_dashboard'
})