diff --git a/static/scripts/accChart.js b/static/scripts/accChart.js index 536acd9..9eda5d0 100644 --- a/static/scripts/accChart.js +++ b/static/scripts/accChart.js @@ -1,30 +1,30 @@ -var arrayTCP = []; -var arraySERIAL = []; +let allAccSerial = [] +let allSerialCoords = [] var ctx = document.getElementById('accChart').getContext('2d'); var accChart = new Chart(ctx, { type: 'line', data: { - labels: new Array(), + labels: [], datasets: [{ - label: 'Ublox VAcc', - backgroundColor: 'rgba(214, 69, 65, 1)', - borderColor: 'rgba(214, 69, 65, 1)', + label: 'Ublox Horizontal acc. (m)', + backgroundColor: 'rgba(255, 255, 255, 1)', + borderColor: 'rgba(255, 255, 255, 1)', borderWidth: 1, fill: false, - pointRadius: 1, + pointRadius: 0.5, lineTension: 0.5, - data: arraySERIAL + data: [] }, { - label: 'Smartphone VAcc', - backgroundColor: 'rgba(30, 139, 195, 1)', - borderColor: 'rgba(30, 139, 195, 1)', + label: 'Distance Ublox - Smartphone (m)', + backgroundColor: 'rgba(30, 130, 76, 1)', + borderColor: 'rgba(30, 130, 76, 1)', borderWidth: 1, fill: false, - pointRadius: 1, + pointRadius: 0.5, lineTension: 0.5, - data: arrayTCP + data: [] }] }, options: { @@ -32,7 +32,7 @@ var accChart = new Chart(ctx, { yAxes: [{ ticks: { min: 0, - max: 10, + max: 20, } }], xAxes: [{ @@ -48,56 +48,62 @@ var accChart = new Chart(ctx, { } }); -/*function addSerialSpeedData() { - let speeds = [] +function addSerialHAccData(){ - indexes.forEach(index => { - speeds.push((allSpeedsSerial[index] * 3.6).toFixed(2)) - }) - accChart.data.datasets[0].data = speeds; - accChart.update(); -}*/ - -/* -function addTCPSpeedData(sensordataList) { - let speedsTCP = [] - let times = [] - - sensordataList.forEach(sensordata => { - if (sensordata.Speed === 0) { - return; - } - let speed = sensordata.Speed - speedsTCP.push((speed * 3.6).toFixed(2)); - let time = sensordata.Servertime - times.push(time) - - }) - accChart.data.labels = times; - accChart.data.datasets[1].data = speedsTCP; - - accChart.update(); } -function findSerialDataIndex(tcpdataList, serialdataList) { - let allSerialTimes = [] +function addDistances(tcpDataList, serialDataList){ + let tcpCoords = [] + let serialCoords = [] - serialdataList.forEach(sensordata => { - if (!(sensordata.Speed === 0)) { - let serialTimestamp; - allSpeedsSerial.push(sensordata.Speed) - serialTimestamp = composeServertime(sensordata.Servertime) - allSerialTimes.push(serialTimestamp) + let tcpTimes = [] + let serialHAccs = [] + let distances = [] + + indexes.forEach(index => { + serialHAccs.push(allAccSerial[index].toFixed(2)) + serialCoords.push(allSerialCoords[index]) + }) + + tcpDataList.forEach(sensordata => { + if (!(sensordata.Position[0] === 0) && !(sensordata.Position[1] === 0)) { + let tcpCoord = [sensordata.Position[1], sensordata.Position[0]] + tcpCoords.push(tcpCoord) + + let time = sensordata.Servertime + tcpTimes.push(time) } }) - tcpdataList.forEach(sensordata => { - if (!(sensordata.Speed === 0)) { - let tcpTimestamp = composeServertime(sensordata.Servertime) - let index = findBestTimeMatch(tcpTimestamp, allSerialTimes)[1] + for(let i = 0; i < tcpCoords.length; i++){ + let distance = distanceInMetersBetweenEarthCoordinates + (serialCoords[i][1],serialCoords[i][0],tcpCoords[i][1],tcpCoords[i][0]) + distances.push(distance) + } - indexes.push(index) - } - }) - console.log("indexes: " + indexes) -}*/ + console.log("distances: " + distances) + + accChart.data.labels = tcpTimes + accChart.data.datasets[0].data = serialHAccs + accChart.data.datasets[1].data = distances + accChart.update() +} + +function degreesToRadians(degrees) { + return degrees * Math.PI / 180; +} + +function distanceInMetersBetweenEarthCoordinates(lat1, lon1, lat2, lon2) { + var earthRadiusKm = 6371 + + var dLat = degreesToRadians(lat2-lat1) + var dLon = degreesToRadians(lon2-lon1) + + lat1 = degreesToRadians(lat1) + lat2 = degreesToRadians(lat2) + + var a = Math.sin(dLat/2) * Math.sin(dLat/2) + + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2) + var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)) + return (earthRadiusKm * c) * 1000 +} \ No newline at end of file diff --git a/static/scripts/chartfull.js b/static/scripts/chartfull.js index 4ed6005..276f26f 100644 --- a/static/scripts/chartfull.js +++ b/static/scripts/chartfull.js @@ -1,5 +1,4 @@ let allSpeedsSerial = [] -let indexes = [] var ctx = document.getElementById('speedChart').getContext('2d'); var speedChart = new Chart(ctx, { @@ -14,7 +13,7 @@ var speedChart = new Chart(ctx, { fill: false, pointRadius: 1, lineTension: 0.5, - data: arraySERIAL + data: [] }, { label: 'Smartphone speed', @@ -24,7 +23,7 @@ var speedChart = new Chart(ctx, { fill: false, pointRadius: 1, lineTension: 0.5, - data: arrayTCP + data: [] }] }, options: { @@ -77,27 +76,4 @@ function addTCPSpeedData(sensordataList) { speedChart.data.datasets[1].data = speedsTCP; speedChart.update(); -} - -function findSerialDataIndex(tcpdataList, serialdataList) { - let allSerialTimes = [] - - serialdataList.forEach(sensordata => { - if (!(sensordata.Speed === 0)) { - let serialTimestamp; - allSpeedsSerial.push(sensordata.Speed) - serialTimestamp = composeServertime(sensordata.Servertime) - allSerialTimes.push(serialTimestamp) - } - }) - - tcpdataList.forEach(sensordata => { - if (!(sensordata.Speed === 0)) { - let tcpTimestamp = composeServertime(sensordata.Servertime) - let index = findBestTimeMatch(tcpTimestamp, allSerialTimes)[1] - - indexes.push(index) - } - }) - console.log("indexes: " + indexes) } \ No newline at end of file diff --git a/static/scripts/refull.js b/static/scripts/refull.js index 2e4337c..d50e68c 100644 --- a/static/scripts/refull.js +++ b/static/scripts/refull.js @@ -1,4 +1,5 @@ var trackingdata = null; +let indexes function composeServertime(servertime){ var composed; @@ -6,6 +7,13 @@ function composeServertime(servertime){ return composed; } +function calculateDistSerialTCP(coordsSerial, coordsTCP) { + let long = Math.abs(coordsSerial[0] - coordsTCP[0]) + let lat = Math.abs(coordsSerial[1] - coordsTCP[1]) + let squareDist = Math.pow(long, 2) + Math.pow(lat, 2) + return (Math.sqrt(squareDist)) +} + function findBestTimeMatch(num, arr) { var mid; var lo = 0; @@ -24,6 +32,30 @@ function findBestTimeMatch(num, arr) { return [arr[hi], hi]; } +function findSerialDataIndex(tcpdataList, serialdataList) { + let allSerialTimes = [] + + serialdataList.forEach(sensordata => { + if (!(sensordata.Speed === 0) && !(sensordata.HAcc === 0)) { + let serialTimestamp; + allSpeedsSerial.push(sensordata.Speed) + allAccSerial.push(sensordata.HAcc) + allSerialCoords.push([sensordata.Position[1], sensordata.Position[0]]) + serialTimestamp = composeServertime(sensordata.Servertime) + allSerialTimes.push(serialTimestamp) + } + }) + + tcpdataList.forEach(sensordata => { + if (!(sensordata.Speed === 0)) { + let tcpTimestamp = composeServertime(sensordata.Servertime) + let index = findBestTimeMatch(tcpTimestamp, allSerialTimes)[1] + + indexes.push(index) + } + }) +} + window.addEventListener("load", function(evt) { //------------------------Buttons------------------------------ @@ -52,6 +84,11 @@ window.addEventListener("load", function(evt) { }; document.getElementById("replaystarten").onclick = function(evt) { + indexes = [] + allSpeedsSerial = [] + allAccSerial = [] + allSerialCoords = [] + let sel = document.getElementById("meas") console.log(trackings[sel.selectedIndex].UUID) fetch(`http://localhost:3011/trackings/${trackings[sel.selectedIndex].UUID}`, { method: 'GET'}).then(results => { @@ -59,7 +96,10 @@ window.addEventListener("load", function(evt) { }).then(r => { console.log(r.data.Data) console.log(r.data) - findSerialDataIndex(r.data.Data.SOURCE_TCP, r.data.Data.SOURCE_SERIAL) + if('SOURCE_TCP' in r.data.Data && r.data.Data.SOURCE_TCP.length > 0 && 'SOURCE_SERIAL' in r.data.Data && r.data.Data.SOURCE_SERIAL.length > 0){ + findSerialDataIndex(r.data.Data.SOURCE_TCP, r.data.Data.SOURCE_SERIAL) + addDistances(r.data.Data.SOURCE_TCP, r.data.Data.SOURCE_SERIAL) + } if ('SOURCE_TCP' in r.data.Data && r.data.Data.SOURCE_TCP.length > 0) { updateMapTCPbulk(r.data.Data.SOURCE_TCP) addTCPSpeedData(r.data.Data.SOURCE_TCP) @@ -67,6 +107,7 @@ window.addEventListener("load", function(evt) { if ('SOURCE_SERIAL' in r.data.Data && r.data.Data.SOURCE_SERIAL.length > 0) { updateMapSERIALbulk(r.data.Data.SOURCE_SERIAL) addSerialSpeedData() + addSerialHAccData() } })