<table style="width:100%;">
<tr><td class="tiny">Fuel</td><td class="aright"><span class="small" id="fuel">-</span></td><td><span class="tiny"> l</span></td></tr>
<tr><td class="tiny">Range</td><td class="aright"><span class="small" id="fuel_range">-</span></td><td><span class="tiny"> km</span></td></tr>
+ <tr><td class="tiny">Current</td><td class="aright" colspan="2"><span class="smaller" id="fuel_cons">-</span><span class="tiny"> l/100km</span></td></tr>
<tr><td class="tiny">Average</td><td class="aright" colspan="2"><span class="smaller" id="fuel_avg">-</span><span class="tiny"> l/100km</span></td></tr>
<tr><td class="tiny">Mileage</td><td class="aright" colspan="2"><span class="smaller" id="odometer">-</span><span class="tiny">km</span></td></tr>
</table>
// We try to deduce the correct forward gear number to display from
// the number of gears available. This likely just plain nonsense!
if ( x > 0 )
- return ( m ? '' : 'A' ) + ( f>12 ? ( x<3 ? 'C'+x : x-2 ) : x );
+ return ( m ? '' : 'A' ) + ( f==14 ? ( x<3 ? 'C'+x : x-2 ) : x );
if ( x < 0 )
return 'R' + -x;
return 'N';
var errbar = document.getElementById("errbar");
var pausebar = document.getElementById("pausebar");
+// Used to calculate current fuel consumption:
+var last_fuel = -1;
+var last_odometer = -1;
+
+// Update display, called periodically:
function loadDoc() {
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var tele = JSON.parse(this.responseText);
- speed.innerHTML = Math.round( Math.abs(tele.speed * 3.6) );
- if ( tele.nav_slimit > 0 && Math.floor(tele.speed) > tele.nav_slimit * 1.075 )
+ speed.innerHTML = Math.abs(tele.speed * 3.6).toFixed(0);
+ if ( tele.nav_slimit > 0 && tele.speed > tele.nav_slimit * 1.075 )
warn( speed, 2 );
- else if ( tele.nav_slimit > 0 && Math.floor(tele.speed) > tele.nav_slimit * 1.005 )
+ else if ( tele.nav_slimit > 0 && tele.speed > tele.nav_slimit * 1.005 )
warn( speed, 1 );
else
warn( speed, 0 );
else
gear.classList.remove("hilite");
- rpm.innerHTML = Math.round(tele.rpm);
- odometer.innerHTML = Math.round(tele.odometer);
+ rpm.innerHTML = tele.rpm.toFixed(0);
+ odometer.innerHTML = tele.odometer.toFixed(0);
- fuel.innerHTML = Math.round(tele.fuel);
+ fuel.innerHTML = tele.fuel.toFixed(0);
warn( fuel, tele.fuel_warn ? 1 : 0 );
- fuel_range.innerHTML = Math.round(tele.fuel_range);
+ fuel_range.innerHTML = tele.fuel_range.toFixed(0);
+
+ if ( last_fuel != tele.fuel && last_odometer != tele.odometer ) {
+ var fcons;
+ if ( last_fuel > 0 && last_odometer > 0 )
+ fcons = (last_fuel - tele.fuel) * 100 / (tele.odometer - last_odometer);
+ else
+ fcons = -1;
+ fuel_cons.innerHTML = fcons < 0 ? '-' : fcons.toFixed(1);
+ last_fuel = tele.fuel;
+ last_odometer = tele.odometer;
+ }
- fuel_avg.innerHTML = Math.round(tele.fuel_avg * 1000) / 10;
+ fuel_avg.innerHTML = (tele.fuel_avg * 100).toFixed(1);
- nav_dist.innerHTML = Math.round(tele.nav_dist / 1000);
+ nav_dist.innerHTML = (tele.nav_dist / 1000).toFixed(0);
nav_eta.innerHTML = s2hm(tele.nav_eta);
next_rest.innerHTML = m2hm(tele.next_rest);
warn( next_rest, tele.next_rest < 1 ? 2 : tele.next_rest < 97 ? 1 : 0 );
- job_ttd.innerHTML = tele.job_isvalid ? m2hm(tele.job_deltime - tele.game_time) : "--:--";
+ job_ttd.innerHTML =
+ tele.job_isvalid
+ ? tele.job_deltime != 4294967295
+ ? m2hm(tele.job_deltime - tele.game_time)
+ : '<span style="font-size:50%;color:#088">[external]</span>'
+ : '<span style="font-size:50%;color:#088">[none]</span>';
if ( tele.nav_slimit > 0 ) {
- nav_slimit.innerHTML = Math.round(tele.nav_slimit * 3.6);
+ nav_slimit.innerHTML = (tele.nav_slimit * 3.6).toFixed(0);
nav_slimitsign.style.visibility = "visible";
}
else