/* * Kendo UI v2011.3.1407 (http://kendoui.com) * Copyright 2012 Telerik AD. All rights reserved. * * Kendo UI commercial licenses may be obtained at http://kendoui.com/license. * If you do not own a commercial license, this file shall be governed by the * GNU General Public License (GPL) version 3. For GPL requirements, please * review: http://www.gnu.org/copyleft/gpl.html */ (function(a,b){function j(b){return a(b).children(".k-grid-toolbar").outerHeight()+3}var c=window.kendo,d=c.ui.Widget,e=a.proxy,f="Drag a column header and drop it here to group by that column",g=c.template('
',{useWithBlock:!1}),h=function(b){return a('').html(b.attr(c.attr("title"))||b.attr(c.attr("field"))).prepend('')},i=a(''),k=d.extend({init:function(b,f){var g=this,k,l=c.guid(),m=e(g._intializePositions,g),n=g._dropCuePositions=[];d.fn.init.call(g,b,f),k=g.groupContainer=a(g.options.groupContainer,g.element).kendoDropTarget({group:l,dragenter:function(a){a.draggable.hint.find(".k-drag-status").removeClass("k-denied").addClass("k-add"),i.css({top:j(g.element),left:0}).appendTo(k)},dragleave:function(a){a.draggable.hint.find(".k-drag-status").removeClass("k-add").addClass("k-denied"),i.remove()}}).kendoDraggable({filter:"div.k-group-indicator",hint:h,group:l,dragend:function(a){g._dragEnd(this,a)},dragstart:function(a){var b=a.currentTarget,c=parseInt(b.css("marginLeft")),d=b.position().left-c;m(),i.css({top:j(g.element),left:d}).appendTo(k),this.hint.find(".k-drag-status").removeClass("k-denied").addClass("k-add")},drag:e(g._drag,g)}).delegate(".k-button","click",function(b){b.preventDefault(),g._removeIndicator(a(this).parent())}).delegate(".k-link","click",function(b){var d=a(this).parent(),e=g.buildIndicator(d.attr(c.attr("field")),d.attr(c.attr("title")),d.attr(c.attr("dir"))=="asc"?"desc":"asc");d.before(e).remove(),g._change(),b.preventDefault()}),g.element.kendoDraggable({filter:g.options.filter,hint:h,group:l,dragend:function(a){g._dragEnd(this,a)},dragstart:function(a){var b,d,e,f=a.currentTarget.attr(c.attr("field"));g.indicator(f)?a.preventDefault():(m(),n.length?(b=n[n.length-1].element,d=parseInt(b.css("marginRight")),e=b.position().left+b.outerWidth()+d):e=0,i.css({top:j(g.element),left:e}).appendTo(k),this.hint.find(".k-drag-status").removeClass("k-denied").addClass("k-add"))},drag:e(g._drag,g)}),g.dataSource=g.options.dataSource,g.dataSource&&g.dataSource.bind("change",function(){k.empty().append(a.map(this.group()||[],function(a){return g.buildIndicator(a.field,g.element.find(g.options.filter).filter("["+c.attr("field")+"="+a.field+"]").attr(c.attr("title")),a.dir)}).join("")),g._invalidateGroupContainer()})},options:{name:"Groupable",filter:"th"},indicator:function(b){var d=a(".k-group-indicator",this.groupContainer);return a.grep(d,function(d){return a(d).attr(c.attr("field"))===b})[0]},buildIndicator:function(a,b,d){return g({field:a,dir:d,title:b,ns:c.ns})},descriptors:function(){var b=a(".k-group-indicator",this.groupContainer);return a.map(b,function(b){b=a(b);return{field:b.attr(c.attr("field")),dir:b.attr(c.attr("dir"))}})},_removeIndicator:function(a){var b=this;a.remove(),b._invalidateGroupContainer(),b._change()},_change:function(){var a=this;a.dataSource&&a.dataSource.group(a.descriptors())},_dropCuePosition:function(b){var c=this._dropCuePositions;if(!!i.is(":visible")&&c.length!=0){var d=c[c.length-1],e=d.right,f=parseInt(d.element.css("marginLeft")),g=parseInt(d.element.css("marginRight"));b>=e?b={left:d.element.position().left+d.element.outerWidth()+g,element:d.element,before:!1}:(b=a.grep(c,function(a){return a.left<=b&&b<=a.right})[0],b&&(b={left:b.element.position().left-f,element:b.element,before:!0}));return b}},_drag:function(a){var b=this._dropCuePosition(a.pageX);b&&i.css({left:b.left})},_canDrop:function(a,b,c){var d=a.next();return a[0]!==b[0]&&(!d[0]||b[0]!==d[0]||c>d.position().left)},_dragEnd:function(b,d){var e=this,f=d.currentTarget.attr(c.attr("field")),g=d.currentTarget.attr(c.attr("title")),h=e.indicator(f),j=e._dropCuePositions,k=j[j.length-1],l;b.dropped?k?(l=e._dropCuePosition(i.offset().left+parseInt(k.element.css("marginLeft"))+parseInt(k.element.css("marginRight"))),e._canDrop(a(h),l.element,l.left)&&(l.before?l.element.before(h||e.buildIndicator(f,g)):l.element.after(h||e.buildIndicator(f,g)),e._change())):(e.groupContainer.append(e.buildIndicator(f,g)),e._change()):h&&e._removeIndicator(a(h)),i.remove(),j=[]},_intializePositions:function(){var b=this,c=a(".k-group-indicator",b.groupContainer),d;b._dropCuePositions=a.map(c,function(b){b=a(b),d=b.offset().left;return{left:d,right:d+b.outerWidth(),element:b}})},_invalidateGroupContainer:function(){var a=this.groupContainer;a.is(":empty")&&a.html(f)}});c.ui.plugin(k)})(jQuery)