-
Notifications
You must be signed in to change notification settings - Fork 1
/
tablefreeze.min.js
2 lines (2 loc) · 3.36 KB
/
tablefreeze.min.js
1
2
/* The MIT License */
(function(e){function r(t){if(t){this.$this.find("thead tr").each(function(){e(this).find("th.hidden").last().removeClass("hidden")});this.$this.find("tbody tr").each(function(){e(this).find("td.hidden").last().removeClass("hidden")});this.$this.trigger("tableFreeze::unfrozen",0);this.hiddenCols--}else if(!s.call(this)){var n=this.options.cols;this.$this.find("thead tr").each(function(){var t=e(this).find("th:not(.hidden)").eq(n);var r=t.attr("colspan");if(r&&parseInt(r)>1){t.attr("colspan",parseInt(r)-1)}else{t.addClass("hidden")}});this.$this.find("tbody tr").each(function(){e(this).find("td:not(.hidden)").eq(n).addClass("hidden")});this.$this.trigger("tableFreeze::frozen",0);this.hiddenCols++}this.updateScrollbars()}function i(e){if(e){this.$this.find("tbody tr.hidden").last().removeClass("hidden");this.$this.trigger("tableFreeze::unfrozen",1);this.hiddenRows--}else if(!o.call(this)){this.$this.find("tbody tr:not(.hidden)").first().addClass("hidden");this.$this.trigger("tableFreeze::frozen",1);this.hiddenRows++}this.updateScrollbars()}function s(){return this.$this.width()+15<=this.$this.parent().width()}function o(){return this.$this.height()+15<=this.$this.parent().height()}var t="tableFreeze";var n={cols:1,"threshold-x":35,"threshold-y":35,scrollbar:1};e.tableFreeze=function(t,s){this.$this=e(t);this.options=e.extend({},n,s);this.x=0;this.y=0;this.hdr=[];this.h=this.$this.height();this.w=this.$this.width();var o=this;this.$this.on("mousewheel",function(e){var t,n;if(e.originalEvent.wheelDeltaX||e.originalEvent.wheelDeltaY){t=e.originalEvent.wheelDeltaX/-40;n=e.originalEvent.wheelDeltaY}else{t=e.originalEvent.deltaX;n=e.originalEvent.deltaY}o.x+=t;o.y+=n;if(Math.abs(o.x)>o.options["threshold-x"]){o.x>0?r.call(o,0):r.call(o,1);o.x=0}if(Math.abs(o.y)>o.options["threshold-y"]){o.y>0?i.call(o,1):i.call(o,0);o.y=0}e.preventDefault();e.stopPropagation()});if(!this.options.scrollbar)return;var u=e.isPlainObject(this.options.scrollbar)?this.options.scrollbar:null;this.sb=this.$this.scrollbar(u);var a=this.$this.parent(),f=a.width(),l=a.height();var c=this.$this.find("thead").height();this.numRows=this.$this.find("tbody tr").length;this.numCols=this.$this.find("tbody tr").eq(0).find("td").length;this.numRows-=(l-c)/(this.h-c)*this.numRows;this.numCols-=f/this.w*this.numCols;this.hiddenRows=0;this.hiddenCols=0;this.$this.on("scrollbar::dragX",function(e,t){var n=Math.ceil(t*o.numCols)-o.hiddenCols;if(n==0)return;var i=Math.abs(n);for(var s=0;s<i;s++){r.call(o,n>0?0:1)}}).on("scrollbar::dragY",function(e,t){var n=Math.ceil(t*o.numRows)-o.hiddenRows;if(n==0)return;var r=Math.abs(n);for(var s=0;s<r;s++){i.call(o,n>0?0:1)}})};e.tableFreeze.prototype.$get=function(){return this.$this};e.tableFreeze.prototype.set=function(e){this.options.cols=e;this.$this.find(".hidden").removeClass("hidden");this.hiddenCols=0;this.hiddenRows=0;this.resetScrollbars()};e.tableFreeze.prototype.updateScrollbars=function(){this.sb.update(this.hiddenCols/this.numCols,this.hiddenRows/this.numRows)};e.tableFreeze.prototype.resetScrollbars=function(){this.h=this.$this.height();this.w=this.$this.width();this.sb.reset();this.updateScrollbars()};e.fn.tableFreeze=function(n){if(e(this).length!=1){var r=[];e(this).each(function(){r.push(e(this).tableFreeze(this,n))});return r}var i=e(this).data(t);if(i instanceof e.tableFreeze)return i;i=new e.tableFreeze(this,n);e(this).data(t,i);return i}})(jQuery)