diff --git a/.htaccess b/.htaccess
index 6fcc26d..3d763d3 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,5 +1,32 @@
- SetOutputFilter DEFLATE
+ # Compress HTML, CSS, JavaScript, Text, XML and fonts
+ AddOutputFilterByType DEFLATE application/javascript
+ AddOutputFilterByType DEFLATE application/rss+xml
+ AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
+ AddOutputFilterByType DEFLATE application/x-font
+ AddOutputFilterByType DEFLATE application/x-font-opentype
+ AddOutputFilterByType DEFLATE application/x-font-otf
+ AddOutputFilterByType DEFLATE application/x-font-truetype
+ AddOutputFilterByType DEFLATE application/x-font-ttf
+ AddOutputFilterByType DEFLATE application/x-javascript
+ AddOutputFilterByType DEFLATE application/xhtml+xml
+ AddOutputFilterByType DEFLATE application/xml
+ AddOutputFilterByType DEFLATE font/opentype
+ AddOutputFilterByType DEFLATE font/otf
+ AddOutputFilterByType DEFLATE font/ttf
+ AddOutputFilterByType DEFLATE image/svg+xml
+ AddOutputFilterByType DEFLATE image/x-icon
+ AddOutputFilterByType DEFLATE text/css
+ AddOutputFilterByType DEFLATE text/html
+ AddOutputFilterByType DEFLATE text/javascript
+ AddOutputFilterByType DEFLATE text/plain
+ AddOutputFilterByType DEFLATE text/xml
+
+ # Remove browser bugs (only needed for ancient browsers)
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+ BrowserMatch ^Mozilla/4\.0[678] no-gzip
+ BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
+ Header append Vary User-Agent
AddType text/cache-manifest .manifest
diff --git a/README.md b/README.md
index 105ff80..55ed4f2 100644
--- a/README.md
+++ b/README.md
@@ -1,41 +1,30 @@
-# SondeHub Tracker
+# SondeHub Tracker Beta (leaflet edition)
A fork of [habitat-mobile-tracker](https://github.com/rossengeorgiev/habitat-mobile-tracker) for use with the [SondeHub v2 ElasticSearch](https://github.com/projecthorus/sondehub-infra/wiki/ElasticSearch-Kibana-access) database. Huge credits to [Rossen Georgiev](https://github.com/rossengeorgiev/) for developing the mobile-tracker.

A webapp for tracking radiosondes. Works an desktop and mobile devices.
-The habhub tracker is a continuation of [spacenear.us/tracker](http://spacenear.us/tracker).
+The SondeHub tracker is a continuation of [spacenear.us/tracker](http://spacenear.us/tracker).
## Features
* Radiosonde Tracking using [SondeHub V2](https://github.com/projecthorus/sondehub-infra/wiki/ElasticSearch-Kibana-access) data.
* Telemetry graph for each balloon
-* Chase Car functionality (TODO for SondeHub)
+* Chase Car functionality
* Near realtime weather overlays
* [Daylight cycle overlay](https://github.com/rossengeorgiev/nite-overlay), for long flights
-* Available to embed on any website
-* Map tracker with Google Maps API 3
+* Map tracker with Leaflet API
* Run the app natively on `iOS` or with Chrome's 'add to screen' on `Android`
### Geo position
-Available only on mobile devices.
-
The app will ask for permission to use your location.
This is required for some of the features. It is **important** to note that
your location will not be made available or send to anyone. Unless, you enable
- the `chase car mode`, which will periodically upload it to habitat. _The app
+ the `chase car mode`, which will periodically upload it to SondeHub. _The app
will always start with `chase car mode` disabled._
-### Offline storage
-
-The app will ask to use offline storage. You will need to accept, in order to
-use the offline capabilities. The app will cache all files making it available
-even when there is no network coverage. Latest position data will also be stored
-and used when you start up with no network. When you get back online, the app
-will fetch the latest position data.
-
## Browser requirements
Any modern browser should be able to run the app. Including the latest version of IE.
@@ -46,7 +35,6 @@ This is also true for mobile, some build-in browsers may not work.
Don't hesitate to report any issues, or suggest improvements. Just visit the [issues page](https://github.com/projecthorus/sondehub-tracker/issues).
Pull requests are welcome.
-
## Installation
Requirements: __Java__ and (Linux or Cygwin environment)
@@ -61,9 +49,6 @@ For __applicationCache__ to work your server needs to send the correct MIME type
Author: Daniel Saul [@danielsaul](https://github.com/danielsaul)
-[See concept for phone portrait mode](https://github.com/rossengeorgiev/habitat-mobile-tracker/blob/master/resources/concept-app-portrait.png)
-[See concept for tablets](https://github.com/rossengeorgiev/habitat-mobile-tracker/blob/master/resources/concept-app-tablet.png)
-
diff --git a/build.sh b/build.sh
index 778275b..f718a45 100755
--- a/build.sh
+++ b/build.sh
@@ -20,10 +20,8 @@ cat jquery* >> mobile.js
VERSION="`git rev-parse --short HEAD`"
# compile the rest
-java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge gmaps_extentions.js >> mobile.js
java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge iscroll.js >> mobile.js
java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge chasecar.lib.js | sed "s/{VER}/$VERSION/" >> mobile.js
-java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge nite-overlay.js >> mobile.js
java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge tracker.js >> mobile.js
java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge app.js >> mobile.js
diff --git a/css/fullscreen.png b/css/fullscreen.png
new file mode 100644
index 0000000..7384960
Binary files /dev/null and b/css/fullscreen.png differ
diff --git a/css/fullscreen@2x.png b/css/fullscreen@2x.png
new file mode 100644
index 0000000..9fca7f8
Binary files /dev/null and b/css/fullscreen@2x.png differ
diff --git a/css/images/layers-2x.png b/css/images/layers-2x.png
new file mode 100644
index 0000000..200c333
Binary files /dev/null and b/css/images/layers-2x.png differ
diff --git a/css/images/layers.png b/css/images/layers.png
new file mode 100644
index 0000000..1a72e57
Binary files /dev/null and b/css/images/layers.png differ
diff --git a/css/images/marker-icon-2x.png b/css/images/marker-icon-2x.png
new file mode 100644
index 0000000..88f9e50
Binary files /dev/null and b/css/images/marker-icon-2x.png differ
diff --git a/css/images/marker-icon.png b/css/images/marker-icon.png
new file mode 100644
index 0000000..950edf2
Binary files /dev/null and b/css/images/marker-icon.png differ
diff --git a/css/images/marker-shadow.png b/css/images/marker-shadow.png
new file mode 100644
index 0000000..9fd2979
Binary files /dev/null and b/css/images/marker-shadow.png differ
diff --git a/css/leaflet.css b/css/leaflet.css
new file mode 100644
index 0000000..017fa0e
--- /dev/null
+++ b/css/leaflet.css
@@ -0,0 +1,640 @@
+/* required styles */
+
+.leaflet-pane,
+.leaflet-tile,
+.leaflet-marker-icon,
+.leaflet-marker-shadow,
+.leaflet-tile-container,
+.leaflet-pane > svg,
+.leaflet-pane > canvas,
+.leaflet-zoom-box,
+.leaflet-image-layer,
+.leaflet-layer {
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+.leaflet-container {
+ overflow: hidden;
+ }
+.leaflet-tile,
+.leaflet-marker-icon,
+.leaflet-marker-shadow {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ user-select: none;
+ -webkit-user-drag: none;
+ }
+/* Prevents IE11 from highlighting tiles in blue */
+.leaflet-tile::selection {
+ background: transparent;
+}
+/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
+.leaflet-safari .leaflet-tile {
+ image-rendering: -webkit-optimize-contrast;
+ }
+/* hack that prevents hw layers "stretching" when loading new tiles */
+.leaflet-safari .leaflet-tile-container {
+ width: 1600px;
+ height: 1600px;
+ -webkit-transform-origin: 0 0;
+ }
+.leaflet-marker-icon,
+.leaflet-marker-shadow {
+ display: block;
+ }
+/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
+/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
+.leaflet-container .leaflet-overlay-pane svg,
+.leaflet-container .leaflet-marker-pane img,
+.leaflet-container .leaflet-shadow-pane img,
+.leaflet-container .leaflet-tile-pane img,
+.leaflet-container img.leaflet-image-layer,
+.leaflet-container .leaflet-tile {
+ max-width: none !important;
+ max-height: none !important;
+ }
+
+.leaflet-container.leaflet-touch-zoom {
+ -ms-touch-action: pan-x pan-y;
+ touch-action: pan-x pan-y;
+ }
+.leaflet-container.leaflet-touch-drag {
+ -ms-touch-action: pinch-zoom;
+ /* Fallback for FF which doesn't support pinch-zoom */
+ touch-action: none;
+ touch-action: pinch-zoom;
+}
+.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
+ -ms-touch-action: none;
+ touch-action: none;
+}
+.leaflet-container {
+ -webkit-tap-highlight-color: transparent;
+}
+.leaflet-container a {
+ -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
+}
+.leaflet-tile {
+ filter: inherit;
+ visibility: hidden;
+ }
+.leaflet-tile-loaded {
+ visibility: inherit;
+ }
+.leaflet-zoom-box {
+ width: 0;
+ height: 0;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ z-index: 800;
+ }
+/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
+.leaflet-overlay-pane svg {
+ -moz-user-select: none;
+ }
+
+.leaflet-pane { z-index: 400; }
+
+.leaflet-tile-pane { z-index: 200; }
+.leaflet-overlay-pane { z-index: 400; }
+.leaflet-shadow-pane { z-index: 500; }
+.leaflet-marker-pane { z-index: 600; }
+.leaflet-tooltip-pane { z-index: 650; }
+.leaflet-popup-pane { z-index: 700; }
+
+.leaflet-map-pane canvas { z-index: 100; }
+.leaflet-map-pane svg { z-index: 200; }
+
+.leaflet-vml-shape {
+ width: 1px;
+ height: 1px;
+ }
+.lvml {
+ behavior: url(#default#VML);
+ display: inline-block;
+ position: absolute;
+ }
+
+
+/* control positioning */
+
+.leaflet-control {
+ position: relative;
+ z-index: 800;
+ pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
+ pointer-events: auto;
+ }
+.leaflet-top,
+.leaflet-bottom {
+ position: absolute;
+ z-index: 1000;
+ pointer-events: none;
+ }
+.leaflet-top {
+ top: 0;
+ }
+.leaflet-right {
+ right: 0;
+ }
+.leaflet-bottom {
+ bottom: 0;
+ }
+.leaflet-left {
+ left: 0;
+ }
+.leaflet-control {
+ float: left;
+ clear: both;
+ }
+.leaflet-right .leaflet-control {
+ float: right;
+ }
+.leaflet-top .leaflet-control {
+ margin-top: 10px;
+ }
+.leaflet-bottom .leaflet-control {
+ margin-bottom: 10px;
+ }
+.leaflet-left .leaflet-control {
+ margin-left: 10px;
+ }
+.leaflet-right .leaflet-control {
+ margin-right: 10px;
+ }
+
+
+/* zoom and fade animations */
+
+.leaflet-fade-anim .leaflet-tile {
+ will-change: opacity;
+ }
+.leaflet-fade-anim .leaflet-popup {
+ opacity: 0;
+ -webkit-transition: opacity 0.2s linear;
+ -moz-transition: opacity 0.2s linear;
+ transition: opacity 0.2s linear;
+ }
+.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
+ opacity: 1;
+ }
+.leaflet-zoom-animated {
+ -webkit-transform-origin: 0 0;
+ -ms-transform-origin: 0 0;
+ transform-origin: 0 0;
+ }
+.leaflet-zoom-anim .leaflet-zoom-animated {
+ will-change: transform;
+ }
+.leaflet-zoom-anim .leaflet-zoom-animated {
+ -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
+ -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
+ transition: transform 0.25s cubic-bezier(0,0,0.25,1);
+ }
+.leaflet-zoom-anim .leaflet-tile,
+.leaflet-pan-anim .leaflet-tile {
+ -webkit-transition: none;
+ -moz-transition: none;
+ transition: none;
+ }
+
+.leaflet-zoom-anim .leaflet-zoom-hide {
+ visibility: hidden;
+ }
+
+
+/* cursors */
+
+.leaflet-interactive {
+ cursor: pointer;
+ }
+.leaflet-grab {
+ cursor: -webkit-grab;
+ cursor: -moz-grab;
+ cursor: grab;
+ }
+.leaflet-crosshair,
+.leaflet-crosshair .leaflet-interactive {
+ cursor: crosshair;
+ }
+.leaflet-popup-pane,
+.leaflet-control {
+ cursor: auto;
+ }
+.leaflet-dragging .leaflet-grab,
+.leaflet-dragging .leaflet-grab .leaflet-interactive,
+.leaflet-dragging .leaflet-marker-draggable {
+ cursor: move;
+ cursor: -webkit-grabbing;
+ cursor: -moz-grabbing;
+ cursor: grabbing;
+ }
+
+/* marker & overlays interactivity */
+.leaflet-marker-icon,
+.leaflet-marker-shadow,
+.leaflet-image-layer,
+.leaflet-pane > svg path,
+.leaflet-tile-container {
+ pointer-events: none;
+ }
+
+.leaflet-marker-icon.leaflet-interactive,
+.leaflet-image-layer.leaflet-interactive,
+.leaflet-pane > svg path.leaflet-interactive,
+svg.leaflet-image-layer.leaflet-interactive path {
+ pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
+ pointer-events: auto;
+ }
+
+/* visual tweaks */
+
+.leaflet-container {
+ background: #ddd;
+ outline: 0;
+ }
+.leaflet-container a {
+ color: #0078A8;
+ }
+.leaflet-container a.leaflet-active {
+ outline: 2px solid orange;
+ }
+.leaflet-zoom-box {
+ border: 2px dotted #38f;
+ background: rgba(255,255,255,0.5);
+ }
+
+
+/* general typography */
+.leaflet-container {
+ font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
+ }
+
+
+/* general toolbar styles */
+
+.leaflet-bar {
+ box-shadow: 0 1px 5px rgba(0,0,0,0.65);
+ border-radius: 4px;
+ }
+.leaflet-bar a,
+.leaflet-bar a:hover {
+ background-color: #fff;
+ border-bottom: 1px solid #ccc;
+ width: 26px;
+ height: 26px;
+ line-height: 26px;
+ display: block;
+ text-align: center;
+ text-decoration: none;
+ color: black;
+ }
+.leaflet-bar a,
+.leaflet-control-layers-toggle {
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ display: block;
+ }
+.leaflet-bar a:hover {
+ background-color: #f4f4f4;
+ }
+.leaflet-bar a:first-child {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ }
+.leaflet-bar a:last-child {
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ border-bottom: none;
+ }
+.leaflet-bar a.leaflet-disabled {
+ cursor: default;
+ background-color: #f4f4f4;
+ color: #bbb;
+ }
+
+.leaflet-touch .leaflet-bar a {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ }
+.leaflet-touch .leaflet-bar a:first-child {
+ border-top-left-radius: 2px;
+ border-top-right-radius: 2px;
+ }
+.leaflet-touch .leaflet-bar a:last-child {
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+ }
+
+/* zoom control */
+
+.leaflet-control-zoom-in,
+.leaflet-control-zoom-out {
+ font: bold 18px 'Lucida Console', Monaco, monospace;
+ text-indent: 1px;
+ }
+
+.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
+ font-size: 22px;
+ }
+
+
+/* layers control */
+
+.leaflet-control-layers {
+ box-shadow: 0 1px 5px rgba(0,0,0,0.4);
+ background: #fff;
+ border-radius: 5px;
+ }
+.leaflet-control-layers-toggle {
+ background-image: url(images/layers.png);
+ width: 36px;
+ height: 36px;
+ }
+.leaflet-retina .leaflet-control-layers-toggle {
+ background-image: url(images/layers-2x.png);
+ background-size: 26px 26px;
+ }
+.leaflet-touch .leaflet-control-layers-toggle {
+ width: 44px;
+ height: 44px;
+ }
+.leaflet-control-layers .leaflet-control-layers-list,
+.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
+ display: none;
+ }
+.leaflet-control-layers-expanded .leaflet-control-layers-list {
+ display: block;
+ position: relative;
+ }
+.leaflet-control-layers-expanded {
+ padding: 6px 10px 6px 6px;
+ color: #333;
+ background: #fff;
+ }
+.leaflet-control-layers-scrollbar {
+ overflow-y: scroll;
+ overflow-x: hidden;
+ padding-right: 5px;
+ }
+.leaflet-control-layers-selector {
+ margin-top: 2px;
+ position: relative;
+ top: 1px;
+ }
+.leaflet-control-layers label {
+ display: block;
+ }
+.leaflet-control-layers-separator {
+ height: 0;
+ border-top: 1px solid #ddd;
+ margin: 5px -10px 5px -6px;
+ }
+
+/* Default icon URLs */
+.leaflet-default-icon-path {
+ background-image: url(images/marker-icon.png);
+ }
+
+
+/* attribution and scale controls */
+
+.leaflet-container .leaflet-control-attribution {
+ background: #fff;
+ background: rgba(255, 255, 255, 0.7);
+ margin: 0;
+ }
+.leaflet-control-attribution,
+.leaflet-control-scale-line {
+ padding: 0 5px;
+ color: #333;
+ }
+.leaflet-control-attribution a {
+ text-decoration: none;
+ }
+.leaflet-control-attribution a:hover {
+ text-decoration: underline;
+ }
+.leaflet-container .leaflet-control-attribution,
+.leaflet-container .leaflet-control-scale {
+ font-size: 11px;
+ }
+.leaflet-left .leaflet-control-scale {
+ margin-left: 5px;
+ }
+.leaflet-bottom .leaflet-control-scale {
+ margin-bottom: 5px;
+ }
+.leaflet-control-scale-line {
+ border: 2px solid #777;
+ border-top: none;
+ line-height: 1.1;
+ padding: 2px 5px 1px;
+ font-size: 11px;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+
+ background: #fff;
+ background: rgba(255, 255, 255, 0.5);
+ }
+.leaflet-control-scale-line:not(:first-child) {
+ border-top: 2px solid #777;
+ border-bottom: none;
+ margin-top: -2px;
+ }
+.leaflet-control-scale-line:not(:first-child):not(:last-child) {
+ border-bottom: 2px solid #777;
+ }
+
+.leaflet-touch .leaflet-control-attribution,
+.leaflet-touch .leaflet-control-layers,
+.leaflet-touch .leaflet-bar {
+ box-shadow: none;
+ }
+.leaflet-touch .leaflet-control-layers,
+.leaflet-touch .leaflet-bar {
+ border: 2px solid rgba(0,0,0,0.2);
+ background-clip: padding-box;
+ }
+
+
+/* popup */
+
+.leaflet-popup {
+ position: absolute;
+ text-align: center;
+ margin-bottom: 20px;
+ }
+.leaflet-popup-content-wrapper {
+ padding: 1px;
+ text-align: left;
+ border-radius: 12px;
+ }
+.leaflet-popup-content {
+ margin: 13px 19px;
+ line-height: 1.4;
+ }
+.leaflet-popup-content p {
+ margin: 18px 0;
+ }
+.leaflet-popup-tip-container {
+ width: 40px;
+ height: 20px;
+ position: absolute;
+ left: 50%;
+ margin-left: -20px;
+ overflow: hidden;
+ pointer-events: none;
+ }
+.leaflet-popup-tip {
+ width: 17px;
+ height: 17px;
+ padding: 1px;
+
+ margin: -10px auto 0;
+
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ transform: rotate(45deg);
+ }
+.leaflet-popup-content-wrapper,
+.leaflet-popup-tip {
+ background: white;
+ color: #333;
+ box-shadow: 0 3px 14px rgba(0,0,0,0.4);
+ }
+.leaflet-container a.leaflet-popup-close-button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 4px 4px 0 0;
+ border: none;
+ text-align: center;
+ width: 18px;
+ height: 14px;
+ font: 16px/14px Tahoma, Verdana, sans-serif;
+ color: #c3c3c3;
+ text-decoration: none;
+ font-weight: bold;
+ background: transparent;
+ }
+.leaflet-container a.leaflet-popup-close-button:hover {
+ color: #999;
+ }
+.leaflet-popup-scrolled {
+ overflow: auto;
+ border-bottom: 1px solid #ddd;
+ border-top: 1px solid #ddd;
+ }
+
+.leaflet-oldie .leaflet-popup-content-wrapper {
+ -ms-zoom: 1;
+ }
+.leaflet-oldie .leaflet-popup-tip {
+ width: 24px;
+ margin: 0 auto;
+
+ -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
+ filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
+ }
+.leaflet-oldie .leaflet-popup-tip-container {
+ margin-top: -1px;
+ }
+
+.leaflet-oldie .leaflet-control-zoom,
+.leaflet-oldie .leaflet-control-layers,
+.leaflet-oldie .leaflet-popup-content-wrapper,
+.leaflet-oldie .leaflet-popup-tip {
+ border: 1px solid #999;
+ }
+
+
+/* div icon */
+
+.leaflet-div-icon {
+ background: #fff;
+ border: 1px solid #666;
+ }
+
+
+/* Tooltip */
+/* Base styles for the element that has a tooltip */
+.leaflet-tooltip {
+ position: absolute;
+ padding: 6px;
+ background-color: #fff;
+ border: 1px solid #fff;
+ border-radius: 3px;
+ color: #222;
+ white-space: nowrap;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ pointer-events: none;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.4);
+ }
+.leaflet-tooltip.leaflet-clickable {
+ cursor: pointer;
+ pointer-events: auto;
+ }
+.leaflet-tooltip-top:before,
+.leaflet-tooltip-bottom:before,
+.leaflet-tooltip-left:before,
+.leaflet-tooltip-right:before {
+ position: absolute;
+ pointer-events: none;
+ border: 6px solid transparent;
+ background: transparent;
+ content: "";
+ }
+
+/* Directions */
+
+.leaflet-tooltip-bottom {
+ margin-top: 6px;
+}
+.leaflet-tooltip-top {
+ margin-top: -6px;
+}
+.leaflet-tooltip-bottom:before,
+.leaflet-tooltip-top:before {
+ left: 50%;
+ margin-left: -6px;
+ }
+.leaflet-tooltip-top:before {
+ bottom: 0;
+ margin-bottom: -12px;
+ border-top-color: #fff;
+ }
+.leaflet-tooltip-bottom:before {
+ top: 0;
+ margin-top: -12px;
+ margin-left: -6px;
+ border-bottom-color: #fff;
+ }
+.leaflet-tooltip-left {
+ margin-left: -6px;
+}
+.leaflet-tooltip-right {
+ margin-left: 6px;
+}
+.leaflet-tooltip-left:before,
+.leaflet-tooltip-right:before {
+ top: 50%;
+ margin-top: -6px;
+ }
+.leaflet-tooltip-left:before {
+ right: 0;
+ margin-right: -12px;
+ border-left-color: #fff;
+ }
+.leaflet-tooltip-right:before {
+ left: 0;
+ margin-left: -12px;
+ border-right-color: #fff;
+ }
diff --git a/css/leaflet.fullscreen.css b/css/leaflet.fullscreen.css
new file mode 100644
index 0000000..0a7c123
--- /dev/null
+++ b/css/leaflet.fullscreen.css
@@ -0,0 +1,52 @@
+.leaflet-control-fullscreen a {
+ background:#fff url(fullscreen.png) no-repeat 0 0;
+ background-size:26px 52px;
+ }
+ .leaflet-touch .leaflet-control-fullscreen a {
+ background-position: 2px 2px;
+ }
+ .leaflet-fullscreen-on .leaflet-control-fullscreen a {
+ background-position:0 -26px;
+ }
+ .leaflet-touch.leaflet-fullscreen-on .leaflet-control-fullscreen a {
+ background-position: 2px -24px;
+ }
+
+@media (orientation: landscape) {
+ .leaflet-control-fullscreen {
+ position:relative;
+ top:-25px;
+ }
+ .leaflet-fullscreen-on .leaflet-control-fullscreen {
+ position:relative;
+ top:0px;
+ }
+}
+
+
+/* Do not combine these two rules; IE will break. */
+.leaflet-container:-webkit-full-screen {
+ width:100%!important;
+ height:100%!important;
+ }
+.leaflet-container.leaflet-fullscreen-on {
+ width:100%!important;
+ height:100%!important;
+ }
+
+.leaflet-pseudo-fullscreen {
+ position:fixed!important;
+ width:100%!important;
+ height:100%!important;
+ top:0!important;
+ left:0!important;
+ z-index:99999;
+ }
+
+@media
+ (-webkit-min-device-pixel-ratio:2),
+ (min-resolution:192dpi) {
+ .leaflet-control-fullscreen a {
+ background-image:url(fullscreen@2x.png);
+ }
+ }
diff --git a/css/main.css b/css/main.css
index 64a676d..28ef1da 100644
--- a/css/main.css
+++ b/css/main.css
@@ -150,17 +150,14 @@ body {
background: #00A3D3;
}
#loading img {
- width: 350px;
- height: 250px;
-}
-#loading > div {
position: absolute;
- top: 50%;
+ display: block;
+ width: 80vw;
+ max-width: 500px;
left: 50%;
- width: 350px;
- height: 250px;
- margin-top: -175px;
- margin-left: -125px;
+ top: 50%;
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
}
#loading .bar {
position: relative;
@@ -179,7 +176,7 @@ body {
header {
position: fixed;
top: 0;
- left; 0;
+ left: 0;
padding: 0;
margin: 0;
height: 50px;
@@ -326,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%;
@@ -418,6 +412,7 @@ header .search form input[type='submit'] {
#main .row .data .vbutton {
position: absolute;
background-color: #fff;
+ width: 25px !important;
right: 5px;
top: 150px;
padding-left: 3px;
@@ -427,6 +422,23 @@ header .search form input[type='submit'] {
border: 1px solid #ccc;
cursor: pointer;
z-index: 5;
+ text-align: center;
+}
+
+#main .row .data .sbutton {
+ position: absolute;
+ background-color: #fff;
+ width: 25px !important;
+ right: 5px;
+ top: 170px;
+ padding-left: 3px;
+ padding-right: 3px;
+ font-size: 10px;
+ border-radius: 5px;
+ border: 1px solid #ccc;
+ cursor: pointer;
+ z-index: 5;
+ text-align: center;
}
#main .row .data .vbutton.active {
@@ -439,15 +451,10 @@ header .search form input[type='submit'] {
border: 1px solid #5E5E5E;
}
-#main .portrait .row .data .vbutton {
- display: none;
-}
-
#main .row .data img {
position: absolute;
z-index: 2;
- bottom: 40%;
- right: 30%;
+ right: 35%;
opacity: 0.6;
width: 46px;
height: 84px;
@@ -737,6 +744,16 @@ header .search form input[type='submit'] {
display: none;
}
+.leaflet-tooltip.serialtooltip {
+ background-color: transparent;
+ border: 0px;
+ box-shadow: none;
+ font-size: 12px;
+ font-weight: bold;
+ font-family: 'Roboto';
+ text-shadow: -1px 0 white, 0 1px white, 1px 0 white, 0 -1px white;
+}
+
@media only screen and (min-width: 900px) {
}
@@ -814,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 {
@@ -850,13 +867,13 @@ header .search form input[type='submit'] {
}
#main .data .left {
float: left;
- width: 65%;
+ width: 55%;
padding-left: 5px;
}
#main .data .right {
float: right;
padding-right: 10px;
- width: 25%;
+ width: 30%;
}
#main .data dl > dt {
color: #000;
diff --git a/embed-preview.html b/embed-preview.html
deleted file mode 100644
index ed7a94e..0000000
--- a/embed-preview.html
+++ /dev/null
@@ -1,263 +0,0 @@
-
-
- Preview of embedded habhub tracker
-
-
-
-
-
-
-
-
-
-
-
diff --git a/img/icons/icon_x192.png b/img/icons/icon_x192.png
new file mode 100644
index 0000000..618ae3a
Binary files /dev/null and b/img/icons/icon_x192.png differ
diff --git a/img/icons/icon_x512.png b/img/icons/icon_x512.png
new file mode 100644
index 0000000..9654aad
Binary files /dev/null and b/img/icons/icon_x512.png differ
diff --git a/img/icons/maskable_icon_x128.png b/img/icons/maskable_icon_x128.png
new file mode 100644
index 0000000..ed395e1
Binary files /dev/null and b/img/icons/maskable_icon_x128.png differ
diff --git a/img/icons/maskable_icon_x192.png b/img/icons/maskable_icon_x192.png
new file mode 100644
index 0000000..1ec5586
Binary files /dev/null and b/img/icons/maskable_icon_x192.png differ
diff --git a/img/icons/maskable_icon_x384.png b/img/icons/maskable_icon_x384.png
new file mode 100644
index 0000000..ef558c9
Binary files /dev/null and b/img/icons/maskable_icon_x384.png differ
diff --git a/img/icons/maskable_icon_x48.png b/img/icons/maskable_icon_x48.png
new file mode 100644
index 0000000..56ae4a7
Binary files /dev/null and b/img/icons/maskable_icon_x48.png differ
diff --git a/img/icons/maskable_icon_x512.png b/img/icons/maskable_icon_x512.png
new file mode 100644
index 0000000..f00d755
Binary files /dev/null and b/img/icons/maskable_icon_x512.png differ
diff --git a/img/icons/maskable_icon_x72.png b/img/icons/maskable_icon_x72.png
new file mode 100644
index 0000000..1388186
Binary files /dev/null and b/img/icons/maskable_icon_x72.png differ
diff --git a/img/icons/maskable_icon_x96.png b/img/icons/maskable_icon_x96.png
new file mode 100644
index 0000000..febd7c0
Binary files /dev/null and b/img/icons/maskable_icon_x96.png differ
diff --git a/img/icons/nyan_icon_x192.png b/img/icons/nyan_icon_x192.png
new file mode 100644
index 0000000..5514673
Binary files /dev/null and b/img/icons/nyan_icon_x192.png differ
diff --git a/img/icons/nyan_icon_x512.png b/img/icons/nyan_icon_x512.png
new file mode 100644
index 0000000..5eaeecb
Binary files /dev/null and b/img/icons/nyan_icon_x512.png differ
diff --git a/img/markers/antenna-green-dark.png b/img/markers/antenna-green-dark.png
new file mode 100644
index 0000000..7449eed
Binary files /dev/null and b/img/markers/antenna-green-dark.png differ
diff --git a/img/screenshots/screenshot1.png b/img/screenshots/screenshot1.png
new file mode 100644
index 0000000..bb52e2c
Binary files /dev/null and b/img/screenshots/screenshot1.png differ
diff --git a/img/screenshots/screenshot2.png b/img/screenshots/screenshot2.png
new file mode 100644
index 0000000..2c88ffe
Binary files /dev/null and b/img/screenshots/screenshot2.png differ
diff --git a/img/screenshots/screenshot3.png b/img/screenshots/screenshot3.png
new file mode 100644
index 0000000..b3b6031
Binary files /dev/null and b/img/screenshots/screenshot3.png differ
diff --git a/index.html b/index.html
index 746e5e3..84eb567 100644
--- a/index.html
+++ b/index.html
@@ -4,28 +4,24 @@
SondeHub Tracker
-
+
-
+
+
-
-
+
+
+
@@ -77,52 +73,46 @@ Welcome
Radiosondes?
To learn more check out our
-
LCA video .
+
LCA video .
How do I receive?
Set up a receiver station using
-
auto_rx .
+
auto_rx or
rdzTTGOsonde .
-
Note that you must be running at least v1.5.1 to show up on Sondehub v2!
Recovered a Sonde?
Click the 'car' icon on the top-right to submit a recovery notification.
Support Us!
- Google Maps and AWS hosting unfortunately does not come cheap. If you're seeing a greyed out map, that's because we've exceeded our free Google Maps page loads.
- If you use SondeHub regularly, please consider
supporting us on Patreon , or with a
donation on Paypal .
+ AWS hosting unfortunately does not come cheap.
+ If you use SondeHub regularly, please consider
supporting us on Patreon , or with a
donation on Paypal .
Amateur HAB Launches?
- You can find Amateur High-Altitude Balloon launches on the
HabHub Tracker .
+ You can find Amateur High-Altitude Balloon launches on the
HabHub Tracker .
-
SondeHub Status Page
- You can find the status of the SondeHub Database on the
SondeHub Status Page .
+
SondeHub Status Pages
+ You can find the status of the SondeHub Database on the
SondeHub Dashboard .
+ You can view outages of the SondeHub Database at
SondeHub Status .
+
+
Info
+ This site uses data from the
SondeHub v2 database, which will remove the radiosonde
+ load from the Habitat tracking database.
+
+
Chase Cars
+ 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
Chasemapper or
rdzTTGOsonde .
-
- Under Beta!
-
- Welcome to the new SondeHub Tracker v2!
-
- This site uses data from the SondeHub v2 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 serial and type are still in-progress.
-
- 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 Chasemapper .
-
- Please be patient as we work to build up the feature set, and expect some bugs!
-
Contribute
Did you know the tracker is open-source? Check it out on
- github/sondehub-tracker .
+ github/sondehub-tracker .
Bug reports, suggestions and pull requests are welcome.
-
+
A huge thanks to RGP for developing the mobile tracker that this site is based on.
-
- You can also find us on IRC in #highaltitude at libera.chat .
+
+ You can also find us on IRC in #highaltitude at libera.chat .
@@ -193,6 +183,13 @@ Settings
+
Overlays
@@ -205,26 +202,14 @@
Overlays
Other
-
Availability offline
-
-
-
-
-
-
-
Mobile station
-
-
-
- Chase car equipped with radio receiver
-
-
-
Force check for new version
+
Force check for new version
@@ -247,7 +232,7 @@
Weather
-
Here you can access various weather overlays. This an experimental feature . Mobile users be aware that this can quickly eat your data allowance.
+
Here you can access various weather overlays.
@@ -266,7 +251,7 @@
Chase car mode
- Notice: If you enable this, your location will be uploaded to habitat; making it publicly visible on the map.
+ Notice: If you enable this, your location will be uploaded to SondeHub; making it publicly visible on the map.
@@ -374,34 +359,24 @@
Report Recovery
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+