39 Commits

Author SHA1 Message Date
4e97e09466 support running nginx in vbox
add Vagrant file with configuration to run nginx in virtual box. Use vagrant up to start. Server listens to http://localhost:8888/map/
2022-02-28 13:24:51 +01:00
a2713522c9 update Vagrantfile
create link to map directory at right position
2022-02-27 22:36:18 +01:00
a1e044c082 use ubuntu/jammy64 (22.04) as base image 2022-02-27 22:35:36 +01:00
4c7a1c6916 update .gitignore
ignore .vagrant directory
2022-02-27 22:34:57 +01:00
5d38db389d Merge branch 'develop' into feature/vagrant 2022-02-23 16:54:07 +01:00
9333db3d29 test for "Deutschland" in contryCode when doing geolocation lookup. 2022-02-23 16:53:37 +01:00
2d287ea304 add event bug2020ahxi (Erftstadt 2.9) to specialevents.js 2022-02-23 16:52:44 +01:00
a7d16e5b8a fix scripts/mkGeolocationTable.py
* increase query limit to 10
* increase min_delay_seconds of RateLimiter to 2 seconds
2022-02-23 15:17:08 +01:00
08047bcff8 clean up of file specialevents.js 2022-02-23 15:15:26 +01:00
34f1bd4877 Merge branch 'develop' into feature/vagrant 2022-02-23 14:32:41 +01:00
d718875d03 Merge branch 'develop' into feature/mapquest 2022-02-23 13:55:04 +01:00
8b4df0c04d add Vagrant file 2022-02-23 13:51:16 +01:00
60461263db change URL of photon service by komoot to photon.komoot.io 2022-02-23 13:50:57 +01:00
42588db791 change URL of photon service by komoot to photon.komoot.io 2022-02-23 13:41:08 +01:00
73099a24e8 removed obsolete files 2021-11-01 12:32:02 +01:00
757607f29b fixed error output if sponge is not installed 2021-10-31 13:27:17 +01:00
5d3a9b81aa add docker-compose file 2021-10-31 12:47:20 +01:00
33365f53f3 update jquery and leaflet javascript libraries 2021-10-30 23:45:49 +02:00
2ca1aa40ce updated doctye to meet html5 standard
see https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode for more info
2021-10-30 23:15:51 +02:00
3eb2f0a8fb moved volatile files to data directory
affected files: events.xml geolocation.js and specialevents.js
2021-10-30 23:12:44 +02:00
bbee8038a2 updated server configuration
document root is at /usr/share/nginx/html
map app is located in /usr/share/nginx/html
server responds to /, /map, /map/, /karte, /karte/
server uses DE or EN page depending on $http_accept_language as set by client
2021-10-30 22:38:57 +02:00
af7c6642ff prepared version placeholder
placeholder is "VVVVV"
use patchVersion.sh to replace version for new release. Do not use this script in develop branch.
2021-10-27 10:27:32 +02:00
8b2b58be05 removed -x option from shebang 2021-10-27 10:02:12 +02:00
5455f182d7 adding script to patch version strings
version strings are "VVVVV"
2021-10-26 23:28:42 +02:00
788f4fa091 add favicon.ico 2021-10-26 22:05:06 +02:00
7341982716 add language auto-negotiation 2021-10-26 22:04:50 +02:00
c022aa318c update Dockerfile and nginx config 2021-10-22 23:19:22 +02:00
0fa012c95d add nginx.conf
default nginx.conf form standard docker container
2021-10-21 23:13:00 +02:00
7e7f7d59a0 using mapquest leaflet sdk 2021-10-18 12:44:04 +02:00
60c7e0ef09 Merge branch 'develop' into feature/mapquest 2021-10-18 11:27:24 +02:00
93c15d8640 add Dockerfile for simple local testing
usage:
docker build -t seisobs-webapp:dev .
docker run --name seisobs-map -d -p 8080:80 seisobs-webapp:dev
2021-10-18 11:27:01 +02:00
2e5e998d8a added mapquest baselayer option
uses API key registered to https://araidne.geophysik.ruhr-uni-bochum.de/map/
2021-10-18 10:58:32 +02:00
ecdeaecfde Merge branch 'develop' into feature/mapquest 2021-10-18 10:20:37 +02:00
137b4a2761 fixing broken TopPlus baselayer 2021-10-18 10:18:21 +02:00
5989af8ce1 Merge branch 'hotfix/r20211017.2' into develop 2021-10-17 15:47:16 +02:00
6576b0a2b5 load mapquest leaflet scripts w/ api key 2021-10-17 15:13:17 +02:00
b585e447f0 Merge branch 'hotfix/r20211017.1' into develop 2021-10-17 15:09:02 +02:00
723ec43eee Merge remote-tracking branch 'origin/develop' into develop 2021-10-17 13:32:41 +02:00
9c3564f9ab Merge branch 'release/r20211017' into develop 2021-10-17 13:28:50 +02:00
32 changed files with 379 additions and 133 deletions

