Files
eacp_webapp/htdocs/js/dynamic_clientlist.js
T
2026-06-16 11:24:50 +08:00

113 lines
4.6 KiB
JavaScript

/********************************************************************
* Dynamic Aircraftlist for Radarcape
********************************************************************
* Guenter Koellner Embedded Development GmbH
*
* Am Rain 24
* 85256 Vierkirchen
* Geschaeftsfuehrer Guenter Koellner
*
* http://www.modesbeast.com
********************************************************************/
http://maps.google.de/maps?q=50.11834,8.66309(Block+House)&t=k&z=19
var sort_key = "id";
var sort_asc = true;
function get_date_time_string (unix_timestamp) {
// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp*1000);
return date.toISOString().replace("T"," ").substr(0, 19);
}
function updateTable() {
console.log("updateTable");
getJSON( rcd_globals.sensors_endpoint_prefix+"clients.json", function(unsorted_data) {
//console.log("unsorted_data.length=",unsorted_data.length);
var data = unsorted_data["TLS"].sort(function(a, b) {
var x = a[sort_key]; var y = b[sort_key];
if (sort_asc) {
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
} else {
return ((x > y) ? -1 : ((x < y) ? 1 : 0));
}
});
var table = document.getElementById("clientlist").tBodies[0];
var rows_len = table.rows.length - 1; //first is row to clone
while ( rows_len > data.length ) {
table.removeChild(table.rows[rows_len--]);
}
for( var i = 0; i < data.length; ++i ) {
var line;
if( i >= rows_len ) {
var line = table.rows[0].cloneNode(true);
line.style = ""; // remove style="display:none;"
table.appendChild(line);
} else {
var line = table.rows[1+i];
}
line.cells.namedItem("active" ).innerHTML = data[i].active;
line.cells.namedItem("id" ).innerHTML = "<a href=\"http://maps.google.de/maps/?q=" + data[i].lat + "," + data[i].lon + "(eule)&z=19\" target=\"_blank\">" + data[i].id + "</a>";
line.cells.namedItem("ver" ).innerHTML = data[i].ver;
line.cells.namedItem("swtyp" ).innerHTML = data[i].swtyp;
line.cells.namedItem("hwtyp" ).innerHTML = data[i].hwtyp;
line.cells.namedItem("temp" ).innerHTML = data[i].temp;
line.cells.namedItem("gnss" ).innerHTML = data[i].gnss;
line.cells.namedItem("anto" ).innerHTML = data[i].anto;
line.cells.namedItem("ants" ).innerHTML = data[i].ants;
line.cells.namedItem("conn" ).innerHTML = data[i].conn;
if(data[i].lat == null || data[i].lon == null) {
line.cells.namedItem("lat" ).innerHTML = "";
line.cells.namedItem("lon" ).innerHTML = "";
} else {
line.cells.namedItem("lat").innerHTML = data[i].lat.toFixed(5);
line.cells.namedItem("lon").innerHTML = data[i].lon.toFixed(5);
}
line.cells.namedItem("alt" ).innerHTML = data[i].alt;
line.cells.namedItem("ac" ).innerHTML = data[i].ac;
line.cells.namedItem("iBy" ).innerHTML = data[i].iBy;
line.cells.namedItem("iTotal" ).innerHTML = data[i].iTotal;
line.cells.namedItem("iMsg" ).innerHTML = data[i].iMsg;
line.cells.namedItem("qRes" ).innerHTML = data[i].qRes;
line.cells.namedItem("tLogin" ).innerHTML = get_date_time_string(data[i].login);
line.cells.namedItem("tLogout" ).innerHTML = get_date_time_string(data[i].logout);
line.cells.namedItem("tUTC" ).innerHTML = data[i].tUTC;
line.cells.namedItem("latMin" ).innerHTML = data[i].latMin;
line.cells.namedItem("latAvg" ).innerHTML = data[i].latAvg;
line.cells.namedItem("latMax" ).innerHTML = data[i].latMax;
}
var statuslines = $("tr.serverstatusline");
line = $(statuslines[0]);
line.children(".NofClients" ).html(data.length);
line.children(".AcDbSize" ).html(unsorted_data.AcDbSize);
line.children(".dat" ).html(unsorted_data.dat);
line.children(".incomingEvents").html(unsorted_data.incomingEvents);
});
}
$(document).ready(function() {
$(".arrow-box .arrow-down").click(function(evt) {
sort_key = $(this).parent().attr("id");
sort_asc = false;
updateTable();
});
$(".arrow-box .arrow-up").click(function(evt) {
sort_key = $(this).parent().attr("id");
sort_asc = true;
updateTable();
});
updateTable();
//setInterval( function() { updateTable(); }, RefreshInterval * 1000);
setInterval( function() { updateTable(); }, 5000);
});