add modbus log

This commit is contained in:
Jay
2017-03-29 15:06:50 +08:00
parent 77bf5f58d2
commit 3e66691b67
15 changed files with 5579 additions and 4735 deletions
@@ -0,0 +1,29 @@
import React from 'react';
import {Menu, Header} from 'semantic-ui-react';
import ListItem from './DeviceListItem';
const DeviceList = ({i18n, list, selected, toggleSelect}) => {
return (
<Menu vertical={true}>
<Menu.Item>
<Menu.Header content="裝置列表" />
<Menu.Menu>
{
list.map((t, idx) => {
return (
<ListItem key={idx}
i18n={i18n}
data={t}
toggleSelect={toggleSelect}
checked={selected.indexOf(t.uid) == -1 ? false : true} />
)
})
}
</Menu.Menu>
</Menu.Item>
</Menu>
)
}
export default DeviceList;
@@ -0,0 +1,13 @@
import React from 'react';
import {Menu, Checkbox} from 'semantic-ui-react';
const ListItem = ({i18n, data, checked, toggleSelect}) => {
return (
<Menu.Item>
<Checkbox label={data.name} checked={checked} onChange={(e,d)=>{ toggleSelect(data.uid) }}/>
</Menu.Item>
)
}
export default ListItem;
@@ -0,0 +1,25 @@
import React from 'react';
import {Table} from 'semantic-ui-react';
import {convertTime} from '../../../tools'
const ListItem = ({i18n, data}) => {
let iotype = i18n&&i18n.getResource&&i18n.language ? i18n.getResource(i18n.language + '.translation.porttype') : [];
let t = '';
for(let i in iotype) {
if(data.type == iotype[i].code) t = iotype[i].name;
}
return (
<Table.Row>
<Table.Cell>{data.devname}</Table.Cell>
<Table.Cell>{data.aioname}</Table.Cell>
<Table.Cell>{data.port}</Table.Cell>
<Table.Cell>{t}</Table.Cell>
<Table.Cell>{data.value}</Table.Cell>
<Table.Cell>{convertTime(data.tst)}</Table.Cell>
</Table.Row>
)
}
export default ListItem;
@@ -0,0 +1,35 @@
import React from 'react';
import {Table, Segment} from 'semantic-ui-react';
import ListItem from './LogListItem';
const LogPanel = ({i18n, log}) => {
return (
<Segment>
<Table>
<Table.Header>
<Table.Row>
<Table.HeaderCell>裝置名稱</Table.HeaderCell>
<Table.HeaderCell>接口名稱</Table.HeaderCell>
<Table.HeaderCell>接口號碼</Table.HeaderCell>
<Table.HeaderCell>接口類型</Table.HeaderCell>
<Table.HeaderCell>數值</Table.HeaderCell>
<Table.HeaderCell>時間</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{
log.map((t,idx)=>{
return (
<ListItem key={idx} i18n={i18n}
data={t} />
)
})
}
</Table.Body>
</Table>
</Segment>
)
}
export default LogPanel;
+101
View File
@@ -0,0 +1,101 @@
import React from 'react';
import {Container, Menu, Grid, Button, Input, Segment, Table} from 'semantic-ui-react';
import DeviceList from './DeviceList';
import {convertTime} from '../../../tools';
import Datetime from 'react-datetime';
import LogPanel from './LogPanel';
let getDayTime = () => {
let date = new Date();
date.setHours(0,0,0,0);
return date.getTime();
}
class ModbusLogPage extends React.Component {
state = {
selected: [],
stime: getDayTime(),
etime: Date.now()
}
toggleSelect = (id) => {
let selected = [...this.state.selected];
let idx = selected.indexOf(id);
if(idx == -1) selected.push(id);
else selected.splice(idx, 1);
this.setState({
selected
})
}
getLogList = () => {
let ids = [...this.state.selected];
let data = {
ids,
stime: Math.floor(this.state.stime /1000),
etime: Math.floor(this.state.etime)
}
if(ids.length == 0) return this.props.showDialog('請選擇裝置');
this.props.getMBLog(data);
}
componentDidMount(){
this.props.getList();
this.props.router.setRouteLeaveHook(this.props.route, () => {
this.props.clearList();
});
}
render(){
let {i18n, list, log} = this.props;
return (
<Container>
<Menu>
<Menu.Item>
<Input label="起始時間" input={
<Datetime dateFormat="YYYY-MM-DD"
timeFormat="HH:mm"
value={convertTime(this.state.stime)}
input={true}
onChange={(e)=>{ this.setState({stime: e.valueOf()}) }} />
}/>
</Menu.Item>
<Menu.Item>
<Input label="結束時間" input={
<Datetime dateFormat="YYYY-MM-DD"
timeFormat="HH:mm"
value={convertTime(this.state.etime)}
input={true}
onChange={(e)=>{ this.setState({etime: e.valueOf()}) }} />
}/>
</Menu.Item>
<Menu.Menu position="right">
<Menu.Item>
<Button type="button" content="搜尋" size="tiny" basic onClick={()=>{this.getLogList()}} />
</Menu.Item>
</Menu.Menu>
</Menu>
<Grid>
<Grid.Column width={4}>
<DeviceList i18n={i18n}
list={list}
selected={this.state.selected}
toggleSelect={this.toggleSelect}
/>
</Grid.Column>
<Grid.Column width={12}>
<LogPanel i18n={i18n}
log={log} />
</Grid.Column>
</Grid>
</Container>
)
}
}
export default ModbusLogPage;