14
.gitignore vendored
View File

@@ -38,15 +38,19 @@ Network Trash Folder
Temporary Items
.apdisk
## Vagrant
.vagrant/
# Log files (if you are creating logs in debug mode, uncomment this)
# *.log
## Project Files
wsgi/.idea
www/dlsv
www/event.xml
www/events.xml
www/geolocation.js
www/geolocationTable.js
www/stations.xml
www/index.html
www/favicon.ico
www/data/events.xml
www/data/geolocation.js
scripts/*.json
scripts/*.xml

13
Dockerfile Normal file
View File

@@ -0,0 +1,13 @@
# Version: VVVVV
FROM nginx:alpine
# set labels
LABEL org.opencontainers.image.authors="kasper.fischer@rub.de"
# copy nginx config files
COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/mime.types /etc/nginx/mime.types
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
# copy webpage content
COPY www /usr/share/nginx/html/map

16
Vagrantfile vendored Normal file
View File

@@ -0,0 +1,16 @@
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/jammy64"
config.vm.synced_folder ".", "/vagrant"
config.vm.network(:forwarded_port, guest: 80, host: 8888)
config.vm.provision :shell, inline: <<-SHELL
sudo apt-get -y update
sudo apt-get -y install nginx
echo "Starting nginx..."
sudo ln -s /vagrant/www /var/www/html/map
sudo cp /vagrant/www/index.html.en /vagrant/www/index.html
sudo useradd -s /bin/false nginx
sudo service nginx restart
SHELL
end

19
docker-compose.yaml Normal file
View File

@@ -0,0 +1,19 @@
version: "3.9"
networks:
seisobs:
external: false
services:
map:
build:
context: .
dockerfile: Dockerfile
image: seisobs-map:dev
networks:
- seisobs
volumes:
- ./www/data:/usr/share/nginx/html/map/data:ro
ports:
- "${SEISOBS_MAPPORT}:80"
restart: unless-stopped

76
nginx/default.conf Normal file
View File

@@ -0,0 +1,76 @@
# Version: VVVVV
server {
listen 80;
listen [::]:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
set $first_language $http_accept_language;
if ($http_accept_language ~* '^(.+?),') {
set $first_language $1;
}
set $language_suffix 'en';
if ($first_language ~* 'de') {
set $language_suffix 'de';
}
#rewrite rules to /map/
rewrite ^(.*)/index(\.html)*$ /map/index.html.$language_suffix last;
rewrite ^/favicon.ico$ /map/favicon.ico last;
rewrite ^/map$ /map/ last;
rewrite ^/map.js$ /map/map.js last;
rewrite ^/karte$ /map/ last;
rewrite ^/karte/$ /map/ last;
rewrite ^/karte/(.*)$ /map/$1 last;
if ($uri !~ "^/map") {
rewrite ^(.*)/(.*)$ /map$1/$2 last;
}
#location /map {
# root /usr/share/nginx/html/;
# index index.html.$language_suffix index.html;
# #try_files $uri.$language_suffix $uri.html.$language_suffix $uri.html $uri index.html.$language_suffix index.html;
#}
location / {
root /usr/share/nginx/html/;
index index.html.$language_suffix index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

98
nginx/mime.types Normal file
View File

@@ -0,0 +1,98 @@
types {
text/html html htm shtml de en;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
font/woff woff;
font/woff2 woff2;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.text odt;
application/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
application/vnd.wap.wmlc wmlc;
application/wasm wasm;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}

32
nginx/nginx.conf Normal file
View File

@@ -0,0 +1,32 @@
# Version: VVVVV
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}

View File

@@ -1,4 +1,5 @@
#!/bin/bash
# Version: VVVVV
# get starting date
# find gdate or date command ( OSX: brew install coreutils)

View File

@@ -12,6 +12,8 @@
AJAX calls to the Nominatim service small, e. g. :
curl -s "https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query?minlat=50&maxlat=54&minlon=3&maxlon=10&minmag=1" | mkGeolocationTable.py > geolocationTable.js
Version: VVVVV
License
Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
@@ -50,7 +52,7 @@ def mkGeolocationTable(file=''):
from geopy.exc import GeocoderServiceError
## constants
URL = 'https://photon.komoot.io/reverse?lon={lng:.3f}&lat={lat:.3f}&limit=5'
URL = 'https://photon.komoot.io/reverse?lon={lng:.3f}&lat={lat:.3f}&limit=10'
NAMESPACES = {'sc3': 'http://geofon.gfz-potsdam.de/ns/seiscomp3-schema/0.7',
'qml': 'http://quakeml.org/xmlns/bed/1.2'}
@@ -68,7 +70,7 @@ def mkGeolocationTable(file=''):
# parse event.xml
DOM = ET.parse(stdin).getroot()
geolocator = Photon()
reverse_geolocate = RateLimiter(geolocator.reverse, min_delay_seconds=1)
reverse_geolocate = RateLimiter(geolocator.reverse, min_delay_seconds=2)
# iterate over all events
count = 0
@@ -86,7 +88,7 @@ def mkGeolocationTable(file=''):
else:
logging.info('Processing event {id}'.format(id=publicID))
try:
locations = reverse_geolocate("{lat:.3f}, {lng:.3f}".format(lat=lat, lng=lng),exactly_one=False,limit=5)
locations = reverse_geolocate("{lat:.3f}, {lng:.3f}".format(lat=lat, lng=lng),exactly_one=False,limit=10)
except GeocoderServiceError:
logging.warning('Reverse Geolocation failed. Skipping event.')
continue
@@ -123,7 +125,7 @@ if __name__ == "__main__":
# parse arguments
import argparse
versionText = 'r20211017 (2021-10-17)'
versionText = 'VVVVV'
parser = argparse.ArgumentParser(
description='Reverse geocoding lookup of events in xml format (stdin).',
epilog=versionText)

21
scripts/patchVersion.sh Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
# version: VVVVV
function fail {
printf '%s\n' "$1" >&2 ## Send message to stderr.
exit "${2-1}" ## Return a code specified by $2, or 1 by default.
}
if [ $# -le 1 ] ; then
echo usage: ${0} version_string files ...
exit 0
fi
version="$1"
shift
files="$*"
echo ${version} ${files}
which sponge > /dev/null || fail "sponge util must be installed"
for file in ${files}; do
sed "s/V\{5\}/${version}"/ ${file} | sponge ${file}
done

View File

@@ -4,8 +4,7 @@
Get waveform data from FDSN web service and create a fancy plot
This programme runs as a script or as a WSGI application.
Subversion information:
$Id$
:version VVVVV
:license
Copyright 2020 Kasper Fischer <kasper.fischer@ruhr-uni-bochum.de>
@@ -379,8 +378,7 @@ if __name__ == "__main__":
epilog=u'$Revision$ ($Date$, $Author$)'.replace(
"$", ""))
parser.add_argument(u'-v', u'-V', u'--version', action='version',
version=u'$Revision$ ($Date$, \
$Author$)'.replace('$', ''))
version=u'VVVVV')
parser.add_argument(u'-u', u'--url', action='store', dest='server',
default=u'https://ariadne.geophysik.ruhr-uni-bochum.de',
help=u'Base URL of the FDSN web service (https://ariadne.geophysik.ruhr-uni-bochum.de).')

View File

@@ -7,6 +7,8 @@ def application(environ, start_response):
:type start_response: function
:return: response to be sent to the client by the wsgi server
:rtype: list
:version: VVVVV
"""
from cgi import FieldStorage

View File

@@ -3,8 +3,7 @@
"""
Produce a dayplot from seismogram recordings
Subversion information:
$Id$
version: VVVVV
license: gpl3
Copyright 2012-2020 Seismological Observatory, Ruhr-University Bochum

View File

@@ -1,7 +0,0 @@
Allow from all
Header always set Access-Control-Allow-Origin "https://fdsnws.geophysik.ruhr-uni-bochum.de"
Header always append Access-Control-Allow-Origin "https://photon.komoot.de"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
Header always set Access-Control-Expose-Headers "Content-Security-Policy, Location"
Header always set Access-Control-Max-Age "600"

0
www/data/.gitkeep Normal file
View File

11
www/data/specialevents.js Normal file
View File

@@ -0,0 +1,11 @@
/* last change 2022-20-23 */
var specialEvents = [
// 'bug2016ajgm', // CTBT violation North Korea
// 'bug2016qphy', // Central Italy 6.1
// 'bug2016rslt', // CTBT violation North Korea
// 'bug2016vico', // Central Italy 6.5
// 'bug2017rfxe', // CTBT violation North Korea 6.1
// 'bug2019fura', // Sprengung Duisburg-Hochheide (Weißer Riese) 2.0
'bug2021vtgi', // Geilenkirchen 1.9
'bug2022ahxi' // Erftstadt 2.9
];

