@@ -33,9 +33,6 @@ DDList = function(id, sGroup, config) {
33
33
var el = this . getDragEl ( ) ;
34
34
Dom . setStyle ( el , "opacity" , 0.67 ) ; // The proxy is slightly transparent
35
35
36
- this . goingUp = false ;
37
- this . lastY = 0 ;
38
-
39
36
} ;
40
37
41
38
YAHOO . extend ( DDList , YAHOO . util . DDProxy , {
@@ -45,8 +42,9 @@ YAHOO.extend(DDList, YAHOO.util.DDProxy, {
45
42
var dragEl = this . getDragEl ( ) ;
46
43
var clickEl = this . getEl ( ) ;
47
44
this . col = Math . round ( ( Dom . getX ( clickEl ) - 4 ) / dashboard . columnWidth ) ;
48
- this . oldColumn = this . col ;
49
45
this . oldY = Dom . getY ( clickEl ) ;
46
+ this . destination = [ dashboard . columns [ this . col ] , this . oldY ]
47
+
50
48
Dom . setStyle ( clickEl , "visibility" , "hidden" ) ;
51
49
52
50
dragEl . innerHTML = clickEl . innerHTML ;
@@ -63,18 +61,19 @@ YAHOO.extend(DDList, YAHOO.util.DDProxy, {
63
61
64
62
if ( this . destination )
65
63
dest = this . destination ;
66
- else {
67
- // gadget will be moved to the bottom of the column
68
- var allGadgets = $$ ( ".gadget-el" ) ;
69
- var col = Math . floor ( ( Event . getPageX ( e ) - 4 ) / dashboard . columnWidth ) ;
70
- var x = dashboard . columns [ col ] ;
71
- var y = Dom . getY ( "dashboard" ) + 5 ;
72
- for ( var i = 0 ; i < allGadgets . length ; i ++ ) {
73
- if ( Dom . getX ( allGadgets [ i ] ) == x && allGadgets [ i ] != srcEl )
74
- y += allGadgets [ i ] . clientHeight + 5 ;
75
- }
76
- dest = [ x , y ] ;
77
- }
64
+
65
+ // else {
66
+ // // gadget will be moved to the bottom of the column
67
+ // var allGadgets = $$(".gadget-el");
68
+ // var col = Math.floor( (Event.getPageX(e) - 4) / dashboard.columnWidth );
69
+ // var x = dashboard.columns[col];
70
+ // var y = Dom.getY("dashboard") + 5;
71
+ // for (var i = 0; i < allGadgets.length; i++){
72
+ // if (Dom.getX(allGadgets[i]) == x && allGadgets[i] != srcEl)
73
+ // y += allGadgets[i].clientHeight + 5;
74
+ // }
75
+ // dest = [x, y];
76
+ // }
78
77
79
78
var proxyid = proxy . id ;
80
79
var thisid = this . id ;
@@ -106,20 +105,21 @@ YAHOO.extend(DDList, YAHOO.util.DDProxy, {
106
105
// if (this.lastMoved)
107
106
// this._reorderLastMoved();
108
107
109
- this . _rearrangeLastColumn ( e )
108
+ // called with this.oldY
109
+ //this._rearrangeColumn(e, this.oldColumn)
110
110
111
111
} ,
112
112
113
- _rearrangeLastColumn : function ( e ) {
113
+ _rearrangeColumn : function ( e , col ) {
114
114
115
115
var newColumn = Math . floor ( ( Event . getPageX ( e ) - 4 ) / dashboard . columnWidth ) ;
116
116
117
117
// gadget moved to another column
118
- if ( this . oldColumn != newColumn ) {
118
+ if ( col != newColumn ) {
119
119
120
120
var allGadgets = $$ ( ".gadget-el" ) ;
121
121
var gadgetsToMove = [ ] ;
122
- var x = dashboard . columns [ this . oldColumn ] ;
122
+ var x = dashboard . columns [ col ] ;
123
123
var y = Dom . getY ( "dashboard" ) + 5 ;
124
124
var endOfColumn = y ; // bottom of last gadgets in column
125
125
@@ -130,7 +130,7 @@ YAHOO.extend(DDList, YAHOO.util.DDProxy, {
130
130
if ( ( Dom . getY ( allGadgets [ i ] ) + allGadgets [ i ] . clientHeight ) > endOfColumn )
131
131
endOfColumn = Dom . getY ( allGadgets [ i ] ) + allGadgets [ i ] . clientHeight ;
132
132
// in case of free space move only gadgets that where below the dragged one
133
- if ( Dom . getY ( allGadgets [ i ] ) > this . oldY )
133
+ if ( Dom . getY ( allGadgets [ i ] ) > Event . getPageY ( e ) )
134
134
gadgetsToMove . push ( allGadgets [ i ] ) ;
135
135
}
136
136
}
@@ -143,67 +143,42 @@ YAHOO.extend(DDList, YAHOO.util.DDProxy, {
143
143
}
144
144
}
145
145
} ,
146
-
147
- /*
148
- onDragDrop: function(e, id) {
149
-
150
- // proxy was dropped either on the list
151
- // or on the current location of the source element
152
- if (DDM.interactionInfo.drop.length === 1) {
153
-
154
- // The position of the cursor at the time of the drop
155
- var pt = DDM.interactionInfo.point;
156
-
157
- // region of the source element at the time of the drop
158
- var region = DDM.interactionInfo.sourceRegion;
159
-
160
- // Check to see if we are over the source element's location
161
- // append to the bottom of the list once we are sure it was a drop below the list
162
- if (!region.intersect(pt)) {
163
- var destEl = Dom.get(id);
164
- var destDD = DDM.getDDById(id);
165
- destEl.appendChild(this.getEl());
166
- destDD.isEmpty = false;
167
- DDM.refreshCache();
168
- }
169
- }
170
- },
171
-
172
- */
173
146
174
147
onDrag : function ( e ) {
175
148
176
- // Keep track of the direction of the drag for use during onDragOver
177
- var y = Event . getPageY ( e ) ;
178
-
179
- // var currentCol = Math.floor( ( Event.getPageX(e) - 4) / dashboard.columnWidth );
180
- // if (currentCol != this.col){
181
- // this.destination = null;
182
- // this.col = currentCol;
183
- // }
184
- if ( y < this . lastY ) {
185
- this . goingUp = true ;
186
- } else if ( y > this . lastY ) {
187
- this . goingUp = false ;
188
- }
189
149
190
- this . lastY = y ;
191
150
} ,
192
151
193
152
onDragOver : function ( e , id ) {
194
153
195
154
var srcEl = this . getEl ( ) ;
196
155
var destEl = Dom . get ( id ) ;
156
+ var currentCol = Math . floor ( ( Event . getPageX ( e ) - 4 ) / dashboard . columnWidth ) ;
197
157
198
- // We are only concerned with list items, we ignore the dragover
199
- // notifications for the empty dashboard
200
158
if ( destEl . className == "gadget-el" ) {
201
-
202
- this . _reorderLastMoved ( ) ;
159
+ this . _reorderLastMoved ( ) ;
203
160
this . _adaptCurrentColumnOrder ( e , id )
204
-
205
- DDM . refreshCache ( ) ;
161
+ DDM . refreshCache ( ) ;
206
162
}
163
+
164
+ //gadgets has moved to annother
165
+ //below gadgets in in the current column, move to the bottom of the column
166
+ else if ( currentCol != this . col ) {
167
+ this . _reorderLastMoved ( ) ;
168
+ this . _rearrangeColumn ( e , this . col ) ;
169
+ this . col = currentCol ;
170
+ var allGadgets = $$ ( ".gadget-el" ) ;
171
+ var x = dashboard . columns [ Math . floor ( ( Event . getPageX ( e ) - 4 ) / dashboard . columnWidth ) ] ;
172
+ var y = 5 + Dom . getY ( "dashboard" ) ;
173
+ for ( var i = 0 ; i < allGadgets . length ; i ++ ) {
174
+ if ( allGadgets [ i ] != this . getEl ( ) && Dom . getX ( allGadgets [ i ] ) == x ) {
175
+ if ( ( Dom . getY ( allGadgets [ i ] ) + allGadgets [ i ] . clientHeight ) > y )
176
+ y = Dom . getY ( allGadgets [ i ] ) + allGadgets [ i ] . clientHeight + 5 ;
177
+ }
178
+ }
179
+ this . destination = [ x , y ] ;
180
+ DDM . refreshCache ( ) ;
181
+ }
207
182
} ,
208
183
209
184
// move elements in the column the cursor entered downwards
0 commit comments