Compare commits
27 Commits
release/v1
...
main
Author | SHA1 | Date | |
---|---|---|---|
fb9b623aa6 | |||
bd300c2b07 | |||
736009b75d | |||
7e2ea42f52 | |||
bd01b7cba4 | |||
6d62279199 | |||
94d6e63b0f | |||
4e97e09466 | |||
a2713522c9 | |||
a1e044c082 | |||
4c7a1c6916 | |||
5d38db389d | |||
9333db3d29 | |||
2d287ea304 | |||
a7d16e5b8a | |||
08047bcff8 | |||
34f1bd4877 | |||
4e14f49d98 | |||
d204bdd8e5 | |||
dc367000ba | |||
d718875d03 | |||
8b4df0c04d | |||
60461263db | |||
42588db791 | |||
73099a24e8 | |||
2decf93012 | |||
757607f29b |
7
.gitignore
vendored
7
.gitignore
vendored
@ -38,6 +38,12 @@ 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
|
||||
@ -47,3 +53,4 @@ www/data/events.xml
|
||||
www/data/geolocation.js
|
||||
scripts/*.json
|
||||
scripts/*.xml
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Version: VVVVV
|
||||
# Version: v1.3 (2023-04-17)
|
||||
FROM nginx:alpine
|
||||
|
||||
# set labels
|
||||
|
16
Vagrantfile
vendored
Normal file
16
Vagrantfile
vendored
Normal 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
|
@ -9,7 +9,7 @@ services:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
image: seisobs-map:dev
|
||||
image: seisobs-map:v1.1
|
||||
networks:
|
||||
- seisobs
|
||||
volumes:
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Version: VVVVV
|
||||
# Version: v1.3 (2023-04-17)
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Version: VVVVV
|
||||
# Version: v1.3 (2023-04-17)
|
||||
user nginx;
|
||||
worker_processes 1;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Version: VVVVV
|
||||
# Version: v1.3 (2023-04-17)
|
||||
|
||||
# get starting date
|
||||
# find gdate or date command ( OSX: brew install coreutils)
|
||||
|
@ -12,7 +12,7 @@
|
||||
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
|
||||
Version: v1.3 (2023-04-17)
|
||||
|
||||
License
|
||||
Copyright 2020-2021 Kasper D. Fischer <kasper.fischer@rub.de>
|
||||
@ -52,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'}
|
||||
|
||||
@ -70,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
|
||||
@ -88,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
|
||||
@ -125,7 +125,7 @@ if __name__ == "__main__":
|
||||
|
||||
# parse arguments
|
||||
import argparse
|
||||
versionText = 'VVVVV'
|
||||
versionText = 'v1.3 (2023-04-17)'
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Reverse geocoding lookup of events in xml format (stdin).',
|
||||
epilog=versionText)
|
||||
|
@ -1,5 +1,9 @@
|
||||
#!/bin/bash
|
||||
# version: VVVVV
|
||||
# version: v1.3 (2023-04-17)
|
||||
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 ...
|
||||
@ -10,7 +14,7 @@ shift
|
||||
files="$*"
|
||||
|
||||
echo ${version} ${files}
|
||||
which sponge > /dev/null || ( echo "sponge util must be installed" ; exit 0 )
|
||||
which sponge > /dev/null || fail "sponge util must be installed"
|
||||
|
||||
for file in ${files}; do
|
||||
sed "s/V\{5\}/${version}"/ ${file} | sponge ${file}
|
||||
|
@ -4,7 +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.
|
||||
|
||||
:version VVVVV
|
||||
:version v1.1 (2021-10-31)
|
||||
|
||||
:license
|
||||
Copyright 2020 Kasper Fischer <kasper.fischer@ruhr-uni-bochum.de>
|
||||
@ -378,7 +378,7 @@ if __name__ == "__main__":
|
||||
epilog=u'$Revision$ ($Date$, $Author$)'.replace(
|
||||
"$", ""))
|
||||
parser.add_argument(u'-v', u'-V', u'--version', action='version',
|
||||
version=u'VVVVV')
|
||||
version=u'v1.1 (2021-10-31)')
|
||||
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).')
|
||||
|
@ -8,7 +8,7 @@ def application(environ, start_response):
|
||||
:return: response to be sent to the client by the wsgi server
|
||||
:rtype: list
|
||||
|
||||
:version: VVVVV
|
||||
:version: v1.2 (2022-02-23)
|
||||
"""
|
||||
|
||||
from cgi import FieldStorage
|
||||
|
@ -3,7 +3,7 @@
|
||||
"""
|
||||
Produce a dayplot from seismogram recordings
|
||||
|
||||
version: VVVVV
|
||||
version: v1.2 (2022-02-23)
|
||||
|
||||
license: gpl3
|
||||
Copyright 2012-2020 Seismological Observatory, Ruhr-University Bochum
|
||||
|
@ -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"
|
@ -1,41 +1,12 @@
|
||||
/* last change 2021-10-30 */
|
||||
/* last change 2022-20-23 */
|
||||
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
|
||||
'bug2021ryaa' // Thedinghausen 3.2
|
||||
// 'bug2021vtgi', // Geilenkirchen 1.9
|
||||
// 'bug2022ahxi', // Erftstadt 2.9
|
||||
'bug2023hlmh' // Brüggen 3.3
|
||||
];
|
||||
|
@ -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 VVVVV
|
||||
Version v1.3 (2023-04-17)
|
||||
*/
|
||||
|
||||
/* 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]];
|
||||
|
@ -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 VVVVV
|
||||
Version v1.3 (2023-04-17)
|
||||
*/
|
||||
|
||||
/* 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]];
|
||||
|
2
www/external/easyPrint/bundle.js
vendored
2
www/external/easyPrint/bundle.js
vendored
File diff suppressed because one or more lines are too long
1
www/external/easyPrint/bundle.js.map
vendored
1
www/external/easyPrint/bundle.js.map
vendored
File diff suppressed because one or more lines are too long
16
www/external/easyPrint/easyPrint.css
vendored
16
www/external/easyPrint/easyPrint.css
vendored
@ -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;
|
||||
}
|
BIN
www/external/easyPrint/print.png
vendored
BIN
www/external/easyPrint/print.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 219 B |
6
www/external/jQuery.print.min.js
vendored
6
www/external/jQuery.print.min.js
vendored
@ -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);
|
@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Version VVVVV -->
|
||||
<!-- Version v1.3 (2023-04-17) -->
|
||||
<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" />
|
||||
@ -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 -->
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Version VVVVV -->
|
||||
<!-- Version v1.3 (2023-04-17) -->
|
||||
<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" />
|
||||
@ -112,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 -->
|
||||
|
@ -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 VVVVV
|
||||
Version v1.3 (2023-04-17)
|
||||
*/
|
||||
|
||||
/* add station marker */
|
||||
|
@ -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 VVVVV
|
||||
Version v1.3 (2023-04-17)
|
||||
*/
|
||||
|
||||
/* add station marker */
|
||||
|
10
www/misc.js
10
www/misc.js
@ -4,7 +4,7 @@
|
||||
**********************************************************************/
|
||||
|
||||
/* License
|
||||
Copyright 2014-2021 Kasper D. Fischer <kasper.fischer@rub.de>
|
||||
Copyright 2014-2023 Kasper D. Fischer <kasper.fischer@rub.de>
|
||||
|
||||
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
|
||||
@ -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 VVVVV
|
||||
Version v1.3 (2023-04-17)
|
||||
*/
|
||||
|
||||
/* calculate marker radius from magnitude
|
||||
@ -94,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: {
|
||||
@ -198,6 +198,10 @@ $(document).ready(function() {
|
||||
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
|
||||
$.ajaxSetup({timeout: config['ajax']['timeout']});
|
||||
|
@ -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 VVVVV
|
||||
Version v1.3 (2023-04-17)
|
||||
*/
|
||||
|
||||
/* Load the stations using ajax */
|
||||
|
@ -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 VVVVV
|
||||
Version v1.3 (2023-04-17)
|
||||
*/
|
||||
|
||||
/* Load the stations using ajax */
|
||||
|
Loading…
x
Reference in New Issue
Block a user