View File

@@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
Version r20211017.2 (2021-10-17)
Version VVVVV
*/
/* adding row(s) to a table and format date strings afterwards */
@@ -47,7 +47,7 @@ function getGeolocation(id, lat, lng) {
var city = json.features[0].properties.city;
var countryCode = json.features[0].properties.country;
geolocationTable[id] = city;
( countryCode != "Germany" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null;
( countryCode != "Germany" && countryCode != "Deutschland" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null;
if ( city ) {
$("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]);
var sort = [[0,1],[1,1],[2,1]];

View File

@@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
Version r20211017.2 (2021-10-17)
Version VVVVV
*/
/* adding row(s) to a table and format date strings afterwards */
@@ -47,7 +47,7 @@ function getGeolocation(id, lat, lng) {
var city = json.features[0].properties.city;
var countryCode = json.features[0].properties.country;
geolocationTable[id] = city;
( countryCode != "Germany" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null;
( countryCode != "Germany" && countryCode != "Deutschland" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null;
if ( city ) {
$("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]);
var sort = [[0,1],[1,1],[2,1]];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +0,0 @@
.leaflet-control-easyPrint-button a {
background:#fff url(external/easyPrint/print.png) no-repeat 5px;
background-size:16px 16px;
display: block;
}
//@media print {
html {padding: 0px!important;}
.leaflet-control-easyPrint-button{display: none!important;}
}
//#map {
width: 1200;
height: 800;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

View File

@@ -1,6 +0,0 @@
/* @license
* jQuery.print, version 1.6.0
* (c) Sathvik Ponangi, Doers' Guild
* Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)
*--------------------------------------------------------------------------*/
!function(e){"use strict";function t(t,n,r){for(var o=e(t),i=o.clone(n,r),a=o.find("textarea").add(o.filter("textarea")),l=i.find("textarea").add(i.filter("textarea")),c=o.find("select").add(o.filter("select")),d=i.find("select").add(i.filter("select")),f=0,s=a.length;f<s;++f)e(l[f]).val(e(a[f]).val());for(f=0,s=c.length;f<s;++f)for(var p=0,u=c[f].options.length;p<u;++p)!0===c[f].options[p].selected&&(d[f].options[p].selected=!0);return i}function n(n){var r=e("");try{r=t(n)}catch(t){r=e("<span />").html(n)}return r}function r(t,n,r){var o=e.Deferred();try{var i=(t=t.contentWindow||t.contentDocument||t).document||t.contentDocument||t;r.doctype&&i.write(r.doctype),i.write(n),i.close();var a=!1,l=function(){if(!a){t.focus();try{t.document.execCommand("print",!1,null)||t.print(),e("body").focus()}catch(e){t.print()}t.close(),a=!0,o.resolve()}};e(t).on("load",l),setTimeout(l,r.timeout)}catch(e){o.reject(e)}return o}function o(e,t){return r(window.open(),e,t).always(function(){try{t.deferred.resolve()}catch(e){console.warn("Error notifying deferred",e)}})}function i(e){return!!("object"==typeof Node?e instanceof Node:e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName)}e.print=e.fn.print=function(){var a,l,c=this;c instanceof e&&(c=c.get(0)),i(c)?(l=e(c),arguments.length>0&&(a=arguments[0])):arguments.length>0?i((l=e(arguments[0]))[0])?arguments.length>1&&(a=arguments[1]):(a=arguments[0],l=e("html")):l=e("html");var d={globalStyles:!0,mediaPrint:!1,stylesheet:null,noPrintSelector:".no-print",iframe:!0,append:null,prepend:null,manuallyCopyFormValues:!0,deferred:e.Deferred(),timeout:750,title:null,doctype:"<!doctype html>"};a=e.extend({},d,a||{});var f=e("");a.globalStyles?f=e("style, link, meta, base, title"):a.mediaPrint&&(f=e("link[media=print]")),a.stylesheet&&(f=e.merge(f,e('<link rel="stylesheet" href="'+a.stylesheet+'">')));var s=t(l);if((s=e("<span/>").append(s)).find(a.noPrintSelector).remove(),s.append(t(f)),a.title){var p=e("title",s);0===p.length&&(p=e("<title />"),s.append(p)),p.text(a.title)}s.append(n(a.append)),s.prepend(n(a.prepend)),a.manuallyCopyFormValues&&(s.find("input").each(function(){var t=e(this);t.is("[type='radio']")||t.is("[type='checkbox']")?t.prop("checked")&&t.attr("checked","checked"):t.attr("value",t.val())}),s.find("select").each(function(){e(this).find(":selected").attr("selected","selected")}),s.find("textarea").each(function(){var t=e(this);t.text(t.val())}));var u,h,m,y,v=s.html();try{a.deferred.notify("generated_markup",v,s)}catch(e){console.warn("Error notifying deferred",e)}if(s.remove(),a.iframe)try{u=v,m=e((h=a).iframe+""),0===(y=m.length)&&(m=e('<iframe height="0" width="0" border="0" wmode="Opaque"/>').prependTo("body").css({position:"absolute",top:-999,left:-999})),r(m.get(0),u,h).done(function(){setTimeout(function(){0===y&&m.remove()},1e3)}).fail(function(e){console.error("Failed to print from iframe",e),o(u,h)}).always(function(){try{h.deferred.resolve()}catch(e){console.warn("Error notifying deferred",e)}})}catch(e){console.error("Failed to print from iframe",e.stack,e.message),o(v,a)}else o(v,a);return this}}(jQuery);

BIN
www/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<!-- r20211017.2 (2021-10-17) -->
<!DOCTYPE html>
<!-- Version VVVVV -->
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='de' lang='de'>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
@@ -11,11 +11,10 @@
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/cupertino/jquery-ui.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/theme.blue.min.css" integrity="sha512-jJ9r3lTLaH5XXa9ZOsCQU8kLvxdAVzyTWO/pnzdZrshJQfnw1oevJFpoyCDr7K1lqt1hUgqoxA5e2PctVtlSTg==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/jquery.tablesorter.pager.min.css" integrity="sha512-TWYBryfpFn3IugX13ZCIYHNK3/2sZk3dyXMKp3chZL+0wRuwFr1hDqZR9Qd5SONzn+Lja10hercP2Xjuzz5O3g==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/css/dvf.min.css" integrity="sha512-Ts/IYE5D8PaMBUDHcf6O57lOiV923cai3sEXo0WjhakpTxlwodQQJx1YA2t1mDUKO6fIXEngkKFLQNMXK/kBZg==" crossorigin="anonymous" />
<!-- jQuery & jQueryUI -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<!-- Localtime, sprintf, showdown -->
@@ -31,18 +30,19 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/widgets/widget-scroller.min.js" integrity="sha512-1D2qKse1/4gCgLbgmBBv+9fJluAeJIlDgzIyZkovd1xmoyh1SW30lMIzCrD2X8Xs/sIzitUNDy86YagJRSUmaA==" crossorigin="anonymous"></script>
<!-- Leaflet -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/leaflet-dvf.markers.min.js" integrity="sha512-R/iucaxFnDFUTdZRxUvxzc+sypDQhqnxInBmNjgGE0RaiMl/ektVB1wFS/L0xDZmLFPpEGR0Kw3GEBgtQNFHyg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-providers/1.10.1/leaflet-providers.min.js" integrity="sha512-Ifxj89Ujg72gC/psKB9ystryRYiopmDud2EmNTKC9kz192aQwDKVK1FzWsyPc37tgU0UmRQlNnBM++ZnwIXJ9Q==" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/leaflet.browser.print@1.0.5/dist/leaflet.browser.print.min.js" integrity="sha256-1MQvHEnVXSKwR+XIVswRSBla/B5ohkp5+HJtritIkgE=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-providers/1.13.0/leaflet-providers.min.js" integrity="sha512-5EYsvqNbFZ8HX60keFbe56Wr0Mq5J1RrA0KdVcfGDhnjnzIRsDrT/S3cxdzpVN2NGxAB9omgqnlh4/06TvWCMw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/leaflet.browser.print@1.0.6/dist/leaflet.browser.print.min.js" integrity="sha256-LrZphoL6+XVEuBR4BfhOIdRAMpRigQvsu3/iCNhQSXw=" crossorigin="anonymous"></script>
<script src="https://www.mapquestapi.com/sdk/leaflet/v2.2/mq-map.js?key=RPOPuz3lA2GGBtVpEU0ugxtVoGba53Dt"></script>
<!-- Map, Events & Stations -->
<script type="text/javascript" src="misc.js"></script>
<script type="text/javascript" src="geolocation.js"></script>
<script type="text/javascript" src="specialevents.js"></script>
<script type="text/javascript" src="map.js"></script>
<script type="text/javascript" src="events.js"></script>
<script type="text/javascript" src="stations.js"></script>
<script type="text/javascript" src="data/geolocation.js"></script>
<script type="text/javascript" src="data/specialevents.js"></script>
</head>
<body>
@@ -111,7 +111,7 @@
<span id="events-type">Symbole:</span>
</p>
<p class="table-caption">
Reverse Geolocation courtesy of <a href="http://photon.komoot.de/" target="_blank">Photon by Komoot</a>
Reverse Geolocation courtesy of <a href="http://photon.komoot.io/" target="_blank">Photon by Komoot</a>
</p>
</div>
<!-- Stations -->

View File

@@ -1,5 +1,5 @@
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<!-- r20211017.2 (2021-10-17) -->
<!DOCTYPE html>
<!-- Version VVVVV -->
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='de' lang='de'>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
@@ -11,11 +11,11 @@
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/cupertino/jquery-ui.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/theme.blue.min.css" integrity="sha512-jJ9r3lTLaH5XXa9ZOsCQU8kLvxdAVzyTWO/pnzdZrshJQfnw1oevJFpoyCDr7K1lqt1hUgqoxA5e2PctVtlSTg==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/jquery.tablesorter.pager.min.css" integrity="sha512-TWYBryfpFn3IugX13ZCIYHNK3/2sZk3dyXMKp3chZL+0wRuwFr1hDqZR9Qd5SONzn+Lja10hercP2Xjuzz5O3g==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/css/dvf.min.css" integrity="sha512-Ts/IYE5D8PaMBUDHcf6O57lOiV923cai3sEXo0WjhakpTxlwodQQJx1YA2t1mDUKO6fIXEngkKFLQNMXK/kBZg==" crossorigin="anonymous" />
<!-- jQuery & jQueryUI -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<!-- Localtime, sprintf, showdown -->
@@ -31,18 +31,19 @@
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/widgets/widget-scroller.min.js" integrity="sha512-1D2qKse1/4gCgLbgmBBv+9fJluAeJIlDgzIyZkovd1xmoyh1SW30lMIzCrD2X8Xs/sIzitUNDy86YagJRSUmaA==" crossorigin="anonymous"></script>
<!-- Leaflet -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.6.0/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-dvf/0.3.1/leaflet-dvf.markers.min.js" integrity="sha512-R/iucaxFnDFUTdZRxUvxzc+sypDQhqnxInBmNjgGE0RaiMl/ektVB1wFS/L0xDZmLFPpEGR0Kw3GEBgtQNFHyg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-providers/1.10.1/leaflet-providers.min.js" integrity="sha512-Ifxj89Ujg72gC/psKB9ystryRYiopmDud2EmNTKC9kz192aQwDKVK1FzWsyPc37tgU0UmRQlNnBM++ZnwIXJ9Q==" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/leaflet.browser.print@1.0.5/dist/leaflet.browser.print.min.js" integrity="sha256-1MQvHEnVXSKwR+XIVswRSBla/B5ohkp5+HJtritIkgE=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-providers/1.13.0/leaflet-providers.min.js" integrity="sha512-5EYsvqNbFZ8HX60keFbe56Wr0Mq5J1RrA0KdVcfGDhnjnzIRsDrT/S3cxdzpVN2NGxAB9omgqnlh4/06TvWCMw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/leaflet.browser.print@1.0.6/dist/leaflet.browser.print.min.js" integrity="sha256-LrZphoL6+XVEuBR4BfhOIdRAMpRigQvsu3/iCNhQSXw=" crossorigin="anonymous"></script>
<script src="https://www.mapquestapi.com/sdk/leaflet/v2.2/mq-map.js?key=RPOPuz3lA2GGBtVpEU0ugxtVoGba53Dt"></script>
<!-- Map, Events & Stations -->
<script type="text/javascript" src="misc.js"></script>
<script type="text/javascript" src="geolocation.js"></script>
<script type="text/javascript" src="specialevents.js"></script>
<script type="text/javascript" src="map.js.en"></script>
<script type="text/javascript" src="events.js.en"></script>
<script type="text/javascript" src="stations.js.en"></script>
<script type="text/javascript" src="data/geolocation.js"></script>
<script type="text/javascript" src="data/specialevents.js"></script>
</head>
<body>
@@ -111,7 +112,7 @@
<span id="events-type">Symbols:</span>
</p>
<p class="table-caption">
Reverse Geolocation courtesy of <a href="http://photon.komoot.de/" target="_blank">Photon by Komoot</a>
Reverse Geolocation courtesy of <a href="http://photon.komoot.io/" target="_blank">Photon by Komoot</a>
</p>
</div>
<!-- Stations -->
@@ -154,7 +155,9 @@
<p class="table-caption">Download as <a id="stations-csv-link" href="link" download="stations.csv">CSV file</a>.</p>
</div>
<!-- More -->
<div class="tab" id="moretab"><!--include virtual="more.html.de" --></div>
<div class="tab more_de" id="moretab">
<p>Loading text ...</p>
</div>
<!-- Info -->
<div class="tab" id="infotab">
<div id="infoaccordion">

View File

@@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see https://www.gnu.org/licenses/.
Version r20211017.2 (2021-10-17)
Version VVVVV
*/
/* add station marker */
@@ -139,10 +139,14 @@ function initMapLink() {
**********************************************************************/
$(document).ready(function() {
// create a map in the "map" div, set the view to a given place and zoom
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']);
map = L.map('map', {
center: config['map']['centerDefault'],
zoom: config['map']['zoomDefault'],
zoomControl: false,
worldCopyJump: true
});
// create baselayer
// change baselayer if mapquest is not requested
switch ( config['map']['baselayer'] ) {
case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names)
L.tileLayer.provider('Esri.WorldGrayCanvas').addTo(map);
@@ -153,9 +157,16 @@ $(document).ready(function() {
case 'opentopo': // add OpenTopoMap tile layer
L.tileLayer.provider('OpenTopoMap').addTo(map);
break;
case 'mapnik': // add OpenStreetMap.Mapni tile layer
case 'mapnik': // add OpenStreetMap.Mapnik tile layer
L.tileLayer.provider('OpenStreetMap.Mapnik').addTo(map);
break;
case 'topplus': // add TopPlus tile layer (https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wmts-topplusopen-wmts-topplus-open.html)
L.tileLayer('https://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/web/default/WEBMERCATOR/{z}/{y}/{x}.png',
{attribution: '&copy; Bundesamt für Kartographie und Geodäsie ('+jahr+'), Datenquellen: <a href="http://sg.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf">Geodatenzentrum</a>'}).addTo(map);
break;
case 'mapquest':
MQ.mapLayer().addTo(map);
break;
default: // use OpenStreetMap.DE as default
L.tileLayer.provider('OpenStreetMap.DE').addTo(map);
};
@@ -170,7 +181,7 @@ $(document).ready(function() {
eventLayer = new L.MarkerGroup().addTo(map);
// load events
ajaxLoadEvents('', '', '', 'events.xml');
ajaxLoadEvents('', '', '', 'data/events.xml');
ajaxLoadEvents();
specialEvents.map(function(id) {
ajaxLoadEvents('', '', id)

View File

@@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see https://www.gnu.org/licenses/.
Version r20211017.2 (2021-10-17)
Version VVVVV
*/
/* add station marker */
@@ -139,11 +139,14 @@ function initMapLink() {
**********************************************************************/
$(document).ready(function() {
// create a map in the "map" div, set the view to a given place and zoom
map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']);
map = L.map('map', {
center: config['map']['centerDefault'],
zoom: config['map']['zoomDefault'],
zoomControl: false,
worldCopyJump: true
});
// create baselayer
// change baselayer if mapquest is not requested
switch ( config['map']['baselayer'] ) {
case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names)
L.tileLayer.provider('Esri.WorldGrayCanvas').addTo(map);
@@ -154,12 +157,20 @@ $(document).ready(function() {
case 'opentopo': // add OpenTopoMap tile layer
L.tileLayer.provider('OpenTopoMap').addTo(map);
break;
case 'mapnik': // add OpenStreetMap.Mapni tile layer
case 'mapnik': // add OpenStreetMap.Mapnik tile layer
L.tileLayer.provider('OpenStreetMap.Mapnik').addTo(map);
break;
case 'topplus': // add TopPlus tile layer (https://gdz.bkg.bund.de/index.php/default/webdienste/topplus-produkte/wmts-topplusopen-wmts-topplus-open.html)
L.tileLayer('https://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/web/default/WEBMERCATOR/{z}/{y}/{x}.png',
{attribution: '&copy; Federal Agency for Cartography and Geodesy ('+jahr+'), Datasource: <a href="http://sg.geodatenzentrum.de/web_public/Datenquellen_TopPlus_Open.pdf">Geodatenzentrum</a>'}).addTo(map);
break;
case 'mapquest':
MQ.mapLayer().addTo(map);
break;
default: // use OpenStreetMap.DE as default
L.tileLayer.provider('OpenStreetMap.DE').addTo(map);
};
// add controls
new L.Control.Zoom({ position: 'topright' }).addTo(map);
new L.control.scale({position: 'bottomright', imperial: false}).addTo(map);
@@ -170,7 +181,7 @@ $(document).ready(function() {
eventLayer = new L.MarkerGroup().addTo(map);
// load events
ajaxLoadEvents('', '', '', 'events.xml');
ajaxLoadEvents('', '', '', 'data/events.xml');
ajaxLoadEvents();
specialEvents.map(function(id) {
ajaxLoadEvents('', '', id)

View File

@@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
Version r20211017.2 (2021-10-17)
Version VVVVV
*/
/* calculate marker radius from magnitude
@@ -81,6 +81,7 @@ function parseQueryString() {
}
/* create global vars */
var jahr = new Date().getFullYear();
var map;
var openMarkerID;
var eventTable = {};
@@ -93,7 +94,7 @@ var config = {
dlsvURL: 'dlsv',
mseedURL: 'https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/dataselect/1/query',
stationURL: 'https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/station/1/query',
nominatimURL: 'https://photon.komoot.de/reverse',
nominatimURL: 'https://photon.komoot.io/reverse',
timespan: 400,
},
event: {

View File

@@ -1,40 +0,0 @@
/* last change 2021-10-17 */
var specialEvents = [
//'bug2014ytlk', // Vechta 3.0
//'bug2014wjwx', // Haltern 3.6
//'bug2014ldts', // Darmstadt
//'bug2014kowj', // Vogtland 5.0
//'bug2014jptq', // Seeheim-Jugenheim
//'bug2014infb', // Troisdorf
//'bug2014ilxd', // Bassum
//'bug2014gfzw', // Darmstadt
//'bug2014datb', // Groningen
// 'bug2013yvko', // Haltern 3.4
// 'bug2015fdpy', // Darmstadt 3.0
// 'bug2016ajgm', // CTBT violation North Korea
// 'bug2016cqkd', // Taunusstein 2.5
// 'bug2016hdae', // Aldenhoven 2.6
// 'bug2016hdaj', // Aldenhoven 2.4
// 'bug2016kkrq', // Bottrop 3.3
// 'bug2016qphy', // Central Italy 6.1
// 'bug2016rslt', // CTBT violation North Korea
// 'bug2016ueqo', // Darmstadt 2.4
// 'bug2016ufpi', // Darmstadt 3.0
// 'bug2016vico', // Central Italy 6.5
// 'bug2016vrnc', // Nörvenich 3.2
// 'bug2016zawb', // St Goar 3.2
// 'bug2017iyhl', // Hürtgenwald 2.1
// 'bug2017omwg', // Brühl 2.3
// 'bug2017rfxe', // CTBT violation North Korea 6.1
// 'bug2017rjvq', // Dreieich / Hessen 2.6
// 'bug2017vxmm', // Brühl / Hürth 3.1
// 'bug2018nyax' // Ochtendung 2.7
// 'bug2019cxga', // Ochtendung 3.0
// 'bug2019czbt', // Ochtendung 2.9
// 'bug2019fura', // Sprengung Duisburg-Hochheide (Weißer Riese) 2.0
// 'bug2019yeij', // Tektonisch, Hambach 2.2
'bug2020fqxf', // Meckenheim, 2.5
'bug2020skmt', // Heinsberg 1.7
'bug2020skon', // Heinsberg 2.5
'bug2020stdp' // Niederkassel 2.4
];

View File

@@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
Version r20211017.2 (2021-10-17)
Version VVVVV
*/
/* Load the stations using ajax */

View File

@@ -19,7 +19,7 @@
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/.
Version r20211017.2 (2021-10-17)
Version VVVVV
*/
/* Load the stations using ajax */