5 Commits

16 changed files with 75 additions and 45 deletions

7
.gitignore vendored
View File

@@ -38,12 +38,6 @@ Network Trash Folder
Temporary Items Temporary Items
.apdisk .apdisk
## Vagrant
.vagrant/
# Log files (if you are creating logs in debug mode, uncomment this)
# *.log
## Project Files ## Project Files
wsgi/.idea wsgi/.idea
www/dlsv www/dlsv
@@ -53,4 +47,3 @@ www/data/events.xml
www/data/geolocation.js www/data/geolocation.js
scripts/*.json scripts/*.json
scripts/*.xml scripts/*.xml

16
Vagrantfile vendored
View File

@@ -1,16 +0,0 @@
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

View File

@@ -52,7 +52,7 @@ def mkGeolocationTable(file=''):
from geopy.exc import GeocoderServiceError from geopy.exc import GeocoderServiceError
## constants ## constants
URL = 'https://photon.komoot.io/reverse?lon={lng:.3f}&lat={lat:.3f}&limit=10' URL = 'https://photon.komoot.io/reverse?lon={lng:.3f}&lat={lat:.3f}&limit=5'
NAMESPACES = {'sc3': 'http://geofon.gfz-potsdam.de/ns/seiscomp3-schema/0.7', NAMESPACES = {'sc3': 'http://geofon.gfz-potsdam.de/ns/seiscomp3-schema/0.7',
'qml': 'http://quakeml.org/xmlns/bed/1.2'} 'qml': 'http://quakeml.org/xmlns/bed/1.2'}
@@ -70,7 +70,7 @@ def mkGeolocationTable(file=''):
# parse event.xml # parse event.xml
DOM = ET.parse(stdin).getroot() DOM = ET.parse(stdin).getroot()
geolocator = Photon() geolocator = Photon()
reverse_geolocate = RateLimiter(geolocator.reverse, min_delay_seconds=2) reverse_geolocate = RateLimiter(geolocator.reverse, min_delay_seconds=1)
# iterate over all events # iterate over all events
count = 0 count = 0
@@ -88,7 +88,7 @@ def mkGeolocationTable(file=''):
else: else:
logging.info('Processing event {id}'.format(id=publicID)) logging.info('Processing event {id}'.format(id=publicID))
try: try:
locations = reverse_geolocate("{lat:.3f}, {lng:.3f}".format(lat=lat, lng=lng),exactly_one=False,limit=10) locations = reverse_geolocate("{lat:.3f}, {lng:.3f}".format(lat=lat, lng=lng),exactly_one=False,limit=5)
except GeocoderServiceError: except GeocoderServiceError:
logging.warning('Reverse Geolocation failed. Skipping event.') logging.warning('Reverse Geolocation failed. Skipping event.')
continue continue

View File

@@ -1,9 +1,5 @@
#!/bin/bash #!/bin/bash
# version: VVVVV # 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 if [ $# -le 1 ] ; then
echo usage: ${0} version_string files ... echo usage: ${0} version_string files ...
@@ -14,7 +10,7 @@ shift
files="$*" files="$*"
echo ${version} ${files} echo ${version} ${files}
which sponge > /dev/null || fail "sponge util must be installed" which sponge > /dev/null || ( echo "sponge util must be installed" ; exit 0 )
for file in ${files}; do for file in ${files}; do
sed "s/V\{5\}/${version}"/ ${file} | sponge ${file} sed "s/V\{5\}/${version}"/ ${file} | sponge ${file}

7
www/.htaccess Normal file
View File

@@ -0,0 +1,7 @@
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"

View File

@@ -1,12 +1,41 @@
/* last change 2022-20-23 */ /* last change 2021-10-30 */
var specialEvents = [ 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 // '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 // 'bug2016qphy', // Central Italy 6.1
// 'bug2016rslt', // CTBT violation North Korea // 'bug2016rslt', // CTBT violation North Korea
// 'bug2016ueqo', // Darmstadt 2.4
// 'bug2016ufpi', // Darmstadt 3.0
// 'bug2016vico', // Central Italy 6.5 // '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 // '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 // 'bug2019fura', // Sprengung Duisburg-Hochheide (Weißer Riese) 2.0
// 'bug2021vtgi', // Geilenkirchen 1.9 // 'bug2019yeij', // Tektonisch, Hambach 2.2
// 'bug2022ahxi', // Erftstadt 2.9 'bug2020fqxf', // Meckenheim, 2.5
'bug2023hlmh' // Brüggen 3.3 'bug2020skmt', // Heinsberg 1.7
'bug2020skon', // Heinsberg 2.5
'bug2020stdp', // Niederkassel 2.4
'bug2021ryaa' // Thedinghausen 3.2
]; ];

