Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 2 additions & 13 deletions css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -323,9 +323,6 @@ header .search form input[type='submit'] {
border-left: 5px solid #ccc;
}

#main .vehicle0 .header {
border-top: 1px solid #33b5e5;
}
#main .header.empty {
text-align: center;
width: 100%;
Expand Down Expand Up @@ -454,14 +451,6 @@ header .search form input[type='submit'] {
border: 1px solid #5E5E5E;
}

#main .portrait .row .data .vbutton {
top: 50px !important;
}

#main .portrait .row .data .sbutton {
top: 80px !important;
}

#main .row .data img {
position: absolute;
z-index: 2;
Expand Down Expand Up @@ -842,7 +831,7 @@ header .search form input[type='submit'] {
}
#main .data .left {
float: left;
width: 160px;
width: 80%;
padding-left: 5px;
}
#main .data dl > dt {
Expand Down Expand Up @@ -878,7 +867,7 @@ header .search form input[type='submit'] {
}
#main .data .left {
float: left;
width: 60%;
width: 55%;
padding-left: 5px;
}
#main .data .right {
Expand Down
31 changes: 15 additions & 16 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,15 @@ <h4>SondeHub Status Pages</h4>
You can find the status of the SondeHub Database on the <a href="https://sondehub.org/go/status" target="_blank" rel="noopener">SondeHub Dashboard</a>.<br/>
You can view outages of the SondeHub Database at <a href="https://sondehub.statuspage.io/" target="_blank" rel="noopener">SondeHub Status</a>.

<h4>Info</h4>
This site uses data from the <a href="https://github.com/projecthorus/sondehub-infra/wiki" target="_blank" rel="noopener">SondeHub v2</a> database, which will remove the radiosonde
load from the Habitat tracking database.

<h4>Chase Cars</h4>
Chase Cars can show up on the map using this tracker's chase-car features (look for the car icon at top-right)
or upload their position from <a href="https://github.com/projecthorus/chasemapper" target="_blank" rel="noopener">Chasemapper</a> or <a href="https://github.com/dl9rdz/rdz_ttgo_sonde" target="_blank" rel="noopener">rdzTTGOsonde</a>.

</div>
<br/>
<h2>Under Beta!</h2>
<hr/>
This site uses data from the <a href="https://github.com/projecthorus/sondehub-infra/wiki" target="_blank" rel="noopener">SondeHub v2</a> database, which will remove the radiosonde
load from the Habitat tracking database. We are still working to being this tracker up to feature-parity with the previous
tracker, so some features like filtering by type are still in-progress.
<br/><br/>
Chase Cars can show up on the map using this tracker's chase-car features (look for the car icon at top-right)
or upload their position from <a href="https://github.com/projecthorus/chasemapper" target="_blank" rel="noopener">Chasemapper</a> or <a href="https://github.com/dl9rdz/rdz_ttgo_sonde" target="_blank" rel="noopener">rdzTTGOsonde</a>.
<br/><br/>
<h2>Contribute</h2>
<hr/>
<p>
Expand Down Expand Up @@ -366,18 +364,19 @@ <h3>Report Recovery</h3>
<script type="text/javascript" language="javascript" src="js/Leaflet.fullscreen.min.js"></script>
<script type="text/javascript" language="javascript" src="js/L.Terminator.js"></script>
<script src="https://xc5dqkj2cgb1.statuspage.io/embed/script.js" async defer></script>
<script type="text/javascript" language="javascript" src="js/mobile.js"></script>
<script type="text/javascript" language="javascript" src="js/rbush.js"></script>
<script>var module = {};</script>
<script src="js/leaflet.canvas-markers.js"></script>
<script>module.exports(L);</script>
<script type="text/javascript" language="javascript" src="js/pwa.js"></script>
<!--
<script type="text/javascript" language="javascript" src="js/iscroll.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery-1.12.4-min.js"></script>
<script type="text/javascript" language="javascript" src="js/chasecar.lib.js"></script>
<script type="text/javascript" language="javascript" src="js/tracker.js"></script>
<script type="text/javascript" language="javascript" src="js/app.js"></script>
-->
<script type="text/javascript" language="javascript" src="js/mobile.js"></script>
<script type="text/javascript" language="javascript" src="js/rbush.js"></script>
<script>var module = {};</script>
<script src="js/leaflet.canvas-markers.js"></script>
<script>module.exports(L);</script>
<script type="text/javascript" language="javascript" src="js/pwa.js"></script>

