diff --git a/www/.htaccess b/www/.htaccess index 605d2f4..93cdb28 100644 --- a/www/.htaccess +++ b/www/.htaccess @@ -1 +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" diff --git a/www/events.js b/www/events.js index 3bc68e5..6cd209f 100644 --- a/www/events.js +++ b/www/events.js @@ -40,27 +40,23 @@ function addTableRow(row, table) { /* do reverse geolocation lookup */ function getGeolocation(id, lat, lng) { - if ( !geolocationTable[id] ) { + if ( $.inArray(id, geolocationTable) == -1 ) { $.getJSON( config['ajax']['nominatimURL'], { lat: lat, lon: lng } ) .done(function( json ) { - var city = json.address["city"]; - if ( ~city ) { city = json.address["town"]; }; - if ( ~city ) { city = json.address["village"]; }; - var country = json.address["country"]; - var countryCode = json.address["country_code"].toUpperCase(); - var city = json.features[0].properties.city; - var countryCode = json.features[0].properties.country; - geolocationTable[id] = city; - ( countryCode != "DE" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null; - ( countryCode != "Germany" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null; - if ( city ) { - $("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]); - var sort = [[0,1],[1,1],[2,1]]; - $("#eventstable").trigger("update", [true]); - $("#eventstable").trigger("updateCache"); - $("#eventstable").trigger("sorton", [sort]); - } else { - // console.log("Nominatim did not provide a city tag for "+lat+" / "+lng); + if ( json.features[0] ) { + 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; + if ( city ) { + $("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]); + var sort = [[0,1],[1,1],[2,1]]; + $("#eventstable").trigger("update", [true]); + $("#eventstable").trigger("updateCache"); + $("#eventstable").trigger("sorton", [sort]); + } else { + // console.log("Nominatim did not provide a city tag for "+lat+" / "+lng); + }; }; }) .fail(function( jqxhr, textStatus, error ) { @@ -93,7 +89,7 @@ function ajaxLoadEvents(stime, etime, eventid, url, target) { } else { request_data = { starttime: sprintf("%d-%02d-%02d", rtime.getFullYear(), rtime.getMonth()+1, rtime.getDate()), - orderby: 'time', + orderby: 'time-asc', minlat: sprintf('%.2f', mapBounds.getSouth()-config['map']['latlngDelta']), maxlat: sprintf('%.2f', mapBounds.getNorth()+config['map']['latlngDelta']), minlon: sprintf('%.2f', mapBounds.getWest()-config['map']['latlngDelta']), @@ -124,7 +120,7 @@ function ajaxLoadEvents(stime, etime, eventid, url, target) { var type = $(this).find('type').last().text(); var location // create table row: Date, Time, Mag, Location - if ( !eventTable[id] && $.inArray(type, config['event']['typeWhitelist'] )+1 && $.inArray(evaluationStatus, config['event']['evaluationBlacklist'])<0 && Number(mag)+0.05 >= config['event']['minMag'] ) { + if ( !eventTable[id] && $.inArray(type, config['event']['typeWhitelist'] ) >= 0 && $.inArray(evaluationStatus, config['event']['evaluationBlacklist'])<0 && Number(mag)+0.05 >= config['event']['minMag'] ) { geolocationTable[id] ? null : getGeolocation(id, lat, lng); // do AJAX lookup if not cached, location will be updated later location = ( geolocationTable[id] || getLocation(lat, lng)[0] || $(this).find('description > text').text() ); // general event info (1st line) @@ -432,7 +428,12 @@ $(document).ready(function() { typetext += '(bergbau-)induziertes Ereignis (Kreis)'; break; case 'quarry blast': - typetext += 'Steinbruchsprengung (Rad)'; + case 'controlled explosion': + case 'explosion': + typetext += 'Sprengung (Rad)'; + break; + case 'nuclear explosion': + typetext += 'Atomwaffentest (Viereck)'; break; }; $("#events-type").append(typetext); diff --git a/www/events.js.en b/www/events.js.en index 0c7c3c2..e06e2c9 100644 --- a/www/events.js.en +++ b/www/events.js.en @@ -40,27 +40,23 @@ function addTableRow(row, table) { /* do reverse geolocation lookup */ function getGeolocation(id, lat, lng) { - if ( !geolocationTable[id] ) { + if ( $.inArray(id, geolocationTable) == -1 ) { $.getJSON( config['ajax']['nominatimURL'], { lat: lat, lon: lng } ) .done(function( json ) { - var city = json.address["city"]; - if ( ~city ) { city = json.address["town"]; }; - if ( ~city ) { city = json.address["village"]; }; - var country = json.address["country"]; - var countryCode = json.address["country_code"].toUpperCase(); - var city = json.features[0].properties.city; - var countryCode = json.features[0].properties.country; - geolocationTable[id] = city; - ( countryCode != "DE" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null; - ( countryCode != "Germany" ) ? geolocationTable[id] = geolocationTable[id] + " ("+countryCode+")" : null; - if ( city ) { - $("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]); - var sort = [[0,1],[1,1],[2,1]]; - $("#eventstable").trigger("update", [true]); - $("#eventstable").trigger("updateCache"); - $("#eventstable").trigger("sorton", [sort]); - } else { - // console.log("Nominatim did not provide a city tag for "+lat+" / "+lng); + if ( json.features[0] ) { + 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; + if ( city ) { + $("#eventstable a.toggle[eventid="+id+"]").text(geolocationTable[id]); + var sort = [[0,1],[1,1],[2,1]]; + $("#eventstable").trigger("update", [true]); + $("#eventstable").trigger("updateCache"); + $("#eventstable").trigger("sorton", [sort]); + } else { + // console.log("Nominatim did not provide a city tag for "+lat+" / "+lng); + }; }; }) .fail(function( jqxhr, textStatus, error ) { @@ -93,7 +89,7 @@ function ajaxLoadEvents(stime, etime, eventid, url, target) { } else { request_data = { starttime: sprintf("%d-%02d-%02d", rtime.getFullYear(), rtime.getMonth()+1, rtime.getDate()), - orderby: 'time', + orderby: 'time-asc', minlat: sprintf('%.2f', mapBounds.getSouth()-config['map']['latlngDelta']), maxlat: sprintf('%.2f', mapBounds.getNorth()+config['map']['latlngDelta']), minlon: sprintf('%.2f', mapBounds.getWest()-config['map']['latlngDelta']), @@ -123,8 +119,8 @@ function ajaxLoadEvents(stime, etime, eventid, url, target) { var evaluationStatus = $(this).find('origin > evaluationStatus').text(); var type = $(this).find('type').last().text(); var location - // get location, try this in order: - if ( !eventTable[id] && $.inArray(type, config['event']['typeWhitelist'] )+1 && $.inArray(evaluationStatus, config['event']['evaluationBlacklist'])<0 && Number(mag)+0.05 >= config['event']['minMag'] ) { + // create table row: Date, Time, Mag, Location + if ( !eventTable[id] && $.inArray(type, config['event']['typeWhitelist'] ) >= 0 && $.inArray(evaluationStatus, config['event']['evaluationBlacklist'])<0 && Number(mag)+0.05 >= config['event']['minMag'] ) { geolocationTable[id] ? null : getGeolocation(id, lat, lng); // do AJAX lookup if not cached, location will be updated later location = ( geolocationTable[id] || getLocation(lat, lng)[0] || $(this).find('description > text').text() ); // general event info (1st line) @@ -432,8 +428,13 @@ $(document).ready(function() { typetext += '(mining-)induced event (circle)'; break; case 'quarry blast': + case 'controlled explosion': + case 'explosion': typetext += 'quarry blast (wheel)'; break; + case 'nuclear explosion': + typetext += 'nuclear weapon test (square)'; + break; }; $("#events-type").append(typetext); }); diff --git a/www/index.html.en b/www/index.html.en index 47b3175..7d1e4e2 100755 --- a/www/index.html.en +++ b/www/index.html.en @@ -40,6 +40,9 @@ + + + @@ -115,7 +118,7 @@ Symbols:

- Nominatim Search Courtesy of MapQuest Mapquest Logo + Reverse Geolocation courtesy of Photon by Komoot

diff --git a/www/map.js b/www/map.js index d1e1dfd..5d7fd21 100644 --- a/www/map.js +++ b/www/map.js @@ -17,7 +17,7 @@ for more details. You should have received a copy of the GNU General Public License along - with this program. If not, see http://www.gnu.org/licenses/. + with this program. If not, see https://www.gnu.org/licenses/. $Id$ */ @@ -61,6 +61,12 @@ function addEventMarker(id, lat, lng, mag, type) { case 'earthquake': marker = L.starMarker(L.latLng(lat, lng), markerOptions); break; + case 'nuclear explosion': + markerOptions['numberOfSides'] = 4; + markerOptions['radius'] = 2.0*markerOptions['radius']; + markerOptions['innerRadius'] = 0.3*markerOptions['radius']; + marker = L.regularPolygonMarker(L.latLng(lat, lng), markerOptions); + break; case 'explosion': markerOptions['numberOfSides'] = 6; markerOptions['radius'] = 2.0*markerOptions['radius']; @@ -68,6 +74,7 @@ function addEventMarker(id, lat, lng, mag, type) { marker = L.regularPolygonMarker(L.latLng(lat, lng), markerOptions); break; case 'quarry blast': + case 'controlled explosion': markerOptions['numberOfPoints'] = 7; markerOptions['innerRadius'] = 0.3*markerOptions['radius']; marker = L.starMarker(L.latLng(lat, lng), markerOptions); @@ -138,9 +145,9 @@ $(document).ready(function() { switch ( config['map']['baselayer'] ) { case 'osmde': // add OpenStreetMap.DE tile layer map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); - L.tileLayer('http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', + L.tileLayer('https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', { - attribution: '© OpenStreetMap contributors, CC-BY-SA', + attribution: '© OpenStreetMap contributors, CC-BY-SA', }).addTo(map); break; case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names) @@ -153,7 +160,7 @@ $(document).ready(function() { break; case 'aerial': // add ESRI WordImagery tile layer map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); - L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', + L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', { attribution: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' }).addTo(map); @@ -162,18 +169,19 @@ $(document).ready(function() { map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); L.tileLayer('//www.komoot.de/tiles/{s}/{z}/{x}/{y}.png', { - attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of Komoot', + attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of Komoot', }).addTo(map); break; case 'mapquestgray': // add MapQuestOSM tile layer - map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); - L.tileLayer.grayscale('http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', - { - subdomains: '1234', - detectRetina: true, - attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', - }).addTo(map); - break; + null; + // map = L.map('map', { zoomControl: false, worldCopyJump: true, layers: mapLayer }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); + // L.tileLayer.grayscale('https://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', + // { + // subdomains: '1234', + // detectRetina: true, + // attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', + //}).addTo(map); + //break; case 'mapquest': // add MapQuestOSM tile layer null; default: @@ -183,11 +191,11 @@ $(document).ready(function() { worldCopyJump: true, layers: mapLayer, }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); - //L.tileLayer('http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', + //L.tileLayer('https://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', //{ //subdomains: '1234', //detectRetina: true, - //attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', + //attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', //}).addTo(map); }; diff --git a/www/map.js.en b/www/map.js.en index 6281eb5..7a46b22 100644 --- a/www/map.js.en +++ b/www/map.js.en @@ -17,7 +17,7 @@ for more details. You should have received a copy of the GNU General Public License along - with this program. If not, see http://www.gnu.org/licenses/. + with this program. If not, see https://www.gnu.org/licenses/. $Id$ */ @@ -61,6 +61,12 @@ function addEventMarker(id, lat, lng, mag, type) { case 'earthquake': marker = L.starMarker(L.latLng(lat, lng), markerOptions); break; + case 'nuclear explosion': + markerOptions['numberOfSides'] = 4; + markerOptions['radius'] = 2.0*markerOptions['radius']; + markerOptions['innerRadius'] = 0.3*markerOptions['radius']; + marker = L.regularPolygonMarker(L.latLng(lat, lng), markerOptions); + break; case 'explosion': markerOptions['numberOfSides'] = 6; markerOptions['radius'] = 2.0*markerOptions['radius']; @@ -68,6 +74,7 @@ function addEventMarker(id, lat, lng, mag, type) { marker = L.regularPolygonMarker(L.latLng(lat, lng), markerOptions); break; case 'quarry blast': + case 'controlled explosion': markerOptions['numberOfPoints'] = 7; markerOptions['innerRadius'] = 0.3*markerOptions['radius']; marker = L.starMarker(L.latLng(lat, lng), markerOptions); @@ -133,19 +140,19 @@ 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']); - new L.Control.Zoom({ position: 'topright' }).addTo(map); - new L.control.scale({position: 'bottomright', imperial: false}).addTo(map); + // create baselayer switch ( config['map']['baselayer'] ) { case 'osmde': // add OpenStreetMap.DE tile layer - L.tileLayer('http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', + map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); + L.tileLayer('https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', { - attribution: '© OpenStreetMap contributors, CC-BY-SA', + attribution: '© OpenStreetMap contributors, CC-BY-SA', }).addTo(map); break; case 'esrigray': // add ESRI Grayscale World Map (neither city nor road names) + map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); L.tileLayer('//server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}', { attribution: 'Tiles © Esri — Esri, DeLorme, NAVTEQ', @@ -153,35 +160,48 @@ $(document).ready(function() { }).addTo(map); break; case 'aerial': // add ESRI WordImagery tile layer - L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', + map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); + L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', { attribution: 'Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' }).addTo(map); break; case 'komoot': // add OpenStreetMap.DE tile layer + map = L.map('map', { zoomControl: false, worldCopyJump: true }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); L.tileLayer('//www.komoot.de/tiles/{s}/{z}/{x}/{y}.png', { - attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of Komoot', + attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of Komoot', }).addTo(map); break; case 'mapquestgray': // add MapQuestOSM tile layer - L.tileLayer.grayscale('http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', - { - subdomains: '1234', - detectRetina: true, - attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', - }).addTo(map); - break; + null; + // map = L.map('map', { zoomControl: false, worldCopyJump: true, layers: mapLayer }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); + // L.tileLayer.grayscale('https://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', + // { + // subdomains: '1234', + // detectRetina: true, + // attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', + //}).addTo(map); + //break; case 'mapquest': // add MapQuestOSM tile layer null; default: - L.tileLayer('http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', - { - subdomains: '1234', - detectRetina: true, - attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', - }).addTo(map); + var mapLayer = MQ.mapLayer(); + map = L.map('map', { + zoomControl: false, + worldCopyJump: true, + layers: mapLayer, + }).setView(config['map']['centerDefault'], config['map']['zoomDefault']); + //L.tileLayer('https://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpg', + //{ + //subdomains: '1234', + //detectRetina: true, + //attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA | Tiles Courtesy of MapQuest ', + //}).addTo(map); }; + // add controls + new L.Control.Zoom({ position: 'topright' }).addTo(map); + new L.control.scale({position: 'bottomright', imperial: false}).addTo(map); // create station and event layer // stationLayer = L.geoJson().addTo(map); diff --git a/www/misc.js b/www/misc.js index e249cc4..d0a8c31 100644 --- a/www/misc.js +++ b/www/misc.js @@ -91,10 +91,10 @@ var stationTable = {}; var config = { ajax: { timeout: 20000, // 20 seconds - eventURL: '/fdsnws/event/1/query', + eventURL: 'https://fdsnws.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query', dlsvURL: 'dlsv', - mseedURL: '/fdsnws/dataselect/1/query', - stationURL: '/fdsnws/station/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', nominatimURL: 'https://photon.komoot.de/reverse', timespan: 180, }, @@ -105,7 +105,9 @@ var config = { markerColorH: 'red', minMag: 1.2, minMagDelta: 0.1, - typeWhitelist: ['earthquake', 'induced or triggered event', 'quarry blast', 'explosion'], + typeWhitelist: ['earthquake', 'induced or triggered event', 'controlled explosion'], + // typeWhitelist: ['earthquake', 'induced or triggered event', 'controlled explosion', 'nuclear explosion'], + // typeWhitelist: ['earthquake', 'induced or triggered event'], }, map: { zoomDefault: 9, @@ -128,7 +130,11 @@ var config = { NL_WIT: 3, NL_WTSB: 3, }, - networkBlacklist: ['NL', 'X5'], + networkBlacklist: ['NL', 'X5', '1A', 'AM'], + stationBlacklist: ['RN_WEA2', 'RN_ACN', 'RN_BHE', 'RN_ENT', 'RN_GSH', 'RN_HES', 'RN_JCKS', 'RN_LOH', + 'RN_OLF', 'RN_PLH', 'RN_RWB', 'RN_SOR', 'RN_TDN', 'RN_WBS', + 'RN_HAM1', 'RN_HAM2', 'RN_HAM3', 'RN_HAM4', 'RN_HAM5', 'RN_HAM6', 'RN_HAM7', 'RN_HAM8', 'RN_HAM9', + 'RN_HAM10', 'RN_HAM11', 'RN_HAM12', 'RN_HAM13', 'RN_HAM14', 'RN_HAM15', 'RN_HAM16', 'RN_HAM17'], }, tab: { active: 0, @@ -139,13 +145,18 @@ var config = { var networkURL = { GE: 'http://dx.doi.org/10.14470/TR560404', GR: 'http://www.bgr.bund.de/DE/Themen/Erdbeben-Gefaehrdungsanalysen/Seismologie/Seismologie/Seismometer_Stationen/Stationsnetze/d_stationsnetz_node.html', + NH: 'http://www.gd.nrw.de/gg_le.htm', NL: 'http://www.knmi.nl/seismologie/seismisch_network_knmi3.html', + RN: 'https://doi.org/10.7914/SN/RN', + YD: 'https://doi.org/10.7914/SN/YD_2020', }; var networkText = { - GE: 'GEOFON Program, GFZ Potsdam', + GE: 'GEOFON Seismic Network - Deutsches GeoForschungsZentrum GFZ', GR: 'German Regional Seismic Network, BGR Hannover', + NH: 'Geologischer Dienst NRW, Krefeld', NL: 'Netherlands Seismic Network, The Netherlands', - RN: 'RuhrNet - Ruhr-University Bochum, Germany', + RN: 'RuhrNet - Ruhr-University Bochum, Germany', + YD: 'FloodRisk Seismic Network', }; var bochumStation = ['BUG', 'IBBN', 'KERA', 'KARP']; diff --git a/www/specialevents.js b/www/specialevents.js index 5ecfd56..057017a 100644 --- a/www/specialevents.js +++ b/www/specialevents.js @@ -9,6 +9,29 @@ var specialEvents = [ //'bug2014ilxd', // Bassum //'bug2014gfzw', // Darmstadt //'bug2014datb', // Groningen - 'bug2013yvko', // Haltern 3.4 - 'bug2015fdpy', // Darmstadt 3.0 + // '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 ]; diff --git a/www/stations.js b/www/stations.js index fb41de5..00982ea 100644 --- a/www/stations.js +++ b/www/stations.js @@ -23,7 +23,7 @@ */ /* Load the stations using ajax */ -function loadStations(stime, etime) { +function loadStations(station, stime, etime) { var mapBounds = map.getBounds(); var N = mapBounds.getNorth(); var E = mapBounds.getEast(); @@ -37,14 +37,23 @@ function loadStations(stime, etime) { var etime = new Date(); etime.setDate(etime.getDate()+1); }; - var request_data = { - endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), - startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), - level: 'channel', - minlat: S-config['map']['latlngDelta'], - maxlat: N+config['map']['latlngDelta'], - minlon: W-config['map']['latlngDelta'], - maxlon: E+config['map']['latlngDelta'], + if ( !station ) { + var request_data = { + endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), + startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), + level: 'station', + minlat: S-config['map']['latlngDelta'], + maxlat: N+config['map']['latlngDelta'], + minlon: W-config['map']['latlngDelta'], + maxlon: E+config['map']['latlngDelta'], + }; + } else { + var request_data = { + endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), + startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), + level: 'channel', + station: station, + }; }; $.ajax({ type: "GET", @@ -61,13 +70,13 @@ function loadStations(stime, etime) { lng = $(this).find('Longitude:first').text(), stationID = network+'_'+station, stationText = network+'.'+station; - if ( !stationTable[stationID] ) { + if ( !stationTable[stationID] && $.inArray(stationID, config['station']['stationBlacklist']) <0 ) { // general station info (1st line) var row = sprintf('%s%s%7.4f%7.4f' , network, station, Number(lat), Number(lng)); // setting up network details (2nd line) row += sprintf('%s', networkText[network] || ''); row += ( $.inArray(station, bochumStation)+1 ) ? '
Betreiber: Ruhr-Universität Bochum' : '' ; - if ( network == 'RN' || network == 'X5' || $.inArray(station, bochumStation)+1 ) { + if ( network == 'RN' || network == 'Z3' || network == '1A' || network == 'YD' || $.inArray(station, bochumStation)+1 ) { // setting up station details (3rd line) row += ''; row += stationDetails(station, network, lat, lng, stationID, stationText, $(this)); @@ -114,7 +123,16 @@ function loadStations(stime, etime) { } }); // create stations csv download link - request_data['format'] = 'text'; + var request_data = { + endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), + startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), + level: 'station', + minlat: S-config['map']['latlngDelta'], + maxlat: N+config['map']['latlngDelta'], + minlon: W-config['map']['latlngDelta'], + maxlon: E+config['map']['latlngDelta'], + format: 'text', + }; $('#stations-csv-link').attr('href', config['ajax']['stationURL']+'?'+$.param(request_data)); }; @@ -205,6 +223,20 @@ function initStationTable() { **********************************************************************/ $(document).ready(function() { loadStations(); + loadStations('A100A'); + loadStations('A101B'); + loadStations('A102A'); + loadStations('A103A'); + loadStations('A103B'); + loadStations('A104A'); + loadStations('A104B'); + loadStations('A105A'); + loadStations('A106B'); + loadStations('A107C'); + loadStations('A108A'); + loadStations('A109A'); + // loadStations('KERA'); + // loadStations('KARP'); // show / hide station info $('#stationstable').delegate('.toggle', 'click' , function(){ // toggle visibility of selected row diff --git a/www/stations.js.en b/www/stations.js.en index 255ec32..c20f615 100644 --- a/www/stations.js.en +++ b/www/stations.js.en @@ -23,7 +23,7 @@ */ /* Load the stations using ajax */ -function loadStations(stime, etime) { +function loadStations(station, stime, etime) { var mapBounds = map.getBounds(); var N = mapBounds.getNorth(); var E = mapBounds.getEast(); @@ -37,14 +37,23 @@ function loadStations(stime, etime) { var etime = new Date(); etime.setDate(etime.getDate()+1); }; - var request_data = { - endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), - startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), - level: 'channel', - minlat: S-config['map']['latlngDelta'], - maxlat: N+config['map']['latlngDelta'], - minlon: W-config['map']['latlngDelta'], - maxlon: E+config['map']['latlngDelta'], + if ( !station ) { + var request_data = { + endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), + startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), + level: 'station', + minlat: S-config['map']['latlngDelta'], + maxlat: N+config['map']['latlngDelta'], + minlon: W-config['map']['latlngDelta'], + maxlon: E+config['map']['latlngDelta'], + }; + } else { + var request_data = { + endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), + startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), + level: 'channel', + station: station, + }; }; $.ajax({ type: "GET", @@ -61,13 +70,13 @@ function loadStations(stime, etime) { lng = $(this).find('Longitude:first').text(), stationID = network+'_'+station, stationText = network+'.'+station; - if ( !stationTable[stationID] ) { + if ( !stationTable[stationID] && $.inArray(stationID, config['station']['stationBlacklist']) <0 ) { // general station info (1st line) var row = sprintf('%s%s%7.4f%7.4f' , network, station, Number(lat), Number(lng)); // setting up network details (2nd line) row += sprintf('%s', networkText[network] || ''); - row += ( $.inArray(station, bochumStation)+1 ) ? '
Operator: Ruhr-University Bochum' : '' ; - if ( network == 'RN' || network == 'X5' || $.inArray(station, bochumStation)+1 ) { + row += ( $.inArray(station, bochumStation)+1 ) ? '
Operator: Ruhr-University Bochum, Germany' : '' ; + if ( network == 'RN' || network == 'Z3' || network == '1A' || network == 'YD' || $.inArray(station, bochumStation)+1 ) { // setting up station details (3rd line) row += ''; row += stationDetails(station, network, lat, lng, stationID, stationText, $(this)); @@ -114,7 +123,16 @@ function loadStations(stime, etime) { } }); // create stations csv download link - request_data['format'] = 'text'; + var request_data = { + endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), + startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), + level: 'station', + minlat: S-config['map']['latlngDelta'], + maxlat: N+config['map']['latlngDelta'], + minlon: W-config['map']['latlngDelta'], + maxlon: E+config['map']['latlngDelta'], + format: 'text', + }; $('#stations-csv-link').attr('href', config['ajax']['stationURL']+'?'+$.param(request_data)); }; @@ -130,7 +148,7 @@ function stationDetails(station, network, lat, lng, stationId, stationText, stat var code = $(this).attr('code'); var sensor = $(this).find('Sensor > Type').text().split(',')[0]; var sampleRate = $(this).find('SampleRate').text(); - output += '
Chanel ' + code + ', Samplingrate ' + sampleRate + ' Hz, Sensor ' + sensor; + output += '
Channel ' + code + ', Samplingrate ' + sampleRate + ' Hz, Sensor ' + sensor; }); output += ''; return output; @@ -205,6 +223,20 @@ function initStationTable() { **********************************************************************/ $(document).ready(function() { loadStations(); + loadStations('A100A'); + loadStations('A101B'); + loadStations('A102A'); + loadStations('A103A'); + loadStations('A103B'); + loadStations('A104A'); + loadStations('A104B'); + loadStations('A105A'); + loadStations('A106B'); + loadStations('A107C'); + loadStations('A108A'); + loadStations('A109A'); + // loadStations('KERA'); + // loadStations('KARP'); // show / hide station info $('#stationstable').delegate('.toggle', 'click' , function(){ // toggle visibility of selected row