This commit is contained in:
Kasper D. Fischer 2014-05-20 16:21:52 +00:00
commit 6501b3fff7
Notes: subgit 2018-03-07 17:58:59 +01:00
r670 www/branches/life
7 changed files with 121 additions and 36 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
www/dlsv www/dlsv
www/event.xml www/event.xml
www/geolocation.js www/geolocation.js
www/geolocationTable.js
www/stations.xml www/stations.xml

View File

@ -22,6 +22,22 @@
$Id$ $Id$
*/ */
/* adding row(s) to a table and format date strings afterwards */
function addTableRow(row, table) {
var added = $('#'+table+' tbody').append(row);
added.find('.tablesorter-childRow td').hide();
$('#'+table).find('td.utctime-date').each(function() {
$.localtime.formatObject($(this), "dd.MM.yyyy");
$(this).removeClass('utctime-date');
$(this).addClass('localtime-date');
});
$('#'+table).find('td.utctime-time').each(function() {
$.localtime.formatObject($(this), "HH:mm");
$(this).removeClass('utctime-time');
$(this).addClass('localtime-time');
});
};
/* do reverse geolocation lookup */ /* do reverse geolocation lookup */
function getGeolocation(id, lat, lng) { function getGeolocation(id, lat, lng) {
if ( !geolocationTable[id] ) { if ( !geolocationTable[id] ) {
@ -50,17 +66,16 @@ function getGeolocation(id, lat, lng) {
}; };
/* Load events using ajax */ /* Load events using ajax */
function ajaxLoadEvents(stime, etime, id) { function ajaxLoadEvents(stime, etime, id, target) {
var mapBounds = map.getBounds(); var mapBounds = map.getBounds();
var request_data = {}; var request_data = {};
if ( stime == '' || !stime ) {
stime = new Date();
stime.setDate(stime.getDate()-config['map']['timespan']);
};
if ( id ) { if ( id ) {
if ( id == 'bug2014jptq' ) console.log('Loading special event '+id);
request_data = { eventid: id }; request_data = { eventid: id };
} else { } else {
if ( !stime ) {
stime = new Date();
stime.setDate(stime.getDate()-config['map']['timespan']);
};
request_data = { 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()),
orderby: 'time-asc', orderby: 'time-asc',
@ -74,6 +89,7 @@ function ajaxLoadEvents(stime, etime, id) {
request_data['endtime'] = sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate()); request_data['endtime'] = sprintf("%d-%02d-%02d", etime.getFullYear(), etime.getMonth()+1, etime.getDate());
}; };
}; };
if ( etime == '' || !etime ) { etime = new Date(); };
$.ajax({ $.ajax({
type: "GET", type: "GET",
url: config['ajax']['eventURL'], url: config['ajax']['eventURL'],
@ -87,8 +103,8 @@ function ajaxLoadEvents(stime, etime, id) {
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 depth = $(this).find('origin > depth > value').text(); var depth = $(this).find('origin > depth > value').text();
var evaluationMode = $(this).find('evaluationMode').text(); var evaluationMode = $(this).find('origin > evaluationMode').text();
var evaluationStatus = $(this).find('evaluationStatus').text(); var evaluationStatus = $(this).find('origin > evaluationStatus').text();
var type = $(this).find('type').last().text(); var type = $(this).find('type').last().text();
var location var location
// get location, try this in order: // get location, try this in order:
@ -97,13 +113,12 @@ function ajaxLoadEvents(stime, etime, id) {
location = ( geolocationTable[id] || getGeolocation(id, lat, lng) ); location = ( geolocationTable[id] || getGeolocation(id, lat, lng) );
// 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'] ) {
if ( id == 'bug2014jptq' ) console.log('Adding row for special event '+id);
// general event info (1st line) // 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>';
// setting up event details (2nd line) // setting up event details (2nd line)
row += '<tr class="tablesorter-childRow event-details">' row += '<tr class="tablesorter-childRow event-details">'
@ -111,28 +126,22 @@ function ajaxLoadEvents(stime, etime, id) {
// setting up download links (3nd line) // setting up download links (3nd line)
var xmlurl = sprintf('%s?formatted=true&includearrivals=true&eventid=%s', config['ajax']['eventURL'], id); var xmlurl = sprintf('%s?formatted=true&includearrivals=true&eventid=%s', config['ajax']['eventURL'], id);
var oTime = new Date(otime); var oTime = new Date(otime);
var stime = new Date(oTime.getTime()-10*1000.-oTime.getMilliseconds()); var sTime = new Date(oTime.getTime()-10*1000.-oTime.getMilliseconds());
var etime = new Date(oTime.getTime()+50*1000.-oTime.getMilliseconds()); var eTime = new Date(oTime.getTime()+50*1000.-oTime.getMilliseconds());
var mseedurl = sprintf('%s?net=GE,GR,RN&cha=EH?,HH?&start=%04d-%02d-%02dT%02d:%02d:%02d&end=%04d-%02d-%02dT%02d:%02d:%02d', config['ajax']['mseedURL'], Number(stime.getUTCFullYear()), Number(stime.getUTCMonth())+1, Number(stime.getUTCDate()), Number(stime.getUTCHours()), Number(stime.getUTCMinutes()), Number(stime.getUTCSeconds()), Number(etime.getUTCFullYear()), Number(etime.getUTCMonth())+1, Number(etime.getUTCDate()), Number(etime.getUTCHours()), Number(etime.getUTCMinutes()), Number(etime.getUTCSeconds())); var mseedurl = sprintf('%s?net=GE,GR,RN&cha=EH?,HH?&start=%04d-%02d-%02dT%02d:%02d:%02d&end=%04d-%02d-%02dT%02d:%02d:%02d', config['ajax']['mseedURL'], Number(sTime.getUTCFullYear()), Number(sTime.getUTCMonth())+1, Number(sTime.getUTCDate()), Number(sTime.getUTCHours()), Number(sTime.getUTCMinutes()), Number(sTime.getUTCSeconds()), Number(eTime.getUTCFullYear()), Number(eTime.getUTCMonth())+1, Number(eTime.getUTCDate()), Number(eTime.getUTCHours()), Number(eTime.getUTCMinutes()), Number(eTime.getUTCSeconds()));
row += '<tr class="tablesorter-childRow event-download">' row += '<tr class="tablesorter-childRow event-download">'
+ '<td colspan="4" eventid="'+id+'">' + '<td colspan="4" eventid="'+id+'">'
+ sprintf('Download <a class="xml-link" target="_blank" href="%s">QuakeML</a> or <a class="mseed-link" target="_blank" href="%s">miniSEED</a>', xmlurl, mseedurl) + sprintf('Download <a class="xml-link" target="_blank" href="%s">QuakeML</a> or <a class="mseed-link" target="_blank" href="%s">miniSEED</a>', xmlurl, mseedurl)
+ '</td></tr>'; + '</td></tr>';
// add row to table // add row to table
var added = $('#eventstable tbody').append(row); if ( stime <= oTime && etime >= oTime ) {
added.find('.tablesorter-childRow td').hide(); addTableRow(row, 'eventstable');
$('#eventstable').find('td.utctime-date').each(function() { };
$.localtime.formatObject($(this), "dd.MM.yyyy"); if ( target ) {
$(this).removeClass('utctime-date'); addTableRow(row, target);
$(this).addClass('localtime-date'); }
});
$('#eventstable').find('td.utctime-time').each(function() {
$.localtime.formatObject($(this), "HH:mm");
$(this).removeClass('utctime-time');
$(this).addClass('localtime-time');
});
// create marker // create marker
var marker = addEventMarker(id, Number(lat), Number(lng), Number(mag)); var marker = addEventMarker(id, Number(lat), Number(lng), Number(mag), type);
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('Type: %s</br>', type)
@ -159,6 +168,9 @@ function ajaxLoadEvents(stime, etime, id) {
console.log( "Request Failed: " + err ); console.log( "Request Failed: " + err );
} }
}); });
// create events csv download link
request_data['format'] = 'text';
if ( id == '' || !id ) { $('#events-csv-link').attr('href', config['ajax']['eventURL']+'?'+$.param(request_data)) };
}; };
/* ajaxLoadEventInfo */ /* ajaxLoadEventInfo */
@ -242,13 +254,13 @@ function toggleFilteredMarkers() {
// show all shown events in map // show all shown events in map
$("#eventstable > tbody > tr:not(.filtered) > td > a.map-link").each( function() { $("#eventstable > tbody > tr:not(.filtered) > td > a.map-link").each( function() {
if ( $(this).attr("eventid") ) { if ( $(this).attr("eventid") ) {
eventTable[$(this).attr("eventid")].setStyle({opacity: 1, strokeOpacity: 1, fillOpacity: config['event']['markerOpacity']}); map.addLayer(eventTable[$(this).attr("eventid")]);
}; };
}); });
// hide filtered events in map // hide filtered events in map
$("#eventstable > tbody > tr.filtered > td > a.map-link").each( function() { $("#eventstable > tbody > tr.filtered > td > a.map-link").each( function() {
if ( $(this).attr("eventid") ) { if ( $(this).attr("eventid") ) {
eventTable[$(this).attr("eventid")].setStyle({opacity: 0, strokeOpacity: 0, fillOpacity: 0}); map.removeLayer(eventTable[$(this).attr("eventid")]);
}; };
}); });
highlightFirstEvent(); highlightFirstEvent();
@ -385,4 +397,23 @@ $(document).ready(function() {
}); });
return false; return false;
}); });
// update selection / type info
$("#events-timespan").text(config['map']['timespan']);
$("#events-minmag").text(sprintf('%.1f', config['event']['minMag']));
config['event']['typeWhitelist'].map(function(type) {
var typetext;
( $("#events-type").text() == "Symbole:" ) ? typetext = ' ' : typetext = ', ';
switch ( type ) {
case 'earthquake':
typetext += 'tektonisches Erdbeben&nbsp;(Stern)';
break;
case 'induced or triggered event':
typetext += '(bergbau-)induziertes Ereignis&nbsp;(Kreis)';
break;
case 'quarry blast':
typetext += 'Steinbruchsprengung&nbsp;(Rad)';
break;
};
$("#events-type").append(typetext);
});
}); });

