diff --git a/www/events.js b/www/events.js index bef9f19..40169de 100644 --- a/www/events.js +++ b/www/events.js @@ -25,8 +25,7 @@ /* do reverse geolocation lookup */ function getGeolocation(id, lat, lng) { if ( !geolocationTable[id] ) { - // $.getJSON( "//nominatim.openstreetmap.org/reverse", { lat: lat, lon: lng, zoom: 10, format: "json" } ) - $.getJSON( "//open.mapquestapi.com/nominatim/v1/reverse.php", { lat: lat, lon: lng, zoom: 10, format: "json" } ) + $.getJSON( config['ajax']['nominatimURL'], { lat: lat, lon: lng, zoom: 10, format: "json" } ) .done(function( json ) { var city = json.address["city"]; var country = json.address["country"]; @@ -57,28 +56,26 @@ function ajaxLoadEvents(stime, etime) { var E = mapBounds.getEast(); var S = mapBounds.getSouth(); var W = mapBounds.getWest(); - var d = 0.1; if ( !stime ) { var stime = new Date(); - stime.setDate(stime.getDate()-180); + stime.setDate(stime.getDate()-config['map']['timespan']); }; if ( !etime ) { var etime = new Date(); etime.setDate(etime.getDate()+1); }; - var url = "https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query" var request_data = { starttime: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), endtime: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), - minlat: S-d, - maxlat: N+d, - minlon: W-d, - maxlon: E+d, - minmag: config['event']['minMag']-0.1, + minlat: S-config['map']['latlngDelta'], + maxlat: N+config['map']['latlngDelta'], + minlon: W-config['map']['latlngDelta'], + maxlon: E+config['map']['latlngDelta'], + minmag: config['event']['minMag']-config['event']['minMagDelta'], }; $.ajax({ type: "GET", - url: url, + url: config['ajax']['eventURL'], data: request_data, dataType: "xml", success: function (xml) { @@ -88,7 +85,6 @@ function ajaxLoadEvents(stime, etime) { var otime = $(this).find('origin > time > value').text(); var lng = $(this).find('origin > longitude > value').text(); var lat = $(this).find('origin > latitude > value').text(); - var mag = $(this).find('magnitude > mag > value').text(); var evaluationMode = $(this).find('evaluationMode').text(); var evaluationStatus = $(this).find('evaluationStatus').text(); var type = $(this).find('type').last().text(); @@ -110,7 +106,7 @@ function ajaxLoadEvents(stime, etime) { + '
ID "+id+"\n\n" - + "Origin\n" - + "Date "+props.date+"\n" - + "Time "+props.time+"\n" - + "Latitude "+props.lat+" deg +/- "+props.lat_err+" km\n" - + "Longitude "+props.lon+" deg +/- "+props.lon_err+" km\n" - + "Depth "+props.depth+" km +/- "+props.depth_err+" km\n" - + "Residual RMS "+props.rms+" s\n" - + "Azimuthal gap "+props.gap+" deg\n\n" - + props.no_phases + " Phase arrivals:\n" - + "sta net dist azi phase time res wt sta\n"; - for ( i = 0 ; i < props.no_phases ; i++ ) { - html += props.phases[i]; - ( i < props.no_phases -1 ) ? html += "\n" : null ; +/* ajaxLoadEventInfo */ +function ajaxLoadEventInfo(id) { + var request_data = { + eventid: id, + includeArrivals: true, }; - html += "
" + + sprintf("ID %49s\n", id) + + sprintf("Type %47s\n\n", type) + + "Origin\n" + + sprintf("Date %18s\n", otime.split('T')[0]) + + sprintf("Time %18s UTC\n", otime.split('T')[1].substring(0, 11)) + + sprintf("Latitude %14.4f °N +- %4.1f km\n",Number(lat), Number(lat_err)) + + sprintf("Longitude %13.4f °E +- %4.1f km\n", Number(lng), Number(lng_err)) + + sprintf("Depth %14.1f km +- %4.1f km\n", Number(depth)/1000., Number(depth_err)/1000.) + + sprintf("Magnitude %10.1f\n", Number(mag)) + + sprintf("Residual RMS %7.1f sec\n", Number(rms)) + + sprintf("Azimuthal gap %6.1f °\n\n", Number(gap)) + + sprintf("%d Phase arrivals:\n", Number(phases_count)) + + "sta net dist azi phase time res wt\n"; + // adding phase info (TODO sort by distance) + $(this).find('origin > arrival').each(function() { + var pickid = $(this).find('pickID').text(); + var azi = $(this).find('azimuth').text(); + var dist = $(this).find('distance').text(); + var tres = $(this).find('timeResidual').text(); + var phase = $(this).find('phase').text(); + var tweight = $(this).find('timeWeight').text(); + if ( Number(tweight) > 0.0 ) { + var waveformid = event.find('pick[publicID="'+pickid+'"] > waveformID'); + var networkcode = waveformid.attr('networkCode'); + var stationcode = waveformid.attr('stationCode'); + var channel = waveformid.attr('channelCode').substring(2,2); + var phasemode = event.find('pick[publicID="'+pickid+'"] > evaluationMode').text().substring(0,1).toUpperCase(); + var picktime = event.find('pick[publicID="'+pickid+'"] > time > value').text().split('T')[1].substring(0,11); + row = row + + sprintf('%-4s %2s %5.1f %5.1f %3s %1s %13s %5.1f %5.2f\n', stationcode, networkcode, Number(dist), Number(azi), phase, phasemode, picktime, Number(tres), Number(tweight)); + }; + }); + row = row + ''; + $('#eventstable > tbody > tr.tablesorter-childRow > td[eventid='+id+']').html(row); + }); + }, + complete: function () { + null; + }, + error: function( jqxhr, textStatus, error ) { + var err = textStatus + ", " + error; + console.log( "Request Failed: " + err ); + } }); - $('#eventstable').find('td.utctime-time').each(function() { - $.localtime.formatObject($(this), "HH:mm"); - $(this).removeClass('utctime-time'); - $(this).addClass('localtime-time'); - }); - // force resorting - $("#eventstable").trigger("update", [true]); }; /* toggles visibility of filtered markers @@ -314,6 +336,10 @@ $(document).ready(function() { // show / hide event info $('#eventstable').delegate('.toggle', 'click' , function(){ + // load event details + var eventid = $(this).attr('eventid'); + ( eventDetails[eventid] ) ? null : ajaxLoadEventInfo(eventid); + // toggle visibility of selected row $(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').toggle('slow'); @@ -322,7 +348,7 @@ $(document).ready(function() { $(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').addClass('selected-now'); $(this).closest('tbody').find('td.selected').each(function(){ if ( ! $(this).hasClass('selected-now') ) { - $(this).hide('slow'); + $(this).hide(); $(this).removeClass('selected'); }; }); diff --git a/www/misc.js b/www/misc.js index bdde136..621ea11 100644 --- a/www/misc.js +++ b/www/misc.js @@ -30,21 +30,9 @@ function mag2radius(mag) { }; /* set height of eventlist div */ -function sleep(milliseconds) { - var start = new Date().getTime(); - for (var i = 0; i < 1e7; i++) { - if ((new Date().getTime() - start) > milliseconds){ - break; - } - } -} - -/* setInfoHeight */ function setInfoHeight() { var height = $('div.map').height() - 36; $('div.info').height(height); - //$('.tab').height(height-80); - //$('#eventtable').height(height-100); }; /* get region and regionID of a location */ @@ -89,16 +77,26 @@ var eventTable = {}; var eventDetails = {}; var stationTable = {}; var config = { + ajax: { + timeout: 150000, // 15 seconds + eventURL: 'https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query', + stationURL: 'https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/station/1/query', + nominatimURL: '//open.mapquestapi.com/nominatim/v1/reverse.php', + // nominatimURL: '//nominatim.openstreetmap.org/reverse', + }, event: { - evaluationBlacklist: ['automatic', 'preliminary'], + evaluationBlacklist: ['automatic', 'preliminary', 'rejected'], markerOpacity: 0.3, minMag: 1.2, + minMagDelta: 0.1, typeWhitelist: ['earthquake', 'induced or triggered event'], }, map: { zoomDefault: 9, zoomFocus: 12, centerDefault: [51.85, 7.0], + timespan: 180, + latlngDelta: 0.1, }, station: { markerOpacity: 0.5, @@ -110,15 +108,16 @@ var config = { **********************************************************************/ $(document).ready(function() { // AJAX setup - $.ajaxSetup({timeout: 15000}); // 15 seconds + $.ajaxSetup({timeout: config['ajax']['timeout']}); + // adjust height of infocontainer setInfoHeight(); + // create tabs var tabOptions = { active: 0, disabled: [2, 3], }; $('#tabs').tabs(tabOptions); - // $('.ui-tabs-nav').sortable(); }); diff --git a/www/stations.js b/www/stations.js index f8c2109..25aa806 100644 --- a/www/stations.js +++ b/www/stations.js @@ -29,11 +29,9 @@ function loadStations(stime, etime) { var E = mapBounds.getEast(); var S = mapBounds.getSouth(); var W = mapBounds.getWest(); - var d = 0.1; - var url = "https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/station/1/query"; if ( !stime ) { var stime = new Date(); - stime.setDate(stime.getDate()-180); + stime.setDate(stime.getDate()-config['map']['timespan']); }; if ( !etime ) { var etime = new Date(); @@ -42,14 +40,14 @@ function loadStations(stime, etime) { 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()), - minlat: S-d, - maxlat: N+d, - minlon: W-d, - maxlon: E+d, + minlat: S-config['map']['latlngDelta'], + maxlat: N+config['map']['latlngDelta'], + minlon: W-config['map']['latlngDelta'], + maxlon: E+config['map']['latlngDelta'], }; $.ajax({ type: "GET", - url: url, + url: config['ajax']['stationURL'], dataType: "xml", data: request_data, success: function (xml) {