/** * @class SimpleTasks.ux.DropZone * @extends Ext.tree.ViewDropZone * @private */ Ext.define('SimpleTasks.ux.DropZone', { extend: 'Ext.tree.ViewDropZone', handleNodeDrop : function(data, overRecord, position) { var droppedRecord = data.records[0]; if(droppedRecord instanceof SimpleTasks.model.Task) { this.cancelExpand(); this.fireViewEvent('taskdrop', droppedRecord, overRecord); } else if(droppedRecord instanceof SimpleTasks.model.List) { this.callParent(arguments); this.fireViewEvent('listdrop', droppedRecord, overRecord, position); } }, onNodeOver: function(node, dragZone, e, data) { var me = this, view = me.view, overRecord = view.getRecord(node), position = me.getPosition(e, node), targetNode = view.getRecord(node); // if we're dragging to reorder rows within the List Tree, then call superclass onNodeOver. // This allows the superclass to show the visual position indicator. // Otherwise if we're dragging a Task from the Task Grid, do not show the indicator, since we want // to give the appearance of the dragged record being dropped ON a node, not in between nodes. if(data.records[0] instanceof SimpleTasks.model.List) { return me.callParent(arguments); } // auto node expand check this.cancelExpand(); if (position == 'append' && !this.expandProcId && !Ext.Array.contains(data.records, targetNode) && !targetNode.isLeaf() && !targetNode.isExpanded()) { this.queueExpand(targetNode); } me.overRecord = overRecord; me.valid = true; return me.dropAllowed; } });