</body>
</html>
81 changes: 68 additions & 13 deletions js/tracker.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ var recoveries = [];
var launches = null;
var receiverCanvas = null;

var sondePrefix = ["RS92", "RS92-SGP", "RS92-NGP", "RS41", "RS41-SG", "RS41-SGP", "RS41-SGM", "DFM", "DFM06", "DFM09", "DFM17", "M10", "M20", "iMet-4", "iMet-54", "LMS6", "LMS6-400", "LMS6-1680", "iMS-100", "MRZ"];

var got_positions = false;
var zoomed_in = false;
var max_positions = 0; // maximum number of positions that ajax request should return (0 means no maximum)
Expand Down Expand Up @@ -1219,23 +1221,30 @@ function updateVehicleInfo(vcallsign, newPosition) {
callsign_list = callsign_list.join(", ");
}

//desktop
var a = '<div class="header">' +
'<span>' + sonde_type + vcallsign + ' <i class="icon-target"></i></span>' +
//'<span>' + vcallsign + ' <i class="icon-target"></i></span>' +
'<canvas class="graph"></canvas>' +
'<i class="arrow"></i></div>' +
'<div class="data" style="min-height:' + (vehicle.image_src_size[1]+95) + 'px">' +
'<div class="data">' +
'<img class="'+((vehicle.vehicle_type=="car")?'car':'')+'" src="'+image+'" />' +
'<span class="vbutton path '+((vehicle.polyline_visible) ? 'active' : '')+'" data-vcallsign="'+vcallsign+'"' + ' style="top:'+(vehicle.image_src_size[1]+55)+'px">Path</span>' +
((vehicle.vehicle_type!="car") ? '<span class="sbutton" onclick="shareVehicle(\'' + vcallsign + '\')" style="top:'+(vehicle.image_src_size[1]+85)+'px">Share</span>' : '') +
((vehicle.vehicle_type!="car") ? '<span class="sbutton" onclick="window.open(\'https://sondehub.org/card/' + vcallsign + '\')" style="top:'+(vehicle.image_src_size[1]+115)+'px">Card</span>' : '') +
((vcallsign in hysplit) ? '<span class="vbutton hysplit '+((hysplit[vcallsign].getMap()) ? 'active' : '')+'"' +
' data-vcallsign="'+vcallsign+'" style="top:'+(vehicle.image_src_size[1]+55+21+10)+'px">HYSPLIT</span>' : '') +
((vcallsign.substr(0, 6) in ssdv) ? '<a class="vbutton active" href="//ssdv.habhub.org/' + vcallsign.substr(0, 6) + '"' +
' target="_blank" style="top:'+(vehicle.image_src_size[1]+55+((vcallsign in hysplit) ? 42 : 21)+10)+'px">SSDV</a>' : '') +
'<div class="left">' +
'<dl>';
// end
//mobile
var aa = '<div class="header">' +
'<span>' + sonde_type + vcallsign + ' <i class="icon-target"></i></span>' +
'<canvas class="graph"></canvas>' +
'<i class="arrow"></i></div>' +
'<div class="data">' +
'<img class="'+((vehicle.vehicle_type=="car")?'car':'')+'" src="'+image+'" />' +
'<span class="vbutton path '+((vehicle.polyline_visible) ? 'active' : '')+'" data-vcallsign="'+vcallsign+'"' + ' style="top:55px">Path</span>' +
((vehicle.vehicle_type!="car") ? '<span class="sbutton" onclick="shareVehicle(\'' + vcallsign + '\')" style="top:85px">Share</span>' : '') +
((vehicle.vehicle_type!="car") ? '<span class="sbutton" onclick="window.open(\'https://sondehub.org/card/' + vcallsign + '\')" style="top:115px">Card</span>' : '') +
'<div class="left">' +
'<dl>';
var b = '</dl>' +
'</div>' + // right
'</div>' + // data
Expand Down Expand Up @@ -1268,7 +1277,7 @@ function updateVehicleInfo(vcallsign, newPosition) {
'';

// update html
$('.portrait .vehicle'+vehicle.uuid).html(a + p + b);
$('.portrait .vehicle'+vehicle.uuid).html(aa + p + b);
$('.landscape .vehicle'+vehicle.uuid).html(a + l + b);

// redraw canvas
Expand Down Expand Up @@ -2628,7 +2637,11 @@ function refresh() {
mode = (mode == "position") ? "latest" : mode.replace(/ /g,"");

if (wvar.query) {
var data_str = "mode=3days&type=positions&format=json&max_positions=" + max_positions + "&position_id=0&vehicles=" + encodeURIComponent(wvar.query);
if (sondePrefix.indexOf(wvar.query) > -1) {
var data_str = "mode="+mode+"&type=positions&format=json&max_positions=" + max_positions + "&position_id=" + position_id + "&vehicles=";
} else {
var data_str = "mode=3days&type=positions&format=json&max_positions=" + max_positions + "&position_id=0&vehicles=" + encodeURIComponent(wvar.query);
}
} else {
var data_str = "mode="+mode+"&type=positions&format=json&max_positions=" + max_positions + "&position_id=" + position_id + "&vehicles=" + encodeURIComponent(wvar.query);
}
Expand All @@ -2641,15 +2654,19 @@ function refresh() {
success: function(response, textStatus) {
$("#stText").text("loading |");
response.fetch_timestamp = Date.now();
if (wvar.query != null) {
if (sondePrefix.indexOf(wvar.query) > -1) {
update(response);
} else if (wvar.query != null) {
if (JSON.stringify(response).indexOf(wvar.query) == -1) {
//check using new API
ajax_inprogress = false;
refreshSingleOld(wvar.query);
} else {
ajax_inprogress_old = wvar.query;
update(response);
}
} else {
ajax_inprogress_old = wvar.query;
update(response);
}
$("#stText").text("");
Expand Down Expand Up @@ -2753,7 +2770,7 @@ function refreshSingleOld(serial) {
if (data[i].hasOwnProperty('subtype')) {
if (data[i].subtype != "SondehubV1") {
var dataTempEntry = {};
var station = data[i].uploader_callsign
var station = data[i].uploader_callsign;
dataTempEntry.callsign = {};
dataTempEntry.callsign[station] = {};
dataTempEntry.callsign[station].snr = data[i].snr;
Expand Down Expand Up @@ -2795,13 +2812,41 @@ function refreshSingleOld(serial) {
if (data[i].pressure) {
dataTempEntry.data.pressure = data[i].pressure;
}
dataTemp.push(dataTempEntry)
if (data[i].xdata) {
dataTempEntry.data.xdata = data[i].xdata;
}
dataTemp.push(dataTempEntry);
} else {
var dataTempEntry = {};
var station = data[i].uploader_callsign;
dataTempEntry.callsign = {};
dataTempEntry.callsign[station] = {};
dataTempEntry.gps_alt = parseFloat(data[i].alt);
dataTempEntry.gps_lat = parseFloat(data[i].lat);
dataTempEntry.gps_lon = parseFloat(data[i].lon);
dataTempEntry.gps_time = data[i].time_received;
dataTempEntry.server_time = data[i].time_received;
dataTempEntry.vehicle = data[i].serial;
dataTempEntry.position_id = data[i].serial + "-" + data[i].time_received;
dataTempEntry.data = {};
if (data[i].humidity) {
dataTempEntry.data.humidity = parseFloat(data[i].humidity);
}
if (data[i].temp) {
dataTempEntry.data.temperature_external = parseFloat(data[i].temp);
}
dataTemp.push(dataTempEntry);
}
}
}
response.positions.position = dataTemp;
response.fetch_timestamp = Date.now();
update(response, "old");
if (response.positions.position.length == 0) {
update(response);
} else {
update(response, "old");
}

}
});
}
Expand Down Expand Up @@ -3471,6 +3516,16 @@ function update(response, flag) {
}
}

if (sondePrefix.indexOf(wvar.query) > -1) {
for (var i = response.positions.position.length - 1; i >= 0; i--) {
try {
if (!response.positions.position[i].type.includes(wvar.query)) {
response.positions.position.splice(i, 1)
}
} catch (e) {}
}
}

ssdv = (!response.ssdv) ? {} : response.ssdv;

// create a dummy response object for postions
Expand Down