View File

@ -40,12 +40,21 @@
<!-- Map, Events & Stations --> <!-- Map, Events & Stations -->
<script type="text/javascript" src="misc.js"></script> <script type="text/javascript" src="misc.js"></script>
<script type="text/javascript" src="geolocation.js"></script> <script type="text/javascript" src="geolocation.js"></script>
<script type="text/javascript" src="specialevents.js"></script>
<script type="text/javascript" src="map.js"></script> <script type="text/javascript" src="map.js"></script>
<script type="text/javascript" src="events.js"></script> <script type="text/javascript" src="events.js"></script>
<script type="text/javascript" src="stations.js"></script> <script type="text/javascript" src="stations.js"></script>
</head> </head>
<body> <body>
<noscript>
<div class="noscript">
<h1>Kein JavaScript verfügbar!</h1>
<p>Diese Seite benötigt JavaScript. Bitte schalten Sie JavaScript ein.</p>
<h1>JavaScript disabled!</h1>
<p>This page requires JavaScript to work. Please enable JavaScript.</p>
</div>
</noscript>
<div class="info" id="tabs"> <div class="info" id="tabs">
<ul> <ul>
<li><a href="#eventstab"><span>Ereignisse</span></a></li> <li><a href="#eventstab"><span>Ereignisse</span></a></li>
@ -90,7 +99,15 @@
<tbody> <tbody>
</tbody> </tbody>
</table> </table>
<p>Nominatim Search Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img alt="Mapquest Logo" src="//developer.mapquest.com/content/osm/mq_logo.png" /></p> <p class="table-caption">
Ereignisse der letzten <span id="events-timespan">180</span> Tage ab Magnitude <span id="events-minmag">1.2</span> im Bereich der Karte und besondere Ereignisse in angrenzenden Bereichen. Download als <a id="events-csv-link" href="link" download="events.csv">CSV-Datei</a>.
</p>
<p class="table-caption">
<span id="events-type">Symbole:</span>
</p>
<p class="table-caption">
Nominatim Search Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> <img alt="Mapquest Logo" src="//developer.mapquest.com/content/osm/mq_logo.png" />
</p>
</div> </div>
<!-- Stations --> <!-- Stations -->
<div class="tab" id="stationstab"> <div class="tab" id="stationstab">
@ -129,7 +146,7 @@
<tbody> <tbody>
</tbody> </tbody>
</table> </table>
<p>Download als <a id="stations-csv-link" href="link" download="stations.csv">CSV</a></p> <p class="table-caption">Download als <a id="stations-csv-link" href="link" download="stations.csv">CSV-Datei</a>.</p>
</div> </div>
<!-- More --> <!-- More -->
<div class="tab" id="moretab"></div> <div class="tab" id="moretab"></div>

