diff --git a/.gitignore b/.gitignore index 25ab2bc..1708808 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ *.swp *.pyc *.log -js/mobile.js -js/init_plot.js -css/mobile.css -cache.manifest +/index.html +/service-worker.js +/js/version.json tiles/ diff --git a/.htaccess b/.htaccess deleted file mode 100644 index 6fcc26d..0000000 --- a/.htaccess +++ /dev/null @@ -1,11 +0,0 @@ - - SetOutputFilter DEFLATE - - -AddType text/cache-manifest .manifest -AddType text/cache-manifest .appcache - -AddType application/x-font-woff .woff -AddType application/x-font-ttf .ttf -AddType application/vnd.ms-fontobject .eot -AddType image/svg+xml .svg diff --git a/DEVELOPER_README.md b/DEVELOPER_README.md new file mode 100644 index 0000000..6f38d04 --- /dev/null +++ b/DEVELOPER_README.md @@ -0,0 +1,9 @@ +# Getting started + +To get a copy of the code and run a test web server: + +1. [Fork the repository](https://github.com/projecthorus/sondehub-tracker/fork) by visiting [https://github.com/projecthorus/sondehub-tracker/fork](https://github.com/projecthorus/sondehub-tracker/fork). +2. Clone the repository with your git tool of choice. +3. Run `build.sh` to generate `index.html`, `service-worker.js`, and `js/version.json`. +4. Run `python serve.py` to run a simple web server to (This requires python 3.x) +5. Visit [http://localhost:8000](http://localhost:8000) to view the local version of the server! diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..53107d5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM alpine:latest + +RUN apk add --no-cache python3 sed git + +WORKDIR /app +ADD . . + +RUN sh build.sh + +ENTRYPOINT ["python3", "serve.py"] +EXPOSE 8000 diff --git a/README.md b/README.md index 8da1f65..42427be 100644 --- a/README.md +++ b/README.md @@ -1,68 +1,47 @@ -# Habhub tracker +# SondeHub Tracker -![mobile tracker screenshot](resources/mobiletracker-screencap.png "mobile tracker screenshot") +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 high altitude balloons. Works an desktop and mobile devices. -The habhub tracker is a continuation of [spacenear.us/tracker](http://spacenear.us/tracker). +![mobile tracker screenshot](resources/mobiletracker-screencap.png "mobile tracker screenshot") -Checkout the [Live version](http://habhub.org/mt/) +A webapp for tracking radiosondes. Works an desktop and mobile devices. +The SondeHub tracker is a continuation of the [HabHub Tracker](http://tracker.habhub.org). ## Features -* HAB tracking with [Habitat](http://habitat.habhub.org/) ([@github/ukhas/habitat](https://github.com/ukhas/habitat)) +* Radiosonde Tracking using [SondeHub V2](https://github.com/projecthorus/sondehub-infra/wiki/ElasticSearch-Kibana-access) data. * Telemetry graph for each balloon * 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 -* Run the app natively on `iOS` or with Chrome's 'add to screen' on `Android` +* Map tracker with Leaflet API +* Run the app natively on IOS, Android, or desktop as a Progressive Wep App ### 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. -This is also true for mobile, some build-in browsers may not work. +Any modern browser should be able to run the app. Some features are limited to Chromium based browsers. ## Contribute -Don't hesitate to report any issues, or suggest improvements. Just visit the [issues page](https://github.com/rossengeorgiev/habitat-mobile-tracker/issues). +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) - - $ git clone git://github.com/rossengeorgiev/habitat-mobile-tracker.git + $ git clone https://github.com/projecthorus/sondehub-tracker.git $ ./build.sh + $ python serve.py -For __applicationCache__ to work your server needs to send the correct MIME type. -`.htaccess` for Apache is included. Consult it if you are using different server software. +Visit [http://localhost:8000](http://localhost:8000) to view the local version of the tracker! ## Original design 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..948cde1 100755 --- a/build.sh +++ b/build.sh @@ -1,43 +1,22 @@ #!/bin/bash -# compile stylesheet -echo -n "Compiling CSS... " -cd css -rm -f mobile.css -cat base.css skeleton.css layout.css habitat-font.css main.css > mobile.tmp -java -jar "../tools/yuicompressor-2.4.8.jar" --type=css mobile.tmp > mobile.css -rm -f mobile.tmp -cd .. -echo "Done!" - -#compile javascript -echo -n "Compiling JavaScript... " -cd js -rm -f mobile.js init_plot.js -# precompiled libs -cat jquery* >> mobile.js +set -e VERSION="`git rev-parse --short HEAD`" +BUILD_DATE="`date -u +%Y-%m-%dT%H:%M:%SZ`" -# 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 - -#compile plot lib and config -java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge _jquery.flot.js >> init_plot.js -java -jar "../tools/yuicompressor-2.4.8.jar" --type=js --disable-optimizations --nomunge plot_config.js >> init_plot.js - -cd .. +# create version check file +echo -n "Generating js/version.json... " +echo "{\"build_date\": \"$BUILD_DATE\", \"version\": \"$VERSION\", \"refresh\": 86400}" > js/version.json echo "Done!" -echo -n "Generate cache.manifest..." - -sed "s/^\(# version\) .*$/\1 $VERSION `date +%s`/" cache.manifest-dev > cache.manifest +# cache fixes +echo -n "Generating index.html... " +sed -e "s/{VER}/$VERSION/" -e "s/{BUILD_DATE}/$BUILD_DATE/" index.template.html > index.html +echo "Done!" +echo -n "Generating service-worker.js... " +sed -e "s/{VER}/$VERSION/" service-worker.template.js > service-worker.js echo "Done!" -echo "Build version: $VERSION" +echo "Build version: $VERSION Build date: $BUILD_DATE" diff --git a/cache.manifest-dev b/cache.manifest-dev deleted file mode 100644 index 701d56c..0000000 --- a/cache.manifest-dev +++ /dev/null @@ -1,75 +0,0 @@ -CACHE MANIFEST -# version {VERSION} - -# gogole maps files -http://maps.google.com/maps/api/js?v=3.22&sensor=false&libraries=map,common,controls,util,marker,onion,kml,ga,infowindow,stats,poly,overlay,weather,weather_impl,geometry&language=en_us&key=AIzaSyCOqkcNey4CCyG4X0X5qxHAhCgD8g5DwXg -http://fonts.googleapis.com/css?family=Roboto:300,400,500,700 -http://maps.gstatic.com/mapfiles/undo_poly.png -http://maps.gstatic.com/mapfiles/mv/imgs8.png -http://maps.gstatic.com/mapfiles/transparent.png -http://maps.gstatic.com/mapfiles/api-3/images/mapcnt3.png -http://maps.gstatic.com/mapfiles/api-3/images/google_white2_hdpi.png -http://maps.gstatic.com/mapfiles/api-3/images/google_white2.png -http://maps.gstatic.com/mapfiles/openhand_8_8.cur - -# app files -img/closedhand.cur -img/openhand.cur -img/logo.png -img/blank.png -img/marker-you.png -img/apple-touch-icon.png -img/markers/hab_nyan.gif -img/markers/nyan.gif -img/markers/antenna-green.png -img/markers/balloon-red.png -img/markers/balloon-blue.png -img/markers/balloon-green.png -img/markers/balloon-purple.png -img/markers/balloon-cyan.png -img/markers/balloon-orange.png -img/markers/balloon-yellow.png -img/markers/balloon-rpi.png -img/markers/car-blue.png -img/markers/car-green.png -img/markers/car-red.png -img/markers/car-yellow.png -img/markers/parachute-blue.png -img/markers/parachute-green.png -img/markers/parachute-red.png -img/markers/parachute-yellow.png -img/markers/parachute-cyan.png -img/markers/parachute-orange.png -img/markers/parachute-purple.png -img/markers/parachute-rpi.png -img/markers/payload-blue.png -img/markers/payload-cyan.png -img/markers/payload-green.png -img/markers/payload-orange.png -img/markers/payload-purple.png -img/markers/payload-red.png -img/markers/payload-yellow.png -img/markers/payload-rpi.png -img/markers/shadow.png -img/markers/target-blue.png -img/markers/target-cyan.png -img/markers/target-green.png -img/markers/target-orange.png -img/markers/target-purple.png -img/markers/target-red.png -img/markers/target-yellow.png -img/hab-spinner.gif -css/mobile.css -js/mobile.js -js/init_plot.js -font/HabitatFont.eot -font/HabitatFont.svg -font/HabitatFont.ttf -font/HabitatFont.woff -font/Roboto-regular.woff - -NETWORK: -* - -FALLBACK: -/ index.html diff --git a/css/base.css b/css/base.css index 60e5ea3..016fe3e 100644 --- a/css/base.css +++ b/css/base.css @@ -29,262 +29,572 @@ /* #Reset & Basics (Inspired by E. Meyers) ================================================== */ - html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; } - sup { - font-size: smaller; - vertical-align: +0.4em; } - sub { - font-size: smaller; - vertical-align: -0.25em; } - article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { - display: block; } - body { - line-height: 1; } - ol, ul { - list-style: none; } - blockquote, q { - quotes: none; } - blockquote:before, blockquote:after, - q:before, q:after { - content: ''; - content: none; } - table { - border-collapse: collapse; - border-spacing: 0; } +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} + +sup { + font-size: smaller; + vertical-align: +0.4em; +} + +sub { + font-size: smaller; + vertical-align: -0.25em; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} + +body { + line-height: 1; +} + +ol, +ul { + list-style: none; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} /* #Basic Styles ================================================== */ - body { - background: #fff; - font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #666; - -webkit-font-smoothing: antialiased; /* Fix for webkit rendering */ - -webkit-text-size-adjust: 100%; - } +body { + background: #fff; + font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #666; + -webkit-font-smoothing: antialiased; + /* Fix for webkit rendering */ + -webkit-text-size-adjust: 100%; +} /* #Typography ================================================== */ - h1, h2, h3, h4, h5, h6 { - font-weight: normal; } - h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; } - h1 { font-size: 46px; line-height: 50px; margin-bottom: 14px;} - h2 { font-size: 35px; line-height: 40px; margin-bottom: 10px; } - h3 { font-size: 28px; line-height: 34px; margin-bottom: 8px; } - h4 { font-size: 21px; line-height: 30px; margin-bottom: 4px; } - h5 { font-size: 17px; line-height: 24px; } - h6 { font-size: 14px; line-height: 21px; } - .subheader { color: #777; } - - p { margin: 0 0 20px 0; } - p img { margin: 0; } - p.lead { font-size: 21px; line-height: 27px; color: #777; } - - em { font-style: italic; } - strong { font-weight: bold; color: #333; } - b { font-weight: bold; } - small { font-size: 80%; } +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: normal; +} + +h1 a, +h2 a, +h3 a, +h4 a, +h5 a, +h6 a { + font-weight: inherit; +} + +h1 { + font-size: 46px; + line-height: 50px; + margin-bottom: 14px; +} + +h2 { + font-size: 35px; + line-height: 40px; + margin-bottom: 10px; +} + +h3 { + font-size: 28px; + line-height: 34px; + margin-bottom: 8px; +} + +h4 { + font-size: 21px; + line-height: 30px; + margin-bottom: 4px; +} + +h5 { + font-size: 17px; + line-height: 24px; +} + +h6 { + font-size: 14px; + line-height: 21px; +} + +.subheader { + color: #777; +} + +p { + margin: 0 0 20px 0; +} + +p img { + margin: 0; +} + +p.lead { + font-size: 21px; + line-height: 27px; + color: #777; +} + +em { + font-style: italic; +} + +strong { + font-weight: bold; + color: #333; +} + +b { + font-weight: bold; +} + +small { + font-size: 80%; +} /* Blockquotes */ - blockquote, blockquote p { font-size: 17px; line-height: 24px; color: #777; font-style: italic; } - blockquote { margin: 0 0 20px; padding: 9px 20px 0 19px; border-left: 1px solid #ddd; } - blockquote cite { display: block; font-size: 12px; color: #555; } - blockquote cite:before { content: "\2014 \0020"; } - blockquote cite a, blockquote cite a:visited, blockquote cite a:visited { color: #555; } - - hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 10px 0 30px; height: 0; } +blockquote, +blockquote p { + font-size: 17px; + line-height: 24px; + color: #777; + font-style: italic; +} + +blockquote { + margin: 0 0 20px; + padding: 9px 20px 0 19px; + border-left: 1px solid #ddd; +} + +blockquote cite { + display: block; + font-size: 12px; + color: #555; +} + +blockquote cite:before { + content: "\2014 \0020"; +} + +blockquote cite a, +blockquote cite a:visited, +blockquote cite a:visited { + color: #555; +} + +hr { + border: solid #ddd; + border-width: 1px 0 0; + clear: both; + height: 0; +} /* #Links ================================================== */ - a, a:visited { color: #333; text-decoration: underline; outline: 0; } - a:hover, a:focus { color: #000; } - p a, p a:visited { line-height: inherit; } +a, +a:visited { + color: #333; + text-decoration: underline; + outline: 0; +} + +a:hover, +a:focus { + color: #000; +} + +p a, +p a:visited { + line-height: inherit; +} /* #Lists ================================================== */ - ul, ol { margin-bottom: 20px; } - ul { list-style: none outside; } - ol { list-style: decimal; } - ol, ul.square, ul.circle, ul.disc { margin-left: 30px; } - ul.square { list-style: square outside; } - ul.circle { list-style: circle outside; } - ul.disc { list-style: disc outside; } - ul ul, ul ol, - ol ol, ol ul { margin: 4px 0 5px 30px; font-size: 90%; } - ul ul li, ul ol li, - ol ol li, ol ul li { margin-bottom: 6px; } - li { line-height: 18px; margin-bottom: 12px; } - ul.large li { line-height: 21px; } - li p { line-height: 21px; } +ul, +ol { + margin-bottom: 20px; +} + +ul { + list-style: none outside; +} + +ol { + list-style: decimal; +} + +ol, +ul.square, +ul.circle, +ul.disc { + margin-left: 30px; +} + +ul.square { + list-style: square outside; +} + +ul.circle { + list-style: circle outside; +} + +ul.disc { + list-style: disc outside; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin: 4px 0 5px 30px; + font-size: 90%; +} + +ul ul li, +ul ol li, +ol ol li, +ol ul li { + margin-bottom: 6px; +} + +li { + line-height: 18px; + margin-bottom: 12px; +} + +ul.large li { + line-height: 21px; +} + +li p { + line-height: 21px; +} /* #Images ================================================== */ - img.scale-with-grid { - max-width: 100%; - height: auto; } +img.scale-with-grid { + max-width: 100%; + height: auto; +} /* #Buttons ================================================== */ - .button, - button, - input[type="submit"], - input[type="reset"], - input[type="button"] { - background: #eee; /* Old browsers */ - background: #eee -moz-linear-gradient(top, rgba(255,255,255,.2) 0%, rgba(0,0,0,.2) 100%); /* FF3.6+ */ - background: #eee -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.2)), color-stop(100%,rgba(0,0,0,.2))); /* Chrome,Safari4+ */ - background: #eee -webkit-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Chrome10+,Safari5.1+ */ - background: #eee -o-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Opera11.10+ */ - background: #eee -ms-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* IE10+ */ - background: #eee linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* W3C */ - border: 1px solid #aaa; - border-top: 1px solid #ccc; - border-left: 1px solid #ccc; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - color: #444; - display: inline-block; - font-size: 11px; - font-weight: bold; - text-decoration: none; - text-shadow: 0 1px rgba(255, 255, 255, .75); - cursor: pointer; - margin-bottom: 20px; - line-height: normal; - padding: 8px 10px; - font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; } - - .button:hover, - button:hover, - input[type="submit"]:hover, - input[type="reset"]:hover, - input[type="button"]:hover { - color: #222; - background: #ddd; /* Old browsers */ - background: #ddd -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); /* FF3.6+ */ - background: #ddd -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.3)), color-stop(100%,rgba(0,0,0,.3))); /* Chrome,Safari4+ */ - background: #ddd -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Chrome10+,Safari5.1+ */ - background: #ddd -o-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Opera11.10+ */ - background: #ddd -ms-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* IE10+ */ - background: #ddd linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* W3C */ - border: 1px solid #888; - border-top: 1px solid #aaa; - border-left: 1px solid #aaa; } - - .button:active, - button:active, - input[type="submit"]:active, - input[type="reset"]:active, - input[type="button"]:active { - border: 1px solid #666; - background: #ccc; /* Old browsers */ - background: #ccc -moz-linear-gradient(top, rgba(255,255,255,.35) 0%, rgba(10,10,10,.4) 100%); /* FF3.6+ */ - background: #ccc -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.35)), color-stop(100%,rgba(10,10,10,.4))); /* Chrome,Safari4+ */ - background: #ccc -webkit-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Chrome10+,Safari5.1+ */ - background: #ccc -o-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Opera11.10+ */ - background: #ccc -ms-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* IE10+ */ - background: #ccc linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* W3C */ } - - .button.full-width, - button.full-width, - input[type="submit"].full-width, - input[type="reset"].full-width, - input[type="button"].full-width { - width: 100%; - padding-left: 0 !important; - padding-right: 0 !important; - text-align: center; } - - /* Fix for odd Mozilla border & padding issues */ - button::-moz-focus-inner, - input::-moz-focus-inner { - border: 0; - padding: 0; - } - - .button.disabled, - button.disabled, - input[type="submit"].disabled, - input[type="reset"].disabled, - input[type="button"].disabled { - border: 1px solid #aaa; - color: #aaa; - background: #fff; - } +.button, +button, +input[type="submit"], +input[type="reset"], +input[type="button"] { + background: #eee; + /* Old browsers */ + background: #eee -moz-linear-gradient(top, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .2) 100%); + /* FF3.6+ */ + background: #eee -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, .2)), color-stop(100%, rgba(0, 0, 0, .2))); + /* Chrome,Safari4+ */ + background: #eee -webkit-linear-gradient(top, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .2) 100%); + /* Chrome10+,Safari5.1+ */ + background: #eee -o-linear-gradient(top, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .2) 100%); + /* Opera11.10+ */ + background: #eee -ms-linear-gradient(top, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .2) 100%); + /* IE10+ */ + background: #eee linear-gradient(top, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .2) 100%); + /* W3C */ + border: 1px solid #aaa; + border-top: 1px solid #ccc; + border-left: 1px solid #ccc; + margin-right: 1px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + color: #444; + display: inline-block; + font-size: 11px; + font-weight: bold; + text-decoration: none; + text-shadow: 0 1px rgba(255, 255, 255, .75); + cursor: pointer; + line-height: normal; + padding: 8px 10px; + font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.button:hover, +button:hover, +input[type="submit"]:hover, +input[type="reset"]:hover, +input[type="button"]:hover { + color: #222; + background: #ddd; + /* Old browsers */ + background: #ddd -moz-linear-gradient(top, rgba(255, 255, 255, .3) 0%, rgba(0, 0, 0, .3) 100%); + /* FF3.6+ */ + background: #ddd -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, .3)), color-stop(100%, rgba(0, 0, 0, .3))); + /* Chrome,Safari4+ */ + background: #ddd -webkit-linear-gradient(top, rgba(255, 255, 255, .3) 0%, rgba(0, 0, 0, .3) 100%); + /* Chrome10+,Safari5.1+ */ + background: #ddd -o-linear-gradient(top, rgba(255, 255, 255, .3) 0%, rgba(0, 0, 0, .3) 100%); + /* Opera11.10+ */ + background: #ddd -ms-linear-gradient(top, rgba(255, 255, 255, .3) 0%, rgba(0, 0, 0, .3) 100%); + /* IE10+ */ + background: #ddd linear-gradient(top, rgba(255, 255, 255, .3) 0%, rgba(0, 0, 0, .3) 100%); + /* W3C */ + border: 1px solid #888; + border-top: 1px solid #aaa; + border-left: 1px solid #aaa; +} + +.button:active, +button:active, +input[type="submit"]:active, +input[type="reset"]:active, +input[type="button"]:active { + border: 1px solid #666; + background: #ccc; + /* Old browsers */ + background: #ccc -moz-linear-gradient(top, rgba(255, 255, 255, .35) 0%, rgba(10, 10, 10, .4) 100%); + /* FF3.6+ */ + background: #ccc -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, .35)), color-stop(100%, rgba(10, 10, 10, .4))); + /* Chrome,Safari4+ */ + background: #ccc -webkit-linear-gradient(top, rgba(255, 255, 255, .35) 0%, rgba(10, 10, 10, .4) 100%); + /* Chrome10+,Safari5.1+ */ + background: #ccc -o-linear-gradient(top, rgba(255, 255, 255, .35) 0%, rgba(10, 10, 10, .4) 100%); + /* Opera11.10+ */ + background: #ccc -ms-linear-gradient(top, rgba(255, 255, 255, .35) 0%, rgba(10, 10, 10, .4) 100%); + /* IE10+ */ + background: #ccc linear-gradient(top, rgba(255, 255, 255, .35) 0%, rgba(10, 10, 10, .4) 100%); + /* W3C */ +} + +.button.full-width, +button.full-width, +input[type="submit"].full-width, +input[type="reset"].full-width, +input[type="button"].full-width { + width: 100%; + padding-left: 0 !important; + padding-right: 0 !important; + text-align: center; +} + +/* Fix for odd Mozilla border & padding issues */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +.button.disabled, +button.disabled, +input[type="submit"].disabled, +input[type="reset"].disabled, +input[type="button"].disabled { + border: 1px solid #aaa; + color: #aaa; + background: #fff; +} /* #Forms ================================================== */ - form { - margin-bottom: 20px; } - fieldset { - margin-bottom: 20px; } - input[type="text"], - input[type="password"], - input[type="email"], - textarea, - select { - border: 1px solid #ccc; - padding: 6px 4px; - outline: none; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #888; - margin: 0; - width: 210px; - max-width: 100%; - display: block; - margin-bottom: 20px; - background: #fff; } - select { - padding: 0; } - input[type="text"]:focus, - input[type="password"]:focus, - input[type="email"]:focus, - textarea:focus { - border: 1px solid #aaa; - color: #444; - -moz-box-shadow: 0 0 3px rgba(0,0,0,.2); - -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2); - box-shadow: 0 0 3px rgba(0,0,0,.2); } - textarea { - min-height: 60px; } - label, - legend { - display: block; - font-weight: bold; - font-size: 13px; } - select { - width: 220px; } - input[type="checkbox"] { - display: inline; } - label span, - legend span { - font-weight: normal; - font-size: 13px; - color: #444; } +fieldset { + margin-bottom: 20px; +} + +input[type="text"], +input[type="password"], +input[type="email"], +textarea, +select { + border: 1px solid #ccc; + padding: 6px 4px; + outline: none; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; + color: #888; + margin: 0; + max-width: 100%; + background: #fff; +} + +input[type="text"]:focus, +input[type="password"]:focus, +input[type="email"]:focus, +textarea:focus { + border: 1px solid #aaa; + color: #444; + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, .2); + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .2); + box-shadow: 0 0 3px rgba(0, 0, 0, .2); +} + +textarea { + min-height: 60px; +} + +label, +legend { + display: block; + font-weight: bold; + font-size: 13px; +} + +select { + width: 220px; +} + +input[type="checkbox"] { + display: inline; +} + +label span, +legend span { + font-weight: normal; + font-size: 13px; + color: #444; +} /* #Misc ================================================== */ - .remove-bottom { margin-bottom: 0 !important; } - .half-bottom { margin-bottom: 10px !important; } - .add-bottom { margin-bottom: 20px !important; } - .no-margin { margin: 0 !important; padding: 0; } - - +.remove-bottom { + margin-bottom: 0 !important; +} + +.half-bottom { + margin-bottom: 10px !important; +} + +.add-bottom { + margin-bottom: 20px !important; +} + +.no-margin { + margin: 0 !important; + padding: 0; +} \ No newline at end of file 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/layout.css b/css/layout.css index 2c811f3..8ebfd8f 100644 --- a/css/layout.css +++ b/css/layout.css @@ -80,12 +80,6 @@ header h1{ margin-bottom: 0 !important; } -.form.row select { - /* base.css makes this different to input for some reason. */ - padding: 5px 4px; - width: 220px; -} - .validated input{ float: left; } @@ -170,3 +164,35 @@ header h1{ font-weight: normal; font-style: normal; } */ + +#reload_warning { + position: absolute; + left: 20px; + bottom: 20px; + font-size: 12; + width: 300px; + height: auto; + background-color: white; + z-index: 10; + box-shadow: rgba(9, 20, 66, 0.25) 0px 20px 32px -8px; + border: #ddd solid; + padding: 10px; + border-width: 1px; + display: none; +} + +#banner { + display: none +} +@media only screen and (min-width: 768px){ + #banner { + line-height: 1.1; + font-size: small; + display: block; + margin-left: 300px; + text-align: center; + overflow-y: auto; + font-weight: bold; + height: 100%; + } +} \ No newline at end of file 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 c9df9e4..ee57d7f 100644 --- a/css/main.css +++ b/css/main.css @@ -1,4 +1,4 @@ -/* Habitat Mobile Tracker +/* SondeHub Mobile Tracker * Main style sheet * */ @@ -99,11 +99,13 @@ body { #timebox { top: 7px; right: 5px; + width: 205px; } #lookanglesbox { top: 40px; right: 5px; + width: 205px; } #timebox.past svg path { @@ -150,17 +152,14 @@ body { background: #00A3D3; } #loading img { - width: 198px; - height: 178px; -} -#loading > div { position: absolute; - top: 50%; + display: block; + width: 60vw; + max-width: 300px; left: 50%; - width: 198px; - height: 200px; - margin-top: -100px; - margin-left: -99px; + top: 50%; + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } #loading .bar { position: relative; @@ -179,7 +178,7 @@ body { header { position: fixed; top: 0; - left; 0; + left: 0; padding: 0; margin: 0; height: 50px; @@ -326,9 +325,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 +414,7 @@ header .search form input[type='submit'] { #main .row .data .vbutton { position: absolute; background-color: #fff; + width: 30px !important; right: 5px; top: 150px; padding-left: 3px; @@ -427,6 +424,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: 30px !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 +453,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; @@ -640,6 +649,95 @@ header .search form input[type='submit'] { top: 3px; } +.switchyn { + position: absolute; + right: 0px; + height: 28px; + width: 77px; + border: 1px solid #979797; + border-radius: 20px; + box-shadow: inset 0 1px 3px #BABABA, inset 0 12px 3px 2px rgba(232, 232, 232, 0.5); + cursor: pointer; + overflow: hidden; +} +.switchyn input[type=checkbox] { + display: none; +} +.switchyn:before { + content: ""; + display: block; + height: 28px; + width: 0px; + position: absolute; + border-radius: 20px; + -webkit-box-shadow: inset 0 1px 2px #33B5E5, inset 0 12px 3px 2px #00A3D3; + box-shadow: inset 0 1px 2px #33B5E5, inset 0 12px 3px 2px #00A3D3; + background-color: #33B5E5; +} +.switchyn.on:before { + width: 77px; +} +.switchyn > .thumb { + display: block; + width: 26px; + height: 26px; + position: relative; + top: 0; + z-index: 51; + border: solid 1px #919191; + border-radius: 28px; + box-shadow: inset 0 2px 1px white, inset 0 -2px 1px white; + background-color: #CECECE; + background-image: -webkit-linear-gradient(#CECECE, #FBFBFB); + background-image: -moz-linear-gradient(#CECECE, #FBFBFB); + background-image: -o-linear-gradient(#CECECE, #FBFBFB); + -webkit-transition: all 0.125s ease-in-out; + -moz-transition: all 0.125s ease-in-out; + -ms-transition: all 0.125s ease-in-out; + -o-transition: all 0.125s ease-in-out; + transition: all 0.125s ease-in-out; + -webkit-transform: translate3d(0,0,0); + -moz-transform: translateX(0px); + -ms-transform: translateX(0px); + -o-transform: translateX(0px); + transform: translateX(0px); +} +.switchyn.on > .thumb { + -webkit-transform: translate3d(49px,0,0); + -moz-transform: translateX(49px); + -ms-transform: translateX(49px); + -o-transform: translateX(49px); + transform: translateX(49px); +} +.switchyn:hover > .thumb { + box-shadow: inset 0 2px 1px #fff, inset 0 -2px 1px #fff; + background-image: none; +} +.switchyn > .thumb:before { + font-weight: bold; + font-size: 14px; + color: #fff; + content: "Yes"; + display: block; + height: 14px; + width: 14px; + border: none; + position: absolute; + top: 3px; + left: -30px; +} +.switchyn > .thumb:after { + font-weight: bold; + font-size: 14px; + content: "No"; + display: block; + height: 14px; + width: 14px; + position: absolute; + right: -28px; + top: 3px; +} + #telemetry_graph { display: none; } @@ -648,6 +746,75 @@ 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; +} + +.gold { + filter: drop-shadow(1px 0px 0 gold) drop-shadow(0px 1px 0 gold) drop-shadow(-1px -0px 0 gold) drop-shadow(-0px -1px 0 gold); +} +.silver { + filter: drop-shadow(1px 0px 0 grey) drop-shadow(0px 1px 0 grey) drop-shadow(-1px -0px 0 grey) drop-shadow(-0px -1px 0 grey); +} +.bronze { + filter: drop-shadow(1px 0px 0 chocolate) drop-shadow(0px 1px 0 chocolate) drop-shadow(-1px -0px 0 chocolate) drop-shadow(-0px -1px 0 chocolate); +} +.white { + filter: drop-shadow(1px 0px 0 white) drop-shadow(0px 1px 0 white) drop-shadow(-1px -0px 0 white) drop-shadow(-0px -1px 0 white); +} + +.leaflet-marker-icon .number{ + position: relative; + top: -41px; + font-size: 12px; + width: 25px; + text-align: center; +} + +.leaflet-div-icon { + background: transparent !important; + border: none !important; +} + +/* Tooltip container */ +.tooltip { + position: relative; + display: inline-block; +} + +/* Tooltip text */ +.tooltip .tooltiptext { + visibility: hidden; + width: 120px; + background-color: black; + color: #fff; + text-align: center; + padding: 5px 0; + border-radius: 6px; + text-transform: none !important; + + /* Position the tooltip text - see examples below! */ + position: absolute; + z-index: 1; +} + +/* Show the tooltip text when you mouse over the tooltip container */ +.tooltip:hover .tooltiptext { + visibility: visible; +} + +/* workaround for subpixel lines https://github.com/Leaflet/Leaflet/issues/3575#issuecomment-688644225 */ +.leaflet-tile-container img { + width: 256.5px !important; + height: 256.5px !important; +} + @media only screen and (min-width: 900px) { } @@ -725,7 +892,7 @@ header .search form input[type='submit'] { } #main .data .left { float: left; - width: 160px; + width: 80%; padding-left: 5px; } #main .data dl > dt { @@ -761,13 +928,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/css/skewt.css b/css/skewt.css new file mode 100644 index 0000000..de766e8 --- /dev/null +++ b/css/skewt.css @@ -0,0 +1 @@ +.skew-t{position:relative;padding:0px}.skew-t .fnt{transition:font .3s;font:10px Arial;font-family:-apple-system,system-ui,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',sans-serif}.skew-t .mainsvg{background-color:transparent}.skew-t .controls,.skew-t .range-container{margin-top:10px}.skew-t .controls .buttons,.skew-t .range-container .buttons{flex-grow:1;margin:3px;padding:3px 0 3.2px 0;border-radius:10px;text-align:center;cursor:pointer;line-height:1.1em;background-color:#dcdcdc}.skew-t .controls .buttons.clicked,.skew-t .range-container .buttons.clicked{background-color:#969696;color:white}.skew-t .controls .buttons.units,.skew-t .range-container .buttons.units{flex-grow:0;width:80px}.skew-t .controls .buttons.noclick,.skew-t .range-container .buttons.noclick{cursor:initial}.skew-t .controls .row,.skew-t .range-container .row{display:flex;flex-wrap:wrap}.skew-t .controls{box-sizing:border-box;width:100%;display:flex}.skew-t .controls .values{flex-grow:1;margin:3px;padding:3px;text-align:center;border-radius:10px;border:1px solid #dcdcdc;min-width:40px}.skew-t .skewt-range-des{width:20%}.skew-t .skewt-range-val{width:15%;white-space:nowrap}.skew-t .checkbox-container{width:100%;line-height:20px}.skew-t .select-units :first-child{line-height:20px}.skew-t .axis path,.skew-t .axis line{fill:none;stroke:#000;stroke-width:1px;shape-rendering:crispEdges}.skew-t .axis{fill:#000}.skew-t .y.axis{font-size:10px}.skew-t .y.axis.hght{font-size:10px;fill:red}.skew-t .x.axis{font-size:10px}.skew-t .y.axis.ticks text{display:none}.skew-t .y.axis.hght-ticks text{display:none}.skew-t .y.axis.hght-ticks line{stroke:red}.skew-t .skewt-line{fill:none;stroke-width:1.5px;stroke-opacity:.5}.skew-t .skewt-line.highlight-line{stroke-opacity:1;stroke-width:2px}.skew-t .temp{fill:none;stroke-width:1.5px;stroke-opacity:.5;stroke:red}.skew-t .temp.highlight-line{stroke-opacity:1;stroke-width:2px}.skew-t .dwpt{fill:none;stroke-width:1.5px;stroke-opacity:.5;stroke:blue}.skew-t .dwpt.highlight-line{stroke-opacity:1;stroke-width:2px}.skew-t .parcel{fill:none;stroke-width:1.5px;stroke-opacity:.5;stroke:green;stroke-opacity:.3}.skew-t .parcel.highlight-line{stroke-opacity:1;stroke-width:2px}.skew-t .cond-level{fill:none;stroke-width:1.5px;stroke-opacity:.5;stroke-width:1px;stroke:rgba(128,128,128,0.8);stroke-opacity:.15}.skew-t .cond-level.highlight-line{stroke-opacity:1;stroke-width:2px}.skew-t .cond-level.highlight-line{stroke-width:1px}.skew-t .gridline{stroke-width:.5px;stroke-opacity:.3;fill:none}.skew-t .gridline.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .tempzero{stroke-width:.5px;stroke-opacity:.3;fill:none;stroke:#aaa;stroke-width:1.25px}.skew-t .tempzero.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .dryadiabat{stroke-width:.5px;stroke-opacity:.3;fill:none;stroke:green}.skew-t .dryadiabat.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .templine{stroke-width:.5px;stroke-opacity:.3;fill:none;stroke:red}.skew-t .templine.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .pressure{stroke-width:.5px;stroke-opacity:.3;fill:none;stroke:#787878}.skew-t .pressure.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .moistadiabat{stroke-width:.5px;stroke-opacity:.3;fill:none;stroke:green;stroke-dasharray:5}.skew-t .moistadiabat.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .isohume{stroke-width:.5px;stroke-opacity:.3;fill:none;stroke:blue;stroke-dasharray:2}.skew-t .isohume.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .elr{stroke-width:.5px;stroke-opacity:.3;fill:none;stroke:purple;stroke-opacity:.03;stroke-width:3px}.skew-t .elr.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .elr.highlight-line{stroke-opacity:.7}.skew-t .sigline{stroke-width:.5px;stroke-opacity:.3;fill:none}.skew-t .sigline.highlight-line{stroke-opacity:1;stroke-width:1px}.skew-t .sigline.surface{stroke:green}.skew-t .sigline.tropopause-level{stroke:blue}.skew-t .windbarb{stroke:#000;stroke-width:.75px;fill:none}.skew-t .windbarb .barblines{opacity:.4}.skew-t .windbarb .barblines.highlight-line{opacity:1}.skew-t .windbarb .barblines.hidden{display:none}.skew-t .windbarb .windtext{opacity:.4;dominant-baseline:central;font-size:10px;fill:black;stroke-width:0}.skew-t .windbarb .windtext.highlight-line{opacity:1}.skew-t .windbarb .windtext.hidden{display:none}.skew-t .flag{fill:#000}.skew-t .overlay{fill:none;pointer-events:all}.skew-t .focus.tmpc circle{fill:red;stroke:none}.skew-t .focus.dwpc circle{fill:blue;stroke:none}.skew-t .focus text{font-size:14px}.skew-t .skewt-wind-arrow{alignment-baseline:middle;text-anchor:middle;fill:black;font-size:16px;font-weight:bold}.skew-t .range-container-extra{margin-top:10px;margin-top:0px}.skew-t .range-container-extra .buttons{flex-grow:1;margin:3px;padding:3px 0 3.2px 0;border-radius:10px;text-align:center;cursor:pointer;line-height:1.1em;background-color:#dcdcdc}.skew-t .range-container-extra .buttons.clicked{background-color:#969696;color:white}.skew-t .range-container-extra .buttons.units{flex-grow:0;width:80px}.skew-t .range-container-extra .buttons.noclick{cursor:initial}.skew-t .range-container-extra .row{display:flex;flex-wrap:wrap}.skew-t .skewt-ranges{all:revert;-webkit-appearance:none;color:white;background-color:transparent;width:60%}.skew-t .skewt-ranges:focus{outline:none}.skew-t .skewt-ranges::-webkit-slider-runnable-track{all:revert;-webkit-appearance:none;background:#dcdcdc;border-radius:16px;height:16px;padding:2px}.skew-t .skewt-ranges::-webkit-slider-thumb{all:revert;-webkit-appearance:none;border:1px solid #646464;height:12px;width:12px;border-radius:12px;background:#ffffff;cursor:pointer;box-shadow:1px 1px 1px #000000}.skew-t .flex-break{flex-basis:100%}.skew-t .cloud-container{overflow:hidden;position:absolute;width:20px;opacity:.8}.skew-t .cloud-container .cloud{position:absolute;width:10px} \ No newline at end of file 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 - - - - - - - -
-

