var exampleSocket; var firstMsg = true; var textBoxArr = []; var SelBranchVal = ""; var connectedToServer = false; var date = ""; var msg = ""; var data = ""; var IDFilter = ""; var currentDate = new Date(); var day = ("0" + currentDate.getUTCDate()).slice(-2); var month = ("0" + (currentDate.getUTCMonth() + 1)).slice(-2); var year = currentDate.getFullYear(); var hours = ("0" + currentDate.getUTCHours()).slice(-2); var minutes = ("0" + currentDate.getUTCMinutes()).slice(-2); var seconds = ("0" + currentDate.getUTCSeconds()).slice(-2); var ele2 = 0; var hoehenabstaende = [0,2,5]; //default array for testing in BT56 var tempOutput = []; var connectedOnce = false; var entryCount = 0; var output = []; var myTableDiv = ""; var temp = []; function WebSocketTest() { if ("WebSocket" in window) { if(!connectedToServer) { var ipadresse=document.getElementById("ipadresse").value; console.log("ipadresse="+ipadresse); exampleSocket = new WebSocket("ws://"+ipadresse); connectedToServer = true; } exampleSocket.onopen = function() { console.log("connected"); document.getElementById("Serverconnect").innerHTML = "Server: connected"; document.getElementById("Serverconnect").style.color = "green" connectedOnce = true; }; exampleSocket.onmessage = function (event) { msg = JSON.parse(event.data); console.log("onmessage:"+msg.type); switch(msg.type) { case "WlsParticipantsStateReport": console.log("WlsStateReport"); //document.getElementById("WlsStateReport").innerHTML = JSON.stringify(msg); handleWlsStateReport(msg); break; case "WlsConnectionState": console.log("WlsConnectionState"); if(msg.data["connected"] == "false") { document.getElementById("Wlsconnect").innerHTML = "Wls: not connected"; document.getElementById("Wlsconnect").style.color = "red"; } else { document.getElementById("Wlsconnect").innerHTML = "Wls: connected"; document.getElementById("Wlsconnect").style.color = "green"; } break; case "PositionReport": if (IDFilter != "" && IDFilter == msg.data.header.equipmentNumber){ // check if equipmentNumber is valid; write GPX for each element appendtrack(); } myTableDiv = document.getElementById("ReportTable"); //TABLE HEADER if(firstMsg) { var tHead = document.createElement("tHead"); var tr = document.createElement("tr"); var trBox = document.createElement("tr"); var hTable = document.getElementById("wlsTable"); var hTableRow = document.getElementById("HeaderTableRow"); for(i = 0; i < Object.keys(msg.data).length; i++) { textBoxArr.push(""); var hTableCol = document.createElement("td"); if (Object.keys(msg.data)[i] == "timestamp") { hTableCol.innerHTML = "
"; hTableRow.appendChild(hTableCol); } else { if(i>=3) { hTableCol.appendChild = document.createTextNode(""); hTableRow.appendChild(hTableCol); } } var thBox = document.createElement("th"); thBox.innerHTML = ""; trBox.appendChild(thBox); var th = document.createElement("th"); if( i === 0) { th.appendChild(document.createTextNode("geoPosition")); } if( i === 1) { th.appendChild(document.createTextNode("EquipmentNo")); } if ( i === 2 ) { th.appendChild(document.createTextNode("Time")); } if ( i === 3 ) { th.appendChild(document.createTextNode("BuildingId RoomId OpsId")); } if ( i === 4 ) { th.appendChild(document.createTextNode("relPosition")); } tr.appendChild(th); } tHead.appendChild(tr); tHead.appendChild(trBox); myTableDiv.appendChild(tHead); myTableDiv.appendChild(document.createElement("tBody")); var width = hTableRow.getElementsByTagName("td").length / Object.keys(msg.data).length * 100 hTable.style = "width:"+width+"%"; firstMsg = false; } //TABLE ROW var checkIsValid = true; if (date != ""){ //check if date isn't empty, clear date for new table row date = ""; } document.getElementById("Textbox0").style.visibility = "hidden"; document.getElementById("Textbox2").style.visibility = "hidden"; document.getElementById("Textbox4").style.visibility = "hidden"; var tr = document.createElement("tr"); for (j = 0; j < Object.keys(msg.data).length; j++) { var td = document.createElement("td") if(myTableDiv.tHead.firstChild.childNodes[j].innerHTML == "timestamp") { if(!date.toString().toLowerCase().includes(textBoxArr[j].toString().toLowerCase())) { checkIsValid = false; break; } td.appendChild(document.createTextNode(date)); } else { if (!Object.values(msg.data)[j].toString().toLowerCase().includes(textBoxArr[j].toString().toLowerCase())) { checkIsValid = false; break; } var keyword = document.getElementById("Textbox1").value.toString(); if(keyword.length > 0) { if(!msg.data.header.equipmentNumber.toString().includes(keyword)) { checkIsValid = false; break; } } keyword = document.getElementById("Textbox3").value.toString(); if(keyword.length > 0) { if(keyword.indexOf(' ') >= 0) { split = keyword.split(' '); if(!msg.data.opsPosition.moutObjectId.toString().includes(split[0])) { checkIsValid = false; break; } if(split.length > 1 && !msg.data.opsPosition.moutRoomId.toString().includes(split[1])) { checkIsValid = false; break; } } else { if(!msg.data.opsPosition.moutObjectId.toString().includes(keyword)) { checkIsValid = false; break; } } } // td.appendChild(document.createTextNode(Object.values(msg.data.geoPosition.lat)[j])); // td.appendChild(document.createTextNode(Object.values(msg.data)[j].geoPosition.lat)); // td.appendChild(document.createTextNode(Object.values(msg.data)[j])); console.log("j="+j); console.log (msg.data); if ( j === 0){ td.appendChild(document.createTextNode(msg.data.geoPosition.lat + " " + msg.data.geoPosition.lon + " " + msg.data.geoPosition.z)); console.log (msg.data.geoPosition); } if ( j === 1){ td.appendChild(document.createTextNode(msg.data.header.equipmentNumber)); console.log (msg.data.equipmentNumber); } if ( j === 2){ date = ""; var separatorDate = "/"; var separatorTime = ":"; var d = new Date(parseInt(msg.data.header.timeStamp)); hours = (parseInt(d.getHours()) < 10) ? "0" + d.getHours() : d.getHours(); minutes = (parseInt(d.getMinutes()) < 10) ? "0" + d.getMinutes() : d.getMinutes(); seconds = (parseInt(d.getSeconds()) < 10) ? "0" + d.getSeconds() : d.getSeconds(); if(document.getElementById("dateCheck").checked) { date = d.getDate() + separatorDate + (parseInt(d.getMonth())+1) + separatorDate + d.getFullYear() + " | " + hours + separatorTime + minutes + separatorTime + seconds + separatorTime + d.getMilliseconds(); } else { date = hours + separatorTime + minutes + separatorTime + seconds + separatorTime + d.getMilliseconds(); } td.appendChild(document.createTextNode(date)); console.log (date); } if ( j === 3){ td.appendChild(document.createTextNode(msg.data.opsPosition.moutObjectId + " " + msg.data.opsPosition.moutRoomId + " " + msg.data.opsPosition.opsId)); console.log (msg.data.opsPosition); } if ( j === 4){ td.appendChild(document.createTextNode(msg.data.relPosition.offsetX + " " + msg.data.relPosition.offsetY + " " + msg.data.relPosition.offsetZ)); console.log (msg.data.relPosition); } } tr.appendChild(td); } if(!checkIsValid) { break; } var node = myTableDiv.tBodies[0]; node.insertBefore(tr, node.firstChild); var tableLength = (myTableDiv.getElementsByTagName("tbody")[0].getElementsByTagName("tr").length); if(tableLength > 10) // to show 10 messages tableLength must be greater than 10 // ->10 for the Elements to show, +1 for the Element that gets deleted = 11 { myTableDiv.deleteRow(12); // delete row 12 because 0 also counts as row +2 for header and textboxes } break; default: break; } }; exampleSocket.onclose = function() { // websocket is closed. document.getElementById("Serverconnect").innerHTML = "Server: not connected"; document.getElementById("Serverconnect").style.color = "red"; document.getElementById("Wlsconnect").innerHTML = "Wls: not connected"; document.getElementById("Wlsconnect").style.color = "red"; connectedToServer = false; if(connectedOnce) { alert("Connection to Server closed."); } else { alert("Could not connect to server."); } }; } else { // The browser doesn't support WebSocket alert("WebSocket is NOT supported by your Browser!"); } } function testEvent(parameter) { // var id = parameter.id.substr(parameter.id.length - 1); // textBoxArr[id] = parameter.value; } function sendWlsStateRequest() { console.log ("WlsParticipantsStateRequest"); exampleSocket.send(JSON.stringify({ typeId: 3001 })); } function handleWlsStateReport(msg) { var results = []; output = []; for(var i = 0; i < msg.data.participantStates.length; i++) { results[i] = { equipNo: msg.data.participantStates[i].equipmentNumber, tagId: msg.data.participantStates[i].tagId, inBlockedArea: msg.data.participantStates[i].inBlockedArea, gpsOn: msg.data.participantStates[i].gpsOn, wlsZone: msg.data.participantStates[i].relativePosition.wlsZone, tacticalState: msg.data.participantStates[i].tacticalState, tacStateStr: "" }; } results = fillTacStateStr(results); switch(document.getElementById("sortBy").value) { case "equipNo": output = sortByEquipNo(results); break; case "tagID": output = sortByTagId(results); break; case "inBlockedArea": output = sortByInBlockedArea(results); break; case "gpsOn": output = sortByGpsOn(results); break; case "wlsZone": output = sortByWlsZone(results); break; case "tacticalState": output = sortByTacticalState(results); break; case "sortby": case "standard": default: output = results; break; } if(document.getElementById("hideImpossible").checked) { output = hideImpossible(output); } if(output.length === 1) { document.getElementById("searchResults").innerHTML = output.length + " result"; document.getElementById("searchResults").style.color = "green"; } else if(output.length === 0) { document.getElementById("searchResults").innerHTML = output.length + " results"; document.getElementById("searchResults").style.color = "red"; } else { document.getElementById("searchResults").innerHTML = output.length + " results"; document.getElementById("searchResults").style.color = "green"; } var table = ""; table += ""; table += ""; table += ""; table += ""; table += ""; table += ""; table += ""; for (var row = 0; row < output.length; row++) { table += ""; table += ""; table += ""; table += ""; table += ""; table += ""; table += ""; table +=""; } table += "
equipmentNumbertagIdinBlockedAreagpsOnwlsZonetacticalState
"+output[row].equipNo+""+output[row].tagId+""+output[row].inBlockedArea+""+output[row].gpsOn+""+output[row].wlsZone+""+output[row].tacStateStr+"
"; document.querySelector('#WlsStateTable').innerHTML =table; } function hideImpossible(output) { var tmp = output; var temp = []; for(var i = 0; i < tmp.length; i++) { if(parseInt(tmp[i].wlsZone) != -1 && parseInt(tmp[i].tacticalState) != -1 && parseInt(tmp[i].equipNo) != 0) { temp.push(tmp[i]); } } return temp; } function sortByEquipNo(results) { var temp = []; var tmp = sortInts(results); var input = document.getElementById("search").value.toString(); if(input.length > 0) { if(document.getElementById("showAll").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].equipNo.toString().includes(input)) { temp.push(tmp[i]); } } return temp; } else if(document.getElementById("onlyDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].equipNo.toString().includes(input)) { temp.push(tmp[i]); } } if(temp.length > 1) { return showDuplicateEquipNos(temp); } else if (temp.length == 1) { temp = []; } return temp; } else if(document.getElementById("noDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].equipNo.toString().includes(input)) { temp.push(tmp[i]); } } if(temp.length > 1) { return hideDuplicateEquipNos(temp); } else { return temp; } } } else if(input.length == 0) { if(document.getElementById("showAll").checked) { return tmp; } else if(document.getElementById("onlyDuplicates").checked) { if(tmp.length > 1) { return showDuplicateEquipNos(tmp); } else if( tmp.length == 1) { tmp = []; } return tmp; } else if(document.getElementById("noDuplicates").checked) { return hideDuplicateEquipNos(tmp); } } } function showDuplicateEquipNos(tmp) { temp = []; for(var i = 0; i < tmp.length; i++) { var count = 0; for(var j = 0; j < tmp.length; j++) { if(i != j) { if(parseInt(tmp[i].equipNo) == parseInt(tmp[j].equipNo)) { count++; } } } if(count > 0) { temp.push(tmp[i]); } } return temp; } function hideDuplicateEquipNos(tmp) { temp = []; for(var i = 0; i < tmp.length; i++) { var count = 0; for(var j = 0; j < tmp.length; j++) { if(i != j) { if(parseInt(tmp[i].equipNo) == parseInt(tmp[j].equipNo)) { count++; } } } if(count == 0) { temp.push(tmp[i]); } } return temp; } function sortByTagId(results) { temp = []; var tmp = results; tmp.sort(); var input = document.getElementById("search").value.toString(); if(input.length > 0) { if(document.getElementById("showAll").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].tagId.toString().includes(input)) { temp.push(tmp[i]); } } return temp; } else if(document.getElementById("onlyDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].tagId.toString().includes(input)) { temp.push(tmp[i]); } } if(temp.length > 1) { return showDuplicateTagIds(temp); } else if(temp.length == 1) { temp = []; } return temp; } else if(document.getElementById("noDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].tagId.toString().includes(input)) { temp.push(tmp[i]); } } if(temp.length > 1) { return hideDuplicateTagIds(temp); } else { return temp; } } } else if(input.length == 0) { if(document.getElementById("showAll").checked) { return tmp; } else if(document.getElementById("onlyDuplicates").checked) { return showDuplicateTagIds(tmp); } else if(document.getElementById("noDuplicates").checked) { return hideDuplicateTagIds(tmp); } } } function showDuplicateTagIds(tmp) { temp = []; for(var i = 0; i < tmp.length; i++) { var count = 0; for(var j = 0; j < tmp.length; j++) { if(i != j) { if(tmp[i].tagId.toString() == tmp[j].tagId.toString()) { count++; } } } if(count > 0) { temp.push(tmp[i]); } } return temp; } function hideDuplicateTagIds(tmp) { temp = []; for(var i = 0; i < tmp.length; i++) { var count = 0; for(var j = 0; j < tmp.length; j++) { if(i != j) { if(tmp[i].tagId.toString() == tmp[j].tagId.toString()) { count++; } } } if(count == 0) { temp.push(tmp[i]); } } return temp; } function sortByInBlockedArea(results) { var tmp = results; var temp = []; if(document.getElementById("showAll").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].inBlockedArea == true) { temp.unshift(tmp[i]); } else if(tmp[i].inBlockedArea == false) { temp.push(tmp[i]); } } } else if(document.getElementById("onlyDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].inBlockedArea == true) { temp.push(tmp[i]); } } } else if(document.getElementById("noDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].inBlockedArea == false) { temp.push(tmp[i]); } } } return temp; } function sortByGpsOn(results) { var tmp = results; var temp = []; if(document.getElementById("showAll").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].gpsOn == true) { temp.unshift(tmp[i]); } else if(tmp[i].gpsOn == false) { temp.push(tmp[i]); } } } else if(document.getElementById("onlyDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].gpsOn == true) { temp.push(tmp[i]); } } } else if(document.getElementById("noDuplicates").checked) { for(var i = 0; i < tmp.length; i++) { if(tmp[i].gpsOn == false) { temp.push(tmp[i]); } } } return temp; } function sortByWlsZone(results) { var temp = []; var tmp = results; var min; if(document.getElementById("wlsZones").value != "all") { for(var i = 0; i < tmp.length; i++) { if(parseInt(tmp[i].wlsZone) == parseInt(document.getElementById("wlsZones").value)) { temp.push(tmp[i]); } } } else { temp = tmp; } for(var i = 0; i < temp.length; i++) { min = i; for(var j = i+1; j < temp.length; j++) { if(temp[j].wlsZone > temp[min].wlsZone) { min = j; } } tmp = temp[i]; temp[i] = temp[min]; temp[min] = tmp; } return temp; } function sortInts(temp) { for(var i = 0; i < temp.length; i++) { min = i; for(var j = i+1; j < temp.length; j++) { if(temp[j].equipNo < temp[min].equipNo) { min = j; } } tmp = temp[i]; temp[i] = temp[min]; temp[min] = tmp; } return temp; } function sortByTacticalState(results) { var temp = []; var tmp = results; var min; if(document.getElementById("tacStates").value != "all") { for(var i = 0; i < tmp.length; i++) { if(parseInt(tmp[i].tacticalState) == parseInt(document.getElementById("tacStates").value)) { temp.push(tmp[i]); } } } else { temp = tmp; } for(var i = 0; i < temp.length; i++) { min = i; for(var j = i+1; j < temp.length; j++) { if(temp[j].tacticalState < temp[min].tacticalState) { min = j; } } tmp = temp[i]; temp[i] = temp[min]; temp[min] = tmp; } return temp; } function fillTacStateStr(results) { temp = results; for(var i = 0; i < temp.length; i++) { switch(temp[i].tacticalState) { case 0: temp[i].tacStateStr = "Combat ready"; break; case 1: temp[i].tacStateStr = "Light damage"; break; case 2: temp[i].tacStateStr = "Medium damage"; break; case 3: temp[i].tacStateStr = "Heavy damage"; break; case 4: temp[i].tacStateStr = "Mobility kill"; break; case 5: temp[i].tacStateStr = "Visible mobility kill"; break; case 6: temp[i].tacStateStr = "Weapon system damage"; break; case 7: temp[i].tacStateStr = "Visible weapon system damage"; break; case 8: temp[i].tacStateStr = "Catastrophic kill"; break; case 9: temp[i].tacStateStr = "Temporary severance"; break; case 10: temp[i].tacStateStr = "Near miss"; break; case 11: temp[i].tacStateStr = "Hit with no effect"; break; case 12: temp[i].tacStateStr = "Vulnerability bits changed"; break; case 13: temp[i].tacStateStr = "Reserved"; break; case 14: temp[i].tacStateStr = "N-Cont"; break; case 15: temp[i].tacStateStr = "B-Cont"; break; case 16: temp[i].tacStateStr = "C-Cont"; break; case 99: temp[i].tacStateStr = "Not ready"; break; default: temp[i].tacStateStr = "Errorstate"; break; } } return temp; } function enableDisable() { document.getElementById("radioOne").innerHTML = "Show all"; document.getElementById("radioTwo").innerHTML = "Show only duplicates"; document.getElementById("radioThree").innerHTML = "Hide all duplicates"; switch(document.getElementById("sortBy").value) { case "sortby": case "standard": document.getElementById("radioOne").style.display = "none"; document.getElementsByName("checkDuplicates")[1].style.display = "none"; document.getElementById("radioTwo").style.display = "none"; document.getElementsByName("checkDuplicates")[2].style.display = "none"; document.getElementById("radioThree").style.display = "none"; document.getElementsByName("checkDuplicates")[3].style.display = "none"; document.getElementById("search").style.display = "none"; document.getElementById("tacStates").style.display = "none"; document.getElementById("wlsZones").style.display = "none"; break; case "equipNo": document.getElementsByName("search")[0].placeholder="Equipment Number"; document.getElementsByName("search")[0].style.display = ""; document.getElementById("radioOne").style.display = ""; document.getElementsByName("checkDuplicates")[1].style.display = ""; document.getElementById("radioTwo").style.display = ""; document.getElementsByName("checkDuplicates")[2].style.display = ""; document.getElementById("radioThree").style.display = ""; document.getElementsByName("checkDuplicates")[3].style.display = ""; document.getElementById("search").style.display = ""; document.getElementById("tacStates").style.display = "none"; document.getElementById("wlsZones").style.display = "none"; break; case "tagID": document.getElementsByName("search")[0].placeholder="Tag ID"; document.getElementsByName("search")[0].style.display = ""; document.getElementById("radioOne").style.display = ""; document.getElementsByName("checkDuplicates")[1].style.display = ""; document.getElementById("radioTwo").style.display = ""; document.getElementsByName("checkDuplicates")[2].style.display = ""; document.getElementById("radioThree").style.display = ""; document.getElementsByName("checkDuplicates")[3].style.display = ""; document.getElementById("search").style.display = ""; document.getElementById("tacStates").style.display = "none"; document.getElementById("wlsZones").style.display = "none"; break; case "inBlockedArea": document.getElementById("radioOne").style.display = ""; document.getElementsByName("checkDuplicates")[1].style.display = ""; document.getElementById("radioTwo").innerHTML = "Show in blocked area"; document.getElementById("radioTwo").style.display = ""; document.getElementsByName("checkDuplicates")[2].style.display = ""; document.getElementById("radioThree").innerHTML = "Show not in blocked area"; document.getElementById("radioThree").style.display = ""; document.getElementsByName("checkDuplicates")[3].style.display = ""; document.getElementById("search").style.display = "none"; document.getElementById("tacStates").style.display = "none"; document.getElementById("wlsZones").style.display = "none"; break; case "gpsOn": document.getElementById("radioOne").style.display = ""; document.getElementsByName("checkDuplicates")[1].style.display = ""; document.getElementById("radioTwo").innerHTML = "Show GPS on"; document.getElementById("radioTwo").style.display = ""; document.getElementsByName("checkDuplicates")[2].style.display = ""; document.getElementById("radioThree").innerHTML = "Show GPS off"; document.getElementById("radioThree").style.display = ""; document.getElementsByName("checkDuplicates")[3].style.display = ""; document.getElementById("search").style.display = "none"; document.getElementById("tacStates").style.display = "none"; document.getElementById("wlsZones").style.display = "none"; break; case "wlsZone": document.getElementById("radioOne").style.display = "none"; document.getElementsByName("checkDuplicates")[1].style.display = "none"; document.getElementById("radioTwo").style.display = "none"; document.getElementsByName("checkDuplicates")[2].style.display = "none"; document.getElementById("radioThree").style.display = "none"; document.getElementsByName("checkDuplicates")[3].style.display = "none"; document.getElementById("search").style.display = "none"; document.getElementById("tacStates").style.display = "none"; document.getElementById("wlsZones").style.display = ""; break; case "tacticalState": document.getElementById("radioOne").style.display = "none"; document.getElementsByName("checkDuplicates")[1].style.display = "none"; document.getElementById("radioTwo").style.display = "none"; document.getElementsByName("checkDuplicates")[2].style.display = "none"; document.getElementById("radioThree").style.display = "none"; document.getElementsByName("checkDuplicates")[3].style.display = "none"; document.getElementById("search").style.display = "none"; document.getElementById("tacStates").style.display = ""; document.getElementById("wlsZones").style.display = "none"; break; default: document.getElementById("radioOne").style.display = "none"; document.getElementsByName("checkDuplicates")[1].style.display = "none"; document.getElementById("radioTwo").style.display = "none"; document.getElementsByName("checkDuplicates")[2].style.display = "none"; document.getElementById("radioThree").style.display = "none"; document.getElementsByName("checkDuplicates")[3].style.display = "none"; document.getElementById("search").style.display = "none"; document.getElementById("tacStates").style.display = "none"; document.getElementById("wlsZones").style.display = "none"; break; } } function InputFilterValue() { IDFilter = document.getElementById('FilterID').value; if(IDFilter != "") startTrack(IDFilter); else alert("Please put the equipment number for the GPX-Track in the top row and pay attention to the validity of the number."); } function getNewDate(){ currentDate = new Date(); day = ("0" + currentDate.getUTCDate()).slice(-2); month = ("0" + (currentDate.getUTCMonth() + 1)).slice(-2); year = currentDate.getFullYear(); hours = ("0" + currentDate.getUTCHours()).slice(-2); minutes = ("0" + currentDate.getUTCMinutes()).slice(-2); seconds = ("0" + currentDate.getUTCSeconds()).slice(-2); } function startTrack(IDFilter) //write header for gpx file { data = ""; data += '\n'; data += '\n'; data += '\n'; data += ' \n'; data += ' \n' data += ' 0000FF\n'; data += ' \n'; data += ' \n'; data += ' GPXTrack from EquipID:'+ IDFilter +'\n'; data += ' \n'; disableOneAndEnableTwo(); } function appendtrack() { var ele1 = msg.data.z; getNewDate(); //changing colors in gpxtrack in relation to height if ((ele1 >= hoehenabstaende[0] && ele2 < hoehenabstaende[0]) || (ele1 >= hoehenabstaende[1] && ele2 < hoehenabstaende[1]) || (ele1 >= hoehenabstaende[2] && ele2 < hoehenabstaende[2]) || (ele1 >= hoehenabstaende[3] && ele2 < hoehenabstaende[3]) || (ele1 >= hoehenabstaende[4] && ele2 < hoehenabstaende[4]) || (ele1 >= hoehenabstaende[5] && ele2 < hoehenabstaende[5]) || (ele1 >= hoehenabstaende[6] && ele2 < hoehenabstaende[6]) || (ele1 >= hoehenabstaende[7] && ele2 < hoehenabstaende[7]) || (ele1 >= hoehenabstaende[8] && ele2 < hoehenabstaende[8]) || (ele1 >= hoehenabstaende[9] && ele2 < hoehenabstaende[9]) || (ele1 >= hoehenabstaende[10] && ele2 < hoehenabstaende[10])) { data += ' \n'; data += '\n'; data += '\n'; data += ' \n'; data += ' \n'; if (ele1 >= hoehenabstaende[1] && ele2 < hoehenabstaende[1]) data += ' 00FF00\n'; else if (ele1 >= hoehenabstaende[2] && ele2 < hoehenabstaende[2]) data += ' FF0000\n'; else if (ele1 >= hoehenabstaende[3] && ele2 < hoehenabstaende[3]) data += ' 836FFF\n'; else if (ele1 >= hoehenabstaende[4] && ele2 < hoehenabstaende[4]) data += ' C1CDCD\n'; else if (ele1 >= hoehenabstaende[5] && ele2 < hoehenabstaende[5]) data += ' 00008B\n'; else if (ele1 >= hoehenabstaende[6] && ele2 < hoehenabstaende[6]) data += ' 00EEEE\n'; else if (ele1 >= hoehenabstaende[7] && ele2 < hoehenabstaende[7]) data += ' DEB887\n'; else if (ele1 >= hoehenabstaende[8] && ele2 < hoehenabstaende[8]) data += ' A52A2A\n'; else if (ele1 >= hoehenabstaende[9] && ele2 < hoehenabstaende[9]) data += ' DBDBDB\n'; else if (ele1 >= hoehenabstaende[10] && ele2 < hoehenabstaende[10]) data += ' BEBEBE\n'; data += ' \n'; data += ' \n'; data += ' \n'; } else if ((ele1 <= hoehenabstaende[0] && ele2 > hoehenabstaende[0]) || (ele1 <= hoehenabstaende[1] && ele2 > hoehenabstaende[1]) || (ele1 <= hoehenabstaende[2] && ele2 > hoehenabstaende[2]) || (ele1 <= hoehenabstaende[3] && ele2 > hoehenabstaende[3]) || (ele1 <= hoehenabstaende[4] && ele2 > hoehenabstaende[4]) || (ele1 <= hoehenabstaende[5] && ele2 > hoehenabstaende[5]) || (ele1 <= hoehenabstaende[6] && ele2 > hoehenabstaende[6]) || (ele1 <= hoehenabstaende[7] && ele2 > hoehenabstaende[7]) || (ele1 <= hoehenabstaende[8] && ele2 > hoehenabstaende[8]) || (ele1 <= hoehenabstaende[9] && ele2 > hoehenabstaende[9]) || (ele1 <= hoehenabstaende[10] && ele2 > hoehenabstaende[10])) { data += ' \n'; data += '\n'; data += '\n'; data += ' \n'; data += ' \n'; if (ele1 <= hoehenabstaende[1] && ele2 > hoehenabstaende[1]) data += ' 0000FF\n'; else if (ele1 <= hoehenabstaende[2] && ele2 > hoehenabstaende[2]) data += ' 00FF00\n'; else if (ele1 <= hoehenabstaende[3] && ele2 > hoehenabstaende[3]) data += ' FF0000\n'; else if (ele1 <= hoehenabstaende[4] && ele2 > hoehenabstaende[4]) data += ' 836FFF\n'; else if (ele1 <= hoehenabstaende[5] && ele2 > hoehenabstaende[5]) data += ' C1CDCD\n'; else if (ele1 <= hoehenabstaende[6] && ele2 > hoehenabstaende[6]) data += ' 00008B\n'; else if (ele1 <= hoehenabstaende[7] && ele2 > hoehenabstaende[7]) data += ' 00EEEE\n'; else if (ele1 <= hoehenabstaende[8] && ele2 > hoehenabstaende[8]) data += ' DEB887\n'; else if (ele1 <= hoehenabstaende[9] && ele2 > hoehenabstaende[9]) data += ' A52A2A\n'; else if (ele1 <= hoehenabstaende[10] && ele2 > hoehenabstaende[10]) data += ' DBDBDB\n'; data += ' \n'; data += ' \n'; data += ' \n'; } //get lat, lon and height for each PositionReport data +=' \n'; data +=' ' + Number(msg.data.geoPosition.z) + '\n'; data +=' \n'; data +=' Dir=' + msg.data.opsPosition.moutObjectId +'\n'; data +=' Raum=' + msg.data.opsPosition.moutRoomId +'\n'; data +=' \n'; ele2 = ele1; } function saveFile() //write end of gpx file and saveFile { IDFilter = document.getElementById('FilterID').value; var filename = 'GPXTrack' + IDFilter + '//' + day + '/'+ month + '/' + year + '//' + currentDate.getHours() + '/' + currentDate.getMinutes() + '.gpx'; var type = 'xml'; data += ' \n'; data += '\n'; data += '\n'; saveGPXData(data, filename, type); } function saveGPXData(data, filename, type) { // saves data in a blob in the browser var a = document.createElement("a"), file = new Blob([data], {type: type}); if (window.navigator.msSaveOrOpenBlob) // IE10+ window.navigator.msSaveOrOpenBlob(file, filename); else { // Others var url = URL.createObjectURL(file); a.href = url; a.download = filename; document.body.appendChild(a); a.click(); setTimeout(function() { document.body.removeChild(a); window.URL.revokeObjectURL(url); }, 0); } } function resetFile() { if(confirm("Are you sure you want to reset the GPX Track? All data from the previous Track will be lost!")) { document.getElementById('FilterEquip').disabled = false; document.getElementById('saveGPX').disabled = true; } else { resetFile(); } } function disableOneAndEnableTwo(){ document.getElementById('FilterEquip').disabled = true; document.getElementById('saveGPX').disabled = false; document.getElementById('resetGPX').disabled = false; } function fillArray(){ //fill the array in relation to options, wchich were set with the dropbox hoehenabstaende = []; for (i = 0; i < document.listForHeight.Hoehen.selectedIndex; i++) { hoehenabstaende[i]= i*3; } }