catalogue
Version:
A Mongoose Based Data Viewer
1 lines • 3.12 kB
JavaScript
var __bind=function(a,b){return function(){return a.apply(b,arguments)}},__slice=[].slice;!function(a,b){var c;return c=function(){function c(c,d){this.mousedown=__bind(this.mousedown,this);var e=this;this.options=a.extend({},this.defaults,d),this.$table=c,this.tableId=this.$table.data("resizable-columns-id"),this.createHandles(),this.restoreColumnWidths(),this.syncHandleWidths(),a(b).on("resize.rc",function(){return e.syncHandleWidths()})}return c.prototype.defaults={store:b.store,rigidSizing:!1,resizeFromBody:!0},c.prototype.destroy=function(){return this.$handleContainer.remove(),this.$table.removeData("resizableColumns"),a(b).off(".rc")},c.prototype.createHandles=function(){var b=this;return this.$table.before(this.$handleContainer=a("<div class='rc-handle-container' />")),this.$table.find("tr th:visible").each(function(c,d){var e;if(0!==b.$table.find("tr th:visible").eq(c+1).length&&null==b.$table.find("tr th:visible").eq(c).attr("data-noresize")&&null==b.$table.find("tr th:visible").eq(c+1).attr("data-noresize"))return e=a("<div class='rc-handle' />"),e.data("th",a(d)),e.appendTo(b.$handleContainer)}),this.$handleContainer.on("mousedown",".rc-handle",this.mousedown)},c.prototype.syncHandleWidths=function(){var b=this;return this.$handleContainer.width(this.$table.width()),this.$handleContainer.find(".rc-handle").each(function(c,d){return a(d).css({left:a(d).data("th").outerWidth()+(a(d).data("th").offset().left-b.$handleContainer.offset().left),height:b.options.resizeFromBody?b.$table.height():b.$table.find("thead").height()})})},c.prototype.saveColumnWidths=function(){var b=this;return this.$table.find("tr th:visible").each(function(c,d){var e;return null==a(d).attr("data-noresize")&&(e=b.tableId+"-"+a(d).data("resizable-column-id"),null!=b.options.store)?store.set(e,a(d).width()):void 0})},c.prototype.restoreColumnWidths=function(){var b=this;return this.$table.find("tr th:visible").each(function(c,d){var e,f;return e=b.tableId+"-"+a(d).data("resizable-column-id"),null!=b.options.store&&(f=store.get(e))?a(d).width(f):void 0})},c.prototype.mousedown=function(b){var c,d,e,f,g,h,i=this;return b.preventDefault(),this.startPosition=b.pageX,c=a(b.currentTarget),d=c.data("th"),g=d.width(),f=this.$table.find("tr th:visible").index(c.data("th")),e=this.$table.find("tr th:visible").eq(f+1),h=e.width(),this.$table.addClass("rc-table-resizing"),a(document).on("mousemove.rc",function(a){var b,c,f;return b=a.pageX-i.startPosition,f=h-b,c=g+b,i.options.rigidSizing&&parseInt(e[0].style.width)<e.width()&&f<e.width()||parseInt(d[0].style.width)<d.width()&&c<d.width()?void 0:(d.width(c),e.width(f))}),a(document).one("mouseup",function(){return a(document).off("mousemove.rc"),i.$table.removeClass("rc-table-resizing"),i.syncHandleWidths(),i.saveColumnWidths()})},c}(),a.fn.extend({resizableColumns:function(){var b,d;return d=arguments[0],b=2<=arguments.length?__slice.call(arguments,1):[],this.each(function(){var e,f;return e=a(this),f=e.data("resizableColumns"),f||e.data("resizableColumns",f=new c(e,d)),"string"==typeof d?f[d].apply(f,b):void 0})}})}(window.jQuery,window);