Embed habhub tracker on your page

-

1. Options

-
- - -
- - -
- - -
- - -
-

2. Style

-
- - - - -
- - - - -
-

3. HTML code

- - -

4. Live preview

-
- -
-
- - - diff --git a/img/apple-touch-icon.png b/img/apple-touch-icon.png index b16c0d7..380f8a3 100644 Binary files a/img/apple-touch-icon.png and b/img/apple-touch-icon.png differ diff --git a/img/ardc_logo_small.png b/img/ardc_logo_small.png new file mode 100644 index 0000000..9fe7e31 Binary files /dev/null and b/img/ardc_logo_small.png differ diff --git a/img/graw_logo_small.png b/img/graw_logo_small.png new file mode 100644 index 0000000..dedb4f3 Binary files /dev/null and b/img/graw_logo_small.png differ diff --git a/img/icons/icon_x192.png b/img/icons/icon_x192.png new file mode 100644 index 0000000..bcf4bac 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..5795d0f 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..1101d10 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..87b550d 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..31c9d5c 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..dad2250 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..8dff53a 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..34e3a9e 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..4d7b7a3 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/logo.png b/img/logo.png deleted file mode 100644 index cc06274..0000000 Binary files a/img/logo.png and /dev/null differ diff --git a/img/markers/antenna-bronze.png b/img/markers/antenna-bronze.png new file mode 100644 index 0000000..e0a82e4 Binary files /dev/null and b/img/markers/antenna-bronze.png differ diff --git a/img/markers/antenna-gold.png b/img/markers/antenna-gold.png new file mode 100644 index 0000000..c309217 Binary files /dev/null and b/img/markers/antenna-gold.png differ diff --git a/img/markers/antenna-green.png b/img/markers/antenna-green.png deleted file mode 100644 index 37ffbd2..0000000 Binary files a/img/markers/antenna-green.png and /dev/null differ diff --git a/img/markers/antenna-grey.png b/img/markers/antenna-grey.png deleted file mode 100644 index 9888d26..0000000 Binary files a/img/markers/antenna-grey.png and /dev/null differ diff --git a/img/markers/antenna-red.png b/img/markers/antenna-red.png deleted file mode 100644 index a74cf3d..0000000 Binary files a/img/markers/antenna-red.png and /dev/null differ diff --git a/img/markers/antenna-silver.png b/img/markers/antenna-silver.png new file mode 100644 index 0000000..c23fc80 Binary files /dev/null and b/img/markers/antenna-silver.png differ diff --git a/img/markers/antenna-white.png b/img/markers/antenna-white.png new file mode 100644 index 0000000..4cafc55 Binary files /dev/null and b/img/markers/antenna-white.png differ diff --git a/img/markers/antenna.png b/img/markers/antenna.png new file mode 100644 index 0000000..707518d Binary files /dev/null and b/img/markers/antenna.png differ diff --git a/img/markers/balloon-adafruit.png b/img/markers/balloon-adafruit.png deleted file mode 100644 index 4c715f2..0000000 Binary files a/img/markers/balloon-adafruit.png and /dev/null differ diff --git a/img/markers/balloon-blue.png b/img/markers/balloon-blue.png deleted file mode 100644 index 9888487..0000000 Binary files a/img/markers/balloon-blue.png and /dev/null differ diff --git a/img/markers/balloon-buzz.png b/img/markers/balloon-buzz.png deleted file mode 100644 index 17097b5..0000000 Binary files a/img/markers/balloon-buzz.png and /dev/null differ diff --git a/img/markers/balloon-cyan.png b/img/markers/balloon-cyan.png deleted file mode 100644 index 9eae707..0000000 Binary files a/img/markers/balloon-cyan.png and /dev/null differ diff --git a/img/markers/balloon-green.png b/img/markers/balloon-green.png deleted file mode 100644 index 126a0b0..0000000 Binary files a/img/markers/balloon-green.png and /dev/null differ diff --git a/img/markers/balloon-invisible.png b/img/markers/balloon-invisible.png deleted file mode 100644 index 19464e9..0000000 Binary files a/img/markers/balloon-invisible.png and /dev/null differ diff --git a/img/markers/balloon-iss.png b/img/markers/balloon-iss.png deleted file mode 100644 index 23d2a49..0000000 Binary files a/img/markers/balloon-iss.png and /dev/null differ diff --git a/img/markers/balloon-orange.png b/img/markers/balloon-orange.png deleted file mode 100644 index b0c5d09..0000000 Binary files a/img/markers/balloon-orange.png and /dev/null differ diff --git a/img/markers/balloon-pop.png b/img/markers/balloon-pop.png index cb65773..eac488b 100644 Binary files a/img/markers/balloon-pop.png and b/img/markers/balloon-pop.png differ diff --git a/img/markers/balloon-purple.png b/img/markers/balloon-purple.png deleted file mode 100644 index e129b1c..0000000 Binary files a/img/markers/balloon-purple.png and /dev/null differ diff --git a/img/markers/balloon-red.png b/img/markers/balloon-red.png deleted file mode 100644 index f079bfe..0000000 Binary files a/img/markers/balloon-red.png and /dev/null differ diff --git a/img/markers/balloon-rob.png b/img/markers/balloon-rob.png deleted file mode 100644 index 819a558..0000000 Binary files a/img/markers/balloon-rob.png and /dev/null differ diff --git a/img/markers/balloon-rpi.png b/img/markers/balloon-rpi.png deleted file mode 100644 index c340631..0000000 Binary files a/img/markers/balloon-rpi.png and /dev/null differ diff --git a/img/markers/balloon-shockpink.png b/img/markers/balloon-shockpink.png deleted file mode 100644 index 49ad112..0000000 Binary files a/img/markers/balloon-shockpink.png and /dev/null differ diff --git a/img/markers/balloon-thereg.png b/img/markers/balloon-thereg.png deleted file mode 100644 index f26068f..0000000 Binary files a/img/markers/balloon-thereg.png and /dev/null differ diff --git a/img/markers/balloon-yellow.png b/img/markers/balloon-yellow.png deleted file mode 100644 index 66fc042..0000000 Binary files a/img/markers/balloon-yellow.png and /dev/null differ diff --git a/img/markers/balloon.svg b/img/markers/balloon.svg new file mode 100755 index 0000000..8966505 --- /dev/null +++ b/img/markers/balloon.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/markers/car-blue.png b/img/markers/car-blue.png deleted file mode 100644 index 09192f0..0000000 Binary files a/img/markers/car-blue.png and /dev/null differ diff --git a/img/markers/car-green.png b/img/markers/car-green.png deleted file mode 100644 index c42da50..0000000 Binary files a/img/markers/car-green.png and /dev/null differ diff --git a/img/markers/car-red.png b/img/markers/car-red.png deleted file mode 100644 index ce44c92..0000000 Binary files a/img/markers/car-red.png and /dev/null differ diff --git a/img/markers/car-yellow.png b/img/markers/car-yellow.png deleted file mode 100644 index 5c35476..0000000 Binary files a/img/markers/car-yellow.png and /dev/null differ diff --git a/img/markers/car.svg b/img/markers/car.svg new file mode 100644 index 0000000..c277ce8 --- /dev/null +++ b/img/markers/car.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/markers/marker_hole.png b/img/markers/marker_hole.png new file mode 100644 index 0000000..17481f2 Binary files /dev/null and b/img/markers/marker_hole.png differ diff --git a/img/markers/parachute-blue.png b/img/markers/parachute-blue.png deleted file mode 100644 index ff4dc5d..0000000 Binary files a/img/markers/parachute-blue.png and /dev/null differ diff --git a/img/markers/parachute-cyan.png b/img/markers/parachute-cyan.png deleted file mode 100644 index bf83a49..0000000 Binary files a/img/markers/parachute-cyan.png and /dev/null differ diff --git a/img/markers/parachute-green.png b/img/markers/parachute-green.png deleted file mode 100644 index f41d7e1..0000000 Binary files a/img/markers/parachute-green.png and /dev/null differ diff --git a/img/markers/parachute-orange.png b/img/markers/parachute-orange.png deleted file mode 100644 index e3f2d16..0000000 Binary files a/img/markers/parachute-orange.png and /dev/null differ diff --git a/img/markers/parachute-purple.png b/img/markers/parachute-purple.png deleted file mode 100644 index adae959..0000000 Binary files a/img/markers/parachute-purple.png and /dev/null differ diff --git a/img/markers/parachute-red.png b/img/markers/parachute-red.png deleted file mode 100644 index 603c60f..0000000 Binary files a/img/markers/parachute-red.png and /dev/null differ diff --git a/img/markers/parachute-rpi.png b/img/markers/parachute-rpi.png deleted file mode 100644 index ad421b6..0000000 Binary files a/img/markers/parachute-rpi.png and /dev/null differ diff --git a/img/markers/parachute-yellow.png b/img/markers/parachute-yellow.png deleted file mode 100644 index 4d85a51..0000000 Binary files a/img/markers/parachute-yellow.png and /dev/null differ diff --git a/img/markers/parachute.svg b/img/markers/parachute.svg new file mode 100644 index 0000000..8b10853 --- /dev/null +++ b/img/markers/parachute.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/markers/payload-blue.png b/img/markers/payload-blue.png deleted file mode 100644 index c03caee..0000000 Binary files a/img/markers/payload-blue.png and /dev/null differ diff --git a/img/markers/payload-cyan.png b/img/markers/payload-cyan.png deleted file mode 100644 index 226bfa8..0000000 Binary files a/img/markers/payload-cyan.png and /dev/null differ diff --git a/img/markers/payload-green.png b/img/markers/payload-green.png deleted file mode 100644 index f524a73..0000000 Binary files a/img/markers/payload-green.png and /dev/null differ diff --git a/img/markers/payload-not-recovered.png b/img/markers/payload-not-recovered.png new file mode 100644 index 0000000..a75bb17 Binary files /dev/null and b/img/markers/payload-not-recovered.png differ diff --git a/img/markers/payload-orange.png b/img/markers/payload-orange.png deleted file mode 100644 index 20e5b05..0000000 Binary files a/img/markers/payload-orange.png and /dev/null differ diff --git a/img/markers/payload-purple.png b/img/markers/payload-purple.png deleted file mode 100644 index 80e1e1a..0000000 Binary files a/img/markers/payload-purple.png and /dev/null differ diff --git a/img/markers/payload-recovered.png b/img/markers/payload-recovered.png new file mode 100644 index 0000000..2a6f8ee Binary files /dev/null and b/img/markers/payload-recovered.png differ diff --git a/img/markers/payload-recovery-planned.png b/img/markers/payload-recovery-planned.png new file mode 100644 index 0000000..e314714 Binary files /dev/null and b/img/markers/payload-recovery-planned.png differ diff --git a/img/markers/payload-red.png b/img/markers/payload-red.png deleted file mode 100644 index 7ad8acc..0000000 Binary files a/img/markers/payload-red.png and /dev/null differ diff --git a/img/markers/payload-rpi.png b/img/markers/payload-rpi.png deleted file mode 100644 index 9f533fb..0000000 Binary files a/img/markers/payload-rpi.png and /dev/null differ diff --git a/img/markers/payload-yellow.png b/img/markers/payload-yellow.png deleted file mode 100644 index e9b7bb5..0000000 Binary files a/img/markers/payload-yellow.png and /dev/null differ diff --git a/img/markers/payload.svg b/img/markers/payload.svg new file mode 100644 index 0000000..b89d7d6 --- /dev/null +++ b/img/markers/payload.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/markers/target-blue.png b/img/markers/target-blue.png deleted file mode 100644 index fae5796..0000000 Binary files a/img/markers/target-blue.png and /dev/null differ diff --git a/img/markers/target-cyan.png b/img/markers/target-cyan.png deleted file mode 100644 index ba30743..0000000 Binary files a/img/markers/target-cyan.png and /dev/null differ diff --git a/img/markers/target-green.png b/img/markers/target-green.png deleted file mode 100644 index 56b4682..0000000 Binary files a/img/markers/target-green.png and /dev/null differ diff --git a/img/markers/target-orange.png b/img/markers/target-orange.png deleted file mode 100644 index 4b353b6..0000000 Binary files a/img/markers/target-orange.png and /dev/null differ diff --git a/img/markers/target-purple.png b/img/markers/target-purple.png deleted file mode 100644 index 4510158..0000000 Binary files a/img/markers/target-purple.png and /dev/null differ diff --git a/img/markers/target-red.png b/img/markers/target-red.png deleted file mode 100644 index 5987df9..0000000 Binary files a/img/markers/target-red.png and /dev/null differ diff --git a/img/markers/target-yellow.png b/img/markers/target-yellow.png deleted file mode 100644 index 8dc2d08..0000000 Binary files a/img/markers/target-yellow.png and /dev/null differ diff --git a/img/markers/target.svg b/img/markers/target.svg new file mode 100644 index 0000000..e80875e --- /dev/null +++ b/img/markers/target.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + \ No newline at end of file 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/img/sondehub_au.png b/img/sondehub_au.png new file mode 100644 index 0000000..069c3c0 Binary files /dev/null and b/img/sondehub_au.png differ diff --git a/img/sondehub_logo.png b/img/sondehub_logo.png new file mode 100644 index 0000000..8593f55 Binary files /dev/null and b/img/sondehub_logo.png differ diff --git a/img/sondehub_supporters.kra b/img/sondehub_supporters.kra new file mode 100644 index 0000000..6728b1b Binary files /dev/null and b/img/sondehub_supporters.kra differ diff --git a/img/splash/splash-narrow.png b/img/splash/splash-narrow.png new file mode 100644 index 0000000..8738ab2 Binary files /dev/null and b/img/splash/splash-narrow.png differ diff --git a/img/splash/splash-wide.png b/img/splash/splash-wide.png new file mode 100644 index 0000000..59b1fcb Binary files /dev/null and b/img/splash/splash-wide.png differ diff --git a/index.html b/index.template.html similarity index 51% rename from index.html rename to index.template.html index 8c9eb14..964bc91 100644 --- a/index.html +++ b/index.template.html @@ -1,105 +1,208 @@ - + - habhub tracker (high altitude balloons) - - - + SondeHub Tracker + + + - + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + - +
- + +
-
no
location
+
-