UNPKG

datatables.net-colreorder

Version:
7 lines 10.8 kB
/*! ColReorder 2.1.1 * © SpryMedia Ltd - datatables.net/license */ (r=>{var o,n;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(t){return r(t,window,document)}):"object"==typeof exports?(o=require("jquery"),n=function(t,e){e.fn.dataTable||require("datatables.net")(t,e)},"undefined"==typeof window?module.exports=function(t,e){return t=t||window,e=e||o(t),n(t,e),r(e,0,t.document)}:(n(window,o),module.exports=r(o,window,window.document))):r(jQuery,window,document)})(function(u,t,h){var n=u.fn.dataTable;function f(t,e,r,o){var n=t.splice(e,r);n.unshift(0),n.unshift(o<e?o:o-r+1),t.splice.apply(t,n)}function l(t){t.rows().invalidate("data"),t.column(0).visible(t.column(0).visible()),t.columns.adjust();var e=t.colReorder.order();t.trigger("columns-reordered",[{order:e,mapping:p(e)}])}function s(t){return t.settings()[0].aoColumns.map(function(t){return t._crOriginalIdx})}function g(t,e,r,o){for(var n=[],i=0;i<t.length;i++){var s=t[i];f(s,r[0],r.length,o);for(var l=0;l<s.length;l++){var a,c=s[l].cell;n.includes(c)||(a=c.getAttribute("data-dt-column").split(",").map(function(t){return e[t]}).join(","),c.setAttribute("data-dt-column",a),n.push(c))}}}function r(t){t.columns().iterator("column",function(t,e){t=t.aoColumns;void 0===t[e]._crOriginalIdx&&(t[e]._crOriginalIdx=e)})}function p(t){for(var e=[],r=0;r<t.length;r++)e[t[r]]=r;return e}function a(t,e,r){var o,n=t.settings()[0],i=n.aoColumns,s=i.map(function(t,e){return e});if(!e.includes(r)){f(s,e[0],e.length,r);var l=p(s);for(f(i,e[0],e.length,r),o=0;o<n.aoData.length;o++){var a=n.aoData[o];if(a){var c=a.anCells;if(c)for(f(c,e[0],e.length,r),u=0;u<c.length;u++)a.nTr&&c[u]&&i[u].bVisible&&a.nTr.appendChild(c[u]),c[u]&&c[u]._DT_CellIndex&&(c[u]._DT_CellIndex.column=u)}}for(o=0;o<i.length;o++){for(var d=i[o],u=0;u<d.aDataSort.length;u++)d.aDataSort[u]=l[d.aDataSort[u]];d.idx=l[d.idx],d.bVisible&&n.colgroup.append(d.colEl)}g(n.aoHeader,l,e,r),g(n.aoFooter,l,e,r),f(n.aoPreSearchCols,e[0],e.length,r),m(l,n.aaSorting),Array.isArray(n.aaSortingFixed)?m(l,n.aaSortingFixed):(n.aaSortingFixed.pre||n.aaSortingFixed.post)&&m(l,n.aaSortingFixed.pre),n.aLastSort.forEach(function(t){t.src=l[t.src]}),t.trigger("column-reorder",[t.settings()[0],{from:e,to:r,mapping:l}])}}function m(t,e){if(e)for(var r=0;r<e.length;r++){var o=e[r];"number"==typeof o?e[r]=t[o]:u.isPlainObject(o)&&void 0!==o.idx?o.idx=t[o.idx]:Array.isArray(o)&&"number"==typeof o[0]&&(o[0]=t[o[0]])}}function c(t,e,r){var o=!1;if(e.length!==t.columns().count())t.error("ColReorder - column count mismatch");else{for(var n=p(e=r?d(t,e,"toCurrent"):e),i=0;i<n.length;i++){var s=n.indexOf(i);i!==s&&(f(n,s,1,i),a(t,[s],i),o=!0)}o&&l(t)}}function d(t,e,r){var o=t.colReorder.order(),n=t.settings()[0].aoColumns;return"toCurrent"===r||"fromOriginal"===r?Array.isArray(e)?e.map(function(t){return o.indexOf(t)}):o.indexOf(e):Array.isArray(e)?e.map(function(t){return n[t]._crOriginalIdx}):n[e]._crOriginalIdx}function v(t,e,r){var o=t.columns().count();return!(e[0]<r&&r<e[e.length]||e[0]<0&&e[e.length-1]>o||r<0&&o<r||!e.includes(r)&&(!i(t.table().header.structure(),e,r)||!i(t.table().footer.structure(),e,r)))}function i(t,e,r){for(var o=(t=>{for(var e=[],r=0;r<t.length;r++){e.push([]);for(var o=0;o<t[r].length;o++){var n=t[r][o];if(n)for(var i=0;i<n.rowspan;i++){e[r+i]||(e[r+i]=[]);for(var s=0;s<n.colspan;s++)e[r+i][o+s]=n.cell}}}return e})(t),n=0;n<o.length;n++)f(o[n],e[0],e.length,r);for(n=0;n<o.length;n++)for(var i=[],s=0;s<o[n].length;s++){var l=o[n][s];if(i.includes(l)){if(i[i.length-1]!==l)return}else i.push(l)}return 1}y.prototype.disable=function(){return this.c.enable=!1,this},y.prototype.enable=function(t){return!1===(t=void 0===t?!0:t)?this.disable():(this.c.enable=!0,this)},y.prototype._addListener=function(t){var r=this;u(t).on("selectstart.colReorder",function(){return!1}).on("mousedown.colReorder touchstart.colReorder",function(t){var e;"mousedown"===t.type&&1!==t.which||!r.c.enable||(e=u("button.dtcc-button_reorder",this)).length&&t.target!==e[0]&&0===e.find(t.target).length||r._mouseDown(t,this)})},y.prototype._createDragNode=function(){var t=this.s.mouse.target,e=t.parent(),r=e.parent(),o=r.parent(),n=t.clone();this.dom.drag=u(o[0].cloneNode(!1)).addClass("dtcr-cloned").append(u(r[0].cloneNode(!1)).append(u(e[0].cloneNode(!1)).append(n[0]))).css({position:"absolute",top:0,left:0,width:u(t).outerWidth(),height:u(t).outerHeight()}).appendTo("body")},y.prototype._cursorPosition=function(t,e){return(-1!==t.type.indexOf("touch")?t.originalEvent.touches[0]:t)[e]},y.prototype._mouseDown=function(t,e){for(var r=this,o=u(t.target).closest("th, td"),n=o.offset(),i=this.dt.columns(this.c.columns).indexes().toArray(),s=u(e).attr("data-dt-column").split(",").map(function(t){return parseInt(t,10)}),l=0;l<s.length;l++)if(!i.includes(s[l]))return!1;this.s.mouse.start.x=this._cursorPosition(t,"pageX"),this.s.mouse.start.y=this._cursorPosition(t,"pageY"),this.s.mouse.offset.x=this._cursorPosition(t,"pageX")-n.left,this.s.mouse.offset.y=this._cursorPosition(t,"pageY")-n.top,this.s.mouse.target=o,this.s.mouse.targets=s;for(var a=0;a<s.length;a++){var c=this.dt.cells(null,s[a],{page:"current"}).nodes().to$(),d="dtcr-moving";0===a&&(d+=" dtcr-moving-first"),a===s.length-1&&(d+=" dtcr-moving-last"),c.addClass(d)}this._regions(s),this._scrollRegions(),u(h).on("mousemove.colReorder touchmove.colReorder",function(t){r._mouseMove(t)}).on("mouseup.colReorder touchend.colReorder",function(t){r._mouseUp(t)})},y.prototype._mouseMove=function(t){if(null===this.dom.drag){if(Math.pow(Math.pow(this._cursorPosition(t,"pageX")-this.s.mouse.start.x,2)+Math.pow(this._cursorPosition(t,"pageY")-this.s.mouse.start.y,2),.5)<5)return;u(h.body).addClass("dtcr-dragging"),this._createDragNode()}this.dom.drag.css({left:this._cursorPosition(t,"pageX")-this.s.mouse.offset.x,top:this._cursorPosition(t,"pageY")-this.s.mouse.offset.y});var e,r=this.dt.table().node(),o=u(r).offset().left,o=this._cursorPosition(t,"pageX")-o,r=(e=this._isRtl()?r.clientWidth-o:o,this.s.dropZones.find(function(t){return t.inlineStart<=e&&e<=t.inlineStart+t.width}));this.s.mouse.absLeft=this._cursorPosition(t,"pageX"),r&&!r.self&&this._move(r,e)},y.prototype._mouseUp=function(t){var e=this;u(h).off(".colReorder"),u(h.body).removeClass("dtcr-dragging"),this.dom.drag&&(this.dom.drag.remove(),this.dom.drag=null,this.s.mouse.target.on("click.dtcr",function(t){return!1}),setTimeout(function(){e.s.mouse.target.off(".dtcr")},10)),this.s.scrollInterval&&clearInterval(this.s.scrollInterval),this.dt.cells(".dtcr-moving").nodes().to$().removeClass("dtcr-moving dtcr-moving-first dtcr-moving-last")},y.prototype._move=function(t,e){var r,o,n=this,i=(this.dt.colReorder.move(this.s.mouse.targets,t.colIdx),this.s.mouse.targets=u(this.s.mouse.target).attr("data-dt-column").split(",").map(function(t){return parseInt(t,10)}),this._regions(this.s.mouse.targets),this.s.mouse.targets.filter(function(t){return n.dt.column(t).visible()})),t=this.s.dropZones.find(function(t){return t.colIdx===i[0]}),s=this.s.dropZones.indexOf(t);t.inlineStart>e&&(o=t.inlineStart-e,r=this.s.dropZones[s-1],t.inlineStart-=o,t.width+=o,r)&&(r.width-=o),(t=this.s.dropZones.find(function(t){return t.colIdx===i[i.length-1]})).inlineStart+t.width<e&&(r=e-(t.inlineStart+t.width),o=this.s.dropZones[s+1],t.width+=r,o)&&(o.inlineStart+=r,o.width-=r)},y.prototype._regions=function(n){var i=this,s=[],l=0,a=0,c=this.dt.columns(this.c.columns).indexes().toArray(),d=this.dt.columns().widths();this.dt.columns().every(function(t,e,r){var o;this.visible()&&(o=d[t],c.includes(t)&&(v(i.dt,n,t)?s.push({colIdx:t,inlineStart:l-a,self:n[0]<=t&&t<=n[n.length-1],width:o+a}):t<n[0]?s.length&&(s[s.length-1].width+=o):t>n[n.length-1]&&(a+=o)),l+=o)}),this.s.dropZones=s},y.prototype._isScrolling=function(){return this.dt.table().body().parentNode!==this.dt.table().header().parentNode},y.prototype._scrollRegions=function(){var e,r,o,n;this._isScrolling()&&(r=u((e=this).dt.table().container()).offset().left,o=u(this.dt.table().container()).outerWidth(),n=this.dt.table().body().parentElement.parentElement,this.s.scrollInterval=setInterval(function(){var t=e.s.mouse.absLeft;-1!==t&&(t<r+75&&n.scrollLeft?n.scrollLeft-=5:r+o-75<t&&n.scrollLeft<n.scrollWidth&&(n.scrollLeft+=5))},25))},y.prototype._isRtl=function(){return"rtl"===u(this.dt.table()).css("direction")},y.defaults={columns:"",enable:!0,headerRows:null,order:null},y.version="2.1.1"; /*! ColReorder 2.1.1 * © SpryMedia Ltd - datatables.net/license */var b=y;function y(o,n){this.dom={drag:null},this.c={columns:null,enable:null,headerRows:null,order:null},this.s={dropZones:[],mouse:{absLeft:-1,offset:{x:-1,y:-1},start:{x:-1,y:-1},target:null,targets:[]},scrollInterval:null};var t,e,i=this;o.settings()[0]._colReorder||((o.settings()[0]._colReorder=this).dt=o,u.extend(this.c,y.defaults,n),r(o),o.on("stateSaveParams",function(t,e,r){r.colReorder=s(o)}),o.on("destroy",function(){o.off(".colReorder"),o.colReorder.reset()}),t=o.state.loaded(),e=this.c.order,(e=t&&t.colReorder&&o.columns().count()===t.colReorder.length?t.colReorder:e)&&o.ready(function(){c(o,e,!0)}),o.table().header.structure().forEach(function(t,e){for(var r=n.headerRows,o=0;o<t.length;o++)r&&!r.includes(e)||t[o]&&t[o].cell&&i._addListener(t[o].cell)}))}return n.Api.register("colReorder.enable()",function(e){return this.iterator("table",function(t){t._colReorder&&t._colReorder.enable(e)})}),n.Api.register("colReorder.disable()",function(){return this.iterator("table",function(t){t._colReorder&&t._colReorder.disable()})}),n.Api.register("colReorder.move()",function(t,e){return r(this),v(this,t=Array.isArray(t)?t:[t],e)?this.tables().every(function(){a(this,t,e),l(this)}):(this.error("ColReorder - invalid move"),this)}),n.Api.register("colReorder.order()",function(t,e){return r(this),t?this.tables().every(function(){c(this,t,e)}):this.context.length?s(this):null}),n.Api.register("colReorder.reset()",function(){return r(this),this.tables().every(function(){var t=this.columns().every(function(t){return t}).flatten().toArray();c(this,t,!0)})}),n.Api.register("colReorder.transpose()",function(t,e){return r(this),d(this,t,e=e||"toCurrent")}),n.ColReorder=b,u(h).on("stateLoadInit.dt",function(t,e,r){if("dt"===t.namespace){t=new n.Api(e);if(r.colReorder&&t.columns().count()===r.colReorder.length)if(t.ready())c(t,r.colReorder,!0);else if(m(r.colReorder,r.order),r.columns){for(var o=0;o<r.columns.length;o++)r.columns[o]._cr_sort=r.colReorder[o];r.columns.sort(function(t,e){return t._cr_sort-e._cr_sort})}}}),u(h).on("preInit.dt",function(t,e){var r,o;"dt"===t.namespace&&(t=e.oInit.colReorder,o=n.defaults.colReorder,t||o)&&(r=u.extend({},o,t),!1!==t)&&(o=new n.Api(e),new b(o,r))}),n});