2015-10-23 23:19:11 +08:00
|
|
|
!function(a){a.fn.dragsort=function(b){var c,d,e,f,g;return"destroy"==b?(c=a(this.selector).length?a(this.selector):a(this),c.trigger("dragsort-uninit"),void 0):(d=a.extend({},a.fn.dragsort.defaults,b),e=[],f=null,g=null,this.each(function(b,c){a(c).is("table")&&1==a(c).children().size()&&a(c).children().is("tbody")&&(c=a(c).children().get(0));var h={draggedItem:null,placeHolderItem:null,pos:null,offset:null,offsetLimit:null,scroll:null,container:c,init:function(){var c=0==a(this.container).children().size()?"li":a(this.container).children(":first").get(0).tagName.toLowerCase();""==d.itemSelector&&(d.itemSelector=c),""==d.dragSelector&&(d.dragSelector=c),""==d.placeHolderTemplate&&(d.placeHolderTemplate="<"+c+"> </"+c+">"),a(this.container).attr("data-listidx",b).mousedown(this.grabItem).bind("dragsort-uninit",this.uninit),this.styleDragHandlers(!0)},uninit:function(){var b=e[a(this).attr("data-listidx")];a(b.container).unbind("mousedown",b.grabItem).unbind("dragsort-uninit"),b.styleDragHandlers(!1)},getItems:function(){return a(this.container).children(d.itemSelector)},styleDragHandlers:function(b){this.getItems().map(function(){return a(this).is(d.dragSelector)?this:a(this).find(d.dragSelector).get()}).css("cursor",b?"pointer":"")},grabItem:function(b){var c,f,g,h;if(!(1!=b.which||a(b.target).is(d.dragSelectorExclude)||a(b.target).closest(d.dragSelectorExclude).size()>0||0==a(b.target).closest(d.itemSelector).size())){for(b.preventDefault(),c=b.target;!a(c).is(d.dragSelector);){if(c==this)return;c=c.parentNode}a(c).attr("data-cursor",a(c).css("cursor")),a(c).css("cursor","move"),f=e[a(this).attr("data-listidx")],g=this,h=function(){f.dragStart.call(g,b),a(f.container).unbind("mousemove",h)},a(f.container).mousemove(h).mouseup(function(){a(f.container).unbind("mousemove",h),a(c).css("cursor",a(c).attr("data-cursor"))})}},dragStart:function(b){var c,g,h,i,j,k,l;null!=f&&null!=f.draggedItem&&f.dropItem(),f=e[a(this).attr("data-listidx")],f.draggedItem=a(b.target).closest(d.itemSelector),f.draggedItem.attr("data-origpos",a(this).attr("data-listidx")+"-"+f.getItems().index(f.draggedItem)),c=parseInt(f.draggedItem.css("marginTop")),g=parseInt(f.draggedItem.css("marginLeft")),f.offset=f.draggedItem.offset(),f.offset.top=b.pageY-f.offset.top+(isNaN(c)?0:c)-1,f.offset.left=b.pageX-f.offset.left+(isNaN(g)?0:g)-1,d.dragBetween||(h=0==a(f.container).outerHeight()?Math.max(1,Math.round(.5+f.getItems().size()*f.draggedItem.outerWidth()/a(f.container).outerWidth()))*f.draggedItem.outerHeight():a(f.container).outerHeight(),f.offsetLimit=a(f.container).offset(),f.offsetLimit.right=f.offsetLimit.left+a(f.container).outerWidth()-f.draggedItem.outerWidth(),f.offsetLimit.bottom=f.offsetLimit.top+h-f.draggedItem.outerHeight()),i=f.draggedItem.height(),j=f.draggedItem.width(),"tr"==d.itemSelector?(f.draggedItem.children().each(function(){a(this).width(a(this).width())}),f.placeHolderItem=f.draggedItem.clone().attr("data-placeholder",!0),f.draggedItem.after(f.placeHolderItem),f.placeHolderItem.children().each(function(){a(this).css({borderWidth:0,width:a(this).width()+1,height:a(this).height()+1}).html(" ")})):(f.draggedItem.after(d.placeHolderTemplate),f.placeHolderItem=f.draggedItem.next().css({height:i,width:j}).attr("data-placeholder",!0)),"td"==d.itemSelector&&(k=f.draggedItem.closest("table").get(0),a("<table id='"+k.id+"' style='border-width: 0px;' class='dragSortItem "+k.className+"'><tr></tr></table>").appendTo("body").children().append(f.draggedItem)),l=f.draggedItem.attr("style"),f.draggedItem.attr("data-origstyle",l?l:""),f.draggedItem.css({position:"absolute",opacity:.8,"z-index":999,height:i,width:j}),f.scroll={moveX:0,moveY:0,maxX:a(document).width()-a(window).width(),maxY:a(document).height()-a(window).height()},f.scroll.scrollY=window.setInterval(function(){if(d.scrollContainer!=window)return a(d.scrollContainer).scrollTop(a(d.scrollContainer).scrollTop()+f.scroll.moveY),void 0;var b=a(d.scrollContainer).scrollTop();(f.scroll.moveY>0&&b<f.scroll.maxY||f.scroll.moveY<0&&b>0)&&(a(d.scrollContainer).scrollTop(b+f.scro
|