Tell the user about AJAX errors.
Set AJAX options: 5s timeout, no caching. Don't spool up a second request while the previous one is in progress. If we repeatedly see the same receiver timestamp, warn the user that the JSON isn't being updated.
This commit is contained in:
parent
97ca1c77e7
commit
93aedbe15c
|
@ -29,8 +29,22 @@ var TrackedHistorySize = 0;
|
||||||
var SitePosition = null;
|
var SitePosition = null;
|
||||||
|
|
||||||
var ReceiverClock = null;
|
var ReceiverClock = null;
|
||||||
|
|
||||||
|
var LastReceiverTimestamp = null;
|
||||||
|
var StaleReceiverCount = 0;
|
||||||
|
var FetchPending = null;
|
||||||
|
|
||||||
function fetchData() {
|
function fetchData() {
|
||||||
$.getJSON('data/aircraft.json', function(data) {
|
if (FetchPending !== null && FetchPending.state() == 'pending') {
|
||||||
|
// don't double up on fetches, let the last one resolve
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FetchPending = $.ajax({ url: 'data/aircraft.json',
|
||||||
|
timeout: 5000,
|
||||||
|
cache: false,
|
||||||
|
dataType: 'json' });
|
||||||
|
FetchPending.done(function(data) {
|
||||||
// Loop through all the planes in the data packet
|
// Loop through all the planes in the data packet
|
||||||
var now = data.now;
|
var now = data.now;
|
||||||
var acs = data.aircraft;
|
var acs = data.aircraft;
|
||||||
|
@ -71,6 +85,24 @@ function fetchData() {
|
||||||
var rcv = new Date(now * 1000);
|
var rcv = new Date(now * 1000);
|
||||||
ReceiverClock.render(rcv.getUTCHours(),rcv.getUTCMinutes(),rcv.getUTCSeconds());
|
ReceiverClock.render(rcv.getUTCHours(),rcv.getUTCMinutes(),rcv.getUTCSeconds());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for stale receiver data
|
||||||
|
if (LastReceiverTimestamp === now) {
|
||||||
|
StaleReceiverCount++;
|
||||||
|
if (StaleReceiverCount > 5) {
|
||||||
|
$("#update_error_detail").text("The data from dump1090 hasn't been updated in a while. Maybe dump1090 is no longer running?");
|
||||||
|
$("#update_error").css('display','block');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
StaleReceiverCount = 0;
|
||||||
|
LastReceiverTimestamp = now;
|
||||||
|
$("#update_error").css('display','none');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
FetchPending.fail(function(jqxhr, status, error) {
|
||||||
|
$("#update_error_detail").text("AJAX call failed (" + status + (error ? (": " + error) : "") + "). Maybe dump1090 is no longer running?");
|
||||||
|
$("#update_error").css('display','block');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,9 @@ div#SpecialSquawkWarning { position: absolute; bottom: 25px; right: 430px; borde
|
||||||
background-color: #FFFFA3; opacity: 0.75; filter:alpha(opacity=75); padding: 5px;
|
background-color: #FFFFA3; opacity: 0.75; filter:alpha(opacity=75); padding: 5px;
|
||||||
text-align: center; }
|
text-align: center; }
|
||||||
|
|
||||||
table#optionsTabs { width: 100%; font-size: small; font-family: monospace; background-color: #ddd;
|
div#update_error { position: absolute; bottom: 25px; left: 25px; border: 2px solid red;
|
||||||
border: 1px; border-color: #000000;}
|
background-color: #FFFFA3; opacity: 0.75; filter:alpha(opacity=75); padding: 5px;
|
||||||
|
text-align: center; }
|
||||||
|
|
||||||
#tableinfo, #sudo_buttons { font-size: x-small; font-family: monospace; }
|
#tableinfo, #sudo_buttons { font-size: x-small; font-family: monospace; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue