diff --git a/js/webdc3.min.js b/js/webdc3.min.js index 4471492..3c149f2 100644 --- a/js/webdc3.min.js +++ b/js/webdc3.min.js @@ -5,7 +5,7 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){return new Promise(function(resolve,reject){try{window.wiConsole=new WIConsole("#wi-Console");if(window.console===undefined)window.console={};if(window.console.debug===undefined)window.console.debug=wiConsole.debug;if(window.console.info===undefined)window.console.info=wiConsole.info;if(window.console.log===undefined)window.console.log=wiConsole.notice;if(window.console.warn===undefined)window.console.warn=wiConsole.warning;if(window.console.error===undefined)window.console.error=wiConsole.error;window.onerror=function(errorMsg,url,lineNumber){if(interfaceLoader.debug())window.wiConsole.error(errorMsg+" ("+url+":"+lineNumber+")");else window.wiConsole.error(errorMsg)};resolve()}catch(e){alert("console.js: "+e.message);reject()}})};function WIConsole(htmlTagId){var _controlDiv=null;var _callback=null;var _maxMessages=100;var _level=0;var _msgClass="wi-console-debug";function load(htmlTagId){var control=$(htmlTagId);if(control.length!==1){if(interfaceLoader.debug())console.error("console.js: Cannot find a div with class '"+htmlTagId+"'");return}_controlDiv=control}function log(msgClass,msg,exc){var msgList=_controlDiv.children();if(!msgList.length){_controlDiv.append("
Clear Console
")}if(msgList.length>=_maxMessages+1)msgList.eq(1).remove();var msgDiv=$("
");msgDiv.text(msg);_controlDiv.append(msgDiv);if(typeof exc!="undefined"&&typeof printStackTrace!="undefined"){var trace=printStackTrace({e:exc});for(var i in trace){if(msgList.length>=_maxMessages+1)msgList.eq(1).remove();msgDiv=$("
");msgDiv.text(trace[i]);_controlDiv.append(msgDiv)}}_controlDiv.prop("scrollTop",_controlDiv.prop("scrollHeight"))}this.debug=function debug(msg,exc){var msgClass="wi-console-debug";if(_controlDiv){try{log(msgClass,msg,exc);return}catch(e){alert("console.js: "+e.message)}}if(console.debug!==debug)console.debug(msg)};this.info=function info(msg,exc){var msgClass="wi-console-info";if(_level<1){_level=1;_msgClass=msgClass;try{if(_callback)_callback(_level,msgClass)}catch(e){alert("console.js: "+e.message)}}if(_controlDiv){try{log(msgClass,msg,exc);return}catch(e){alert("console.js: "+e.message)}}if(console.info!==info)console.info(msg)};this.notice=function notice(msg,exc){var msgClass="wi-console-notice";if(_level<2){_level=2;_msgClass=msgClass;try{if(_callback)_callback(_level,msgClass)}catch(e){alert("console.js: "+e.message)}}if(_controlDiv){try{log(msgClass,msg,exc);return}catch(e){alert("console.js: "+e.message)}}if(console.log!==notice)console.log(msg)};this.warning=function warning(msg,exc){var msgClass="wi-console-warning";if(_level<3){_level=3;_msgClass=msgClass;try{if(_callback)_callback(_level,msgClass)}catch(e){alert("console.js: "+e.message)}}if(_controlDiv){try{log(msgClass,msg,exc);return}catch(e){alert("console.js: "+e.message)}}if(console.warn!==warning)console.warn(msg)};this.error=function error(msg,exc){var msgClass="wi-console-error";if(_level<4){_level=4;_msgClass=msgClass;try{if(_callback)_callback(_level,msgClass)}catch(e){alert("console.js: "+e.message)}}if(_controlDiv){try{log(msgClass,msg,exc);return}catch(e){alert("console.js: "+e.message)}}if(console.error!==error)console.error(msg)};this.clear=function(){_controlDiv.children().remove()};this.scrollToBottom=function(){_controlDiv.prop("scrollTop",_controlDiv.prop("scrollHeight"))};this.resetLevel=function(){_level=0;_msgClass="wi-console-debug"};this.level=function(){return _level};this.setCallback=function(callback){_callback=callback;_callback(_level,_msgClass)};load(htmlTagId)} },{}],3:[function(require,module,exports){ -"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){return new Promise(function(resolve,reject){try{window.eventSearchControl=new EventSearchControl("#wi-EventSearchControl");resolve()}catch(e){if(console.error!==wiConsole.error)console.error("events.js: "+e.message);wiConsole.error("events.js: "+e.message,e);reject()}})};function EventSearchControl(htmlTagId){var _controlDiv=null;var _catalogList=Array();function checkNumber(value,min,max){if(value==="")return null;value=Number(value);if(isNaN(value))return null;if(valuemax)return null;return value}function fillCatalogList(cataloglist){if(_controlDiv===null)return;if(!cataloglist)return;_catalogList=cataloglist;if(interfaceLoader.debug())console.error("Catalog rebuild");var select=_controlDiv.find("#escCatalog");select.empty();for(var key in _catalogList){var item=_catalogList[key];select.append("")}updateControlState()}function reloadCatalogs(){wiService.event.catalogs(fillCatalogList,null,true,{})}function validateCoordinates(){var bottom=_controlDiv.find("#escLatitudeMin").val();var top=_controlDiv.find("#escLatitudeMax").val();var left=_controlDiv.find("#escLongitudeMin").val();var right=_controlDiv.find("#escLongitudeMax").val();if(Number(bottom)>=Number(top)){alert("Invalid latitude interval.");return}if(Number(left)>=Number(right)){alert("Invalid longitude interval.");return}if(mapControl.enabled())mapControl.setSelect(bottom,left,top,right)}function resetCoordinates(){_controlDiv.find("#escLatitudeMin").val("-90");_controlDiv.find("#escLatitudeMax").val("90");_controlDiv.find("#escLongitudeMin").val("-180");_controlDiv.find("#escLongitudeMax").val("180");if(mapControl.enabled())mapControl.clearSelect()}function resetControl(){if(_controlDiv===null)return;var mag=configurationProxy.value("events.magnitudes.minimum",4);_controlDiv.find("#escMagnitudeSlider").slider("value",mag);var dmin=configurationProxy.value("events.depth.minimum",0);var dmax=configurationProxy.value("events.depth.maximum",1000);_controlDiv.find("#escDepthSlider").slider("values",[dmin,dmax]);var startoffset=configurationProxy.value("events.date.startoffset","-7d");_controlDiv.find("#escStart").datepicker("setDate",startoffset);_controlDiv.find("#escEnd").datepicker("setDate","now");_controlDiv.find("#escEventModeCatalog").click();resetCoordinates();return}function buildQueryURL(catalog,start,end,minmag,maxmag,mindepth,maxdepth,minlat,maxlat,minlon,maxlon,limit){var options={};options.catalog=undefined;options.start=undefined;options.end=undefined;options.minmag=undefined;options.maxmag=undefined;options.mindepth=undefined;options.maxdepth=undefined;options.minlat=undefined;options.minlon=undefined;options.maxlat=undefined;options.maxlon=undefined;options.limit=undefined;options.format="json";options.catalog=catalog;var catalogPrefs=_catalogList[catalog];if(!catalogPrefs){alert("Invalid Catalog.");return}if(catalogPrefs.hasDate){try{if(start!==undefined)start=$.datepicker.parseDate("yy-mm-dd",start)}catch(err){alert(start+" is not a valid start date ("+err+")");return}try{if(end!==undefined){end=$.datepicker.parseDate("yy-mm-dd",end);end.setDate(end.getDate()+1)}}catch(err){alert(end+" is not a valid end date ("+err+").");return}if(start>end){start=$.datepicker.formatDate("yy-mm-dd",start);end=$.datepicker.formatDate("yy-mm-dd",end);alert("Invalid date interval, "+start+" > "+end+".");return}if(start!==null&start!==undefined)options.start=$.datepicker.formatDate("yy-mm-dd",start);if(end!==null&end!==undefined)options.end=$.datepicker.formatDate("yy-mm-dd",end)}if(catalogPrefs.hasMagnitude){if(minmag===null){alert(_controlDiv.find("#escMagnitudeSlider").slider("value")+" is invalid as magnitude.");return}if(minmag!==null)options.minmag=minmag;if(maxmag!==null)options.maxmag=maxmag}if(catalogPrefs.hasDepth){if(mindepth===null){alert(_controlDiv.find("#escDepthSlider").slider("values",0)+" is invalid as depth.");return}if(maxdepth===null){alert(_controlDiv.find("#escDepthSlider").slider("values",1)+" is invalid as depth.");return}if(mindepth>=maxdepth){alert("Invalid depth interval, "+mindepth+" >= "+maxdepth+".");return}if(mindepth!==null)options.mindepth=mindepth;if(maxdepth!==null)options.maxdepth=maxdepth}if(catalogPrefs.hasRectangle){if(minlat===null){alert(_controlDiv.find("#escLatitudeMin").val()+" is invalid as latitude.");return}if(maxlat===null){alert(_controlDiv.find("#escLatitudeMax").val()+" is invalid as latitude.");return}if(minlon===null){alert(_controlDiv.find("#escLongitudeMin").val()+" is invalid as longitude.");return}if(maxlon===null){alert(_controlDiv.find("#escLongitudeMax").val()+" is invalid as longitude.");return}if(minlat>=maxlat){alert("Invalid latitude interval, "+minlat+" >= "+maxlat+".");return}if(minlon>=maxlon&&maxlon!==null){alert("Invalid longitude interval, "+minlon+" >= "+maxlon+".");return}if(minlat!==null)options.minlat=minlat;if(minlon!==null)options.minlon=minlon;if(maxlat!==null)options.maxlat=maxlat;if(maxlon!==null)options.maxlon=maxlon;if(limit!==null)options.limit=limit}return options}function quick6(){if(!_controlDiv)return;var start=undefined;var end=undefined;var catalog=_controlDiv.find("#escCatalog").val();var mindepth=0.001;var maxdepth=999;var minlat=checkNumber(_controlDiv.find("#escLatitudeMin").val(),-90,90);var maxlat=checkNumber(_controlDiv.find("#escLatitudeMax").val(),-90,90);var minlon=checkNumber(_controlDiv.find("#escLongitudeMin").val(),-180,180);var maxlon=checkNumber(_controlDiv.find("#escLongitudeMax").val(),-180,180);var options=buildQueryURL(catalog,start,end,6,10,mindepth,maxdepth,minlat,maxlat,minlon,maxlon,10);if(typeof options==="undefined")return;wiService.event.query(function(data,statustext,jqxhr){if(jqxhr.status==204){alert("Got no events for the selected day and options");wiConsole.notice("Got no events for the selected day and options: "+$.param(options))}else{requestControl.appendEvent(data);_controlDiv.find("#escSearch").button("option","label","Append")}},null,true,options)}function query(){if(!_controlDiv)return;var start=_controlDiv.find("#escStart").val();var end=_controlDiv.find("#escEnd").val();var catalog=_controlDiv.find("#escCatalog").val();var minmag=checkNumber(_controlDiv.find("#escMagnitudeSlider").slider("value"),-2,10);var mindepth=checkNumber(_controlDiv.find("#escDepthSlider").slider("values",0),-15,1000);var maxdepth=checkNumber(_controlDiv.find("#escDepthSlider").slider("values",1),-15,1000);var minlat=checkNumber(_controlDiv.find("#escLatitudeMin").val(),-90,90);var maxlat=checkNumber(_controlDiv.find("#escLatitudeMax").val(),-90,90);var minlon=checkNumber(_controlDiv.find("#escLongitudeMin").val(),-180,180);var maxlon=checkNumber(_controlDiv.find("#escLongitudeMax").val(),-180,180);var options=buildQueryURL(catalog,start,end,minmag,10,mindepth,maxdepth,minlat,maxlat,minlon,maxlon,null);if(typeof options==="undefined")return;wiService.event.query(function(data,statustext,jqxhr){if(jqxhr.status==204){alert("Got no events for the selected day and options");wiConsole.notice("Got no events for the selected day and options: "+$.param(options))}else{requestControl.appendEvent(data);_controlDiv.find("#escSearch").button("option","label","Append")}},null,true,options)}function updateControlState(){return;var catalog=_catalogList[_controlDiv.find("#escCatalog option:selected").val()];if(catalog===undefined)return;_controlDiv.find("#escDepthSlider").slider(!catalog.hasDepth?"disable":"enable");_controlDiv.find("#escDepthMin").prop("disabled",!catalog.hasDepth);_controlDiv.find("#escDepthMax").prop("disabled",!catalog.hasDepth);_controlDiv.find("#escMagnitudeSlider").slider(!catalog.hasMagnitude?"disable":"enable");_controlDiv.find("#escMagnitudeValue").prop("disabled",!catalog.hasMagnitude);_controlDiv.find("#escStart").prop("disabled",!catalog.hasDate);_controlDiv.find("#escEnd").prop("disabled",!catalog.hasDate);_controlDiv.find("input[id*=escLatitude]").prop("disabled",!catalog.hasRectangle);_controlDiv.find("input[id*=escLongitude]").prop("disabled",!catalog.hasRectangle);_controlDiv.find("#escCoordinateReset").prop("disabled",!catalog.hasRectangle)}function parseUserCatalog(){var result={status:1,message:"FAIL",header:""};var time=Number($("#escColumnTime").val());var latitude=Number($("#escColumnLatitude").val());var longitude=Number($("#escColumnLongitude").val());var depth=Number($("#escColumnDepth").val());var nmax=Math.max(time,latitude,longitude,depth);var nmin=Math.min(time,latitude,longitude,depth);if(nmin<1||isNaN(nmax)){alert("Error: column indices must be integers starting from 1.");return result}var format="csv";var columns=Array();var input=$("#escCatalogInput").val();if(input===null||input===undefined||input===""){alert("Please paste your catalog inside the text area before pressing 'Send'.");return result}var col_indices=Array(time,latitude,longitude,depth);var col_tags=Array("time","latitude","longitude","depth");for(var i=0;i";html+="";html+="";html+="
";html+="
";html+="
";html+="
";html+="
";html+="
";html+="";html+="";html+="
";_controlDiv.append(html);requestControl.bind("onDeleteEvents",function(){_controlDiv.find("#escSearch").button("option","label","Search")});html="
";html+="
Catalog Service:
";html+="
";html+="
";html+="
";html+="
Date Interval (yyyy-mm-dd):
";html+="";html+="–";html+="
";html+="
";html+="
Minimum Magnitude:
";html+="
";html+="
";html+="
";html+="
Depth fromtokm
";html+="
";html+="
";html+="
";html+="
Coordinates: (Use -ve for S/W; +ve for N/E)
";html+="
";html+="N
";html+="
";html+="W";html+="E
";html+="";html+="
S";html+="";html+="
";html+="
";_controlDiv.find("#escEventCatalogDiv").append(html);html="
";_controlDiv.find("#escEventFileDiv").append(html);_controlDiv.find("#escEventMode").buttonset();_controlDiv.find("#escEventMode").change(function(item){_controlDiv.find("#escEventDiv").children("div").hide();_controlDiv.find("#escEvent"+$(item.target).val()+"Div").show()});html="
";html+="

Use this control to upload your personal event catalog to be processed by our system. The catalog should be in CSV (comma-separated value) format and may contain as many events as you want, one per line, with the same number of columns. You must also indicate which columns contain the Latitude, Longitude, Depth and Origin Time for the event. All other columns will be ignored.

";html+="

Example: 2011-03-11T05:46:23;38.23;142.53;15;Tohoku

";html+="

Column Number Specification:

";html+="
";html+="Time: ";html+="Latitude: ";html+="Longitude: ";html+="Depth: ";html+="
";html+="

Copy and paste your catalog into the area below:

";html+="
[No format specified. Press \"Send\" first.]

";html+="
";html+="
";$("body").append(html);$("body").find("#escCatalogLoader").dialog({title:"Catalog Input Dialog",autoOpen:false,height:450,width:550,modal:true,buttons:{Send:function Send(){alert("Thank you, your upload is being checked.");var result=parseUserCatalog();console.log("parseUserCatalog: "+result.message);if(result.header!==undefined){var text="Format: "+result.header;$("body").find("#escCatalogHeader").empty().append(text)}},Close:function Close(){$(this).dialog("close")}}});_controlDiv.find("#escUserCatalog").button().bind("click",function(){$("#escCatalogLoader").dialog("open")});_controlDiv.find("#escSearch").button().bind("click",query);_controlDiv.find("#escQuick6").button().bind("click",quick6);_controlDiv.find("#escReset").button().bind("click",resetControl);_controlDiv.find("#escCatalog").bind("click",updateControlState);_controlDiv.find("#escStart").datepicker({showButtonPanel:true,changeMonth:true,changeYear:true,dateFormat:"yy-mm-dd"});_controlDiv.find("#escEnd").datepicker({showButtonPanel:true,changeMonth:true,changeYear:true,dateFormat:"yy-mm-dd"});_controlDiv.find("#escDepthSlider").slider({range:true,min:0,max:1000,step:1,slide:function slide(event,ui){_controlDiv.find("#escDepthMin").val(ui.values[0]);_controlDiv.find("#escDepthMax").val(ui.values[1])},change:function change(event,ui){_controlDiv.find("#escDepthMin").val(ui.values[0]);_controlDiv.find("#escDepthMax").val(ui.values[1])}});_controlDiv.find("#escDepthMin").bind("change",function(obj){var values=_controlDiv.find("#escDepthSlider").slider("values");values[0]=$(obj.target).val();_controlDiv.find("#escDepthSlider").slider("values",values)});_controlDiv.find("#escDepthMax").bind("change",function(obj){var values=_controlDiv.find("#escDepthSlider").slider("values");values[1]=$(obj.target).val();_controlDiv.find("#escDepthSlider").slider("values",values)});_controlDiv.find("#escMagnitudeSlider").slider({min:-2,max:10,step:0.1,slide:function slide(event,ui){_controlDiv.find("#escMagnitudeValue").val(ui.value)},change:function change(event,ui){_controlDiv.find("#escMagnitudeValue").val(ui.value)}});_controlDiv.find("#escMagnitudeValue").bind("change",function(obj){_controlDiv.find("#escMagnitudeSlider").slider("value",$(obj.target).val())});_controlDiv.find("input[id*=escLatitude]").bind("change",function(item){var value=checkNumber($(item.target).val(),-90,90);if(value===null){alert("Invalid latitude value, "+$(item.target).val());$(item.target).val("");return}validateCoordinates()});_controlDiv.find("input[id*=escLongitude]").bind("change",function(item){var value=checkNumber($(item.target).val(),-180,180);if(value===null){alert("Invalid longitude value, "+$(item.target).val());$(item.target).val("");return}validateCoordinates()});_controlDiv.find("#escCoordinateReset").button().bind("click",resetCoordinates)}function load(htmlTagId){var control=$(htmlTagId);if(control.length!==1){if(interfaceLoader.debug())console.error("event.js: Cannot find a div with class '"+htmlTagId+"'");return}_controlDiv=control;buildControl();if(typeof mapControl!=="undefined"){mapControl.bind("onChangeExtend",function(bottom,left,top,right){_controlDiv.find("#escLatitudeMax").val(top);_controlDiv.find("#escLatitudeMin").val(bottom);_controlDiv.find("#escLongitudeMax").val(right);_controlDiv.find("#escLongitudeMin").val(left)})}resetControl();reloadCatalogs()}load(htmlTagId)} +"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){return new Promise(function(resolve,reject){try{window.eventSearchControl=new EventSearchControl("#wi-EventSearchControl");resolve()}catch(e){if(console.error!==wiConsole.error)console.error("events.js: "+e.message);wiConsole.error("events.js: "+e.message,e);reject()}})};function EventSearchControl(htmlTagId){var _controlDiv=null;var _catalogList=Array();function checkNumber(value,min,max){if(value==="")return null;value=Number(value);if(isNaN(value))return null;if(valuemax)return null;return value}function fillCatalogList(cataloglist){if(_controlDiv===null)return;if(!cataloglist)return;_catalogList=cataloglist;if(interfaceLoader.debug())console.error("Catalog rebuild");var select=_controlDiv.find("#escCatalog");select.empty();var keys=[];var preferred="";for(var k in _catalogList){if(_catalogList.hasOwnProperty(k)){if(_catalogList[k].preferred!==undefined){preferred=k}keys.push(Object.assign(_catalogList[k],{"id":k}))}}keys.sort(function(a,b){if(a.id===preferred)return-1;return a.description>b.description});for(var i=0;i"+item.description+"")}updateControlState()}function reloadCatalogs(){wiService.event.catalogs(fillCatalogList,null,true,{})}function validateCoordinates(){var bottom=_controlDiv.find("#escLatitudeMin").val();var top=_controlDiv.find("#escLatitudeMax").val();var left=_controlDiv.find("#escLongitudeMin").val();var right=_controlDiv.find("#escLongitudeMax").val();if(Number(bottom)>=Number(top)){alert("Invalid latitude interval.");return}if(Number(left)>=Number(right)){alert("Invalid longitude interval.");return}if(mapControl.enabled())mapControl.setSelect(bottom,left,top,right)}function resetCoordinates(){_controlDiv.find("#escLatitudeMin").val("-90");_controlDiv.find("#escLatitudeMax").val("90");_controlDiv.find("#escLongitudeMin").val("-180");_controlDiv.find("#escLongitudeMax").val("180");if(mapControl.enabled())mapControl.clearSelect()}function resetControl(){if(_controlDiv===null)return;var mag=configurationProxy.value("events.magnitudes.minimum",4);_controlDiv.find("#escMagnitudeSlider").slider("value",mag);var dmin=configurationProxy.value("events.depth.minimum",0);var dmax=configurationProxy.value("events.depth.maximum",1000);_controlDiv.find("#escDepthSlider").slider("values",[dmin,dmax]);var startoffset=configurationProxy.value("events.date.startoffset","-7d");_controlDiv.find("#escStart").datepicker("setDate",startoffset);_controlDiv.find("#escEnd").datepicker("setDate","now");_controlDiv.find("#escEventModeCatalog").click();resetCoordinates();return}function buildQueryURL(catalog,start,end,minmag,maxmag,mindepth,maxdepth,minlat,maxlat,minlon,maxlon,limit){var options={};options.catalog=undefined;options.start=undefined;options.end=undefined;options.minmag=undefined;options.maxmag=undefined;options.mindepth=undefined;options.maxdepth=undefined;options.minlat=undefined;options.minlon=undefined;options.maxlat=undefined;options.maxlon=undefined;options.limit=undefined;options.format="json";options.catalog=catalog;var catalogPrefs=_catalogList[catalog];if(!catalogPrefs){alert("Invalid Catalog.");return}if(catalogPrefs.hasDate){try{if(start!==undefined)start=$.datepicker.parseDate("yy-mm-dd",start)}catch(err){alert(start+" is not a valid start date ("+err+")");return}try{if(end!==undefined){end=$.datepicker.parseDate("yy-mm-dd",end);end.setDate(end.getDate()+1)}}catch(err){alert(end+" is not a valid end date ("+err+").");return}if(start>end){start=$.datepicker.formatDate("yy-mm-dd",start);end=$.datepicker.formatDate("yy-mm-dd",end);alert("Invalid date interval, "+start+" > "+end+".");return}if(start!==null&start!==undefined)options.start=$.datepicker.formatDate("yy-mm-dd",start);if(end!==null&end!==undefined)options.end=$.datepicker.formatDate("yy-mm-dd",end)}if(catalogPrefs.hasMagnitude){if(minmag===null){alert(_controlDiv.find("#escMagnitudeSlider").slider("value")+" is invalid as magnitude.");return}if(minmag!==null)options.minmag=minmag;if(maxmag!==null)options.maxmag=maxmag}if(catalogPrefs.hasDepth){if(mindepth===null){alert(_controlDiv.find("#escDepthSlider").slider("values",0)+" is invalid as depth.");return}if(maxdepth===null){alert(_controlDiv.find("#escDepthSlider").slider("values",1)+" is invalid as depth.");return}if(mindepth>=maxdepth){alert("Invalid depth interval, "+mindepth+" >= "+maxdepth+".");return}if(mindepth!==null)options.mindepth=mindepth;if(maxdepth!==null)options.maxdepth=maxdepth}if(catalogPrefs.hasRectangle){if(minlat===null){alert(_controlDiv.find("#escLatitudeMin").val()+" is invalid as latitude.");return}if(maxlat===null){alert(_controlDiv.find("#escLatitudeMax").val()+" is invalid as latitude.");return}if(minlon===null){alert(_controlDiv.find("#escLongitudeMin").val()+" is invalid as longitude.");return}if(maxlon===null){alert(_controlDiv.find("#escLongitudeMax").val()+" is invalid as longitude.");return}if(minlat>=maxlat){alert("Invalid latitude interval, "+minlat+" >= "+maxlat+".");return}if(minlon>=maxlon&&maxlon!==null){alert("Invalid longitude interval, "+minlon+" >= "+maxlon+".");return}if(minlat!==null)options.minlat=minlat;if(minlon!==null)options.minlon=minlon;if(maxlat!==null)options.maxlat=maxlat;if(maxlon!==null)options.maxlon=maxlon;if(limit!==null)options.limit=limit}return options}function quick6(){if(!_controlDiv)return;var start=undefined;var end=undefined;var catalog=_controlDiv.find("#escCatalog").val();var mindepth=0.001;var maxdepth=999;var minlat=checkNumber(_controlDiv.find("#escLatitudeMin").val(),-90,90);var maxlat=checkNumber(_controlDiv.find("#escLatitudeMax").val(),-90,90);var minlon=checkNumber(_controlDiv.find("#escLongitudeMin").val(),-180,180);var maxlon=checkNumber(_controlDiv.find("#escLongitudeMax").val(),-180,180);var options=buildQueryURL(catalog,start,end,6,10,mindepth,maxdepth,minlat,maxlat,minlon,maxlon,10);if(typeof options==="undefined")return;wiService.event.query(function(data,statustext,jqxhr){if(jqxhr.status==204){alert("Got no events for the selected day and options");wiConsole.notice("Got no events for the selected day and options: "+$.param(options))}else{requestControl.appendEvent(data);_controlDiv.find("#escSearch").button("option","label","Append")}},null,true,options)}function query(){if(!_controlDiv)return;var start=_controlDiv.find("#escStart").val();var end=_controlDiv.find("#escEnd").val();var catalog=_controlDiv.find("#escCatalog").val();var minmag=checkNumber(_controlDiv.find("#escMagnitudeSlider").slider("value"),-2,10);var mindepth=checkNumber(_controlDiv.find("#escDepthSlider").slider("values",0),-15,1000);var maxdepth=checkNumber(_controlDiv.find("#escDepthSlider").slider("values",1),-15,1000);var minlat=checkNumber(_controlDiv.find("#escLatitudeMin").val(),-90,90);var maxlat=checkNumber(_controlDiv.find("#escLatitudeMax").val(),-90,90);var minlon=checkNumber(_controlDiv.find("#escLongitudeMin").val(),-180,180);var maxlon=checkNumber(_controlDiv.find("#escLongitudeMax").val(),-180,180);var options=buildQueryURL(catalog,start,end,minmag,10,mindepth,maxdepth,minlat,maxlat,minlon,maxlon,null);if(typeof options==="undefined")return;wiService.event.query(function(data,statustext,jqxhr){if(jqxhr.status==204){alert("Got no events for the selected day and options");wiConsole.notice("Got no events for the selected day and options: "+$.param(options))}else{requestControl.appendEvent(data);_controlDiv.find("#escSearch").button("option","label","Append")}},null,true,options)}function updateControlState(){return;var catalog=_catalogList[_controlDiv.find("#escCatalog option:selected").val()];if(catalog===undefined)return;_controlDiv.find("#escDepthSlider").slider(!catalog.hasDepth?"disable":"enable");_controlDiv.find("#escDepthMin").prop("disabled",!catalog.hasDepth);_controlDiv.find("#escDepthMax").prop("disabled",!catalog.hasDepth);_controlDiv.find("#escMagnitudeSlider").slider(!catalog.hasMagnitude?"disable":"enable");_controlDiv.find("#escMagnitudeValue").prop("disabled",!catalog.hasMagnitude);_controlDiv.find("#escStart").prop("disabled",!catalog.hasDate);_controlDiv.find("#escEnd").prop("disabled",!catalog.hasDate);_controlDiv.find("input[id*=escLatitude]").prop("disabled",!catalog.hasRectangle);_controlDiv.find("input[id*=escLongitude]").prop("disabled",!catalog.hasRectangle);_controlDiv.find("#escCoordinateReset").prop("disabled",!catalog.hasRectangle)}function parseUserCatalog(){var result={status:1,message:"FAIL",header:""};var time=Number($("#escColumnTime").val());var latitude=Number($("#escColumnLatitude").val());var longitude=Number($("#escColumnLongitude").val());var depth=Number($("#escColumnDepth").val());var nmax=Math.max(time,latitude,longitude,depth);var nmin=Math.min(time,latitude,longitude,depth);if(nmin<1||isNaN(nmax)){alert("Error: column indices must be integers starting from 1.");return result}var format="csv";var columns=Array();var input=$("#escCatalogInput").val();if(input===null||input===undefined||input===""){alert("Please paste your catalog inside the text area before pressing 'Send'.");return result}var col_indices=Array(time,latitude,longitude,depth);var col_tags=Array("time","latitude","longitude","depth");for(var i=0;i";html+="";html+="";html+="
";html+="
";html+="
";html+="
";html+="
";html+="
";html+="";html+="";html+="
";_controlDiv.append(html);requestControl.bind("onDeleteEvents",function(){_controlDiv.find("#escSearch").button("option","label","Search")});html="
";html+="
Catalog Service:
";html+="
";html+="
";html+="
";html+="
Date Interval (yyyy-mm-dd):
";html+="";html+="–";html+="
";html+="
";html+="
Minimum Magnitude:
";html+="
";html+="
";html+="
";html+="
Depth fromtokm
";html+="
";html+="
";html+="
";html+="
Coordinates: (Use -ve for S/W; +ve for N/E)
";html+="
";html+="N
";html+="
";html+="W";html+="E
";html+="";html+="
S";html+="";html+="
";html+="
";_controlDiv.find("#escEventCatalogDiv").append(html);html="
";_controlDiv.find("#escEventFileDiv").append(html);_controlDiv.find("#escEventMode").buttonset();_controlDiv.find("#escEventMode").change(function(item){_controlDiv.find("#escEventDiv").children("div").hide();_controlDiv.find("#escEvent"+$(item.target).val()+"Div").show()});html="
";html+="

Use this control to upload your personal event catalog to be processed by our system. The catalog should be in CSV (comma-separated value) format and may contain as many events as you want, one per line, with the same number of columns. You must also indicate which columns contain the Latitude, Longitude, Depth and Origin Time for the event. All other columns will be ignored.

";html+="

Example: 2011-03-11T05:46:23;38.23;142.53;15;Tohoku

";html+="

Column Number Specification:

";html+="
";html+="Time: ";html+="Latitude: ";html+="Longitude: ";html+="Depth: ";html+="
";html+="

Copy and paste your catalog into the area below:

";html+="
[No format specified. Press \"Send\" first.]

";html+="
";html+="
";$("body").append(html);$("body").find("#escCatalogLoader").dialog({title:"Catalog Input Dialog",autoOpen:false,height:450,width:550,modal:true,buttons:{Send:function Send(){alert("Thank you, your upload is being checked.");var result=parseUserCatalog();console.log("parseUserCatalog: "+result.message);if(result.header!==undefined){var text="Format: "+result.header;$("body").find("#escCatalogHeader").empty().append(text)}},Close:function Close(){$(this).dialog("close")}}});_controlDiv.find("#escUserCatalog").button().bind("click",function(){$("#escCatalogLoader").dialog("open")});_controlDiv.find("#escSearch").button().bind("click",query);_controlDiv.find("#escQuick6").button().bind("click",quick6);_controlDiv.find("#escReset").button().bind("click",resetControl);_controlDiv.find("#escCatalog").bind("click",updateControlState);_controlDiv.find("#escStart").datepicker({showButtonPanel:true,changeMonth:true,changeYear:true,dateFormat:"yy-mm-dd"});_controlDiv.find("#escEnd").datepicker({showButtonPanel:true,changeMonth:true,changeYear:true,dateFormat:"yy-mm-dd"});_controlDiv.find("#escDepthSlider").slider({range:true,min:0,max:1000,step:1,slide:function slide(event,ui){_controlDiv.find("#escDepthMin").val(ui.values[0]);_controlDiv.find("#escDepthMax").val(ui.values[1])},change:function change(event,ui){_controlDiv.find("#escDepthMin").val(ui.values[0]);_controlDiv.find("#escDepthMax").val(ui.values[1])}});_controlDiv.find("#escDepthMin").bind("change",function(obj){var values=_controlDiv.find("#escDepthSlider").slider("values");values[0]=$(obj.target).val();_controlDiv.find("#escDepthSlider").slider("values",values)});_controlDiv.find("#escDepthMax").bind("change",function(obj){var values=_controlDiv.find("#escDepthSlider").slider("values");values[1]=$(obj.target).val();_controlDiv.find("#escDepthSlider").slider("values",values)});_controlDiv.find("#escMagnitudeSlider").slider({min:-2,max:10,step:0.1,slide:function slide(event,ui){_controlDiv.find("#escMagnitudeValue").val(ui.value)},change:function change(event,ui){_controlDiv.find("#escMagnitudeValue").val(ui.value)}});_controlDiv.find("#escMagnitudeValue").bind("change",function(obj){_controlDiv.find("#escMagnitudeSlider").slider("value",$(obj.target).val())});_controlDiv.find("input[id*=escLatitude]").bind("change",function(item){var value=checkNumber($(item.target).val(),-90,90);if(value===null){alert("Invalid latitude value, "+$(item.target).val());$(item.target).val("");return}validateCoordinates()});_controlDiv.find("input[id*=escLongitude]").bind("change",function(item){var value=checkNumber($(item.target).val(),-180,180);if(value===null){alert("Invalid longitude value, "+$(item.target).val());$(item.target).val("");return}validateCoordinates()});_controlDiv.find("#escCoordinateReset").button().bind("click",resetCoordinates)}function load(htmlTagId){var control=$(htmlTagId);if(control.length!==1){if(interfaceLoader.debug())console.error("event.js: Cannot find a div with class '"+htmlTagId+"'");return}_controlDiv=control;buildControl();if(typeof mapControl!=="undefined"){mapControl.bind("onChangeExtend",function(bottom,left,top,right){_controlDiv.find("#escLatitudeMax").val(top);_controlDiv.find("#escLatitudeMin").val(bottom);_controlDiv.find("#escLongitudeMax").val(right);_controlDiv.find("#escLongitudeMin").val(left)})}resetControl();reloadCatalogs()}load(htmlTagId)} },{}],4:[function(require,module,exports){ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});exports.default=function(){return new Promise(function(resolve,reject){try{var div=$('#wi-FDSNWS-Control');if(!div.length){window.wiFDSNWS_Control=new FDSNWS_Dummy;resolve();return}var fdsnws=new FDSNWS_Control(div);wiConsole.info('fdsnws.js: initializing');fdsnws.init().then(function(){wiConsole.info('fdsnws.js: init successful');window.wiFDSNWS_Control=fdsnws;resolve()}).catch(function(e){if(e instanceof Error)wiConsole.error('fdsnws.js: '+e.message,e);wiConsole.info('fdsnws.js: init failed');div.parent().remove();window.wiFDSNWS_Control=new FDSNWS_Dummy;resolve()})}catch(e){if(console.error!==wiConsole.error)console.error('fdsnws.js: '+e.message);wiConsole.error('fdsnws.js: '+e.message,e);reject()}})};function ajaxErrorMessage(jqXHR,textStatus){if(jqXHR.statusText)return jqXHR.statusText;else return textStatus}function FDSNWS_Download(controlDiv,db,authToken,data,options,bulk,merge,contentType,filename,cbDownloadFinished){var pbarDiv=null;var saveButton=null;var handle=null;var cred=null;var stopped=true;var n=0;function buildControl(){var pbarWrapperDiv=$('
');var popupDiv=$('
').attr('title',data.url);var popupBodyDiv=$('
');var popupTable=$('');pbarDiv=$('
');pbarDiv.append($('
').text(data.url).append(' - 0/'+data.params.length+' time windows'));pbarDiv.progressbar().click(function(){popupDiv.dialog('open')});pbarWrapperDiv.append(pbarDiv);if(!merge){var pbarButtonDiv=$('
');pbarDiv.css('width','86%').css('float','left');saveButton=$('Save');saveButton.button({disabled:true});pbarButtonDiv.append(saveButton);pbarWrapperDiv.append(pbarButtonDiv);pbarWrapperDiv.append('
')}popupBodyDiv.append(popupTable);popupDiv.append(popupBodyDiv);controlDiv.append(pbarWrapperDiv);controlDiv.append(popupDiv);popupDiv.dialog({autoOpen:false,modal:true,width:600});$.each(data.params,function(i,p){var row=$('
');row.append($('
').text(p.net));row.append($('').text(p.sta));row.append($('').text(p.loc));row.append($('').text(p.cha));row.append($('').text(p.start));row.append($('').text(p.end));row.append($(''));row.append($(''));popupTable.append(row)})}function store(blob,id){var t=db.transaction(['blobs'],'readwrite');t.objectStore('blobs').put(blob,id);t.oncomplete=next;t.onerror=cbDownloadFinished}function status(id,code,text){var tr=$('#wi-download-status-'+id);var tdcode=tr.find('.wi-download-status-code');var tdtext=tr.find('.wi-download-status-text');switch(code){case'OK':tr.css('color','green');break;case'NODATA':tr.css('color','orange');break;case'ERROR':tr.css('color','red');break;}tdcode.text(code);if(text&&text!='error')tdtext.text(text)}function statusBulk(code,text){$.each(data.params,function(i,p){status(p.id,code,text)})}function fetchBulk(){var postData='';$.each(Object.keys(options),function(i,k){postData+=k+'='+options[k]+'\n'});$.each(data.params,function(i,p){postData+=p.net+' '+p.sta+' '+p.loc+' '+p.cha+' '+p.start+' '+p.end+'\n'});handle=$.ajax({method:'POST',url:data.url,data:postData,contentType:'text/plain',dataType:'native',processData:false,xhrFields:{responseType:'arraybuffer'}});handle.done(function(buf,textStatus,jqXHR){handle=null;if(jqXHR.status!=200)buf=new ArrayBuffer(0);var blob=new Blob([buf]);if(blob.size>0)statusBulk('OK');else statusBulk('NODATA');store(blob,data.id)});handle.fail(function(jqXHR,textStatus){handle=null;if(!stopped)statusBulk('ERROR',ajaxErrorMessage(jqXHR,textStatus));next()})}function processBulk(){var t=db.transaction(['blobs']);t.objectStore('blobs').get(data.id).onsuccess=function(event){var blob=event.target.result;if(blob==null){fetchBulk()}else{if(blob.size>0)statusBulk('OK');else statusBulk('NODATA');next()}};t.onerror=function(event){fetchBulk(p)}}function doAjax(ajax,url,p,username,password){var q=$.extend({},p);delete q['id'];delete q['priority'];handle=ajax({method:'GET',url:url+'?'+$.param(q),username:username,password:password,dataType:'native',processData:false,xhrFields:{responseType:'arraybuffer'}});handle.done(function(buf,textStatus,jqXHR){handle=null;if(jqXHR.status!=200)buf=new ArrayBuffer(0);var blob=new Blob([buf]);if(blob.size>0)status(p.id,'OK',blob.size+' bytes');else status(p.id,'NODATA');store(blob,p.id)});handle.fail(function(jqXHR,textStatus){handle=null;if(jqXHR.status==401){auth(p);return}if(!stopped)status(p.id,'ERROR',ajaxErrorMessage(jqXHR,textStatus));next()})}function auth(p){var url=data.url.replace(/^http:/,'https:').replace(/query$/,'auth');handle=$.ajax({type:'POST',url:url,data:authToken,contentType:'text/plain',dataType:'text'});handle.done(function(data){handle=null;cred=data;fetch(p)});handle.fail(function(jqXHR,textStatus){handle=null;if(stopped){cbDownloadFinished();return}wiConsole.error('fdsnws.js: '+url+': '+ajaxErrorMessage(jqXHR,textStatus));authToken=null;cred=null;fetch(p)})}function wadl(p){var url=data.url.replace(/query$/,'application.wadl');handle=$.ajax({type:'GET',url:url,dataType:'xml'});handle.done(function(xml){handle=null;if($(xml).find('resource[path="auth"]').length){auth(p);return}wiConsole.info('fdsnws.js: '+url+': authentication is not supported');authToken=null;cred=null;fetch(p)});handle.fail(function(jqXHR,textStatus){handle=null;if(stopped){cbDownloadFinished();return}wiConsole.error('fdsnws.js: '+url+': '+ajaxErrorMessage(jqXHR,textStatus));authToken=null;cred=null;fetch(p)})}function fetch(p){var url=data.url;if(authToken&&!cred){wadl(p)}else if(cred){var userpass=cred.split(':');url=url.replace(/query$/,'queryauth');doAjax($.ajaxDigest,url,p,userpass[0],userpass[1])}else{doAjax($.ajax,url,p)}}function process(p){var t=db.transaction(['blobs']);t.objectStore('blobs').get(p.id).onsuccess=function(event){var blob=event.target.result;if(blob==null){fetch(p)}else{if(blob.size>0)status(p.id,'OK',blob.size+' bytes');else status(p.id,'NODATA');next()}};t.onerror=function(event){fetch(p)}}function getProduct(cbResult){if(bulk){var t=db.transaction(['blobs']);t.objectStore('blobs').get(data.id).onsuccess=function(event){var blob=event.target.result;if(blob!=null)cbResult(blob);else cbResult(new Blob([]))};t.onerror=function(event){cbResult(new Blob([]))}}else{var parts=[];(function addPart(i){if(i0){var file=new File([blob],filename,{type:contentType});var url=URL.createObjectURL(file);saveButton.attr('href',url);saveButton.attr('download',filename);saveButton.button('enable')}cbDownloadFinished()}function retrieveProduct(){if(saveButton)getProduct(deliverProduct);else cbDownloadFinished()}function next(){if(stopped){retrieveProduct();return}pbarDiv.progressbar('value',100*n/data.params.length);pbarDiv.find('.wi-download-counter').text(n);if(n');var filenameDiv=$('
').text(filename);startButton=$('');startButton.button({disabled:true}).click(function(){start()});stopButton=$('');stopButton.button({disabled:true}).click(function(){stop()});saveButton=$('Save');saveButton.button({disabled:true});deleteButton=$('');deleteButton.button({disabled:true}).click(function(){purge()});buttonsDiv.append(startButton);buttonsDiv.append(stopButton);buttonsDiv.append(saveButton);buttonsDiv.append(deleteButton);downloadsDiv=$('
Routing in progress...
');controlDiv.append(buttonsDiv);controlDiv.append(filenameDiv);controlDiv.append(downloadsDiv)}function deliverProduct(blobs){var file=new File(blobs,data.filename,{type:data.contentType});if(file.size>0){var url=URL.createObjectURL(file);saveButton.attr('href',url);saveButton.attr('download',data.filename);saveButton.button('enable')}startButton.button('enable');stopButton.button('disable');deleteButton.button('enable')}function retrieveProduct(){var blobs=[];$.each(downloads,function(i,dl){dl.getProduct(function(blob){blobs.push(blob);if(blobs.length==downloads.length)deliverProduct(blobs)})})}function cbDownloadFinished(){if(++finished');var dot=data.filename.lastIndexOf('.');var filename=data.filename.slice(0,dot)+'_'+i+data.filename.slice(dot);var dl=new FDSNWS_Download(dlDiv,db,authToken,d,data.options,data.bulk,data.merge,data.contentType,filename,cbDownloadFinished);downloadsDiv.append(dlDiv);downloads.push(dl)})}finished=0;$.each(downloads,function(i,dl){dl.start()})}function stop(){$.each(downloads,function(i,dl){dl.stop()})}function purge(){revokeObjectUrls();controlDiv.remove();var t=db.transaction(['blobs'],'readwrite');$.each(data,function(i,d){t.objectStore('blobs').delete(d.id);$.each(d.params,function(i,p){t.objectStore('blobs').delete(p.id)})});t.oncomplete=function(event){var t=db.transaction(['requests'],'readwrite');t.objectStore('requests').delete(data.id)}}function create(){var t=db.transaction(['blobs'],'readwrite');$.each(data,function(i,d){t.objectStore('blobs').add(null).onsuccess=function(event){d.id=event.target.result};$.each(d.params,function(i,p){t.objectStore('blobs').add(null).onsuccess=function(event){p.id=event.target.result}})});t.oncomplete=function(event){var t=db.transaction(['requests'],'readwrite');t.objectStore('requests').add(data).onsuccess=function(event){data.id=event.target.result};t.oncomplete=start}}function load(d){data=d;downloadsDiv.empty()}buildControl();this.start=start;this.stop=stop;this.purge=purge;this.create=create;this.load=load}function FDSNWS_Control(controlDiv){var statusListDiv=null;var callback=null;var db=null;var authToken=null;var authInfo=null;function buildControl(){statusListDiv=$('
');controlDiv.append(statusListDiv)}function createObjectStores(db){db.createObjectStore('user');db.createObjectStore('requests',{autoIncrement:true,keyPath:'id'});db.createObjectStore('blobs',{autoIncrement:true})}function openDatabase(){return new Promise(function(resolve,reject){if(!window.indexedDB){wiConsole.error('fdsnws.js: IndexedDB is not supported by browser');reject();return}var dbOpenReq;var dbVersion=1;try{dbOpenReq=window.indexedDB.open('webdc',{version:dbVersion,storage:'persistent'})}catch(e){if(e instanceof TypeError){try{dbOpenReq=window.indexedDB.open('webdc',dbVersion)}catch(e){reject(e);return}}else{reject(e);return}}dbOpenReq.onsuccess=function(event){db=event.target.result;db.onerror=function(event){wiConsole.error('fdsnws.js: IndexedDB error (errorCode='+event.target.errorCode+')')};if(db.setVersion){if(db.version!=dbVersion){db.setVersion(dbVersion).onsuccess=function(){try{createObjectStore(db)}catch(e){reject(e)}}}}resolve()};dbOpenReq.onupgradeneeded=function(event){try{createObjectStores(event.target.result)}catch(e){reject(e)}};dbOpenReq.onerror=function(event){wiConsole.error('fdsnws.js: access to database denied');reject()}})}function loadAuthToken(){return new Promise(function(resolve,reject){var t=db.transaction(['user']);t.objectStore('user').get('auth').onsuccess=function(event){if(event.target.result){setAuthToken(event.target.result)}};t.oncomplete=resolve;t.onerror=reject})}function loadRequests(){return new Promise(function(resolve,reject){var t=db.transaction(['requests']);t.objectStore('requests').openCursor().onsuccess=function(event){var cursor=event.target.result;if(cursor){var reqDiv=$('
');var data=cursor.value;var req=new FDSNWS_Request(reqDiv,db,authToken,data.filename);statusListDiv.append(reqDiv);req.load(data);req.start();cursor.continue()}};t.oncomplete=resolve;t.onerror=reject})}function init(){return openDatabase().then(loadAuthToken).then(loadRequests)}function submitRequest(param){var reqDiv=$('
');var req=new FDSNWS_Request(reqDiv,db,authToken,param.filename);statusListDiv.append(reqDiv);callback();var timewindows=JSON.parse(param.timewindows);if(routing){var postData='service='+param.service+'\nformat=json\n';$.each(timewindows,function(i,item){var start=item[0];var end=item[1];var net=item[2];var sta=item[3];var cha=item[4];var loc=item[5];if(loc=='')loc='--';postData+=net+' '+sta+' '+loc+' '+cha+' '+start+' '+end+'\n'});$.ajax({type:'POST',url:routerURL,data:postData,contentType:'text/plain',dataType:'json',success:function success(reqData){if(!reqData){wiConsole.error('fdsnws.js: no routes received');reqDiv.remove();return}reqData.options=param.options;reqData.bulk=param.bulk;reqData.merge=param.merge;reqData.filename=param.filename;reqData.contentType=param.contentType;req.load(reqData);req.create()},error:function error(jqXHR,textStatus){wiConsole.error('fdsnws.js: routing failed: '+ajaxErrorMessage(jqXHR,textStatus));reqDiv.remove()}})}else{var reqData=[{url:fdsnwsURL+'/'+param.service+'/1/query',name:param.service,params:[]}];$.each(timewindows,function(i,item){var start=item[0];var end=item[1];var net=item[2];var sta=item[3];var cha=item[4];var loc=item[5];if(loc=='')loc='--';reqData[0]['params'].push({net:net,sta:sta,loc:loc,cha:cha,start:start,end:end})});reqData.options=param.options;reqData.bulk=param.bulk;reqData.merge=param.merge;reqData.filename=param.filename;reqData.contentType=param.contentType;req.load(reqData);req.create()}}function setCallback(cb){callback=cb}function setAuthToken(tok){if(!tok){var t=db.transaction(['user'],'readwrite');t.objectStore('user').delete('auth');authToken=null;authInfo=null;return}try{var text=openpgp.message.readArmored(tok).getText();if(!text){try{text=openpgp.cleartext.readArmored(tok).getText()}catch(e){wiConsole.error('fdsnws.js: invalid auth token: No auth data');return}}var auth=$.parseJSON(text);var t=db.transaction(['user'],'readwrite');t.objectStore('user').put(tok,'auth');authToken=tok;authInfo={userId:auth.mail,validUntil:new Date(auth.valid_until)}}catch(e){wiConsole.error('fdsnws.js: invalid auth token: '+e.message)}}function getAuthInfo(){return authInfo}buildControl();var routing=configurationProxy.value('fdsnws.routing','true')=='true';var routerURL=configurationProxy.value('fdsnws.routerURL','/eidaws/routing/1/query');var fdsnwsURL=configurationProxy.value('fdsnws.fdsnwsURL','/fdsnws').replace(/\/+$/,'');this.init=init;this.submitRequest=submitRequest;this.setCallback=setCallback;this.setAuthToken=setAuthToken;this.getAuthInfo=getAuthInfo}function FDSNWS_Dummy(){this.setCallback=function(){};this.setAuthToken=function(){};this.getAuthInfo=function(){}} diff --git a/src/events.js b/src/events.js index 7b1a4d8..323d275 100644 --- a/src/events.js +++ b/src/events.js @@ -46,10 +46,31 @@ function EventSearchControl(htmlTagId) { var select = _controlDiv.find("#escCatalog"); select.empty(); - for(var key in _catalogList) { - var item = _catalogList[key]; - select.append(''); + var keys = []; + /** + * If no preference is set in `webinterface.cfg`, there + * will be no preferred attribute in the catalog + * output. If more than one is set as preferred, the last + * one wins. The remaining items are sorted by + * description. + */ + var preferred = ''; + for (const k in _catalogList) { + if (_catalogList.hasOwnProperty(k)) { + if (_catalogList[k].preferred !== undefined) { + preferred = k; + } + keys.push(Object.assign(_catalogList[k], {'id': k})); } + } + keys.sort(function(a, b) { + if (a.id === preferred) return -1; + return a.description > b.description; + }); + for (var i = 0; i < keys.length; i++) { + var item = keys[i]; + select.append(''); + } updateControlState(); } diff --git a/wsgi/modules/event.py b/wsgi/modules/event.py index 2d43eb4..716662f 100644 --- a/wsgi/modules/event.py +++ b/wsgi/modules/event.py @@ -293,6 +293,7 @@ def getEventsCatalog(self): "description": None} d = dict.fromkeys(self._EventServiceCatalog.keys()) + prefService = self._EventServicePreferred for k in d.keys(): d[k] = dict(handler_capabilities_default) d[k]["description"] = self._EventServiceCatalog[k][0] @@ -309,27 +310,12 @@ def getEventsCatalog(self): elif handler == "fdsnws": d[k]["hasDepth"] = True - # A hack here to force the preferred key to come first: - indent = None - if indent: - joint = ",\n" + indent * " " - else: - joint = ", " - prefService = self._EventServicePreferred - - if 'isc' in d.keys(): - rest = d.pop('isc') - else: - rest = None - - left = json.dumps({prefService: d.pop(prefService)}, indent=indent)[0:-1] - right = json.dumps(d, indent=indent).lstrip("{") - tmp = left.rstrip() + joint + right.lstrip() + # Set preferred attribute for the preferred key (only): + if k == prefService: + d[k]["preferred"] = True - if (rest is not None): - left = tmp[0:-1] # Only remove the final '}' - right = json.dumps({'isc': rest}, indent=indent).lstrip('{') - tmp = left.rstrip() + joint + right.lstrip() + indent = None + tmp = json.dumps(d, indent=indent) # DEBUG: Check the output string is loadable. tmp2 = json.loads(tmp)