/*! widget: staticRow - updated 10/31/2015 (v2.24.0) */ /* * Version 1.2 mod by Rob Garrison (requires tablesorter v2.16+) * Requires: * jQuery v1.4+ * tablesorter plugin, v2.8+, available at http://mottie.github.com/tablesorter/docs/ * * Copyright (c) 2011 Nils Luxton * Licensed under the MIT license: * http://www.opensource.org/licenses/mit-license.php * */ /*jshint browser:true, jquery:true, unused:false */ /*global jQuery: false */ !function(a){"use strict";var b=a.tablesorter, // add/refresh row indexes c=function(b){var c,d,e,f,g,h=b.config; // 'Index' the static rows, saving their current (starting) position in the // table inside a data() param on the element itself for later use. h&&(d=h.widgetOptions,h.$tbodies.each(function(){c=a(this).children(),g=c.length,c.filter(d.staticRow_class).each(function(){c=a(this),f=c.data(d.staticRow_index),"undefined"!=typeof f?(e=parseFloat(f),f=/%/.test(f)?Math.round(e/100*g):e):f=c.index(),c.data(d.staticRow_data,f)})}))};b.addWidget({ // Give the new Widget an ID to be used in the tablesorter() call, as follows: // $('#myElement').tablesorter({ widgets: ['zebra', 'staticRow'] }); id:"staticRow",options:{staticRow_class:".static",staticRow_data:"static-index",staticRow_index:"row-index",staticRow_event:"staticRowsRefresh"},init:function(a,d,e,f){c(a), // refresh static rows after updates e.$table.unbind(("updateComplete.tsstaticrows "+f.staticRow_event).replace(/\s+/g," ")).bind("updateComplete.tsstaticrows "+f.staticRow_event,function(){c(a),b.applyWidget(a)})},format:function(b,c,d){ // Loop thru static rows, moving them to their original 'indexed' position, // & repeat until no more re-shuffling is needed var e,f,g,h,i,j,k,l;c.$tbodies.each(function(){ // don't allow the while loop to cycle more times than the set number of static rows for(i=a.tablesorter.processTbody(b,a(this),!0),// remove tbody j=!0,g=0,k=i.children(d.staticRow_class),h=i.children("tr").length-1,l=k.length;j&&l>g;)j=!1,k.each(function(){e=a(this).data(d.staticRow_data),e=e>=h?h:0>e?0:e,e!==a(this).index()&&(j=!0,f=a(this).detach(),e>=h?f.appendTo(i):0===e?f.prependTo(i):f.insertBefore(i.find("tr:eq("+e+")")))}),g++;a.tablesorter.processTbody(b,i,!1)}),c.$table.trigger("staticRowsComplete",b)},remove:function(a,b,c){b.$table.unbind(("updateComplete.tsstaticrows "+c.staticRow_event).replace(/\s+/g," "))}})}(jQuery);