Skip to content

Commit 4588380

Browse files
Mark JessopMark Jessop
authored andcommitted
Merge remote-tracking branch 'upstream/main'
2 parents 6dea8ba + 9103221 commit 4588380

File tree

1 file changed

+84
-32
lines changed

1 file changed

+84
-32
lines changed

js/tracker.js

Lines changed: 84 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,41 +1372,86 @@ function updateVehicleInfo(vcallsign, newPosition) {
13721372

13731373
var callsign_list = [];
13741374

1375-
if($.type(newPosition.callsign) === "string"){
1376-
// Single callsign entry, as a string (chase cars)
1377-
callsign_list = newPosition.callsign;
1378-
} else {
1379-
// Multiple callsigns, as an object
1380-
for(var rxcall in newPosition.callsign){
1381-
if(newPosition.callsign.hasOwnProperty(rxcall)) {
1382-
_new_call = rxcall;
1383-
tempFields = [];
1384-
if(newPosition.callsign[rxcall].hasOwnProperty('snr')){
1385-
if(newPosition.callsign[rxcall].snr){
1386-
tempFields.push(newPosition.callsign[rxcall].snr.toFixed(0) + " dB");
1375+
var current_time = convert_time(newPosition.server_time)
1376+
1377+
for(var i = 0; i < vehicle.receiver_info.length; i++){
1378+
if (vehicle.receiver_info[i]["time"] < current_time - 15000) {
1379+
vehicle.receiver_info.splice(i,1);
1380+
}
1381+
}
1382+
1383+
function addReceiver(callsign) {
1384+
for(var i = 0; i < vehicle.receiver_info.length; i++){
1385+
if (vehicle.receiver_info[i]["callsign"] === callsign) {
1386+
vehicle.receiver_info[i]["time"] = current_time
1387+
if(newPosition.callsign[callsign].hasOwnProperty('snr')){
1388+
if(newPosition.callsign[callsign].snr){
1389+
vehicle.receiver_info[i].snr = newPosition.callsign[rxcall].snr.toFixed(0)
13871390
}
13881391
}
1389-
if(newPosition.callsign[rxcall].hasOwnProperty('rssi')){
1390-
if(newPosition.callsign[rxcall].rssi){
1391-
tempFields.push(newPosition.callsign[rxcall].rssi.toFixed(0) + " dBm");
1392+
if(newPosition.callsign[callsign].hasOwnProperty('rssi')){
1393+
if(newPosition.callsign[callsign].rssi){
1394+
vehicle.receiver_info[i].rssi = newPosition.callsign[rxcall].rssi.toFixed(0)
13921395
}
13931396
}
1394-
if(newPosition.callsign[rxcall].hasOwnProperty('frequency')){
1395-
if(newPosition.callsign[rxcall].frequency){
1396-
tempFields.push(newPosition.callsign[rxcall].frequency + " MHz");
1397+
if(newPosition.callsign[callsign].hasOwnProperty('frequency')){
1398+
if(newPosition.callsign[callsign].frequency){
1399+
vehicle.receiver_info[i].frequency = newPosition.callsign[rxcall].frequency.toFixed(4)
13971400
}
13981401
}
1399-
if(tempFields.length > 0) {
1400-
_new_call += " (" + tempFields.join(", ") + ")";
1401-
}
1402-
callsign_list.push(_new_call); // catch cases where there are no fields
1402+
return
1403+
}
1404+
}
1405+
var temp_receiver = {callsign: callsign, time: current_time}
1406+
if(newPosition.callsign[callsign].hasOwnProperty('snr')){
1407+
if(newPosition.callsign[callsign].snr){
1408+
temp_receiver.snr = newPosition.callsign[rxcall].snr.toFixed(0)
1409+
}
1410+
}
1411+
if(newPosition.callsign[callsign].hasOwnProperty('rssi')){
1412+
if(newPosition.callsign[callsign].rssi){
1413+
temp_receiver.rssi = newPosition.callsign[rxcall].rssi.toFixed(0)
1414+
}
1415+
}
1416+
if(newPosition.callsign[callsign].hasOwnProperty('frequency')){
1417+
if(newPosition.callsign[callsign].frequency){
1418+
temp_receiver.frequency = newPosition.callsign[rxcall].frequency.toFixed(4)
1419+
}
1420+
}
1421+
vehicle.receiver_info.push(temp_receiver)
1422+
}
1423+
1424+
if($.type(newPosition.callsign) === "string"){
1425+
// Single callsign entry, as a string (chase cars)
1426+
callsign_list = newPosition.callsign;
1427+
} else {
1428+
// Multiple callsigns, as an object
1429+
for(var rxcall in newPosition.callsign){
1430+
addReceiver(rxcall)
1431+
}
1432+
1433+
for(var receiver in vehicle.receiver_info){
1434+
_new_call = "- " + vehicle.receiver_info[receiver].callsign;
1435+
tempFields = [];
1436+
if(vehicle.receiver_info[receiver].hasOwnProperty('snr')){
1437+
tempFields.push(vehicle.receiver_info[receiver].snr + " dB");
1438+
}
1439+
if(vehicle.receiver_info[receiver].hasOwnProperty('rssi')){
1440+
tempFields.push(vehicle.receiver_info[receiver].rssi + " dBm");
1441+
}
1442+
if(vehicle.receiver_info[receiver].hasOwnProperty('frequency')){
1443+
tempFields.push(vehicle.receiver_info[receiver].frequency + " MHz");
14031444
}
1445+
if(tempFields.length > 0) {
1446+
_new_call += " (" + tempFields.join(", ") + ")";
1447+
}
1448+
callsign_list.push(_new_call); // catch cases where there are no fields
14041449
}
1405-
callsign_list = callsign_list.join(", ");
1450+
callsign_list = callsign_list.join("<br>");
14061451
}
14071452

14081453
var timeNow = new Date();
1409-
var timeSent = convert_time(newPosition.server_time);
1454+
var timeSent = convert_time(newPosition.gps_time);
14101455
var timeChosen = null;
14111456

14121457
if (timeSent > timeNow) {
@@ -2551,7 +2596,8 @@ function addPosition(position) {
25512596
graph_data: [],
25522597
graph_yaxes: [],
25532598
updated: false,
2554-
start_time: 2147483647000
2599+
start_time: 2147483647000,
2600+
receiver_info: []
25552601
};
25562602

25572603
// deep copy yaxes config for graph
@@ -2658,24 +2704,29 @@ function addPosition(position) {
26582704
if(vehicle.num_positions > 0 && dt > 0) {
26592705
var search_ts = new_ts - 10000
26602706

2661-
function searchPositions(time) {
2662-
return time <= search_ts
2707+
function searchPositions(times) {
2708+
for (i = times.length; i >= 0; i--) {
2709+
if (times[i] <= search_ts) {
2710+
return times[i]
2711+
}
2712+
}
2713+
return null
26632714
}
26642715

2665-
var search_matches = vehicle.positions_ts.filter(searchPositions)
2716+
var search_match = searchPositions(vehicle.positions_ts)
2717+
var search_index = vehicle.positions_ts.indexOf(search_match)
26662718

2667-
if (search_matches.length > 0 && search_matches[search_matches.length-1] >= search_ts - 5000) {
2668-
var search_match = search_matches[search_matches.length-1]
2719+
if (search_match != null && search_match >= search_ts - 5000) {
26692720
var dtt = (curr_ts - search_match) / 1000;
26702721

26712722
// calculate vertical rate
2672-
var rate = (position.gps_alt - vehicle.positions_alts[search_matches.length-1]) / dtt;
2723+
var rate = (position.gps_alt - vehicle.positions_alts[search_index]) / dtt;
26732724
if (!isNaN(rate) && isFinite(rate)) {
26742725
vehicle.ascent_rate = 0.2 * rate + 0.8 * vehicle.ascent_rate;
26752726
}
26762727

26772728
// calculate horizontal rate
2678-
horizontal_rate_temp = new_latlng.distanceTo(vehicle.positions[search_matches.length-1]) / dtt;
2729+
horizontal_rate_temp = new_latlng.distanceTo(vehicle.positions[search_index]) / dtt;
26792730
if (!isNaN(horizontal_rate_temp) && isFinite(horizontal_rate_temp)) {
26802731
vehicle.horizontal_rate = horizontal_rate_temp;
26812732
}
@@ -3310,6 +3361,7 @@ function refreshReceivers() {
33103361
updateReceivers(response);
33113362
},
33123363
complete: function(request, textStatus) {
3364+
periodical_receivers = setTimeout(function() {refreshReceivers(false)}, 60 * 5 * 1000);
33133365
if (!offline.get("opt_hide_chase")) {
33143366
refreshNewReceivers(true);
33153367
}

0 commit comments

Comments
 (0)