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 += "