add modbus cmd

This commit is contained in:
Jay
2017-03-27 10:07:41 +08:00
parent 762175f1f9
commit c990935194
13 changed files with 153985 additions and 54 deletions
+1
View File
@@ -42,6 +42,7 @@ class PageRoot extends React.Component {
return response.json();
return {}
}).then(json => {
let lang = Object.keys(json)[0] || '';
i18next.init({
lng: lang,
resources: json
@@ -0,0 +1,86 @@
import React from 'react';
import {Container, Segment, Input, Form, Button} from 'semantic-ui-react';
import {getRequest} from '../../../actions';
class ModbusCmdPage extends React.Component {
state = {
res: ''
}
handleSubmit = (data) => {
let {i18n} = this.props;
if(data.ip == '' || data.node == '' || data.func == '' || data.addr == '' || data.value == '') return this.props.showDialog(i18n&&i18n.t?i18n.t('tip.input_empty'):'');
this.props.toggleLoading(1);
this.setState({res:''})
fetch('/api/modbus/modbuscmd', getRequest(data))
.then(response=>response.json())
.then(json=>{
this.props.toggleLoading(0);
if(json.status != 1) return this.props.showDialog(json.message);
this.setState({
res: json.data.record[0].msg || ''
})
});
}
render() {
return (
<Container>
<Segment>
<Form onSubmit={(e,d)=>{
e.preventDefault();
this.handleSubmit(d.formData);
}} serializer={e=>{
let json = {
ip: '',
node: '',
func: '',
addr: '',
value: ''
};
let ip = e.querySelector('input[name="ip"]');
if(ip && 'value' in ip) json.ip = ip.value;
let node = e.querySelector('input[name="node"]');
if(node && 'value' in node) json.node = node.value;
let func = e.querySelector('input[name="func"]');
if(func && 'value' in func) json.func = func.value;
let addr = e.querySelector('input[name="addr"]');
if(addr && 'value' in addr) json.addr = addr.value;
let val = e.querySelector('input[name="val"]');
if(val && 'value' in val) json.value = val.value;
return json;
}}>
<Form.Field>
<Input name="ip" label="請輸入IP" defaultValue="127.0.0.1" />
</Form.Field>
<Form.Field>
<Input name="node" label="請輸入節點" />
</Form.Field>
<Form.Field>
<Input name="func" label="請輸入FunctionCode" />
</Form.Field>
<Form.Field>
<Input name="addr" label="請輸入位址" />
</Form.Field>
<Form.Field>
<Input name="val" label="請輸入數值" />
</Form.Field>
<Button type="submit" content="送出" fluid />
</Form>
</Segment>
<Segment>
{
this.state.res.split(/\n/).map((t,idx) => (
<div key={idx}>{t}</div>
))
}
</Segment>
</Container>
)
}
}
export default ModbusCmdPage;
+1
View File
@@ -67,6 +67,7 @@ class Root extends React.Component {
return response.json();
return {}
}).then(json => {
let lang = Object.keys(json)[0] || '';
i18next.init({
lng: lang,
resources: json
+1
View File
@@ -16,6 +16,7 @@ const MainMenu = ({i18n, show, toggleMenu, children, permissions, showDashboard,
<MItem toLink="/admin/iocmd" txt={i18n && 't' in i18n ? i18n.t('menu.item.iocmd') : ''} permission={permissions.iocmd} onClick={()=>toggleMenu()} />
<MItem toLink="/admin/schedule" txt={i18n && 't' in i18n ? i18n.t('menu.item.schedule') : ''} permission={permissions.schedule} onClick={()=>toggleMenu()} />
<MItem toLink="/admin/modbus" txt={i18n && 't' in i18n ? i18n.t('menu.item.modbus') : ''} permission={permissions.modbus} onClick={()=>toggleMenu()} />
<MItem toLink="/admin/modbuscmd" txt={i18n && 't' in i18n ? i18n.t('menu.item.modbuscmd') : ''} permission={permissions.modbus} onClick={()=>toggleMenu()} />
<MItem toLink="/admin/link" txt={i18n && 't' in i18n ? i18n.t('menu.item.link') : ''} permission={permissions.link} onClick={()=>toggleMenu()} />
<MItem toLink="/admin" txt={i18n && 't' in i18n ? i18n.t('menu.item.logout') : ''} permission={true} onClick={()=>{
sessionStorage.clear();
+18
View File
@@ -0,0 +1,18 @@
import {connect} from 'react-redux';
import {add_dialog_msg, toggle_loading} from '../../actions';
import ModbusCmdPage from '../../components/AdminPage/ModbusCmd';
const mapStateToProps = (state) => ({
i18n: state.i18n
});
const mapDispatchToProps = (dispatch, ownProps) => ({
showDialog: (msg) => {
dispatch(add_dialog_msg(msg));
},
toggleLoading: (flag = false) => {
dispatch(toggle_loading(flag));
}
})
export default connect(mapStateToProps, mapDispatchToProps)(ModbusCmdPage);
+2
View File
@@ -10,6 +10,7 @@ import IOGroup from './containers/AdminPage/IOGroup';
import IOCmd from './containers/AdminPage/IOCmd';
import Schedule from './containers/AdminPage/Schedule';
import Modbus from './containers/AdminPage/Modbus';
import ModbusCmd from './containers/AdminPage/ModbusCmd';
import ActionLink from './containers/AdminPage/ActionLink';
import ActionLinkAdd from './containers/AdminPage/ActionLinkAdd';
@@ -26,6 +27,7 @@ const Routes = (
<Route path="modbus" component={Modbus} />
<Route path="link" component={ActionLink} />
<Route path="addlink" component={ActionLinkAdd} />
<Route path="modbuscmd" component={ModbusCmd} />
</Route>
);