From 24b7bdeb64479ee77a062e5cf5ba463f7e14b82f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kimjh=28=EA=B9=80=EC=9E=A5=ED=98=84=29?= Date: Tue, 1 Nov 2022 17:23:16 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=BD=EA=B3=A0=EC=9D=8C=20=EB=B0=8F=20?= =?UTF-8?q?=EB=A7=88=EC=BB=A4=20=EC=83=89=EC=83=81=20=EC=9D=B4=EC=8A=88=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/map/naver/dron/DronMarker.js | 11 +- src/components/map/naver/dron/DronToast.js | 16 +-- src/utility/hooks/useAudio.js | 12 +- test/pav-warning.js | 120 ++++++++++---------- 4 files changed, 80 insertions(+), 79 deletions(-) diff --git a/src/components/map/naver/dron/DronMarker.js b/src/components/map/naver/dron/DronMarker.js index 689832a4..217a75d9 100644 --- a/src/components/map/naver/dron/DronMarker.js +++ b/src/components/map/naver/dron/DronMarker.js @@ -192,12 +192,11 @@ export const DronMarker = props => { const getIcon = marker.getIcon(); marker.setPosition(position); - - if ( - controlGpArcrftWarnList?.filter(i => i.cntrlId === gps.controlId).length > - 0 - ) { - if (controlGpArcrftWarnList[0].controlWarnCd) { + const warnList = controlGpArcrftWarnList?.filter( + i => i.cntrlId === gps.controlId + ); + if (warnList.length > 0) { + if (warnList[0].controlWarnCd) { marker.setIcon({ content: ` { state => state.controlGpLogState ); const [toastId, setToastId] = useState(); - // const [is, setIs] = useState(false); + + let warningList = []; useEffect(() => { if (controlGpArcrftWarnList) { @@ -47,28 +48,23 @@ const DronToast = () => { // setToastId(null); }, onClose: () => { - toggle(false); // setIs(true); setToastId(null); } } ); - if (!playing) { - toggle(true); - } setToastId(id); break; } } } + for (let i = 0; i < controlGpArcrftWarnList.length; i++) { - if (!controlGpArcrftWarnList[i].controlWarnCd) { - toggle(false); - } else { - toggle(true); - } + warningList.push(controlGpArcrftWarnList[i].controlWarnCd); } + + warningList.find(i => i) ? toggle(true) : toggle(false); } }, [controlGpArcrftWarnList]); diff --git a/src/utility/hooks/useAudio.js b/src/utility/hooks/useAudio.js index 90452c39..91f1976e 100644 --- a/src/utility/hooks/useAudio.js +++ b/src/utility/hooks/useAudio.js @@ -1,20 +1,20 @@ -import { useMemo, useEffect, useState } from 'react'; +import { useEffect, useState, useRef } from 'react'; const useAudio = url => { - const audio = useMemo(() => new Audio(url), []); + const audio = useRef(new Audio(url)); const [playing, setPlaying] = useState(false); const toggle = val => setPlaying(val); useEffect(() => { - if (playing) audio.loop = true; - playing ? audio.play() : audio.pause(); + if (playing) audio.current.loop = true; + playing ? audio.current.play() : audio.current.pause(); }, [playing]); useEffect(() => { - audio.addEventListener('ended', () => setPlaying(false)); + audio.current.addEventListener('ended', () => setPlaying(false)); return () => { - audio.removeEventListener('ended', () => setPlaying(false)); + audio.current.removeEventListener('ended', () => setPlaying(false)); }; }, []); diff --git a/test/pav-warning.js b/test/pav-warning.js index 91d4078a..98cf8294 100644 --- a/test/pav-warning.js +++ b/test/pav-warning.js @@ -1,77 +1,83 @@ -const {getConnection, writeData} = require("./pav-client") -const {getCoordsFormBetweenCoord, dumyData} = require("./pav-utils") +const { getConnection, writeData } = require('./pav-client'); +const { getCoordsFormBetweenCoord, dumyData } = require('./pav-utils'); // const host = "192.168.0.24" // const host = "localhost" -const host = "211.253.38.218" -const port = 8082 +const host = '192.168.0.34'; +const port = 8082; // 기본정보 -const prefix = 'TEST-DRON-W-' +const prefix = 'PA'; const pathSampleCoord = [ - [37.5215, 126.6050], - [37.5215, 126.6082], - [37.5210, 126.6082], - [37.5210, 126.6057], - [37.5205, 126.6057], - [37.5205, 126.6082], - [37.5200, 126.6082], - [37.5200, 126.6057], - [37.5195, 126.6057], - [37.5195, 126.6082], - [37.5190, 126.6082], - [37.5190, 126.6050] -] + [37.5215, 126.605], + [37.5215, 126.61], + // [37.5215, 126.6082], + [37.521, 126.6082], + [37.521, 126.6057], + [37.5205, 126.6057], + [37.5205, 126.6082], + [37.52, 126.6082], + [37.52, 126.6057], + [37.5195, 126.6057], + [37.5195, 126.6082], + [37.519, 126.6082], + [37.519, 126.605] +]; -const divDist = 10 // [m] +const divDist = 10; // [m] // 특정거리에 따른 좌표 추출 -const getCoords = (coords) => { - if (!coords || coords.length < 1) return; - const totalCoords = []; - for (let i = 1; i < coords.length; i++) { - const divCoords = getCoordsFormBetweenCoord(coords[i - 1], coords[i], divDist); - totalCoords.push(...divCoords) - } - return totalCoords; -} +const getCoords = coords => { + if (!coords || coords.length < 1) return; + const totalCoords = []; + for (let i = 1; i < coords.length; i++) { + const divCoords = getCoordsFormBetweenCoord( + coords[i - 1], + coords[i], + divDist + ); + totalCoords.push(...divCoords); + } + return totalCoords; +}; const getClient = () => { - const dronName = prefix + '001'; + const dronName = prefix + '003'; + // const dronName = prefix + '0000001A'; - const client = {}; - client.dronName = dronName - client.socket = getConnection(dronName, host, port); - client.data = getCoords(pathSampleCoord); - return client; -} + const client = {}; + client.dronName = dronName; + client.socket = getConnection(dronName, host, port); + client.data = getCoords(pathSampleCoord); + return client; +}; const sendData = (client, cnt) => { - const data = { - ...dumyData, - terminalId: client.dronName, - body: [ - { - ...dumyData.body[0], - objectId: client.dronName, - lat: client.data[cnt][0], - lon: client.data[cnt][1] - } - ] - } - writeData(client.socket, JSON.stringify(data)); - iteratorSendData(++cnt); -} + const data = { + ...dumyData, + terminalId: client.dronName, + body: [ + { + ...dumyData.body[0], + objectId: client.dronName, + lat: client.data[cnt][0], + lon: client.data[cnt][1] + } + ] + }; + writeData(client.socket, JSON.stringify(data)); + iteratorSendData(++cnt); +}; const client = getClient(); const iteratorSendData = (cnt = 0) => { - if(cnt >= client.data.length) { - client.socket.destroy() - return; - } - setTimeout(() => sendData(client, cnt), 1000); -} + if (cnt >= client.data.length) { + client.socket.destroy(); + return; + } + setTimeout(() => sendData(client, cnt), 1000); +}; -iteratorSendData() \ No newline at end of file +iteratorSendData();