View File

@@ -47,7 +47,7 @@ function getGeolocation(id, lat, lng) {
var city = json.features[0].properties.city; var city = json.features[0].properties.city;
var countryCode = json.features[0].properties.country; var countryCode = json.features[0].properties.country;
geolocationTable[id] = city; geolocationTable[id] = city;
( countryCode != "Germany" && countryCode != "Deutschland" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null; ( countryCode != "Germany" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null;
if ( city ) { if ( city ) {
$("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]); $("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]);
var sort = [[0,1],[1,1],[2,1]]; var sort = [[0,1],[1,1],[2,1]];

View File

@@ -47,7 +47,7 @@ function getGeolocation(id, lat, lng) {
var city = json.features[0].properties.city; var city = json.features[0].properties.city;
var countryCode = json.features[0].properties.country; var countryCode = json.features[0].properties.country;
geolocationTable[id] = city; geolocationTable[id] = city;
( countryCode != "Germany" && countryCode != "Deutschland" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null; ( countryCode != "Germany" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null;
if ( city ) { if ( city ) {
$("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]); $("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]);
var sort = [[0,1],[1,1],[2,1]]; var sort = [[0,1],[1,1],[2,1]];

2
www/external/easyPrint/bundle.js vendored Normal file

File diff suppressed because one or more lines are too long

1
www/external/easyPrint/bundle.js.map vendored Normal file

File diff suppressed because one or more lines are too long

16
www/external/easyPrint/easyPrint.css vendored Normal file
View File

@@ -0,0 +1,16 @@
.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;
}

BIN
www/external/easyPrint/print.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

6
www/external/jQuery.print.min.js vendored Normal file
View File

@@ -0,0 +1,6 @@
/* @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);

View File

@@ -111,7 +111,7 @@
<span id="events-type">Symbole:</span> <span id="events-type">Symbole:</span>
</p> </p>
<p class="table-caption"> <p class="table-caption">
Reverse Geolocation courtesy of <a href="http://photon.komoot.io/" target="_blank">Photon by Komoot</a> Reverse Geolocation courtesy of <a href="http://photon.komoot.de/" target="_blank">Photon by Komoot</a>
</p> </p>
</div> </div>
<!-- Stations --> <!-- Stations -->

View File

@@ -112,7 +112,7 @@
<span id="events-type">Symbols:</span> <span id="events-type">Symbols:</span>
</p> </p>
<p class="table-caption"> <p class="table-caption">
Reverse Geolocation courtesy of <a href="http://photon.komoot.io/" target="_blank">Photon by Komoot</a> Reverse Geolocation courtesy of <a href="http://photon.komoot.de/" target="_blank">Photon by Komoot</a>
</p> </p>
</div> </div>
<!-- Stations --> <!-- Stations -->

View File

@@ -4,7 +4,7 @@
**********************************************************************/ **********************************************************************/
/* License /* License
Copyright 2014-2023 Kasper D. Fischer <kasper.fischer@rub.de> Copyright 2014-2021 Kasper D. Fischer <kasper.fischer@rub.de>
This program is free software: you can redistribute it and/or modify it This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free under the terms of the GNU General Public License as published by the Free
@@ -94,7 +94,7 @@ var config = {
dlsvURL: 'dlsv', dlsvURL: 'dlsv',
mseedURL: 'https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/dataselect/1/query', mseedURL: 'https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/dataselect/1/query',
stationURL: 'https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/station/1/query', stationURL: 'https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/station/1/query',
nominatimURL: 'https://photon.komoot.io/reverse', nominatimURL: 'https://photon.komoot.de/reverse',
timespan: 400, timespan: 400,
}, },
event: { event: {
@@ -198,10 +198,6 @@ $(document).ready(function() {
config['tab']['active'] = Number(parameters['tab']); config['tab']['active'] = Number(parameters['tab']);
}; };
}; };
if ( Number(parameters['zoom']) ) {
config['map']['zoomDefault'] = Number(parameters['zoom']);
config['map']['zoomFocus'] = Number(parameters['zoom']+3);
};
// AJAX setup // AJAX setup
$.ajaxSetup({timeout: config['ajax']['timeout']}); $.ajaxSetup({timeout: config['ajax']['timeout']});