You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4 lines
10 KiB
4 lines
10 KiB
|
1 year ago
|
// jQuery List DragSort v0.5.2
|
||
|
|
// Website: http://dragsort.codeplex.com/
|
||
|
|
// License: http://dragsort.codeplex.com/license
|
||
|
|
(function($){$.fn.dragsort=function(options){if(options=="destroy"){$(this.selector).trigger("dragsort-uninit");return}var opts=$.extend({},$.fn.dragsort.defaults,options);var lists=[];var list=null,lastPos=null;this.each(function(i,cont){if($(cont).is("table")&&$(cont).children().size()==1&&$(cont).children().is("tbody")){cont=$(cont).children().get(0)}var newList={draggedItem:null,placeHolderItem:null,pos:null,offset:null,offsetLimit:null,scroll:null,container:cont,init:function(){opts.tagName=$(this.container).children().size()==0?"li":$(this.container).children().get(0).tagName.toLowerCase();if(opts.itemSelector==""){opts.itemSelector=opts.tagName}if(opts.dragSelector==""){opts.dragSelector=opts.tagName}if(opts.placeHolderTemplate==""){opts.placeHolderTemplate="<"+opts.tagName+"> </"+opts.tagName+">"}$(this.container).attr("data-listidx",i).mousedown(this.grabItem).bind("dragsort-uninit",this.uninit);this.styleDragHandlers(true)},uninit:function(){var list=lists[$(this).attr("data-listidx")];$(list.container).unbind("mousedown",list.grabItem).unbind("dragsort-uninit");list.styleDragHandlers(false)},getItems:function(){return $(this.container).children(opts.itemSelector)},styleDragHandlers:function(cursor){this.getItems().map(function(){return $(this).is(opts.dragSelector)?this:$(this).find(opts.dragSelector).get()}).css("cursor",cursor?"pointer":"")},grabItem:function(e){var list=lists[$(this).attr("data-listidx")];var item=$(e.target).closest("[data-listidx] > "+opts.tagName).get(0);var insideMoveableItem=list.getItems().filter(function(){return this==item}).size()>0;if(e.which!=1||$(e.target).is(opts.dragSelectorExclude)||$(e.target).closest(opts.dragSelectorExclude).size()>0||!insideMoveableItem){return}e.preventDefault();var dragHandle=e.target;while(!$(dragHandle).is(opts.dragSelector)){if(dragHandle==this){return}dragHandle=dragHandle.parentNode}$(dragHandle).attr("data-cursor",$(dragHandle).css("cursor"));$(dragHandle).css("cursor","move");var listElem=this;var trigger=function(){list.dragStart.call(listElem,e);$(list.container).unbind("mousemove",trigger)};$(list.container).mousemove(trigger).mouseup(function(){$(list.container).unbind("mousemove",trigger);$(dragHandle).css("cursor",$(dragHandle).attr("data-cursor"))})},dragStart:function(e){if(list!=null&&list.draggedItem!=null){list.dropItem()}list=lists[$(this).attr("data-listidx")];list.draggedItem=$(e.target).closest("[data-listidx] > "+opts.tagName);list.draggedItem.attr("data-origpos",$(this).attr("data-listidx")+"-"+$(list.container).children().index(list.draggedItem));var mt=parseInt(list.draggedItem.css("marginTop"));var ml=parseInt(list.draggedItem.css("marginLeft"));list.offset=list.draggedItem.offset();list.offset.top=e.pageY-list.offset.top+(isNaN(mt)?0:mt)-1;list.offset.left=e.pageX-list.offset.left+(isNaN(ml)?0:ml)-1;if(!opts.dragBetween){var containerHeight=$(list.container).outerHeight()==0?Math.max(1,Math.round(0.5+list.getItems().size()*list.draggedItem.outerWidth()/$(list.container).outerWidth()))*list.draggedItem.outerHeight():$(list.container).outerHeight();list.offsetLimit=$(list.container).offset();list.offsetLimit.right=list.offsetLimit.left+$(list.container).outerWidth()-list.draggedItem.outerWidth();list.offsetLimit.bottom=list.offsetLimit.top+containerHeight-list.draggedItem.outerHeight()}var h=list.draggedItem.height();var w=list.draggedItem.width();if(opts.tagName=="tr"){list.draggedItem.children().each(function(){$(this).width($(this).width())});list.placeHolderItem=list.draggedItem.clone().attr("data-placeholder",true);list.draggedItem.after(list.placeHolderItem);list.placeHolderItem.children().each(function(){$(this).css({borderWidth:0,width:$(this).width()+1,height:$(this).height()+1}).html(" ")})}else{list.draggedItem.after(opts.placeHolderTemplate);list.placeHolderItem=list.draggedItem.next().css({height:h,width:w}).attr("data-placeholder",true)}if(opts.tagName=="td"){var listTable=list.draggedItem.closest("table").get(0);$("<table id='"+listTable.id+"' style='border-width: 0px;' class='dragSortItem "+listTable.
|