]> source.dussan.org Git - jquery-ui.git/commitdiff
Dev: Make droppable pass JSHint with no local settings overrides
authorMike Sherov <mike.sherov@gmail.com>
Sat, 17 Nov 2012 19:51:56 +0000 (14:51 -0500)
committerMike Sherov <mike.sherov@gmail.com>
Sat, 17 Nov 2012 19:51:56 +0000 (14:51 -0500)
ui/jquery.ui.droppable.js

index f27d56b85d1ba58e94a36685310400edc6d2d283..9d904992da9974b59ac4b449501ba46b191f9180 100644 (file)
@@ -16,7 +16,6 @@
  */
 (function( $, undefined ) {
 
-/*jshint onevar: false, curly: false, eqeqeq: false, laxbreak: true */
 $.widget("ui.droppable", {
        version: "@VERSION",
        widgetEventPrefix: "drop",
@@ -31,8 +30,11 @@ $.widget("ui.droppable", {
        },
        _create: function() {
 
-               var o = this.options, accept = o.accept;
-               this.isover = 0; this.isout = 1;
+               var o = this.options,
+                       accept = o.accept;
+
+               this.isover = false;
+               this.isout = true;
 
                this.accept = $.isFunction(accept) ? accept : function(d) {
                        return d.is(accept);
@@ -50,17 +52,21 @@ $.widget("ui.droppable", {
        },
 
        _destroy: function() {
-               var drop = $.ui.ddmanager.droppables[this.options.scope];
-               for ( var i = 0; i < drop.length; i++ )
-                       if ( drop[i] == this )
+               var i = 0,
+                       drop = $.ui.ddmanager.droppables[this.options.scope];
+
+               for ( ; i < drop.length; i++ ) {
+                       if ( drop[i] === this ) {
                                drop.splice(i, 1);
+                       }
+               }
 
                this.element.removeClass("ui-droppable ui-droppable-disabled");
        },
 
        _setOption: function(key, value) {
 
-               if(key == 'accept') {
+               if(key === 'accept') {
                        this.accept = $.isFunction(value) ? value : function(d) {
                                return d.is(value);
                        };
@@ -70,23 +76,37 @@ $.widget("ui.droppable", {
 
        _activate: function(event) {
                var draggable = $.ui.ddmanager.current;
-               if(this.options.activeClass) this.element.addClass(this.options.activeClass);
-               (draggable && this._trigger('activate', event, this.ui(draggable)));
+               if(this.options.activeClass) {
+                       this.element.addClass(this.options.activeClass);
+               }
+               if(draggable){
+                       this._trigger('activate', event, this.ui(draggable));
+               }
        },
 
        _deactivate: function(event) {
                var draggable = $.ui.ddmanager.current;
-               if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
-               (draggable && this._trigger('deactivate', event, this.ui(draggable)));
+               if(this.options.activeClass) {
+                       this.element.removeClass(this.options.activeClass);
+               }
+               if(draggable){
+                       this._trigger('deactivate', event, this.ui(draggable));
+               }
        },
 
        _over: function(event) {
 
                var draggable = $.ui.ddmanager.current;
-               if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
+
+               // Bail if draggable and droppable are same element
+               if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+                       return;
+               }
 
                if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
-                       if(this.options.hoverClass) this.element.addClass(this.options.hoverClass);
+                       if(this.options.hoverClass) {
+                               this.element.addClass(this.options.hoverClass);
+                       }
                        this._trigger('over', event, this.ui(draggable));
                }
 
@@ -95,10 +115,16 @@ $.widget("ui.droppable", {
        _out: function(event) {
 
                var draggable = $.ui.ddmanager.current;
-               if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return; // Bail if draggable and droppable are same element
+
+               // Bail if draggable and droppable are same element
+               if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+                       return;
+               }
 
                if (this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
-                       if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
+                       if(this.options.hoverClass) {
+                               this.element.removeClass(this.options.hoverClass);
+                       }
                        this._trigger('out', event, this.ui(draggable));
                }
 
@@ -106,25 +132,35 @@ $.widget("ui.droppable", {
 
        _drop: function(event,custom) {
 
-               var draggable = custom || $.ui.ddmanager.current;
-               if (!draggable || (draggable.currentItem || draggable.element)[0] == this.element[0]) return false; // Bail if draggable and droppable are same element
+               var draggable = custom || $.ui.ddmanager.current,
+                       childrenIntersection = false;
+
+               // Bail if draggable and droppable are same element
+               if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {
+                       return false;
+               }
 
-               var childrenIntersection = false;
                this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
                        var inst = $.data(this, 'ui-droppable');
                        if(
-                               inst.options.greedy
-                               && !inst.options.disabled
-                               && inst.options.scope == draggable.options.scope
-                               && inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element))
-                               && $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
+                               inst.options.greedy &&
+                               !inst.options.disabled &&
+                               inst.options.scope === draggable.options.scope &&
+                               inst.accept.call(inst.element[0], (draggable.currentItem || draggable.element)) &&
+                               $.ui.intersect(draggable, $.extend(inst, { offset: inst.element.offset() }), inst.options.tolerance)
                        ) { childrenIntersection = true; return false; }
                });
-               if(childrenIntersection) return false;
+               if(childrenIntersection) {
+                       return false;
+               }
 
                if(this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
-                       if(this.options.activeClass) this.element.removeClass(this.options.activeClass);
-                       if(this.options.hoverClass) this.element.removeClass(this.options.hoverClass);
+                       if(this.options.activeClass) {
+                               this.element.removeClass(this.options.activeClass);
+                       }
+                       if(this.options.hoverClass) {
+                               this.element.removeClass(this.options.hoverClass);
+                       }
                        this._trigger('drop', event, this.ui(draggable));
                        return this.element;
                }
@@ -146,27 +182,28 @@ $.widget("ui.droppable", {
 
 $.ui.intersect = function(draggable, droppable, toleranceMode) {
 
-       if (!droppable.offset) return false;
+       if (!droppable.offset) {
+               return false;
+       }
 
-       var x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
-               y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height;
-       var l = droppable.offset.left, r = l + droppable.proportions.width,
+       var draggableLeft, draggableTop,
+               x1 = (draggable.positionAbs || draggable.position.absolute).left, x2 = x1 + draggable.helperProportions.width,
+               y1 = (draggable.positionAbs || draggable.position.absolute).top, y2 = y1 + draggable.helperProportions.height,
+               l = droppable.offset.left, r = l + droppable.proportions.width,
                t = droppable.offset.top, b = t + droppable.proportions.height;
 
        switch (toleranceMode) {
                case 'fit':
-                       return (l <= x1 && x2 <= r
-                               && t <= y1 && y2 <= b);
+                       return (l <= x1 && x2 <= r && t <= y1 && y2 <= b);
                case 'intersect':
-                       return (l < x1 + (draggable.helperProportions.width / 2) // Right Half
-                               && x2 - (draggable.helperProportions.width / 2) < r // Left Half
-                               && t < y1 + (draggable.helperProportions.height / 2) // Bottom Half
-                               && y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
+                       return (l < x1 + (draggable.helperProportions.width / 2) && // Right Half
+                               x2 - (draggable.helperProportions.width / 2) < r && // Left Half
+                               t < y1 + (draggable.helperProportions.height / 2) && // Bottom Half
+                               y2 - (draggable.helperProportions.height / 2) < b ); // Top Half
                case 'pointer':
-                       var draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left),
-                               draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top),
-                               isOver = $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
-                       return isOver;
+                       draggableLeft = ((draggable.positionAbs || draggable.position.absolute).left + (draggable.clickOffset || draggable.offset.click).left);
+                       draggableTop = ((draggable.positionAbs || draggable.position.absolute).top + (draggable.clickOffset || draggable.offset.click).top);
+                       return $.ui.isOver(draggableTop, draggableLeft, t, l, droppable.proportions.height, droppable.proportions.width);
                case 'touch':
                        return (
                                (y1 >= t && y1 <= b) || // Top edge touching
@@ -191,23 +228,35 @@ $.ui.ddmanager = {
        droppables: { 'default': [] },
        prepareOffsets: function(t, event) {
 
-               var m = $.ui.ddmanager.droppables[t.options.scope] || [];
-               var type = event ? event.type : null; // workaround for #2317
-               var list = (t.currentItem || t.element).find(":data(ui-droppable)").andSelf();
+               var i, j,
+                       m = $.ui.ddmanager.droppables[t.options.scope] || [],
+                       type = event ? event.type : null, // workaround for #2317
+                       list = (t.currentItem || t.element).find(":data(ui-droppable)").andSelf();
 
-               droppablesLoop: for (var i = 0; i < m.length; i++) {
+               droppablesLoop: for (i = 0; i < m.length; i++) {
+
+                       //No disabled and non-accepted
+                       if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) {
+                               continue;
+                       }
 
-                       if(m[i].options.disabled || (t && !m[i].accept.call(m[i].element[0],(t.currentItem || t.element)))) continue;   //No disabled and non-accepted
                        // Filter out elements in the current dragged item
-                       for (var j=0; j < list.length; j++) {
-                               if(list[j] == m[i].element[0]) {
+                       for (j=0; j < list.length; j++) {
+                               if(list[j] === m[i].element[0]) {
                                        m[i].proportions.height = 0;
                                        continue droppablesLoop;
                                }
                        }
-                       m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue
 
-                       if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
+                       m[i].visible = m[i].element.css("display") !== "none";
+                       if(!m[i].visible) {
+                               continue;
+                       }
+
+                       //Activate the droppable if used directly from draggables
+                       if(type === "mousedown") {
+                               m[i]._activate.call(m[i], event);
+                       }
 
                        m[i].offset = m[i].element.offset();
                        m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
@@ -220,12 +269,16 @@ $.ui.ddmanager = {
                var dropped = false;
                $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
 
-                       if(!this.options) return;
-                       if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance))
+                       if(!this.options) {
+                               return;
+                       }
+                       if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance)) {
                                dropped = this._drop.call(this, event) || dropped;
+                       }
 
                        if (!this.options.disabled && this.visible && this.accept.call(this.element[0],(draggable.currentItem || draggable.element))) {
-                               this.isout = 1; this.isover = 0;
+                               this.isout = true;
+                               this.isover = false;
                                this._deactivate.call(this, event);
                        }
 
@@ -236,51 +289,60 @@ $.ui.ddmanager = {
        dragStart: function( draggable, event ) {
                //Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
                draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
-                       if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
+                       if( !draggable.options.refreshPositions ) {
+                               $.ui.ddmanager.prepareOffsets( draggable, event );
+                       }
                });
        },
        drag: function(draggable, event) {
 
                //If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
-               if(draggable.options.refreshPositions) $.ui.ddmanager.prepareOffsets(draggable, event);
+               if(draggable.options.refreshPositions) {
+                       $.ui.ddmanager.prepareOffsets(draggable, event);
+               }
 
                //Run through all droppables and check their positions based on specific tolerance options
                $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
 
-                       if(this.options.disabled || this.greedyChild || !this.visible) return;
-                       var intersects = $.ui.intersect(draggable, this, this.options.tolerance);
+                       if(this.options.disabled || this.greedyChild || !this.visible) {
+                               return;
+                       }
 
-                       var c = !intersects && this.isover == 1 ? 'isout' : (intersects && this.isover === 0 ? 'isover' : null);
-                       if(!c) return;
+                       var parentInstance, scope, parent,
+                               intersects = $.ui.intersect(draggable, this, this.options.tolerance),
+                               c = !intersects && this.isover ? 'isout' : (intersects && !this.isover ? 'isover' : null);
+                       if(!c) {
+                               return;
+                       }
 
-                       var parentInstance;
                        if (this.options.greedy) {
                                // find droppable parents with same scope
-                               var scope = this.options.scope;
-                               var parent = this.element.parents(':data(ui-droppable)').filter(function () {
+                               scope = this.options.scope;
+                               parent = this.element.parents(':data(ui-droppable)').filter(function () {
                                        return $.data(this, 'ui-droppable').options.scope === scope;
                                });
 
                                if (parent.length) {
                                        parentInstance = $.data(parent[0], 'ui-droppable');
-                                       parentInstance.greedyChild = (c == 'isover' ? 1 : 0);
+                                       parentInstance.greedyChild = (c === 'isover');
                                }
                        }
 
                        // we just moved into a greedy child
-                       if (parentInstance && c == 'isover') {
-                               parentInstance.isover = 0;
-                               parentInstance.isout = 1;
+                       if (parentInstance && c === 'isover') {
+                               parentInstance.isover = false;
+                               parentInstance.isout = true;
                                parentInstance._out.call(parentInstance, event);
                        }
 
-                       this[c] = 1; this[c == 'isout' ? 'isover' : 'isout'] = 0;
-                       this[c == "isover" ? "_over" : "_out"].call(this, event);
+                       this[c] = true;
+                       this[c === 'isout' ? 'isover' : 'isout'] = false;
+                       this[c === "isover" ? "_over" : "_out"].call(this, event);
 
                        // we just moved out of a greedy child
-                       if (parentInstance && c == 'isout') {
-                               parentInstance.isout = 0;
-                               parentInstance.isover = 1;
+                       if (parentInstance && c === 'isout') {
+                               parentInstance.isout = false;
+                               parentInstance.isover = true;
                                parentInstance._over.call(parentInstance, event);
                        }
                });
@@ -289,7 +351,9 @@ $.ui.ddmanager = {
        dragStop: function( draggable, event ) {
                draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
                //Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
-               if( !draggable.options.refreshPositions ) $.ui.ddmanager.prepareOffsets( draggable, event );
+               if( !draggable.options.refreshPositions ) {
+                       $.ui.ddmanager.prepareOffsets( draggable, event );
+               }
        }
 };