import React, { Component } from "react"; import { Form, Input, InputNumber, Switch, Button, Tabs, Collapse } from "antd"; import { LoraCloudIntegration, LoraCloudModemGeolocationServices, } from "@chirpstack/chirpstack-api-grpc-web/api/application_pb"; interface IProps { initialValues: LoraCloudIntegration; onFinish: (obj: LoraCloudIntegration) => void; } interface IState { modemEnabled: boolean; geolocationTdoa: boolean; geolocationRssi: boolean; geolocationWifi: boolean; geolocationGnss: boolean; } class LoRaCloudIntegrationForm extends Component { constructor(props: IProps) { super(props); this.state = { modemEnabled: false, geolocationTdoa: false, geolocationRssi: false, geolocationWifi: false, geolocationGnss: false, }; } componentDidMount() { const v = this.props.initialValues; const mgs = v.getModemGeolocationServices(); if (mgs !== undefined) { this.setState({ modemEnabled: mgs.getModemEnabled(), geolocationTdoa: mgs.getGeolocationTdoa(), geolocationRssi: mgs.getGeolocationRssi(), geolocationWifi: mgs.getGeolocationWifi(), geolocationGnss: mgs.getGeolocationGnss(), }); } } onFinish = (values: LoraCloudIntegration.AsObject) => { const v = Object.assign(this.props.initialValues.toObject(), values); const mgsv = v.modemGeolocationServices; let mgs = new LoraCloudModemGeolocationServices(); if (mgsv !== undefined) { mgs.setToken(mgsv.token); mgs.setModemEnabled(mgsv.modemEnabled); mgs.setModemPort(mgsv.modemPort); mgs.setGnssPort(mgsv.gnssPort); mgs.setGnssUseRxTime(mgsv.gnssUseRxTime); mgs.setParseTlv(mgsv.parseTlv); mgs.setGeolocationBufferTtl(mgsv.geolocationBufferTtl); mgs.setGeolocationMinBufferSize(mgsv.geolocationMinBufferSize); mgs.setGeolocationTdoa(mgsv.geolocationTdoa); mgs.setGeolocationRssi(mgsv.geolocationRssi); mgs.setGeolocationGnss(mgsv.geolocationGnss); mgs.setGeolocationGnssPayloadField(mgsv.geolocationGnssPayloadField); mgs.setGeolocationWifi(mgsv.geolocationWifi); mgs.setGeolocationWifiPayloadField(mgsv.geolocationWifiPayloadField); mgs.setGeolocationGnssUseRxTime(mgsv.geolocationGnssUseRxTime); } let i = new LoraCloudIntegration(); i.setApplicationId(v.applicationId); i.setModemGeolocationServices(mgs); this.props.onFinish(i); }; onModemEnabledChange = (v: boolean) => { this.setState({ modemEnabled: v, }); }; onGeolocationTdoaChange = (v: boolean) => { this.setState({ geolocationTdoa: v, }); }; onGeolocationRssiChange = (v: boolean) => { this.setState({ geolocationRssi: v, }); }; onGeolocationWifiChange = (v: boolean) => { this.setState({ geolocationWifi: v, }); }; onGeolocationGnssChange = (v: boolean) => { this.setState({ geolocationGnss: v, }); }; render() { return (
{this.state.modemEnabled && ( )} {this.state.modemEnabled && ( )} {this.state.modemEnabled && ( )} {this.state.modemEnabled && ( )} {(this.state.geolocationTdoa || this.state.geolocationRssi) && ( )} {(this.state.geolocationTdoa || this.state.geolocationRssi) && ( )} {this.state.geolocationWifi && ( )} {this.state.geolocationGnss && ( )} {this.state.geolocationGnss && ( )}
); } } export default LoRaCloudIntegrationForm;