import React from 'react'; import {Form, Input} from 'semantic-ui-react'; import { getRequest } from '../../../../actions'; import CalModal from './CalModal'; class UnitLeone extends React.Component { state = { list: [], data: { dev: '', devName: '', func: '', funcName: '', addr: '', value: '' }, modal: false } componentDidMount() { let { showDialog } = this.props; fetch('/api/system/getselectlist', getRequest({ type: 'modbus' })) .then(response => response.json()) .then(json => { if (json.status != 1) return showDialog(json.message); this.setState({ list: json.data.record || [] }) }) } renderModal = () => { let {i18n} = this.props; return ( this.state.modal ? ( ): null ) } closeModal = () => { this.setState({ modal: false }) } submitModal = (data) => { if(!data) return ; let {showDialog} = this.props; let {r1, r2, s1, s2, val} = data; if(!isFinite(r1) || !isFinite(r2) || !isFinite(s1) || !isFinite(s2) || !isFinite(val)) return showDialog('請勿輸入數字以外的內容'); let value = Math.round(((val - r1) * (s2 - s1)) / (r2 - r1)); this.setState({ data:{ ...this.state.data, value } }, ()=>{this.closeModal()}) } changeState = (tag, value) =>{ let data = {...this.state.data}; if(tag == 'func') { data.funcName = value.name; data.func = value.func; } if(tag == 'dev'){ data.dev = value.dev == '' ? '' : `mb${value.dev}`; data.devName = value.name; } if(tag == 'addr'){ data.addr = value; } if(tag == 'value'){ data.value = value; } this.setState({ data:{ ...data } }, ()=>{ this.updateData() }) } updateData = () => { let data = {...this.state.data}; data.type = 'modbus'; data.act = `${data.func},${data.addr},${data.value}`; data.actName = `${data.funcName} Addr:${data.addr} Value:${data.value}`; delete data.func; delete data.funcName; delete data.addr; delete data.value; this.props.updateData(data); } updateAct = (act, name) => { this.changeState('act', {act, name}); } render() { let {i18n} = this.props; let dev = ''; let m = this.state.data.dev.match(/(\d+)/); if(m!=null && m.length > 1){ dev = m[1]; } return (
{this.changeState('addr', d.value)}} /> {this.changeState('value', d.value)}} action={{ content:"數值換算", basic: true, onClick: ()=>{ this.setState({ modal: true }) }, type: 'button' }} /> {this.renderModal()}
) } } export default UnitLeone;