update of jQuery to version 3.0.0
This commit is contained in:
		
							parent
							
								
									9e4fce4b7d
								
							
						
					
					
						commit
						ca3b5731c1
					
				| @ -371,18 +371,18 @@ $(document).ready(function() { | |||||||
| 	// hide child rows
 | 	// hide child rows
 | ||||||
| 	$('#eventstable > tbody > tr.tablesorter-childRow td').hide(); | 	$('#eventstable > tbody > tr.tablesorter-childRow td').hide(); | ||||||
| 	// update map after filtering
 | 	// update map after filtering
 | ||||||
| 	$('#eventstable').bind('filterEnd', function(){ | 	$('#eventstable').on('filterEnd', function(){ | ||||||
| 		toggleFilteredMarkers(); | 		toggleFilteredMarkers(); | ||||||
| 	}); | 	}); | ||||||
| 	// highlight first event
 | 	// highlight first event
 | ||||||
| 	$('#eventstable').bind('sortEnd', function(){ | 	$('#eventstable').on('sortEnd', function(){ | ||||||
| 		highlightFirstEvent(); | 		highlightFirstEvent(); | ||||||
| 	}); | 	}); | ||||||
| 	$('#eventstable').bind('pagerComplete', function(){ | 	$('#eventstable').on('pagerComplete', function(){ | ||||||
| 		highlightFirstEvent(); | 		highlightFirstEvent(); | ||||||
| 	}); | 	}); | ||||||
| 	// show / hide event info
 | 	// show / hide event info
 | ||||||
| 	$('#eventstable').delegate('.toggle', 'click' , function(){ | 	$('#eventstable').on('click', '.toggle', function(){ | ||||||
| 		// load event details
 | 		// load event details
 | ||||||
| 		var eventid = $(this).attr('eventid'); | 		var eventid = $(this).attr('eventid'); | ||||||
| 		( eventDetails[eventid] ) ? null : ajaxLoadEventInfo(eventid); | 		( eventDetails[eventid] ) ? null : ajaxLoadEventInfo(eventid); | ||||||
|  | |||||||
| Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 219 B | 
							
								
								
									
										161
									
								
								www/external/jQuery.print.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										161
									
								
								www/external/jQuery.print.js
									
									
									
									
										vendored
									
									
								
							| @ -1,161 +0,0 @@ | |||||||
| /*  jQuery.print, version 1.0.3 |  | ||||||
|  *  (c) Sathvik Ponangi, Doers' Guild |  | ||||||
|  * Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)
 |  | ||||||
|  *--------------------------------------------------------------------------*/ |  | ||||||
| 
 |  | ||||||
| (function($) {"use strict"; |  | ||||||
|     // A nice closure for our definitions
 |  | ||||||
| 
 |  | ||||||
|     function getjQueryObject(string) { |  | ||||||
|         // Make string a vaild jQuery thing
 |  | ||||||
|         var jqObj = $(""); |  | ||||||
|         try { |  | ||||||
|             jqObj = $(string).clone(); |  | ||||||
|         } catch(e) { |  | ||||||
|             jqObj = $("<span />").html(string); |  | ||||||
|         } |  | ||||||
|         return jqObj; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     function isNode(o) { |  | ||||||
|         /* http://stackoverflow.com/a/384380/937891 */ |  | ||||||
|         return !!( typeof Node === "object" ? o instanceof Node : o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string"); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     $.print = $.fn.print = function() { |  | ||||||
|         // Print a given set of elements
 |  | ||||||
| 
 |  | ||||||
|         var options, $this, self = this; |  | ||||||
| 
 |  | ||||||
|         // console.log("Printing", this, arguments);
 |  | ||||||
| 
 |  | ||||||
|         if ( self instanceof $) { |  | ||||||
|             // Get the node if it is a jQuery object
 |  | ||||||
|             self = self.get(0); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         if (isNode(self)) { |  | ||||||
|             // If `this` is a HTML element, i.e. for
 |  | ||||||
|             // $(selector).print()
 |  | ||||||
|             $this = $(self); |  | ||||||
|             if (arguments.length > 0) { |  | ||||||
|                 options = arguments[0]; |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             if (arguments.length > 0) { |  | ||||||
|                 // $.print(selector,options)
 |  | ||||||
|                 $this = $(arguments[0]); |  | ||||||
|                 if (isNode($this[0])) { |  | ||||||
|                     if (arguments.length > 1) { |  | ||||||
|                         options = arguments[1]; |  | ||||||
|                     } |  | ||||||
|                 } else { |  | ||||||
|                     // $.print(options)
 |  | ||||||
|                     options = arguments[0]; |  | ||||||
|                     $this = $("html"); |  | ||||||
|                 } |  | ||||||
|             } else { |  | ||||||
|                 // $.print()
 |  | ||||||
|                 $this = $("html"); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // Default options
 |  | ||||||
|         var defaults = { |  | ||||||
|             globalStyles : true, |  | ||||||
|             mediaPrint : false, |  | ||||||
|             stylesheet : null, |  | ||||||
|             noPrintSelector : ".no-print", |  | ||||||
|             iframe : true, |  | ||||||
|             append : null, |  | ||||||
|             prepend : null |  | ||||||
|         }; |  | ||||||
|         // Merge with user-options
 |  | ||||||
|         options = $.extend({}, defaults, (options || {})); |  | ||||||
| 
 |  | ||||||
|         var $styles = $(""); |  | ||||||
|         if (options.globalStyles) { |  | ||||||
|             // Apply the stlyes from the current sheet to the printed page
 |  | ||||||
|             $styles = $("style, link, meta, title"); |  | ||||||
|         } else if (options.mediaPrint) { |  | ||||||
|             // Apply the media-print stylesheet
 |  | ||||||
|             $styles = $("link[media=print]"); |  | ||||||
|         } |  | ||||||
|         if (options.stylesheet) { |  | ||||||
|             // Add a custom stylesheet if given
 |  | ||||||
|             $styles = $.merge($styles, $('<link rel="stylesheet" href="' + options.stylesheet + '">')); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // Create a copy of the element to print
 |  | ||||||
|         var copy = $this.clone(); |  | ||||||
|         // Wrap it in a span to get the HTML markup string
 |  | ||||||
|         copy = $("<span/>").append(copy); |  | ||||||
|         // Remove unwanted elements
 |  | ||||||
|         copy.find(options.noPrintSelector).remove(); |  | ||||||
|         // Add in the styles
 |  | ||||||
|         copy.append($styles.clone()); |  | ||||||
|         // Appedned content
 |  | ||||||
|         copy.append(getjQueryObject(options.append)); |  | ||||||
|         // Prepended content
 |  | ||||||
|         copy.prepend(getjQueryObject(options.prepend)); |  | ||||||
|         // Get the HTML markup string
 |  | ||||||
|         var content = copy.html(); |  | ||||||
|         // Destroy the copy
 |  | ||||||
|         copy.remove(); |  | ||||||
| 
 |  | ||||||
|         var w, wdoc; |  | ||||||
|         if (options.iframe) { |  | ||||||
|             // Use an iframe for printing
 |  | ||||||
|             try { |  | ||||||
|                 var $iframe = $(options.iframe + ""); |  | ||||||
|                 var iframeCount = $iframe.length; |  | ||||||
|                 if (iframeCount === 0) { |  | ||||||
|                     // Create a new iFrame if none is given
 |  | ||||||
|                     $iframe = $('<iframe height="0" width="0" border="0" wmode="Opaque"/>').prependTo('body').css({ |  | ||||||
|                         "position" : "absolute", |  | ||||||
|                         "top" : -999, |  | ||||||
|                         "left" : -999 |  | ||||||
|                     }); |  | ||||||
|                 } |  | ||||||
|                 w = $iframe.get(0); |  | ||||||
|                 w = w.contentWindow || w.contentDocument || w; |  | ||||||
|                 wdoc = w.document || w.contentDocument || w; |  | ||||||
|                 wdoc.open(); |  | ||||||
|                 wdoc.write(content); |  | ||||||
|                 wdoc.close(); |  | ||||||
|                 setTimeout(function() { |  | ||||||
|                     // Fix for IE : Allow it to render the iframe
 |  | ||||||
|                     w.focus(); |  | ||||||
|                     w.print(); |  | ||||||
|                     setTimeout(function() { |  | ||||||
|                         // Fix for IE
 |  | ||||||
|                         if (iframeCount === 0) { |  | ||||||
|                             // Destroy the iframe if created here
 |  | ||||||
|                             $iframe.remove(); |  | ||||||
|                         } |  | ||||||
|                     }, 100); |  | ||||||
|                 }, 250); |  | ||||||
|             } catch (e) { |  | ||||||
|                 // Use the pop-up method if iframe fails for some reason
 |  | ||||||
|                 console.error("Failed to print from iframe", e.stack, e.message); |  | ||||||
|                 w = window.open(); |  | ||||||
|                 w.document.write(content); |  | ||||||
|                 w.document.close(); |  | ||||||
|                 w.focus(); |  | ||||||
|                 w.print(); |  | ||||||
|                 w.close(); |  | ||||||
|             } |  | ||||||
|         } else { |  | ||||||
|             // Use a new window for printing
 |  | ||||||
|             w = window.open(); |  | ||||||
|             w.document.write(content); |  | ||||||
|             w.document.close(); |  | ||||||
|             w.focus(); |  | ||||||
|             w.print(); |  | ||||||
|             w.close(); |  | ||||||
|         } |  | ||||||
|         return this; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
| })(jQuery); |  | ||||||
							
								
								
									
										6
									
								
								www/external/jQuery.print.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								www/external/jQuery.print.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | /* @license  | ||||||
|  |  * jQuery.print, version 1.6.0 | ||||||
|  |  *  (c) Sathvik Ponangi, Doers' Guild | ||||||
|  |  * Licence: CC-By (http://creativecommons.org/licenses/by/3.0/)
 | ||||||
|  |  *--------------------------------------------------------------------------*/ | ||||||
|  | !function(e){"use strict";function t(t,n,r){for(var o=e(t),i=o.clone(n,r),a=o.find("textarea").add(o.filter("textarea")),l=i.find("textarea").add(i.filter("textarea")),c=o.find("select").add(o.filter("select")),d=i.find("select").add(i.filter("select")),f=0,s=a.length;f<s;++f)e(l[f]).val(e(a[f]).val());for(f=0,s=c.length;f<s;++f)for(var p=0,u=c[f].options.length;p<u;++p)!0===c[f].options[p].selected&&(d[f].options[p].selected=!0);return i}function n(n){var r=e("");try{r=t(n)}catch(t){r=e("<span />").html(n)}return r}function r(t,n,r){var o=e.Deferred();try{var i=(t=t.contentWindow||t.contentDocument||t).document||t.contentDocument||t;r.doctype&&i.write(r.doctype),i.write(n),i.close();var a=!1,l=function(){if(!a){t.focus();try{t.document.execCommand("print",!1,null)||t.print(),e("body").focus()}catch(e){t.print()}t.close(),a=!0,o.resolve()}};e(t).on("load",l),setTimeout(l,r.timeout)}catch(e){o.reject(e)}return o}function o(e,t){return r(window.open(),e,t).always(function(){try{t.deferred.resolve()}catch(e){console.warn("Error notifying deferred",e)}})}function i(e){return!!("object"==typeof Node?e instanceof Node:e&&"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName)}e.print=e.fn.print=function(){var a,l,c=this;c instanceof e&&(c=c.get(0)),i(c)?(l=e(c),arguments.length>0&&(a=arguments[0])):arguments.length>0?i((l=e(arguments[0]))[0])?arguments.length>1&&(a=arguments[1]):(a=arguments[0],l=e("html")):l=e("html");var d={globalStyles:!0,mediaPrint:!1,stylesheet:null,noPrintSelector:".no-print",iframe:!0,append:null,prepend:null,manuallyCopyFormValues:!0,deferred:e.Deferred(),timeout:750,title:null,doctype:"<!doctype html>"};a=e.extend({},d,a||{});var f=e("");a.globalStyles?f=e("style, link, meta, base, title"):a.mediaPrint&&(f=e("link[media=print]")),a.stylesheet&&(f=e.merge(f,e('<link rel="stylesheet" href="'+a.stylesheet+'">')));var s=t(l);if((s=e("<span/>").append(s)).find(a.noPrintSelector).remove(),s.append(t(f)),a.title){var p=e("title",s);0===p.length&&(p=e("<title />"),s.append(p)),p.text(a.title)}s.append(n(a.append)),s.prepend(n(a.prepend)),a.manuallyCopyFormValues&&(s.find("input").each(function(){var t=e(this);t.is("[type='radio']")||t.is("[type='checkbox']")?t.prop("checked")&&t.attr("checked","checked"):t.attr("value",t.val())}),s.find("select").each(function(){e(this).find(":selected").attr("selected","selected")}),s.find("textarea").each(function(){var t=e(this);t.text(t.val())}));var u,h,m,y,v=s.html();try{a.deferred.notify("generated_markup",v,s)}catch(e){console.warn("Error notifying deferred",e)}if(s.remove(),a.iframe)try{u=v,m=e((h=a).iframe+""),0===(y=m.length)&&(m=e('<iframe height="0" width="0" border="0" wmode="Opaque"/>').prependTo("body").css({position:"absolute",top:-999,left:-999})),r(m.get(0),u,h).done(function(){setTimeout(function(){0===y&&m.remove()},1e3)}).fail(function(e){console.error("Failed to print from iframe",e),o(u,h)}).always(function(){try{h.deferred.resolve()}catch(e){console.warn("Error notifying deferred",e)}})}catch(e){console.error("Failed to print from iframe",e.stack,e.message),o(v,a)}else o(v,a);return this}}(jQuery); | ||||||
							
								
								
									
										5
									
								
								www/external/jquery.tablesorter.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								www/external/jquery.tablesorter.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										42
									
								
								www/external/jquery.tablesorter.pager.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								www/external/jquery.tablesorter.pager.css
									
									
									
									
										vendored
									
									
								
							| @ -1,42 +0,0 @@ | |||||||
| /* pager wrapper, div */ |  | ||||||
| .tablesorter-pager { |  | ||||||
| 	padding: 5px; |  | ||||||
| } |  | ||||||
| /* pager wrapper, in thead/tfoot */ |  | ||||||
| td.tablesorter-pager { |  | ||||||
| 	background-color: #e6eeee; |  | ||||||
| 	margin: 0; /* needed for bootstrap .pager gets a 18px bottom margin */ |  | ||||||
| } |  | ||||||
| /* pager navigation arrows */ |  | ||||||
| .tablesorter-pager img { |  | ||||||
| 	vertical-align: middle; |  | ||||||
| 	margin-right: 2px; |  | ||||||
| 	cursor: pointer; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* pager output text */ |  | ||||||
| .tablesorter-pager .pagedisplay { |  | ||||||
| 	padding: 0 5px 0 5px; |  | ||||||
| 	width: auto; |  | ||||||
| 	white-space: nowrap; |  | ||||||
| 	text-align: center; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* pager element reset (needed for bootstrap) */ |  | ||||||
| .tablesorter-pager select { |  | ||||||
| 	margin: 0; |  | ||||||
| 	padding: 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /*** css used when "updateArrows" option is true ***/ |  | ||||||
| /* the pager itself gets a disabled class when the number of rows is less than the size */ |  | ||||||
| .tablesorter-pager.disabled { |  | ||||||
| 	display: none; |  | ||||||
| } |  | ||||||
| /* hide or fade out pager arrows when the first or last row is visible */ |  | ||||||
| .tablesorter-pager .disabled { |  | ||||||
| 	/* visibility: hidden */ |  | ||||||
| 	opacity: 0.5; |  | ||||||
| 	filter: alpha(opacity=50); |  | ||||||
| 	cursor: default; |  | ||||||
| } |  | ||||||
							
								
								
									
										2
									
								
								www/external/jquery.tablesorter.pager.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								www/external/jquery.tablesorter.pager.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										17
									
								
								www/external/jquery.tablesorter.widgets.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								www/external/jquery.tablesorter.widgets.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										4
									
								
								www/external/sprintf.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								www/external/sprintf.min.js
									
									
									
									
										vendored
									
									
								
							| @ -1 +1,3 @@ | |||||||
| /*! sprintf.js | Copyright (c) 2007-2013 Alexandru Marasteanu <hello at alexei dot ro> | 3 clause BSD license */(function(e){function r(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function i(e,t){for(var n=[];t>0;n[--t]=e);return n.join("")}var t=function(){return t.cache.hasOwnProperty(arguments[0])||(t.cache[arguments[0]]=t.parse(arguments[0])),t.format.call(null,t.cache[arguments[0]],arguments)};t.format=function(e,n){var s=1,o=e.length,u="",a,f=[],l,c,h,p,d,v;for(l=0;l<o;l++){u=r(e[l]);if(u==="string")f.push(e[l]);else if(u==="array"){h=e[l];if(h[2]){a=n[s];for(c=0;c<h[2].length;c++){if(!a.hasOwnProperty(h[2][c]))throw t('[sprintf] property "%s" does not exist',h[2][c]);a=a[h[2][c]]}}else h[1]?a=n[h[1]]:a=n[s++];if(/[^s]/.test(h[8])&&r(a)!="number")throw t("[sprintf] expecting number but found %s",r(a));switch(h[8]){case"b":a=a.toString(2);break;case"c":a=String.fromCharCode(a);break;case"d":a=parseInt(a,10);break;case"e":a=h[7]?a.toExponential(h[7]):a.toExponential();break;case"f":a=h[7]?parseFloat(a).toFixed(h[7]):parseFloat(a);break;case"o":a=a.toString(8);break;case"s":a=(a=String(a))&&h[7]?a.substring(0,h[7]):a;break;case"u":a>>>=0;break;case"x":a=a.toString(16);break;case"X":a=a.toString(16).toUpperCase()}a=/[def]/.test(h[8])&&h[3]&&a>=0?"+"+a:a,d=h[4]?h[4]=="0"?"0":h[4].charAt(1):" ",v=h[6]-String(a).length,p=h[6]?i(d,v):"",f.push(h[5]?a+p:p+a)}}return f.join("")},t.cache={},t.parse=function(e){var t=e,n=[],r=[],i=0;while(t){if((n=/^[^\x25]+/.exec(t))!==null)r.push(n[0]);else if((n=/^\x25{2}/.exec(t))!==null)r.push("%");else{if((n=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(t))===null)throw"[sprintf] huh?";if(n[2]){i|=1;var s=[],o=n[2],u=[];if((u=/^([a-z_][a-z_\d]*)/i.exec(o))===null)throw"[sprintf] huh?";s.push(u[1]);while((o=o.substring(u[0].length))!=="")if((u=/^\.([a-z_][a-z_\d]*)/i.exec(o))!==null)s.push(u[1]);else{if((u=/^\[(\d+)\]/.exec(o))===null)throw"[sprintf] huh?";s.push(u[1])}n[2]=s}else i|=2;if(i===3)throw"[sprintf] mixing positional and named placeholders is not (yet) supported";r.push(n)}t=t.substring(n[0].length)}return r};var n=function(e,n,r){return r=n.slice(0),r.splice(0,0,e),t.apply(null,r)};e.sprintf=t,e.vsprintf=n})(typeof exports!="undefined"?exports:window); | /*! sprintf-js v1.1.2 | Copyright (c) 2007-present, Alexandru Mărășteanu <hello@alexei.ro> | BSD-3-Clause */ | ||||||
|  | !function(){"use strict";var g={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function y(e){return function(e,t){var r,n,i,s,a,o,p,c,l,u=1,f=e.length,d="";for(n=0;n<f;n++)if("string"==typeof e[n])d+=e[n];else if("object"==typeof e[n]){if((s=e[n]).keys)for(r=t[u],i=0;i<s.keys.length;i++){if(null==r)throw new Error(y('[sprintf] Cannot access property "%s" of undefined value "%s"',s.keys[i],s.keys[i-1]));r=r[s.keys[i]]}else r=s.param_no?t[s.param_no]:t[u++];if(g.not_type.test(s.type)&&g.not_primitive.test(s.type)&&r instanceof Function&&(r=r()),g.numeric_arg.test(s.type)&&"number"!=typeof r&&isNaN(r))throw new TypeError(y("[sprintf] expecting number but found %T",r));switch(g.number.test(s.type)&&(c=0<=r),s.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,s.width?parseInt(s.width):0);break;case"e":r=s.precision?parseFloat(r).toExponential(s.precision):parseFloat(r).toExponential();break;case"f":r=s.precision?parseFloat(r).toFixed(s.precision):parseFloat(r);break;case"g":r=s.precision?String(Number(r.toPrecision(s.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}g.json.test(s.type)?d+=r:(!g.number.test(s.type)||c&&!s.sign?l="":(l=c?"+":"-",r=r.toString().replace(g.sign,"")),o=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",p=s.width-(l+r).length,a=s.width&&0<p?o.repeat(p):"",d+=s.align?l+r+a:"0"===o?l+a+r:a+l+r)}return d}(function(e){if(p[e])return p[e];var t,r=e,n=[],i=0;for(;r;){if(null!==(t=g.text.exec(r)))n.push(t[0]);else if(null!==(t=g.modulo.exec(r)))n.push("%");else{if(null===(t=g.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){i|=1;var s=[],a=t[2],o=[];if(null===(o=g.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(o[1]);""!==(a=a.substring(o[0].length));)if(null!==(o=g.key_access.exec(a)))s.push(o[1]);else{if(null===(o=g.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(o[1])}t[2]=s}else i|=2;if(3===i)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return p[e]=n}(e),arguments)}function e(e,t){return y.apply(null,[e].concat(t||[]))}var p=Object.create(null);"undefined"!=typeof exports&&(exports.sprintf=y,exports.vsprintf=e),"undefined"!=typeof window&&(window.sprintf=y,window.vsprintf=e,"function"==typeof define&&define.amd&&define(function(){return{sprintf:y,vsprintf:e}}))}(); | ||||||
|  | //# sourceMappingURL=sprintf.min.js.map
 | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								www/external/sprintf.min.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								www/external/sprintf.min.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										863
									
								
								www/external/widget-pager.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										863
									
								
								www/external/widget-pager.js
									
									
									
									
										vendored
									
									
								
							| @ -1,863 +0,0 @@ | |||||||
| /* Pager widget (beta) for TableSorter 3/31/2014 (v2.15.12) */ |  | ||||||
| /*jshint browser:true, jquery:true, unused:false */ |  | ||||||
| ;(function($){ |  | ||||||
| "use strict"; |  | ||||||
| var tsp, |  | ||||||
| 	ts = $.tablesorter; |  | ||||||
| 
 |  | ||||||
| ts.addWidget({ |  | ||||||
| 	id: "pager", |  | ||||||
| 	priority: 55, // load pager after filter widget
 |  | ||||||
| 	options : { |  | ||||||
| 		// output default: '{page}/{totalPages}'
 |  | ||||||
| 		// possible variables: {page}, {totalPages}, {filteredPages}, {startRow}, {endRow}, {filteredRows} and {totalRows}
 |  | ||||||
| 		pager_output: '{startRow} to {endRow} of {totalRows} rows', // '{page}/{totalPages}'
 |  | ||||||
| 
 |  | ||||||
| 		// apply disabled classname to the pager arrows when the rows at either extreme is visible
 |  | ||||||
| 		pager_updateArrows: true, |  | ||||||
| 
 |  | ||||||
| 		// starting page of the pager (zero based index)
 |  | ||||||
| 		pager_startPage: 0, |  | ||||||
| 
 |  | ||||||
| 		// Number of visible rows
 |  | ||||||
| 		pager_size: 10, |  | ||||||
| 
 |  | ||||||
| 		// Save pager page & size if the storage script is loaded (requires $.tablesorter.storage in jquery.tablesorter.widgets.js)
 |  | ||||||
| 		pager_savePages: true, |  | ||||||
| 
 |  | ||||||
| 		//defines custom storage key
 |  | ||||||
| 		pager_storageKey: 'tablesorter-pager', |  | ||||||
| 
 |  | ||||||
| 		// if true, the table will remain the same height no matter how many records are displayed. The space is made up by an empty
 |  | ||||||
| 		// table row set to a height to compensate; default is false
 |  | ||||||
| 		pager_fixedHeight: false, |  | ||||||
| 
 |  | ||||||
| 		// count child rows towards the set page size? (set true if it is a visible table row within the pager)
 |  | ||||||
| 		// if true, child row(s) may not appear to be attached to its parent row, may be split across pages or
 |  | ||||||
| 		// may distort the table if rowspan or cellspans are included.
 |  | ||||||
| 		pager_countChildRows: false, |  | ||||||
| 
 |  | ||||||
| 		// remove rows from the table to speed up the sort of large tables.
 |  | ||||||
| 		// setting this to false, only hides the non-visible rows; needed if you plan to add/remove rows with the pager enabled.
 |  | ||||||
| 		pager_removeRows: false, // removing rows in larger tables speeds up the sort
 |  | ||||||
| 
 |  | ||||||
| 		// use this format: "http://mydatabase.com?page={page}&size={size}&{sortList:col}&{filterList:fcol}"
 |  | ||||||
| 		// where {page} is replaced by the page number, {size} is replaced by the number of records to show,
 |  | ||||||
| 		// {sortList:col} adds the sortList to the url into a "col" array, and {filterList:fcol} adds
 |  | ||||||
| 		// the filterList to the url into an "fcol" array.
 |  | ||||||
| 		// So a sortList = [[2,0],[3,0]] becomes "&col[2]=0&col[3]=0" in the url
 |  | ||||||
| 		// and a filterList = [[2,Blue],[3,13]] becomes "&fcol[2]=Blue&fcol[3]=13" in the url
 |  | ||||||
| 		pager_ajaxUrl: null, |  | ||||||
| 
 |  | ||||||
| 		// modify the url after all processing has been applied
 |  | ||||||
| 		pager_customAjaxUrl: function(table, url) { return url; }, |  | ||||||
| 
 |  | ||||||
| 		// modify the $.ajax object to allow complete control over your ajax requests
 |  | ||||||
| 		pager_ajaxObject: { |  | ||||||
| 			dataType: 'json' |  | ||||||
| 		}, |  | ||||||
| 
 |  | ||||||
| 		// set this to false if you want to block ajax loading on init
 |  | ||||||
| 		pager_processAjaxOnInit: true, |  | ||||||
| 
 |  | ||||||
| 		// process ajax so that the following information is returned:
 |  | ||||||
| 		// [ total_rows (number), rows (array of arrays), headers (array; optional) ]
 |  | ||||||
| 		// example:
 |  | ||||||
| 		// [
 |  | ||||||
| 		//   100,  // total rows
 |  | ||||||
| 		//   [
 |  | ||||||
| 		//     [ "row1cell1", "row1cell2", ... "row1cellN" ],
 |  | ||||||
| 		//     [ "row2cell1", "row2cell2", ... "row2cellN" ],
 |  | ||||||
| 		//     ...
 |  | ||||||
| 		//     [ "rowNcell1", "rowNcell2", ... "rowNcellN" ]
 |  | ||||||
| 		//   ],
 |  | ||||||
| 		//   [ "header1", "header2", ... "headerN" ] // optional
 |  | ||||||
| 		// ]
 |  | ||||||
| 		pager_ajaxProcessing: function(ajax){ return [ 0, [], null ]; }, |  | ||||||
| 
 |  | ||||||
| 		// css class names of pager arrows
 |  | ||||||
| 		pager_css: { |  | ||||||
| 			container   : 'tablesorter-pager', |  | ||||||
| 			errorRow    : 'tablesorter-errorRow', // error information row (don't include period at beginning)
 |  | ||||||
| 			disabled    : 'disabled'              // class added to arrows @ extremes (i.e. prev/first arrows "disabled" on first page)
 |  | ||||||
| 		}, |  | ||||||
| 
 |  | ||||||
| 		// jQuery selectors
 |  | ||||||
| 		pager_selectors: { |  | ||||||
| 			container   : '.pager',       // target the pager markup
 |  | ||||||
| 			first       : '.first',       // go to first page arrow
 |  | ||||||
| 			prev        : '.prev',        // previous page arrow
 |  | ||||||
| 			next        : '.next',        // next page arrow
 |  | ||||||
| 			last        : '.last',        // go to last page arrow
 |  | ||||||
| 			goto        : '.gotoPage',    // go to page selector - select dropdown that sets the current page
 |  | ||||||
| 			pageDisplay : '.pagedisplay', // location of where the "output" is displayed
 |  | ||||||
| 			pageSize    : '.pagesize'     // page size selector - select dropdown that sets the "size" option
 |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 	init: function(table){ |  | ||||||
| 		tsp.init(table); |  | ||||||
| 	}, |  | ||||||
| 	// only update to complete sorter initialization
 |  | ||||||
| 	format: function(table, c){ |  | ||||||
| 		if (!(c.pager && c.pager.initialized)){ |  | ||||||
| 			return tsp.initComplete(table, c); |  | ||||||
| 		} |  | ||||||
| 		tsp.moveToPage(table, c.pager, false); |  | ||||||
| 	}, |  | ||||||
| 	remove: function(table, c){ |  | ||||||
| 		tsp.destroyPager(table, c); |  | ||||||
| 	} |  | ||||||
| }); |  | ||||||
| 
 |  | ||||||
| /* pager widget functions */ |  | ||||||
| tsp = ts.pager = { |  | ||||||
| 
 |  | ||||||
| 	init: function(table) { |  | ||||||
| 		// check if tablesorter has initialized
 |  | ||||||
| 		if (table.hasInitialized && table.config.pager.initialized) { return; } |  | ||||||
| 		var t, |  | ||||||
| 			c = table.config, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			s = wo.pager_selectors, |  | ||||||
| 
 |  | ||||||
| 			// save pager variables
 |  | ||||||
| 			p = c.pager = $.extend({ |  | ||||||
| 				totalPages: 0, |  | ||||||
| 				filteredRows: 0, |  | ||||||
| 				filteredPages: 0, |  | ||||||
| 				currentFilters: [], |  | ||||||
| 				page: wo.pager_startPage, |  | ||||||
| 				size: wo.pager_size, |  | ||||||
| 				startRow: 0, |  | ||||||
| 				endRow: 0, |  | ||||||
| 				ajaxCounter: 0, |  | ||||||
| 				$size: null, |  | ||||||
| 				last: {} |  | ||||||
| 			}, c.pager); |  | ||||||
| 
 |  | ||||||
| 		// pager initializes multiple times before table has completed initialization
 |  | ||||||
| 		if (p.isInitializing) { return; } |  | ||||||
| 
 |  | ||||||
| 		p.isInitializing = true; |  | ||||||
| 		if (c.debug) { |  | ||||||
| 			ts.log('Pager initializing'); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		// added in case the pager is reinitialized after being destroyed.
 |  | ||||||
| 		p.$container = $(s.container).addClass(wo.pager_css.container).show(); |  | ||||||
| 		// goto selector
 |  | ||||||
| 		p.$goto = p.$container.find(s.goto); |  | ||||||
| 		// page size selector
 |  | ||||||
| 		p.$size = p.$container.find(s.pageSize); |  | ||||||
| 		p.totalRows = c.$tbodies.eq(0).children().length; |  | ||||||
| 		p.oldAjaxSuccess = p.oldAjaxSuccess || wo.pager_ajaxObject.success; |  | ||||||
| 		c.appender = tsp.appender; |  | ||||||
| 		if (ts.filter && $.inArray('filter', c.widgets) >= 0) { |  | ||||||
| 			// get any default filter settings (data-value attribute) fixes #388
 |  | ||||||
| 			p.currentFilters = c.$table.data('lastSearch') || ts.filter.setDefaults(table, c, wo) || []; |  | ||||||
| 			// set, but don't apply current filters
 |  | ||||||
| 			ts.setFilters(table, p.currentFilters, false); |  | ||||||
| 		} |  | ||||||
| 		if (wo.pager_savePages && ts.storage) { |  | ||||||
| 			t = ts.storage(table, wo.pager_storageKey) || {}; // fixes #387
 |  | ||||||
| 			p.page = isNaN(t.page) ? p.page : t.page; |  | ||||||
| 			p.size = ( isNaN(t.size) ? p.size : t.size ) || 10; |  | ||||||
| 			$.data(table, 'pagerLastSize', p.size); |  | ||||||
| 		} |  | ||||||
| 		// clear initialized flag
 |  | ||||||
| 		p.initialized = false; |  | ||||||
| 		// before initialization event
 |  | ||||||
| 		c.$table.trigger('pagerBeforeInitialized', c); |  | ||||||
| 
 |  | ||||||
| 		tsp.enablePager(table, c, false); |  | ||||||
| 
 |  | ||||||
| 		if ( typeof(wo.pager_ajaxUrl) === 'string' ) { |  | ||||||
| 			// ajax pager; interact with database
 |  | ||||||
| 			p.ajax = true; |  | ||||||
| 			// When filtering with ajax, allow only custom filtering function, disable default filtering since it will be done server side.
 |  | ||||||
| 			wo.filter_serversideFiltering = true; |  | ||||||
| 			c.serverSideSorting = true; |  | ||||||
| 			tsp.moveToPage(table, p); |  | ||||||
| 		} else { |  | ||||||
| 			p.ajax = false; |  | ||||||
| 			// Regular pager; all rows stored in memory
 |  | ||||||
| 			c.$table.trigger("appendCache", [{}, true]); |  | ||||||
| 			tsp.hideRowsSetup(table, c); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	initComplete: function(table, c){ |  | ||||||
| 		var p = c.pager; |  | ||||||
| 		tsp.changeHeight(table, c); |  | ||||||
| 		tsp.bindEvents(table, c); |  | ||||||
| 
 |  | ||||||
| 		// pager initialized
 |  | ||||||
| 		p.initialized = true; |  | ||||||
| 		p.isInitializing = false; |  | ||||||
| 		tsp.setPageSize(table, 0, c); // page size 0 is ignored
 |  | ||||||
| 		c.$table.trigger('pagerInitialized', c); |  | ||||||
| 
 |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	bindEvents: function(table, c){ |  | ||||||
| 		var ctrls, fxn, |  | ||||||
| 			p = c.pager, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			s = wo.pager_selectors; |  | ||||||
| 
 |  | ||||||
| 		c.$table |  | ||||||
| 			.unbind('filterStart filterEnd sortEnd disable enable destroy update updateRows updateAll addRows pageSize '.split(' ').join('.pager ')) |  | ||||||
| 			.bind('filterStart.pager', function(e, filters) { |  | ||||||
| 				p.currentFilters = filters; |  | ||||||
| 				p.page = 0; // fixes #456
 |  | ||||||
| 			}) |  | ||||||
| 			// update pager after filter widget completes
 |  | ||||||
| 			.bind('filterEnd.pager sortEnd.pager', function() { |  | ||||||
| 				if (p.initialized) { |  | ||||||
| 					tsp.moveToPage(table, p, false); |  | ||||||
| 					tsp.updatePageDisplay(table, c, false); |  | ||||||
| 					tsp.fixHeight(table, c); |  | ||||||
| 				} |  | ||||||
| 			}) |  | ||||||
| 			.bind('disable.pager', function(e){ |  | ||||||
| 				e.stopPropagation(); |  | ||||||
| 				tsp.showAllRows(table, c); |  | ||||||
| 			}) |  | ||||||
| 			.on('enable.pager', function(e){ |  | ||||||
| 				e.stopPropagation(); |  | ||||||
| 				tsp.enablePager(table, c, true); |  | ||||||
| 			}) |  | ||||||
| 			.on('destroy.pager', function(e){ |  | ||||||
| 				e.stopPropagation(); |  | ||||||
| 				tsp.destroyPager(table, c); |  | ||||||
| 			}) |  | ||||||
| 			.on('update updateRows updateAll addRows '.split(' ').join('.pager '), function(e){ |  | ||||||
| 				e.stopPropagation(); |  | ||||||
| 				tsp.hideRows(table, c); |  | ||||||
| 				// make sure widgets are applied - fixes #450
 |  | ||||||
| 				c.$table.trigger('applyWidgets'); |  | ||||||
| 			}) |  | ||||||
| 			.on('pageSize.pager', function(e,v){ |  | ||||||
| 				e.stopPropagation(); |  | ||||||
| 				tsp.setPageSize(table, parseInt(v, 10) || 10, c); |  | ||||||
| 				tsp.hideRows(table, c); |  | ||||||
| 				tsp.updatePageDisplay(table, c, false); |  | ||||||
| 				if (p.$size.length) { p.$size.val(p.size); } // twice?
 |  | ||||||
| 			}) |  | ||||||
| 			.on('pageSet.pager', function(e,v){ |  | ||||||
| 				e.stopPropagation(); |  | ||||||
| 				p.page = (parseInt(v, 10) || 1) - 1; |  | ||||||
| 				if (p.$goto.length) { p.$goto.val(c.size); } // twice?
 |  | ||||||
| 				tsp.moveToPage(table, p); |  | ||||||
| 				tsp.updatePageDisplay(table, c, false); |  | ||||||
| 			}); |  | ||||||
| 
 |  | ||||||
| 		// clicked controls
 |  | ||||||
| 		ctrls = [ s.first, s.prev, s.next, s.last ]; |  | ||||||
| 		fxn = [ 'moveToFirstPage', 'moveToPrevPage', 'moveToNextPage', 'moveToLastPage' ]; |  | ||||||
| 		p.$container.find(ctrls.join(',')) |  | ||||||
| 			.attr("tabindex", 0) |  | ||||||
| 			.unbind('click.pager') |  | ||||||
| 			.bind('click.pager', function(e){ |  | ||||||
| 				e.stopPropagation(); |  | ||||||
| 				var i, |  | ||||||
| 					$c = $(this), |  | ||||||
| 					l = ctrls.length; |  | ||||||
| 				if ( !$c.hasClass(wo.pager_css.disabled) ) { |  | ||||||
| 					for (i = 0; i < l; i++) { |  | ||||||
| 						if ($c.is(ctrls[i])) { |  | ||||||
| 							tsp[fxn[i]](table, p); |  | ||||||
| 							break; |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			}); |  | ||||||
| 
 |  | ||||||
| 		if ( p.$goto.length ) { |  | ||||||
| 			p.$goto |  | ||||||
| 				.unbind('change') |  | ||||||
| 				.bind('change', function(){ |  | ||||||
| 					p.page = $(this).val() - 1; |  | ||||||
| 					tsp.moveToPage(table, p); |  | ||||||
| 					tsp.updatePageDisplay(table, c, false); |  | ||||||
| 				}); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		if ( p.$size.length ) { |  | ||||||
| 			p.$size |  | ||||||
| 				.unbind('change.pager') |  | ||||||
| 				.bind('change.pager', function() { |  | ||||||
| 					p.$size.val( $(this).val() ); // in case there are more than one pagers
 |  | ||||||
| 					if ( !$(this).hasClass(wo.pager_css.disabled) ) { |  | ||||||
| 						tsp.setPageSize(table, parseInt( $(this).val(), 10 ), c); |  | ||||||
| 						tsp.changeHeight(table, c); |  | ||||||
| 					} |  | ||||||
| 					return false; |  | ||||||
| 				}); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	// hide arrows at extremes
 |  | ||||||
| 	pagerArrows: function(c, disable) { |  | ||||||
| 		var p = c.pager, |  | ||||||
| 			dis = !!disable, |  | ||||||
| 			first = dis || p.page === 0, |  | ||||||
| 			tp = Math.min( p.totalPages, p.filteredPages ), |  | ||||||
| 			last = dis || p.page === tp - 1 || p.totalPages === 0, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			s = wo.pager_selectors; |  | ||||||
| 		if ( wo.pager_updateArrows ) { |  | ||||||
| 			p.$container.find(s.first + ',' + s.prev).toggleClass(wo.pager_css.disabled, first).attr('aria-disabled', first); |  | ||||||
| 			p.$container.find(s.next + ',' + s.last).toggleClass(wo.pager_css.disabled, last).attr('aria-disabled', last); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	updatePageDisplay: function(table, c, completed) { |  | ||||||
| 		var i, pg, s, out, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			p = c.pager, |  | ||||||
| 			f = c.$table.hasClass('hasFilters') && !wo.pager_ajaxUrl, |  | ||||||
| 			t = (c.widgetOptions && c.widgetOptions.filter_filteredRow || 'filtered') + ',' + c.selectorRemove + |  | ||||||
| 				(wo.pager_countChildRows ? '' : ',.' + c.cssChildRow), |  | ||||||
| 			sz = p.size || 10; // don't allow dividing by zero
 |  | ||||||
| 		p.$size.add(p.$goto).removeClass(wo.pager_css.disabled).removeAttr('disabled').attr('aria-disabled', 'false'); |  | ||||||
| 		p.totalPages = Math.ceil( p.totalRows / sz ); // needed for "pageSize" method
 |  | ||||||
| 		p.filteredRows = (f) ? c.$tbodies.eq(0).children('tr').not('.' + t).length : p.totalRows; |  | ||||||
| 		p.filteredPages = (f) ? Math.ceil( p.filteredRows / sz ) || 1 : p.totalPages; |  | ||||||
| 		if ( Math.min( p.totalPages, p.filteredPages ) >= 0 ) { |  | ||||||
| 			t = (p.size * p.page > p.filteredRows); |  | ||||||
| 			p.startRow = (t) ? 1 : (p.filteredRows === 0 ? 0 : p.size * p.page + 1); |  | ||||||
| 			p.page = (t) ? 0 : p.page; |  | ||||||
| 			p.endRow = Math.min( p.filteredRows, p.totalRows, p.size * ( p.page + 1 ) ); |  | ||||||
| 			out = p.$container.find(wo.pager_selectors.pageDisplay); |  | ||||||
| 			// form the output string (can now get a new output string from the server)
 |  | ||||||
| 			s = ( p.ajaxData && p.ajaxData.output ? p.ajaxData.output || wo.pager_output : wo.pager_output ) |  | ||||||
| 				// {page} = one-based index; {page+#} = zero based index +/- value
 |  | ||||||
| 				.replace(/\{page([\-+]\d+)?\}/gi, function(m,n){ |  | ||||||
| 					return p.totalPages ? p.page + (n ? parseInt(n, 10) : 1) : 0; |  | ||||||
| 				}) |  | ||||||
| 				// {totalPages}, {extra}, {extra:0} (array) or {extra : key} (object)
 |  | ||||||
| 				.replace(/\{\w+(\s*:\s*\w+)?\}/gi, function(m){ |  | ||||||
| 					var str = m.replace(/[{}\s]/g,''), |  | ||||||
| 						extra = str.split(':'), |  | ||||||
| 						data = p.ajaxData, |  | ||||||
| 						// return zero for default page/row numbers
 |  | ||||||
| 						deflt = /(rows?|pages?)$/i.test(str) ? 0 : ''; |  | ||||||
| 					return extra.length > 1 && data && data[extra[0]] ? data[extra[0]][extra[1]] : p[str] || (data ? data[str] : deflt) || deflt; |  | ||||||
| 				}); |  | ||||||
| 			if (out.length) { |  | ||||||
| 				out[ (out[0].tagName === 'INPUT') ? 'val' : 'html' ](s); |  | ||||||
| 				if ( p.$goto.length ) { |  | ||||||
| 					t = ''; |  | ||||||
| 					pg = Math.min( p.totalPages, p.filteredPages ); |  | ||||||
| 					for ( i = 1; i <= pg; i++ ) { |  | ||||||
| 						t += '<option>' + i + '</option>'; |  | ||||||
| 					} |  | ||||||
| 					p.$goto.html(t).val( p.page + 1 ); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		tsp.pagerArrows(c); |  | ||||||
| 		if (p.initialized && completed !== false) { |  | ||||||
| 			c.$table.trigger('pagerComplete', c); |  | ||||||
| 			// save pager info to storage
 |  | ||||||
| 			if (wo.pager_savePages && ts.storage) { |  | ||||||
| 				ts.storage(table, wo.pager_storageKey, { |  | ||||||
| 					page : p.page, |  | ||||||
| 					size : p.size |  | ||||||
| 				}); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	fixHeight: function(table, c) { |  | ||||||
| 		var d, h, |  | ||||||
| 			p = c.pager, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			$b = c.$tbodies.eq(0); |  | ||||||
| 		if (wo.pager_fixedHeight) { |  | ||||||
| 			$b.find('tr.pagerSavedHeightSpacer').remove(); |  | ||||||
| 			h = $.data(table, 'pagerSavedHeight'); |  | ||||||
| 			if (h) { |  | ||||||
| 				d = h - $b.height(); |  | ||||||
| 				if ( d > 5 && $.data(table, 'pagerLastSize') === p.size && $b.children('tr:visible').length < p.size ) { |  | ||||||
| 					$b.append('<tr class="pagerSavedHeightSpacer ' + wo.pager_selectors.remove.replace(/(tr)?\./g,'') + '" style="height:' + d + 'px;"></tr>'); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	changeHeight: function(table, c) { |  | ||||||
| 		var $b = c.$tbodies.eq(0); |  | ||||||
| 		$b.find('tr.pagerSavedHeightSpacer').remove(); |  | ||||||
| 		$.data(table, 'pagerSavedHeight', $b.height()); |  | ||||||
| 		tsp.fixHeight(table, c); |  | ||||||
| 		$.data(table, 'pagerLastSize', c.pager.size); |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	hideRows: function(table, c){ |  | ||||||
| 		if (!c.widgetOptions.pager_ajaxUrl) { |  | ||||||
| 			var i, |  | ||||||
| 				lastIndex = 0, |  | ||||||
| 				p = c.pager, |  | ||||||
| 				wo = c.widgetOptions, |  | ||||||
| 				rows = c.$tbodies.eq(0).children(), |  | ||||||
| 				l = rows.length, |  | ||||||
| 				s = ( p.page * p.size ), |  | ||||||
| 				e =  s + p.size, |  | ||||||
| 				f = wo && wo.filter_filteredRow || 'filtered', |  | ||||||
| 				j = 0; // size counter
 |  | ||||||
| 			for ( i = 0; i < l; i++ ){ |  | ||||||
| 				if ( !rows[i].className.match(f) ) { |  | ||||||
| 					if (j === s && rows[i].className.match(c.cssChildRow)) { |  | ||||||
| 						// hide child rows @ start of pager (if already visible)
 |  | ||||||
| 						rows[i].style.display = 'none'; |  | ||||||
| 					} else { |  | ||||||
| 						rows[i].style.display = ( j >= s && j < e ) ? '' : 'none'; |  | ||||||
| 						// don't count child rows
 |  | ||||||
| 						j += rows[i].className.match(c.cssChildRow + '|' + c.selectorRemove.slice(1)) && !wo.pager_countChildRows ? 0 : 1; |  | ||||||
| 						if ( j === e && rows[i].style.display !== 'none' && rows[i].className.match(ts.css.cssHasChild) ) { |  | ||||||
| 							lastIndex = i; |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			// add any attached child rows to last row of pager. Fixes part of issue #396
 |  | ||||||
| 			if ( lastIndex > 0 && rows[lastIndex].className.match(ts.css.cssHasChild) ) { |  | ||||||
| 				while ( ++lastIndex < l && rows[lastIndex].className.match(c.cssChildRow) ) { |  | ||||||
| 					rows[lastIndex].style.display = ''; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	hideRowsSetup: function(table, c){ |  | ||||||
| 		var p = c.pager; |  | ||||||
| 		p.size = parseInt( p.$size.val(), 10 ) || p.size; |  | ||||||
| 		$.data(table, 'pagerLastSize', p.size); |  | ||||||
| 		tsp.pagerArrows(c); |  | ||||||
| 		if ( !c.widgetOptions.pager_removeRows ) { |  | ||||||
| 			tsp.hideRows(table, c); |  | ||||||
| 			c.$table.on('sortEnd.pager filterEnd.pager', function(){ |  | ||||||
| 				tsp.hideRows(table, c); |  | ||||||
| 			}); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	renderAjax: function(data, table, c, xhr, exception){ |  | ||||||
| 		var p = c.pager, |  | ||||||
| 			wo = c.widgetOptions; |  | ||||||
| 		// process data
 |  | ||||||
| 		if ( $.isFunction(wo.pager_ajaxProcessing) ) { |  | ||||||
| 			// ajaxProcessing result: [ total, rows, headers ]
 |  | ||||||
| 			var i, j, t, hsh, $f, $sh, th, d, l, rr_count, |  | ||||||
| 				$t = c.$table, |  | ||||||
| 				tds = '', |  | ||||||
| 				result = wo.pager_ajaxProcessing(data, table) || [ 0, [] ], |  | ||||||
| 				hl = $t.find('thead th').length; |  | ||||||
| 
 |  | ||||||
| 			// Clean up any previous error.
 |  | ||||||
| 			ts.showError(table); |  | ||||||
| 
 |  | ||||||
| 			if ( exception ) { |  | ||||||
| 				if (c.debug) { |  | ||||||
| 					ts.log('Ajax Error', xhr, exception); |  | ||||||
| 				} |  | ||||||
| 				ts.showError(table, exception.message + ' (' + xhr.status + ')'); |  | ||||||
| 				c.$tbodies.eq(0).empty(); |  | ||||||
| 				p.totalRows = 0; |  | ||||||
| 			} else { |  | ||||||
| 				// process ajax object
 |  | ||||||
| 				if (!$.isArray(result)) { |  | ||||||
| 					p.ajaxData = result; |  | ||||||
| 					p.totalRows = result.total; |  | ||||||
| 					th = result.headers; |  | ||||||
| 					d = result.rows; |  | ||||||
| 				} else { |  | ||||||
| 					// allow [ total, rows, headers ]  or [ rows, total, headers ]
 |  | ||||||
| 					t = isNaN(result[0]) && !isNaN(result[1]); |  | ||||||
| 					// ensure a zero returned row count doesn't fail the logical ||
 |  | ||||||
| 					rr_count = result[t ? 1 : 0]; |  | ||||||
| 					p.totalRows = isNaN(rr_count) ? p.totalRows || 0 : rr_count; |  | ||||||
| 					d = p.totalRows === 0 ? [""] : result[t ? 0 : 1] || []; // row data
 |  | ||||||
| 					th = result[2]; // headers
 |  | ||||||
| 				} |  | ||||||
| 				l = d.length; |  | ||||||
| 				if (d instanceof jQuery) { |  | ||||||
| 					// append jQuery object
 |  | ||||||
| 					c.$tbodies.eq(0).empty().append(d); |  | ||||||
| 				} else if (l) { |  | ||||||
| 					// build table from array
 |  | ||||||
| 					for ( i = 0; i < l; i++ ) { |  | ||||||
| 						tds += '<tr>'; |  | ||||||
| 						for ( j = 0; j < d[i].length; j++ ) { |  | ||||||
| 							// build tbody cells; watch for data containing HTML markup - see #434
 |  | ||||||
| 							tds += /^\s*<td/.test(d[i][j]) ? $.trim(d[i][j]) : '<td>' + d[i][j] + '</td>'; |  | ||||||
| 						} |  | ||||||
| 						tds += '</tr>'; |  | ||||||
| 					} |  | ||||||
| 					// add rows to first tbody
 |  | ||||||
| 					if (wo.pager_processAjaxOnInit) { |  | ||||||
| 						c.$tbodies.eq(0).html( tds ); |  | ||||||
| 					} else { |  | ||||||
| 						wo.pager_processAjaxOnInit = true; |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 				// only add new header text if the length matches
 |  | ||||||
| 				if ( th && th.length === hl ) { |  | ||||||
| 					hsh = $t.hasClass('hasStickyHeaders'); |  | ||||||
| 					$sh = hsh ? wo.$sticky.children('thead:first').children().children() : ''; |  | ||||||
| 					$f = $t.find('tfoot tr:first').children(); |  | ||||||
| 					// don't change td headers (may contain pager)
 |  | ||||||
| 					c.$headers.filter('th').each(function(j){ |  | ||||||
| 						var $t = $(this), icn; |  | ||||||
| 						// add new test within the first span it finds, or just in the header
 |  | ||||||
| 						if ( $t.find('.' + ts.css.icon).length ) { |  | ||||||
| 							icn = $t.find('.' + ts.css.icon).clone(true); |  | ||||||
| 							$t.find('.tablesorter-header-inner').html( th[j] ).append(icn); |  | ||||||
| 							if ( hsh && $sh.length ) { |  | ||||||
| 								icn = $sh.eq(j).find('.' + ts.css.icon).clone(true); |  | ||||||
| 								$sh.eq(j).find('.tablesorter-header-inner').html( th[j] ).append(icn); |  | ||||||
| 							} |  | ||||||
| 						} else { |  | ||||||
| 							$t.find('.tablesorter-header-inner').html( th[j] ); |  | ||||||
| 							if (hsh && $sh.length) { |  | ||||||
| 								$sh.eq(j).find('.tablesorter-header-inner').html( th[j] ); |  | ||||||
| 							} |  | ||||||
| 						} |  | ||||||
| 						$f.eq(j).html( th[j] ); |  | ||||||
| 					}); |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			if (c.showProcessing) { |  | ||||||
| 				ts.isProcessing(table); // remove loading icon
 |  | ||||||
| 			} |  | ||||||
| 			// make sure last pager settings are saved, prevents multiple server side calls with
 |  | ||||||
| 			// the same parameters
 |  | ||||||
| 			p.totalPages = Math.ceil( p.totalRows / ( p.size || 10 ) ); |  | ||||||
| 			p.last.totalRows = p.totalRows; |  | ||||||
| 			p.last.currentFilters = p.currentFilters; |  | ||||||
| 			p.last.sortList = (c.sortList || []).join(','); |  | ||||||
| 			tsp.updatePageDisplay(table, c); |  | ||||||
| 			tsp.fixHeight(table, c); |  | ||||||
| 			$t.trigger('updateCache', [function(){ |  | ||||||
| 				if (p.initialized) { |  | ||||||
| 					// apply widgets after table has rendered
 |  | ||||||
| 					$t.trigger('applyWidgets'); |  | ||||||
| 					$t.trigger('pagerChange', p); |  | ||||||
| 				} |  | ||||||
| 			}]); |  | ||||||
| 		} |  | ||||||
| 		if (!p.initialized) { |  | ||||||
| 			c.$table.trigger('applyWidgets'); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	getAjax: function(table, c){ |  | ||||||
| 		var counter, |  | ||||||
| 			url = tsp.getAjaxUrl(table, c), |  | ||||||
| 			$doc = $(document), |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			p = c.pager; |  | ||||||
| 		if ( url !== '' ) { |  | ||||||
| 			if (c.showProcessing) { |  | ||||||
| 				ts.isProcessing(table, true); // show loading icon
 |  | ||||||
| 			} |  | ||||||
| 			$doc.on('ajaxError.pager', function(e, xhr, settings, exception) { |  | ||||||
| 				tsp.renderAjax(null, table, c, xhr, exception); |  | ||||||
| 				$doc.unbind('ajaxError.pager'); |  | ||||||
| 			}); |  | ||||||
| 			counter = ++p.ajaxCounter; |  | ||||||
| 			wo.pager_ajaxObject.url = url; // from the ajaxUrl option and modified by customAjaxUrl
 |  | ||||||
| 			wo.pager_ajaxObject.success = function(data) { |  | ||||||
| 				// Refuse to process old ajax commands that were overwritten by new ones - see #443
 |  | ||||||
| 				if (counter < p.ajaxCounter){ |  | ||||||
| 					return; |  | ||||||
| 				} |  | ||||||
| 				tsp.renderAjax(data, table, c); |  | ||||||
| 				$doc.unbind('ajaxError.pager'); |  | ||||||
| 				if (typeof p.oldAjaxSuccess === 'function') { |  | ||||||
| 					p.oldAjaxSuccess(data); |  | ||||||
| 				} |  | ||||||
| 			}; |  | ||||||
| 			if (c.debug) { |  | ||||||
| 				ts.log('ajax initialized', wo.pager_ajaxObject); |  | ||||||
| 			} |  | ||||||
| 			$.ajax(wo.pager_ajaxObject); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	getAjaxUrl: function(table, c) { |  | ||||||
| 		var p = c.pager, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			url = (wo.pager_ajaxUrl) ? wo.pager_ajaxUrl |  | ||||||
| 				// allow using "{page+1}" in the url string to switch to a non-zero based index
 |  | ||||||
| 				.replace(/\{page([\-+]\d+)?\}/, function(s,n){ return p.page + (n ? parseInt(n, 10) : 0); }) |  | ||||||
| 				.replace(/\{size\}/g, p.size) : '', |  | ||||||
| 			sl = c.sortList, |  | ||||||
| 			fl = p.currentFilters || $(table).data('lastSearch') || [], |  | ||||||
| 			sortCol = url.match(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/), |  | ||||||
| 			filterCol = url.match(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/), |  | ||||||
| 			arry = []; |  | ||||||
| 		if (sortCol) { |  | ||||||
| 			sortCol = sortCol[1]; |  | ||||||
| 			$.each(sl, function(i,v){ |  | ||||||
| 				arry.push(sortCol + '[' + v[0] + ']=' + v[1]); |  | ||||||
| 			}); |  | ||||||
| 			// if the arry is empty, just add the col parameter... "&{sortList:col}" becomes "&col"
 |  | ||||||
| 			url = url.replace(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/g, arry.length ? arry.join('&') : sortCol ); |  | ||||||
| 			arry = []; |  | ||||||
| 		} |  | ||||||
| 		if (filterCol) { |  | ||||||
| 			filterCol = filterCol[1]; |  | ||||||
| 			$.each(fl, function(i,v){ |  | ||||||
| 				if (v) { |  | ||||||
| 					arry.push(filterCol + '[' + i + ']=' + encodeURIComponent(v)); |  | ||||||
| 				} |  | ||||||
| 			}); |  | ||||||
| 			// if the arry is empty, just add the fcol parameter... "&{filterList:fcol}" becomes "&fcol"
 |  | ||||||
| 			url = url.replace(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/g, arry.length ? arry.join('&') : filterCol ); |  | ||||||
| 			p.currentFilters = fl; |  | ||||||
| 		} |  | ||||||
| 		if ( $.isFunction(wo.pager_customAjaxUrl) ) { |  | ||||||
| 			url = wo.pager_customAjaxUrl(table, url); |  | ||||||
| 		} |  | ||||||
| 		if (c.debug) { |  | ||||||
| 			ts.log('Pager ajax url: ' + url); |  | ||||||
| 		} |  | ||||||
| 		return url; |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	renderTable: function(table, rows) { |  | ||||||
| 		var i, $tb, |  | ||||||
| 			c = table.config, |  | ||||||
| 			p = c.pager, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			l = rows && rows.length || 0, // rows may be undefined
 |  | ||||||
| 			s = ( p.page * p.size ), |  | ||||||
| 			e = ( s + p.size ); |  | ||||||
| 		if ( l < 1 ) { return; } // empty table, abort!
 |  | ||||||
| 		if ( p.page >= p.totalPages ) { |  | ||||||
| 			// lets not render the table more than once
 |  | ||||||
| 			return tsp.moveToLastPage(table, p); |  | ||||||
| 		} |  | ||||||
| 		p.isDisabled = false; // needed because sorting will change the page and re-enable the pager
 |  | ||||||
| 		if (p.initialized) { c.$table.trigger('pagerChange', c); } |  | ||||||
| 
 |  | ||||||
| 		if ( !wo.pager_removeRows ) { |  | ||||||
| 			tsp.hideRows(table, c); |  | ||||||
| 		} else { |  | ||||||
| 			if ( e > rows.length ) { |  | ||||||
| 				e = rows.length; |  | ||||||
| 			} |  | ||||||
| 			ts.clearTableBody(table); |  | ||||||
| 			$tb = ts.processTbody(table, c.$tbodies.eq(0), true); |  | ||||||
| 			for ( i = s; i < e; i++ ) { |  | ||||||
| 				$tb.append(rows[i]); |  | ||||||
| 			} |  | ||||||
| 			ts.processTbody(table, $tb, false); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		tsp.updatePageDisplay(table, c); |  | ||||||
| 		if ( !p.isDisabled ) { tsp.fixHeight(table, c); } |  | ||||||
| 
 |  | ||||||
| 		wo.pager_startPage = p.page; |  | ||||||
| 		wo.pager_size = p.size; |  | ||||||
| 		c.$table.trigger('applyWidgets'); |  | ||||||
| 		if (table.isUpdating) { |  | ||||||
| 			c.$table.trigger('updateComplete'); |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	showAllRows: function(table, c){ |  | ||||||
| 		var p = c.pager, |  | ||||||
| 			wo = c.widgetOptions; |  | ||||||
| 		if ( p.ajax ) { |  | ||||||
| 			tsp.pagerArrows(c, true); |  | ||||||
| 		} else { |  | ||||||
| 			p.isDisabled = true; |  | ||||||
| 			$.data(table, 'pagerLastPage', p.page); |  | ||||||
| 			$.data(table, 'pagerLastSize', p.size); |  | ||||||
| 			p.page = 0; |  | ||||||
| 			p.size = p.totalRows; |  | ||||||
| 			p.totalPages = 1; |  | ||||||
| 			c.$table |  | ||||||
| 				.addClass('pagerDisabled') |  | ||||||
| 				.removeAttr('aria-describedby') |  | ||||||
| 				.find('tr.pagerSavedHeightSpacer').remove(); |  | ||||||
| 			tsp.renderTable(table, c.rowsCopy); |  | ||||||
| 			if (c.debug) { |  | ||||||
| 				ts.log('pager disabled'); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		// disable size selector
 |  | ||||||
| 		p.$size.add(p.$goto).each(function(){ |  | ||||||
| 			$(this).attr('aria-disabled', 'true').addClass(wo.pager_css.disabled)[0].disabled = true; |  | ||||||
| 		}); |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	moveToPage: function(table, p, pageMoved) { |  | ||||||
| 		if ( p.isDisabled ) { return; } |  | ||||||
| 		var c = table.config, |  | ||||||
| 			l = p.last, |  | ||||||
| 			pg = Math.min( p.totalPages, p.filteredPages ); |  | ||||||
| 		if ( p.page < 0 ) { p.page = 0; } |  | ||||||
| 		if ( p.page > ( pg - 1 ) && pg !== 0 ) { p.page = pg - 1; } |  | ||||||
| 		// fixes issue where one current filter is [] and the other is ['','',''],
 |  | ||||||
| 		// making the next if comparison think the filters as different. Fixes #202.
 |  | ||||||
| 		l.currentFilters = (l.currentFilters || []).join('') === '' ? [] : l.currentFilters; |  | ||||||
| 		p.currentFilters = (p.currentFilters || []).join('') === '' ? [] : p.currentFilters; |  | ||||||
| 		// don't allow rendering multiple times on the same page/size/totalRows/filters/sorts
 |  | ||||||
| 		if ( l.page === p.page && l.size === p.size && l.totalRows === p.totalRows && |  | ||||||
| 			(l.currentFilters || []).join(',') === (p.currentFilters || []).join(',') && |  | ||||||
| 			l.sortList === (c.sortList || []).join(',') ) { |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 		if (c.debug) { |  | ||||||
| 			ts.log('Pager changing to page ' + p.page); |  | ||||||
| 		} |  | ||||||
| 		p.last = { |  | ||||||
| 			page : p.page, |  | ||||||
| 			size : p.size, |  | ||||||
| 			// fixes #408; modify sortList otherwise it auto-updates
 |  | ||||||
| 			sortList : (c.sortList || []).join(','), |  | ||||||
| 			totalRows : p.totalRows, |  | ||||||
| 			currentFilters : p.currentFilters || [] |  | ||||||
| 		}; |  | ||||||
| 		if (p.ajax) { |  | ||||||
| 			tsp.getAjax(table, c); |  | ||||||
| 		} else if (!p.ajax) { |  | ||||||
| 			tsp.renderTable(table, c.rowsCopy); |  | ||||||
| 		} |  | ||||||
| 		$.data(table, 'pagerLastPage', p.page); |  | ||||||
| 		if (p.initialized && pageMoved !== false) { |  | ||||||
| 			c.$table.trigger('pageMoved', c); |  | ||||||
| 			if (!p.ajax && table.isUpdating) { |  | ||||||
| 				c.$table.trigger('updateComplete'); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	setPageSize: function(table, size, c) { |  | ||||||
| 		var p = c.pager; |  | ||||||
| 		p.size = size || p.size || 10; |  | ||||||
| 		p.$size.val(p.size); |  | ||||||
| 		$.data(table, 'pagerLastPage', p.page); |  | ||||||
| 		$.data(table, 'pagerLastSize', p.size); |  | ||||||
| 		p.totalPages = Math.ceil( p.totalRows / p.size ); |  | ||||||
| 		p.filteredPages = Math.ceil( p.filteredRows / p.size ); |  | ||||||
| 		tsp.moveToPage(table, p); |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	moveToFirstPage: function(table, p) { |  | ||||||
| 		p.page = 0; |  | ||||||
| 		tsp.moveToPage(table, p); |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	moveToLastPage: function(table, p) { |  | ||||||
| 		p.page = ( Math.min( p.totalPages, p.filteredPages ) - 1 ); |  | ||||||
| 		tsp.moveToPage(table, p); |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	moveToNextPage: function(table, p) { |  | ||||||
| 		p.page++; |  | ||||||
| 		if ( p.page >= ( Math.min( p.totalPages, p.filteredPages ) - 1 ) ) { |  | ||||||
| 			p.page = ( Math.min( p.totalPages, p.filteredPages ) - 1 ); |  | ||||||
| 		} |  | ||||||
| 		tsp.moveToPage(table, p); |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	moveToPrevPage: function(table, p) { |  | ||||||
| 		p.page--; |  | ||||||
| 		if ( p.page <= 0 ) { |  | ||||||
| 			p.page = 0; |  | ||||||
| 		} |  | ||||||
| 		tsp.moveToPage(table, p); |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	destroyPager: function(table, c){ |  | ||||||
| 		var p = c.pager; |  | ||||||
| 		tsp.showAllRows(table, c); |  | ||||||
| 		p.$container.hide(); // hide pager
 |  | ||||||
| 		c.appender = null; // remove pager appender function
 |  | ||||||
| 		p.initialized = false; |  | ||||||
| 		c.$table.unbind('destroy.pager sortEnd.pager filterEnd.pager enable.pager disable.pager'); |  | ||||||
| 		if (ts.storage) { |  | ||||||
| 			ts.storage(table, c.widgetOptions.pager_storageKey, ''); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	enablePager: function(table, c, triggered){ |  | ||||||
| 		var info, p = c.pager; |  | ||||||
| 		p.isDisabled = false; |  | ||||||
| 		p.page = $.data(table, 'pagerLastPage') || p.page || 0; |  | ||||||
| 		p.size = $.data(table, 'pagerLastSize') || parseInt(p.$size.find('option[selected]').val(), 10) || p.size || 10; |  | ||||||
| 		p.$size.val(p.size); // set page size
 |  | ||||||
| 		p.totalPages = Math.ceil( Math.min( p.totalRows, p.filteredRows ) / p.size ); |  | ||||||
| 		c.$table.removeClass('pagerDisabled'); |  | ||||||
| 		// if table id exists, include page display with aria info
 |  | ||||||
| 		if ( table.id ) { |  | ||||||
| 			info = table.id + '_pager_info'; |  | ||||||
| 			p.$container.find(c.widgetOptions.pager_selectors.pageDisplay).attr('id', info); |  | ||||||
| 			c.$table.attr('aria-describedby', info); |  | ||||||
| 		} |  | ||||||
| 		if ( triggered ) { |  | ||||||
| 			c.$table.trigger('updateRows'); |  | ||||||
| 			tsp.setPageSize(table, p.size, c); |  | ||||||
| 			tsp.hideRowsSetup(table, c); |  | ||||||
| 			tsp.fixHeight(table, c); |  | ||||||
| 			if (c.debug) { |  | ||||||
| 				ts.log('pager enabled'); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 
 |  | ||||||
| 	appender: function(table, rows) { |  | ||||||
| 		var c = table.config, |  | ||||||
| 			wo = c.widgetOptions, |  | ||||||
| 			p = c.pager; |  | ||||||
| 		if ( !p.ajax ) { |  | ||||||
| 			c.rowsCopy = rows; |  | ||||||
| 			p.totalRows = c.widgetOptions.pager_countChildRows ? c.$tbodies.eq(0).children().length : rows.length; |  | ||||||
| 			p.size = $.data(table, 'pagerLastSize') || p.size || wo.pager_size || 10; |  | ||||||
| 			p.totalPages = Math.ceil( p.totalRows / p.size ); |  | ||||||
| 			tsp.moveToPage(table, p, true); |  | ||||||
| 			// update display here in case all rows are removed
 |  | ||||||
| 			tsp.updatePageDisplay(table, c, false); |  | ||||||
| 		} else { |  | ||||||
| 			tsp.moveToPage(table, p, true); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| // see #486
 |  | ||||||
| ts.showError = function(table, message){ |  | ||||||
| 	$(table).each(function(){ |  | ||||||
| 		var $row, |  | ||||||
| 			c = this.config, |  | ||||||
| 			errorRow = c.pager && c.pager.cssErrorRow || c.widgetOptions.pager_css && c.widgetOptions.pager_css.errorRow || 'tablesorter-errorRow'; |  | ||||||
| 		if (c) { |  | ||||||
| 			if (typeof message === 'undefined') { |  | ||||||
| 				c.$table.find('thead').find(c.selectorRemove).remove(); |  | ||||||
| 			} else { |  | ||||||
| 				$row = ( /tr\>/.test(message) ? $(message) : $('<tr><td colspan="' + c.columns + '">' + message + '</td></tr>') ) |  | ||||||
| 					.click(function(){ |  | ||||||
| 						$(this).remove(); |  | ||||||
| 					}) |  | ||||||
| 					// add error row to thead instead of tbody, or clicking on the header will result in a parser error
 |  | ||||||
| 					.appendTo( c.$table.find('thead:first') ) |  | ||||||
| 					.addClass( errorRow + ' ' + c.selectorRemove.replace(/^[.#]/, '') ) |  | ||||||
| 					.attr({ |  | ||||||
| 						role : 'alert', |  | ||||||
| 						'aria-live' : 'assertive' |  | ||||||
| 					}); |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	}); |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| })(jQuery); |  | ||||||
| @ -10,28 +10,27 @@ | |||||||
| 	<link rel="stylesheet" href="main.css" /> | 	<link rel="stylesheet" href="main.css" /> | ||||||
| 	<!-- link rel="stylesheet" href="https:////code.jquery.com/ui/3.0.0/themes/smoothness/jquery-ui.css" / --> | 	<!-- link rel="stylesheet" href="https:////code.jquery.com/ui/3.0.0/themes/smoothness/jquery-ui.css" / --> | ||||||
| 	<link rel="stylesheet" href="https:////code.jquery.com/ui/1.12.1/themes/cupertino/jquery-ui.css" /> | 	<link rel="stylesheet" href="https:////code.jquery.com/ui/1.12.1/themes/cupertino/jquery-ui.css" /> | ||||||
| 	<link rel="stylesheet" href="external/theme.blue.css"/> | 	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/theme.blue.min.css" integrity="sha512-jJ9r3lTLaH5XXa9ZOsCQU8kLvxdAVzyTWO/pnzdZrshJQfnw1oevJFpoyCDr7K1lqt1hUgqoxA5e2PctVtlSTg==" crossorigin="anonymous" /> | ||||||
| 	<link rel="stylesheet" href="external/jquery.tablesorter.pager.css" /> | 	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/css/jquery.tablesorter.pager.min.css" integrity="sha512-TWYBryfpFn3IugX13ZCIYHNK3/2sZk3dyXMKp3chZL+0wRuwFr1hDqZR9Qd5SONzn+Lja10hercP2Xjuzz5O3g==" crossorigin="anonymous" /> | ||||||
| 	<link rel="stylesheet" href="external/leaflet.css" /> | 	<link rel="stylesheet" href="external/leaflet.css" /> | ||||||
| 	<!-- link rel="stylesheet" href="external/css/dvf.css" type="text/css" media="screen" / --> | 	<!-- link rel="stylesheet" href="external/css/dvf.css" type="text/css" media="screen" / --> | ||||||
| 	<link rel="stylesheet" href="external/css/leaflet.label.css" type="text/css" media="screen" /> | 	<link rel="stylesheet" href="external/css/leaflet.label.css" type="text/css" media="screen" /> | ||||||
| 	<link rel="stylesheet" href="external/easyPrint.css"/> | 	<link rel="stylesheet" href="external/css/easyPrint.css"/> | ||||||
| 
 | 
 | ||||||
| 	<!-- jQuery & jQueryUI --> | 	<!-- jQuery & jQueryUI --> | ||||||
| 	<script type="text/javascript" src="https://code.jquery.com/jquery-3.0.0.js"></script> | 	<script type="text/javascript" src="https://code.jquery.com/jquery-3.0.0.js"></script> | ||||||
| 	<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> | 	<script type="text/javascript" src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> | ||||||
| 	<script type="text/javascript" src="https://code.jquery.com/jquery-migrate-3.3.1.js"></script> |  | ||||||
| 
 | 
 | ||||||
| 	<!-- Localtime & sprintf --> | 	<!-- Localtime & sprintf --> | ||||||
| 	<script type="text/javascript" src="external/jquery.localtime-0.9.1.min.js"></script> | 	<script type="text/javascript" src="external/jquery.localtime-0.9.1.min.js"></script> <!-- current 2020-07-15 --> | ||||||
| 	<script type="text/javascript" src="external/sprintf.min.js"></script> | 	<script type="text/javascript" src="external/sprintf.min.js"></script>  <!-- version 1.1.2 downloaded 2020-07-15 --> | ||||||
| 
 | 
 | ||||||
| 	<!-- Tablesorter: required --> | 	<!-- Tablesorter --> | ||||||
| 	<script type="text/javascript" src="external/jquery.tablesorter.min.js"></script> | 	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.min.js" integrity="sha512-qzgd5cYSZcosqpzpn7zF2ZId8f/8CHmFKZ8j7mU4OUXTNRd5g+ZHBPsgKEwoqxCtdQvExE5LprwwPAgoicguNg==" crossorigin="anonymous"></script> | ||||||
| 	<script type="text/javascript" src="external/jquery.tablesorter.widgets.min.js"></script> | 	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.widgets.min.js" integrity="sha512-dj/9K5GRIEZu+Igm9tC16XPOTz0RdPk9FGxfZxShWf65JJNU2TjbElGjuOo3EhwAJRPhJxwEJ5b+/Ouo+VqZdQ==" crossorigin="anonymous"></script> | ||||||
| 	<script type="text/javascript" src="external/widget-pager.js"></script> | 	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/widgets/widget-pager.min.js" integrity="sha512-+X/dsto9+7foPuqwqjm+mJSPYk6Coovg9jQJvM+aBfscXOyBrAKN69GS5Z2TkMLlVHxeiE5doVqelnMfbsS9XQ==" crossorigin="anonymous"></script> | ||||||
| 	<!-- script type="text/javascript" src="external/jquery.tablesorter.pager.min.js"></script --> | 	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/extras/jquery.tablesorter.pager.min.js" integrity="sha512-y845ijdup9lDunrcSRQAlFdQICHVhkB5UNguWRX8A3L+guxO7Oow0poojw0PLckhcKij++h85bnyro80fjR9+A==" crossorigin="anonymous"></script> | ||||||
| 	<!-- script type="text/javascript" src="external/widget-scroller.js"></script --> | 	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/widgets/widget-scroller.min.js" integrity="sha512-1D2qKse1/4gCgLbgmBBv+9fJluAeJIlDgzIyZkovd1xmoyh1SW30lMIzCrD2X8Xs/sIzitUNDy86YagJRSUmaA==" crossorigin="anonymous"></script> | ||||||
| 
 | 
 | ||||||
| 	<!-- Leaflet --> | 	<!-- Leaflet --> | ||||||
| 	<script type="text/javascript" src="external/leaflet.js"></script> | 	<script type="text/javascript" src="external/leaflet.js"></script> | ||||||
|  | |||||||
							
								
								
									
										13
									
								
								www/misc.js
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								www/misc.js
									
									
									
									
									
								
							| @ -25,7 +25,7 @@ | |||||||
| /* calculate marker radius from magnitude | /* calculate marker radius from magnitude | ||||||
|  * both formulas have equal radii at mag=1.2 */ |  * both formulas have equal radii at mag=1.2 */ | ||||||
| function mag2radius(mag) { | function mag2radius(mag) { | ||||||
| 	return 3*mag;				// radius proportional to magagnitude
 | 	return 3*mag;				// radius proportional to magnitude
 | ||||||
| 	// return 8.104*Math.pow(30,mag)	// radius proportional to energy
 | 	// return 8.104*Math.pow(30,mag)	// radius proportional to energy
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @ -67,9 +67,7 @@ function getLocation(lat, lng) { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /* window resize */ | /* window resize */ | ||||||
| $( window ).resize(function() { | $( window ).on('resize', function() { setInfoHeight(); }); | ||||||
| 	setInfoHeight(); |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| /* parseQueryString */ | /* parseQueryString */ | ||||||
| function parseQueryString() { | function parseQueryString() { | ||||||
| @ -172,6 +170,9 @@ $(document).ready(function() { | |||||||
| 	if ( parameters['baselayer'] ) { | 	if ( parameters['baselayer'] ) { | ||||||
| 		config['map']['baselayer'] = parameters['baselayer'][0]; | 		config['map']['baselayer'] = parameters['baselayer'][0]; | ||||||
| 	}; | 	}; | ||||||
|  | 	if ( parameters['basemap'] ) { | ||||||
|  | 		config['map']['baselayer'] = parameters['basemap'][0]; | ||||||
|  | 	}; | ||||||
| 	if ( Number(parameters['lat']) && Number(parameters['lon']) ) { | 	if ( Number(parameters['lat']) && Number(parameters['lon']) ) { | ||||||
| 		config['map']['centerDefault'] = [Number(parameters['lat']), Number(parameters['lon'])]; | 		config['map']['centerDefault'] = [Number(parameters['lat']), Number(parameters['lon'])]; | ||||||
| 	}; | 	}; | ||||||
| @ -216,9 +217,9 @@ $(document).ready(function() { | |||||||
| 		animate: 200, | 		animate: 200, | ||||||
| 	}); | 	}); | ||||||
| 	// spinner
 | 	// spinner
 | ||||||
| 	$(document).bind("ajaxSend", function() { | 	$(document).on("ajaxSend", function() { | ||||||
| 			$("#spinner").show(); | 			$("#spinner").show(); | ||||||
| 	}).bind("ajaxStop", function() { | 	}).on("ajaxStop", function() { | ||||||
| 			$("#spinner").hide(); | 			$("#spinner").hide(); | ||||||
| 	}); | 	}); | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -213,7 +213,7 @@ function initStationTable() { | |||||||
| 	// hide child rows
 | 	// hide child rows
 | ||||||
| 	$('#stationstable > tbody > tr.tablesorter-childRow > td').hide(); | 	$('#stationstable > tbody > tr.tablesorter-childRow > td').hide(); | ||||||
| 	// update map after filtering
 | 	// update map after filtering
 | ||||||
| 	// $('#stationsstable').bind('filterEnd', function(){
 | 	// $('#stationsstable').on('filterEnd', function(){
 | ||||||
| 	//	toggleFilteredMarkers();
 | 	//	toggleFilteredMarkers();
 | ||||||
| 	// });
 | 	// });
 | ||||||
| }; | }; | ||||||
| @ -238,7 +238,7 @@ $(document).ready(function() { | |||||||
| 	// loadStations('KERA');
 | 	// loadStations('KERA');
 | ||||||
| 	// loadStations('KARP');
 | 	// loadStations('KARP');
 | ||||||
| 	// show / hide station info
 | 	// show / hide station info
 | ||||||
| 	$('#stationstable').delegate('.toggle', 'click' , function(){ | 	$('#stationstable').on('click', '.toggle' , function(){ | ||||||
| 		// 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'); | ||||||
| 		// mark currently selected row and remove class selected from all other rows
 | 		// mark currently selected row and remove class selected from all other rows
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user