import React from "react" import {useState,useEffect, useRef} from 'react'; import { useForm, SubmitHandler } from "react-hook-form" import Form from 'react-bootstrap/Form'; import FloatingLabel from 'react-bootstrap/FloatingLabel'; import InputGroup from 'react-bootstrap/InputGroup'; import 'bootstrap/dist/css/bootstrap.min.css'; import './controls.css' function EntityControl(props) { const [Entity, setEntity] = useState(undefined); // const [Course, setCourse] = useState(''); const [PositionDragged, setPositionDragged] = useState(false); // const [Speed, setSpeed] = useState(); const [formData, setFormData] = useState({name: "",course: "" ,speed: 0,position: [0,0],height:0}); useEffect(() => { // Update the document title using the browser API document.title = `You clicked ${count} times`; // console.log(props.Entity); if(props.Entity !== undefined) { console.log(props.Entity) if(Entity === undefined) { setEntity(props.Entity); setFormData({name:props.Entity.Name,course:props.Entity.Course,speed:props.Entity.Speed,position:props.Entity.Position,height:props.Entity.Height }) }else if(Entity.id !== props.Entity.id) { setEntity(props.Entity); setFormData({name:props.Entity.Name,course:props.Entity.Course,speed:props.Entity.Speed,position:props.Entity.Position,height:props.Entity.Height}) } else if(Entity.id === props.Entity.id && Entity.Position !== props.Entity.Position) { setFormData({...formData,position:props.Entity.Position,height:props.Entity.Height}) setPositionDragged(true); } // setFormData({name:props.Entity.Name,course:props.Entity.Course,speed:props.Entity.Speed,position:props.Entity.Position}) } },[props.Entity,props]); useEffect(() => { if(props.PositionCliecked !== undefined) { console.log(props.PositionCliecked) var pos = [0,0]; pos[0] = props.PositionCliecked.lat; pos[1] = props.PositionCliecked.lng setFormData({...formData,position:pos}); } },[props.PositionCliecked]) // Entity.Entity.Course const handleClick = (e) => { if(e.detail === 2) { console.log(e) // setCourseInControl(true); e.target.readOnly = false; // e.target.style = "border: 1px solid" } }; const handleCourseInput= (e) => { // console.log(e.currentTarget.value) // console.log(isNaN(e.nativeEvent?.data)) // if(!isNaN(e.nativeEvent?.data)) if(Number.isInteger(parseFloat(e.currentTarget.value)) | e.nativeEvent?.data === null ) { setFormData({...formData,course:e.currentTarget.value}); if(props.Entity !== undefined) { props.Entity.Course = e.currentTarget.value.replace(",","."); } } // if(e.currentTarget.value === "") // { // setFormData({...formData,course:0}); // props.Entity.Course = 0; // } }; const handleSpeedInput= (e) => { // console.log(e.nativeEvent?.data) // if(!isNaN(e.nativeEvent?.data)) if(Number.isInteger(parseFloat(e.currentTarget.value)) | e.nativeEvent?.data === null ) { setFormData({...formData,speed:e.currentTarget.value}); if(props.Entity !== undefined) { props.Entity.Speed = e.currentTarget.value.replace(",","."); } } // if(e.nativeEvent?.data == null) // { // setFormData({...formData,speed:0}); // props.Entity.Speed = 0; // } // console.log(formData.speed) }; const handleNameInput = (e) => { setFormData({...formData,name:e.currentTarget.value}); } const handleInput = (e) => { // console.log(e.target.name) switch (e.target.name) { case "Lat": if(Number.isInteger(parseFloat(e.currentTarget.value)) | e.nativeEvent?.data === null) { // e.currentTarget.value = e.currentTarget.value.replace(",","."); setFormData({...formData,position:[e.currentTarget.value,formData.position[1],formData.position[2]] }); } if(props.Entity !== undefined) { props.Entity.Position[0]=e.currentTarget.value.replace(",","."); } break; case "Lon": if(Number.isInteger(parseFloat(e.currentTarget.value)) | e.nativeEvent?.data === null) { setFormData({...formData,position:[formData.position[0],e.currentTarget.value,formData.position[2]] }); if(props.Entity !== undefined) { props.Entity.Position[1]=e.currentTarget.value.replace(",","."); } } // else if(e.nativeEvent?.data == null) { // // setFormData({...formData,position:[formData.position[0],0,formData.position[2]] }); // } break; case "Height": setFormData({...formData,height:e.currentTarget.value.replace(",",".")}); if(props.Entity !== undefined) { props.Entity.Height=e.currentTarget.value.replace(",","."); } break; default: break; } setPositionDragged(true); } const emptyForm= (e) => { if(props.Entity !== undefined) { props.Entity.onFocus = undefined; } setFormData({name:'',course:'',speed:'',position:['','']}) setEntity(undefined) props.Functions.resetEntityOnFocus(); } const resetForm = (e)=> { if(props.Entity !== undefined) { console.log("resetting") setFormData({name:props.Entity.Name,course:Entity.Course,speed:Entity.Speed,position:Entity.Position}) props.Entity.Position = Entity.Position; props.Entity.Course = Entity.Course; props.Entity.Speed = Entity.Speed; } else { emptyForm(); } } // const handleChange = (event) => { // const { name, value } = event.target; // setFormData((prevFormData) => ({ ...prevFormData, [name]: value })); // }; const handleSubmit = (e) => { e.preventDefault(); // console.log(e.target.data); // console.log(formData) console.log(Entity) if(Entity === undefined) { var msg = { Data: "Entity", Type: "New", Name: formData.name, Speed: formData.speed.toString(), Course: formData.course.toString(), Position: formData.position, Height: formData.height, SetPosition: true } }else { var setPos; if(PositionDragged === true) { setPos = true; }else{ setPos = false; } var msg = { Data: "Entity", Type: "Update", ID: Entity.id, Speed: formData.speed.toString(), Course: formData.course.toString(), Position: formData.position, Height: formData.height, SetPosition: setPos } } console.log(JSON.stringify(msg)); props.Client.send(JSON.stringify(msg)); // alert(`Course: ${formData.course}`); } // console.log(Entity) // console.log(EntityOnFocus) return (