View File

@ -13,6 +13,15 @@
height: 100%; height: 100%;
font-family: sans-serif; font-family: sans-serif;
} }
div.noscript {
z-index: 20000;
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
background: rgb(255, 255, 255);
}
div.info { div.info {
z-index: 10000; z-index: 10000;
position: absolute; position: absolute;
@ -64,4 +73,7 @@
td.ar { td.ar {
text-align: right; text-align: right;
} }
p.table-caption {
font-size: smaller;
}
</style> </style>

View File

@ -41,11 +41,9 @@ function addStationMarker(id, lat, lng, station) {
}; };
/* add event marker */ /* add event marker */
function addEventMarker(id, lat, lng, mag) { function addEventMarker(id, lat, lng, mag, type) {
if ( id == 'bug2014jptq' ) console.log('Adding marker for special event '+id);
if ( eventTable[id] ) { if ( eventTable[id] ) {
return eventTable[id]; return eventTable[id];
console.log('Marker allready exists ID: '+id);
} else { } else {
var markerOptions = { var markerOptions = {
gradient: true, gradient: true,
@ -58,7 +56,19 @@ function addEventMarker(id, lat, lng, mag) {
className: id+' eventMarker', className: id+' eventMarker',
radius: mag2radius(mag) radius: mag2radius(mag)
}; };
var marker = L.circleMarker(L.latLng(lat, lng), markerOptions); var marker;
switch ( type ) {
case 'earthquake':
marker = L.starMarker(L.latLng(lat, lng), markerOptions);
break;
case 'quarry blast':
markerOptions['numberOfPoints'] = 7;
markerOptions['innerRadius'] = 0.3*markerOptions['radius'];
marker = L.starMarker(L.latLng(lat, lng), markerOptions);
break;
default:
marker = L.circleMarker(L.latLng(lat, lng), markerOptions);
};
eventLayer.addLayer(marker); eventLayer.addLayer(marker);
eventTable[id] = marker; eventTable[id] = marker;
return marker; return marker;
@ -169,8 +179,9 @@ $(document).ready(function() {
// load events // load events
ajaxLoadEvents(); ajaxLoadEvents();
//ajaxLoadEvents([], [], ['bug2014jptq', 'gfz2013yvko']); specialEvents.map(function(id) {
ajaxLoadEvents([], [], 'bug2014jptq'); ajaxLoadEvents('', '', id)
});
toggleFilteredMarkers(); toggleFilteredMarkers();
// bind popupopen event // bind popupopen event

9
www/specialevents.js Normal file
View File

@ -0,0 +1,9 @@
/* $Id$ */
var specialEvents = [
'bug2014jptq', // Seeheim-Jugenheim
'bug2014infb', // Troisdorf
'bug2014ilxd', // Bassum
'bug2014gfzw', // Darmstadt
'bug2014datb', // Groningen
'bug2013yvko', // Haltern 3.4
];

View File

@ -105,6 +105,10 @@ function loadStations(stime, etime) {
$("#stationstable > tbody > tr:even").addClass("odd"); $("#stationstable > tbody > tr:even").addClass("odd");
$("#stationstable > tbody > tr:odd").addClass("even"); $("#stationstable > tbody > tr:odd").addClass("even");
stationLayer.bringToFront(); stationLayer.bringToFront();
},
error: function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
} }
}); });
// create stations csv download link // create stations csv download link