Load event details together with the event table.
This commit is contained in:
parent
882bd9aa14
commit
b38fcddad7
Notes:
subgit
2018-03-07 17:58:49 +01:00
r622 www/trunk
137
www/events.js
137
www/events.js
@ -72,6 +72,7 @@ function ajaxLoadEvents(stime, etime) {
|
|||||||
minlon: W-config['map']['latlngDelta'],
|
minlon: W-config['map']['latlngDelta'],
|
||||||
maxlon: E+config['map']['latlngDelta'],
|
maxlon: E+config['map']['latlngDelta'],
|
||||||
minmag: config['event']['minMag']-config['event']['minMagDelta'],
|
minmag: config['event']['minMag']-config['event']['minMagDelta'],
|
||||||
|
includeArrivals: true,
|
||||||
};
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
@ -80,16 +81,24 @@ function ajaxLoadEvents(stime, etime) {
|
|||||||
dataType: "xml",
|
dataType: "xml",
|
||||||
success: function (xml) {
|
success: function (xml) {
|
||||||
$(xml).find('event').each(function () {
|
$(xml).find('event').each(function () {
|
||||||
|
var event = $(this);
|
||||||
var id = $(this).attr('publicID').split('/')[2];
|
var id = $(this).attr('publicID').split('/')[2];
|
||||||
var mag = $(this).find('magnitude > mag > value').text();
|
var mag = $(this).find('magnitude > mag > value').text();
|
||||||
var otime = $(this).find('origin > time > value').text();
|
var otime = $(this).find('origin > time > value').text();
|
||||||
var lng = $(this).find('origin > longitude > value').text();
|
var lng = $(this).find('origin > longitude > value').text();
|
||||||
|
var lng_err = $(this).find('origin > longitude > uncertainty').text();
|
||||||
var lat = $(this).find('origin > latitude > value').text();
|
var lat = $(this).find('origin > latitude > value').text();
|
||||||
|
var lat_err = $(this).find('origin > latitude > uncertainty').text();
|
||||||
|
var depth = $(this).find('origin > depth > value').text();
|
||||||
|
var depth_err = $(this).find('origin > depth > uncertainty').text();
|
||||||
|
var rms = $(this).find('origin > quality > standardError').text();
|
||||||
|
var gap = $(this).find('origin > quality > azimuthalGap').text();
|
||||||
|
var phases_count = $(this).find('origin > quality > usedPhaseCount').text();
|
||||||
var evaluationMode = $(this).find('evaluationMode').text();
|
var evaluationMode = $(this).find('evaluationMode').text();
|
||||||
var evaluationStatus = $(this).find('evaluationStatus').text();
|
var evaluationStatus = $(this).find('evaluationStatus').text();
|
||||||
var type = $(this).find('type').last().text();
|
var type = $(this).find('type').last().text();
|
||||||
var location
|
var location
|
||||||
// try use location with reverse geolocation lookup (nominatim), check cache first
|
// try to use location with reverse geolocation lookup (nominatim), check cache first
|
||||||
// use getLocation if it fails or description -> text if it also fails
|
// use getLocation if it fails or description -> text if it also fails
|
||||||
if ( geolocationTable[id] ) {
|
if ( geolocationTable[id] ) {
|
||||||
location = geolocationTable[id];
|
location = geolocationTable[id];
|
||||||
@ -99,14 +108,50 @@ function ajaxLoadEvents(stime, etime) {
|
|||||||
};
|
};
|
||||||
// create table row: Date, Time, Mag, 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'] )+1 && $.inArray(evaluationStatus, config['event']['evaluationBlacklist'])<0 && Number(mag)+0.05 >= config['event']['minMag'] ) {
|
||||||
|
// general event info (1st line)
|
||||||
var row = '<tr class="tablesorter-hasChildRow">'
|
var row = '<tr class="tablesorter-hasChildRow">'
|
||||||
+ '<td class="utctime-date">'+otime.split('.')[0]+'Z</td>'
|
+ '<td class="utctime-date">'+otime.split('.')[0]+'Z</td>'
|
||||||
+ '<td class="utctime-time">'+otime.split('.')[0]+'Z</td>'
|
+ '<td class="utctime-time">'+otime.split('.')[0]+'Z</td>'
|
||||||
+ sprintf('<td class="ar">%.1f</td>', Number(mag))
|
+ sprintf('<td class="ar">%.1f</td>', Number(mag))
|
||||||
+ '<td><a href="#" class="toggle" eventid="'+id+'">'+location+'</a><a class="map-link" href="#" eventid="'+id+'">Karte</a></td>'
|
+ '<td><a href="#" class="toggle" eventid="'+id+'">'+location+'</a><a class="map-link" href="#" eventid="'+id+'">Karte</a></td>'
|
||||||
+ '</tr>';
|
+ '</tr>';
|
||||||
row += '<tr class="tablesorter-childRow">'
|
// setting up event details (2nd line)
|
||||||
+ '<td colspan="4" eventid="'+id+'">Daten werden geladen ...</td></tr>';
|
row += '<tr class="tablesorter-childRow">'
|
||||||
|
+ '<td colspan="4" eventid="'+id+'">'
|
||||||
|
+ '<pre>'
|
||||||
|
+ 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 += 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 += '</td></tr>';
|
||||||
|
// add row to table
|
||||||
var added = $('#eventstable tbody').append(row);
|
var added = $('#eventstable tbody').append(row);
|
||||||
added.find('.tablesorter-childRow td').hide();
|
added.find('.tablesorter-childRow td').hide();
|
||||||
$('#eventstable').find('td.utctime-date').each(function() {
|
$('#eventstable').find('td.utctime-date').each(function() {
|
||||||
@ -123,6 +168,8 @@ function ajaxLoadEvents(stime, etime) {
|
|||||||
var marker = addEventMarker(id, Number(lat), Number(lng), Number(mag));
|
var marker = addEventMarker(id, Number(lat), Number(lng), Number(mag));
|
||||||
var text = sprintf('<h3 eventid="%s">%s</h3>', id, location)
|
var text = sprintf('<h3 eventid="%s">%s</h3>', id, location)
|
||||||
+ sprintf('<p>Ereignis: %s</br>', id)
|
+ sprintf('<p>Ereignis: %s</br>', id)
|
||||||
|
+ sprintf('Type: %s</br>', type)
|
||||||
|
+ sprintf('Magnitude: %3.1f</br>', Number(mag))
|
||||||
+ sprintf('Ort: %.4f °N, %.4f °O </br>', Number(lat), Number(lng))
|
+ sprintf('Ort: %.4f °N, %.4f °O </br>', Number(lat), Number(lng))
|
||||||
+ sprintf('Zeit: <span class="utctime">%sZ</span></p>', otime.split('.')[0], otime.split('.')[0]);
|
+ sprintf('Zeit: <span class="utctime">%sZ</span></p>', otime.split('.')[0], otime.split('.')[0]);
|
||||||
marker.bindPopup(text);
|
marker.bindPopup(text);
|
||||||
@ -144,81 +191,6 @@ function ajaxLoadEvents(stime, etime) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ajaxLoadEventInfo */
|
|
||||||
function ajaxLoadEventInfo(id) {
|
|
||||||
var request_data = {
|
|
||||||
eventid: id,
|
|
||||||
includeArrivals: true,
|
|
||||||
};
|
|
||||||
$.ajax({
|
|
||||||
type: "GET",
|
|
||||||
url: config['ajax']['eventURL'],
|
|
||||||
data: request_data,
|
|
||||||
dataType: "xml",
|
|
||||||
success: function (xml) {
|
|
||||||
eventDetails[id] = true;
|
|
||||||
$(xml).find('event').each(function () {
|
|
||||||
var event = $(this);
|
|
||||||
var mag = $(this).find('magnitude > mag > value').text();
|
|
||||||
var otime = $(this).find('origin > time > value').text();
|
|
||||||
var lng = $(this).find('origin > longitude > value').text();
|
|
||||||
var lng_err = $(this).find('origin > longitude > uncertainty').text();
|
|
||||||
var lat = $(this).find('origin > latitude > value').text();
|
|
||||||
var lat_err = $(this).find('origin > latitude > uncertainty').text();
|
|
||||||
var depth = $(this).find('origin > depth > value').text();
|
|
||||||
var depth_err = $(this).find('origin > depth > uncertainty').text();
|
|
||||||
var rms = $(this).find('origin > quality > standardError').text();
|
|
||||||
var gap = $(this).find('origin > quality > azimuthalGap').text();
|
|
||||||
var phases_count = $(this).find('origin > quality > usedPhaseCount').text();
|
|
||||||
var type = $(this).find('type').last().text();
|
|
||||||
// setting up general event info
|
|
||||||
var row = "<pre>"
|
|
||||||
+ 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 + '</pre>';
|
|
||||||
$('#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 );
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/* toggles visibility of filtered markers
|
/* toggles visibility of filtered markers
|
||||||
* only events in the event list are shown */
|
* only events in the event list are shown */
|
||||||
function toggleFilteredMarkers() {
|
function toggleFilteredMarkers() {
|
||||||
@ -272,7 +244,7 @@ function highlightEvent( id ) {
|
|||||||
};
|
};
|
||||||
var normalStyle = {
|
var normalStyle = {
|
||||||
fillColor: config['event']['markerColor'],
|
fillColor: config['event']['markerColor'],
|
||||||
color: config['event']['markerColorH']
|
color: config['event']['markerColor']
|
||||||
};
|
};
|
||||||
$("#eventstable > tbody > tr:not(.filtered)").find("a.map-link").each( function() {
|
$("#eventstable > tbody > tr:not(.filtered)").find("a.map-link").each( function() {
|
||||||
if ( $(this).attr("eventid") ) {
|
if ( $(this).attr("eventid") ) {
|
||||||
@ -336,10 +308,6 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
// show / hide event info
|
// show / hide event info
|
||||||
$('#eventstable').delegate('.toggle', 'click' , function(){
|
$('#eventstable').delegate('.toggle', 'click' , function(){
|
||||||
// load event details
|
|
||||||
var eventid = $(this).attr('eventid');
|
|
||||||
( eventDetails[eventid] ) ? null : ajaxLoadEventInfo(eventid);
|
|
||||||
|
|
||||||
// toggle visibility of selected row
|
// toggle visibility of selected row
|
||||||
$(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').toggle('slow');
|
$(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').toggle('slow');
|
||||||
|
|
||||||
@ -357,11 +325,12 @@ $(document).ready(function() {
|
|||||||
var selected = $(this).hasClass('selected');
|
var selected = $(this).hasClass('selected');
|
||||||
if ( selected ) {
|
if ( selected ) {
|
||||||
$(this).removeClass('selected');
|
$(this).removeClass('selected');
|
||||||
|
highlightFirstEvent();
|
||||||
} else {
|
} else {
|
||||||
$(this).addClass('selected');
|
$(this).addClass('selected');
|
||||||
|
highlightEvent($(this).attr('eventid'));
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ function initMapLink() {
|
|||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
// create a map in the "map" div, set the view to a given place and zoom
|
// create a map in the "map" div, set the view to a given place and zoom
|
||||||
map = L.map('map', { zoomControl: false }).setView(config['map']['centerDefault'], config['map']['zoomDefault']);
|
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.Zoom({ position: 'topright' }).addTo(map);
|
||||||
|
|
||||||
// add MapQuestOSM tile layer
|
// add MapQuestOSM tile layer
|
||||||
|
Loading…
Reference in New Issue
Block a user