Mergeing from trunk.
This commit is contained in:
		
						commit
						2d55865ed3
					
				
				
				Notes:
				
					subgit
				
				2018-03-07 17:58:48 +01:00 
			
			r619 www/branches/life
							
								
								
									
										144
									
								
								www/events.js
									
									
									
									
									
								
							
							
						
						
									
										144
									
								
								www/events.js
									
									
									
									
									
								
							| @ -25,8 +25,7 @@ | |||||||
| /* do reverse geolocation lookup */ | /* do reverse geolocation lookup */ | ||||||
| function getGeolocation(id, lat, lng) { | function getGeolocation(id, lat, lng) { | ||||||
| 	if ( !geolocationTable[id] ) { | 	if ( !geolocationTable[id] ) { | ||||||
| 		// $.getJSON( "//nominatim.openstreetmap.org/reverse", { lat: lat, lon: lng, zoom: 10, format: "json" } )
 | 		$.getJSON( config['ajax']['nominatimURL'], { lat: lat, lon: lng, zoom: 10, format: "json" } ) | ||||||
| 		$.getJSON( "//open.mapquestapi.com/nominatim/v1/reverse.php", { lat: lat, lon: lng, zoom: 10, format: "json" } ) |  | ||||||
| 			.done(function( json ) { | 			.done(function( json ) { | ||||||
| 				var city = json.address["city"]; | 				var city = json.address["city"]; | ||||||
| 				var country = json.address["country"]; | 				var country = json.address["country"]; | ||||||
| @ -57,28 +56,26 @@ function ajaxLoadEvents(stime, etime) { | |||||||
| 	var E = mapBounds.getEast(); | 	var E = mapBounds.getEast(); | ||||||
| 	var S = mapBounds.getSouth(); | 	var S = mapBounds.getSouth(); | ||||||
| 	var W = mapBounds.getWest(); | 	var W = mapBounds.getWest(); | ||||||
| 	var d = 0.1; |  | ||||||
| 	if ( !stime ) { | 	if ( !stime ) { | ||||||
| 		var stime = new Date(); | 		var stime = new Date(); | ||||||
| 		stime.setDate(stime.getDate()-180); | 		stime.setDate(stime.getDate()-config['map']['timespan']); | ||||||
| 	}; | 	}; | ||||||
| 	if ( !etime ) { | 	if ( !etime ) { | ||||||
| 		var etime = new Date(); | 		var etime = new Date(); | ||||||
| 		etime.setDate(etime.getDate()+1); | 		etime.setDate(etime.getDate()+1); | ||||||
| 	}; | 	}; | ||||||
| 	var url = "https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/event/1/query" |  | ||||||
| 	var request_data = { | 	var request_data = { | ||||||
| 		starttime: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), | 		starttime: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), | ||||||
| 		endtime: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), | 		endtime: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), | ||||||
| 		minlat: S-d, | 		minlat: S-config['map']['latlngDelta'], | ||||||
| 		maxlat: N+d, | 		maxlat: N+config['map']['latlngDelta'], | ||||||
| 		minlon: W-d, | 		minlon: W-config['map']['latlngDelta'], | ||||||
| 		maxlon: E+d, | 		maxlon: E+config['map']['latlngDelta'], | ||||||
| 		minmag: config['event']['minMag']-0.1, | 		minmag: config['event']['minMag']-config['event']['minMagDelta'], | ||||||
| 	}; | 	}; | ||||||
| 	$.ajax({ | 	$.ajax({ | ||||||
| 		type: "GET", | 		type: "GET", | ||||||
| 		url: url, | 		url: config['ajax']['eventURL'], | ||||||
| 		data: request_data, | 		data: request_data, | ||||||
| 		dataType: "xml", | 		dataType: "xml", | ||||||
| 		success: function (xml) { | 		success: function (xml) { | ||||||
| @ -88,7 +85,6 @@ function ajaxLoadEvents(stime, etime) { | |||||||
| 				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 lat = $(this).find('origin > latitude > 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 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(); | ||||||
| @ -110,7 +106,7 @@ function ajaxLoadEvents(stime, etime) { | |||||||
| 							+ '<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">' | 					row += '<tr class="tablesorter-childRow">' | ||||||
| 						+ '<td colspan="4" eventid="'+id+'">not implemented</td></tr>'; | 						+ '<td colspan="4" eventid="'+id+'">Daten werden geladen ...</td></tr>'; | ||||||
| 					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() { | ||||||
| @ -148,53 +144,79 @@ function ajaxLoadEvents(stime, etime) { | |||||||
| 	}); | 	}); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* add row to table | /* ajaxLoadEventInfo */ | ||||||
| 	obsolete         */ | function ajaxLoadEventInfo(id) { | ||||||
| function addEventRow(id, props) { | 	var request_data = { | ||||||
| 	$('#eventstable').tablesorter({ | 		eventid: id, | ||||||
| 		sortList: "[[0,0], [1,1]], [2,1]", | 		includeArrivals: true, | ||||||
| 		resort: true, |  | ||||||
| 		showProcessing: true, |  | ||||||
| 		pager_size: 35 |  | ||||||
| 	}); |  | ||||||
| 	var html = '<tr class="tablesorter-hasChildRow">' |  | ||||||
| 		+ '<td class="utctime-date">'+props.date+'T'+props.time.split('.')[0]+'Z</td>' |  | ||||||
| 		+ '<td class="utctime-time">'+props.date+'T'+props.time.split('.')[0]+'Z</td>' |  | ||||||
| 		+ '<td class="ar">'+props.mag+'</td>' |  | ||||||
| 		+ '<td><a href="#" class="toggle">'+props.location+'</a><a class="map-link" href="#" eventid="'+id+'">Karte</a></td>' |  | ||||||
| 		+ '</tr>' |  | ||||||
| 		+ '<tr class="tablesorter-childRow">' |  | ||||||
| 		+ '<td colspan="4" eventid="'+id+'">' |  | ||||||
| 		+ "<pre>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 ; |  | ||||||
| 	}; | 	}; | ||||||
| 	html += "</pre></td></tr>\n";  | 	$.ajax({ | ||||||
| 	var added = $('#eventstable tbody').append(html); | 		type: "GET", | ||||||
| 	added.find('.tablesorter-childRow td').hide(); | 		url: config['ajax']['eventURL'], | ||||||
| 	$('#eventstable').find('td.utctime-date').each(function() { | 		data: request_data, | ||||||
| 		$.localtime.formatObject($(this), "dd. MM. yyyy"); | 		dataType: "xml", | ||||||
| 		$(this).removeClass('utctime-date'); | 		success: function (xml) { | ||||||
| 		$(this).addClass('localtime-date'); | 			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 ); | ||||||
|  | 		} | ||||||
| 	}); | 	}); | ||||||
| 	$('#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 | /* toggles visibility of filtered markers | ||||||
| @ -314,6 +336,10 @@ $(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'); | ||||||
| 
 | 
 | ||||||
| @ -322,7 +348,7 @@ $(document).ready(function() { | |||||||
| 		$(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').addClass('selected-now'); | 		$(this).closest('tr').nextUntil('tr.tablesorter-hasChildRow').find('td').addClass('selected-now'); | ||||||
| 		$(this).closest('tbody').find('td.selected').each(function(){ | 		$(this).closest('tbody').find('td.selected').each(function(){ | ||||||
| 			if ( ! $(this).hasClass('selected-now') ) { | 			if ( ! $(this).hasClass('selected-now') ) { | ||||||
| 				$(this).hide('slow'); | 				$(this).hide(); | ||||||
| 				$(this).removeClass('selected'); | 				$(this).removeClass('selected'); | ||||||
| 			}; | 			}; | ||||||
| 		}); | 		}); | ||||||
|  | |||||||
							
								
								
									
										29
									
								
								www/misc.js
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								www/misc.js
									
									
									
									
									
								
							| @ -30,21 +30,9 @@ function mag2radius(mag) { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* set height of eventlist div */ | /* 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() { | function setInfoHeight() { | ||||||
| 	var height = $('div.map').height() - 36; | 	var height = $('div.map').height() - 36; | ||||||
| 	$('div.info').height(height); | 	$('div.info').height(height); | ||||||
| 	//$('.tab').height(height-80);
 |  | ||||||
| 	//$('#eventtable').height(height-100);
 |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* get region and regionID of a location */ | /* get region and regionID of a location */ | ||||||
| @ -89,16 +77,26 @@ var eventTable = {}; | |||||||
| var eventDetails = {}; | var eventDetails = {}; | ||||||
| var stationTable = {}; | var stationTable = {}; | ||||||
| var config = { | 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: { | 	event: { | ||||||
| 		evaluationBlacklist: ['automatic', 'preliminary'], | 		evaluationBlacklist: ['automatic', 'preliminary', 'rejected'], | ||||||
| 		markerOpacity: 0.3, | 		markerOpacity: 0.3, | ||||||
| 		minMag: 1.2, | 		minMag: 1.2, | ||||||
|  | 		minMagDelta: 0.1, | ||||||
| 		typeWhitelist: ['earthquake', 'induced or triggered event'], | 		typeWhitelist: ['earthquake', 'induced or triggered event'], | ||||||
| 	}, | 	}, | ||||||
| 	map: { | 	map: { | ||||||
| 		zoomDefault: 9, | 		zoomDefault: 9, | ||||||
| 		zoomFocus: 12, | 		zoomFocus: 12, | ||||||
| 		centerDefault: [51.85, 7.0], | 		centerDefault: [51.85, 7.0], | ||||||
|  | 		timespan: 180, | ||||||
|  | 		latlngDelta: 0.1, | ||||||
| 	}, | 	}, | ||||||
| 	station: { | 	station: { | ||||||
| 		markerOpacity: 0.5, | 		markerOpacity: 0.5, | ||||||
| @ -110,15 +108,16 @@ var config = { | |||||||
|  **********************************************************************/ |  **********************************************************************/ | ||||||
| $(document).ready(function() { | $(document).ready(function() { | ||||||
| 	// AJAX setup
 | 	// AJAX setup
 | ||||||
| 	$.ajaxSetup({timeout: 15000}); // 15 seconds
 | 	$.ajaxSetup({timeout: config['ajax']['timeout']}); | ||||||
|  | 
 | ||||||
| 	// adjust height of infocontainer
 | 	// adjust height of infocontainer
 | ||||||
| 	setInfoHeight(); | 	setInfoHeight(); | ||||||
|  | 
 | ||||||
| 	// create tabs
 | 	// create tabs
 | ||||||
| 	var tabOptions = { | 	var tabOptions = { | ||||||
| 		active: 0, | 		active: 0, | ||||||
| 		disabled: [2, 3], | 		disabled: [2, 3], | ||||||
| 	}; | 	}; | ||||||
| 	$('#tabs').tabs(tabOptions); | 	$('#tabs').tabs(tabOptions); | ||||||
| 	// $('.ui-tabs-nav').sortable();
 |  | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -29,11 +29,9 @@ function loadStations(stime, etime) { | |||||||
| 	var E = mapBounds.getEast(); | 	var E = mapBounds.getEast(); | ||||||
| 	var S = mapBounds.getSouth(); | 	var S = mapBounds.getSouth(); | ||||||
| 	var W = mapBounds.getWest(); | 	var W = mapBounds.getWest(); | ||||||
| 	var d = 0.1; |  | ||||||
| 	var url = "https://ariadne.geophysik.ruhr-uni-bochum.de/fdsnws/station/1/query"; |  | ||||||
| 	if ( !stime ) { | 	if ( !stime ) { | ||||||
| 		var stime = new Date(); | 		var stime = new Date(); | ||||||
| 		stime.setDate(stime.getDate()-180); | 		stime.setDate(stime.getDate()-config['map']['timespan']); | ||||||
| 	}; | 	}; | ||||||
| 	if ( !etime ) { | 	if ( !etime ) { | ||||||
| 		var etime = new Date(); | 		var etime = new Date(); | ||||||
| @ -42,14 +40,14 @@ function loadStations(stime, etime) { | |||||||
| 	var request_data = { | 	var request_data = { | ||||||
| 		endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), | 		endafter: sprintf("%d-%02d-%02d", stime.getFullYear(), stime.getMonth()+1, stime.getDate()), | ||||||
| 		startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), | 		startbefore: sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()), | ||||||
| 		minlat: S-d, | 		minlat: S-config['map']['latlngDelta'], | ||||||
| 		maxlat: N+d, | 		maxlat: N+config['map']['latlngDelta'], | ||||||
| 		minlon: W-d, | 		minlon: W-config['map']['latlngDelta'], | ||||||
| 		maxlon: E+d, | 		maxlon: E+config['map']['latlngDelta'], | ||||||
| 	}; | 	}; | ||||||
| 	$.ajax({ | 	$.ajax({ | ||||||
| 		type: "GET", | 		type: "GET", | ||||||
| 		url: url, | 		url: config['ajax']['stationURL'], | ||||||
| 		dataType: "xml", | 		dataType: "xml", | ||||||
| 		data: request_data, | 		data: request_data, | ||||||
| 		success: function (xml) { | 		success: function (xml) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user