var layout = Roo.BorderLayout.create({
center: {
margins:{left:3,top:3,right:3,bottom:3},
- panels: [new Roo.GridPanel(grid)]
+ panels: [new Roo.panel.Grid(grid)]
}
}, 'grid-panel');
listeners : {
drop : function (source, e, data)
{
- Roo.log("DROP");
+ //Roo.log("DROP");
var t = Roo.lib.Event.getTarget(e);
var ri = grid.view.findRowIndex(t);
- Roo.log(e);
- Roo.log(data);
-
-
+ //Roo.log(e);
+ //Roo.log(data);
+ var dp = this.getDropPoint(e,data);
+ // at this point should have above or below..
+ var os = grid.selModel.getSelectedCell()
+ grid.ds.remove(data.selections[0]);
+ grid.ds.insert(ri + (dp == 'below' ? 1 : 0) , data.selections);
+ grid.selModel.select(ri + (dp == 'below' ? 1 : 0), os[1])
+ this.expandRow(false);
+
},
over : function (source, e, data)
{
- var dp = this.getDropPoint(e,data);
- Roo.log(dp);
+ //
+ // if drag point == drop point...
+ var t = Roo.lib.Event.getTarget(e);
+ var ri = grid.view.findRowIndex(t);
+ var dp = this.getDropPoint(e,data);
+ Roo.log(dp);
+ //Roo.log(JSON.stringify({ dp: dp, ri: ri, src_ri: data.rowIndex}));
+ if(ri == data.rowIndex ||
+ (dp == 'above' && ri-1 == data.rowIndex) ||
+ (dp == 'below' && ri+1 == data.rowIndex)
+ ) {
+ this.expandRow(false);
- Roo.log([source,e,data]);
+ this.valid = false;
+ return;
+ }
+ this.expandRow(ri, dp);
+
+
+ this.valid = 'ok-add';
+ //Roo.log("SET VALID TO: " + this.valid)
+ //Roo.log([source,e,data]);
// Roo.log("dragover");
var s = _this.grid.getSelectionModel().getSelections();
*/
//if (!isFromGroup && isToGroup) {
- this.valid = 'ok-add';
+ //this.valid = 'ok-add';
}
},
ddGroup : 'GridDD',
-
+ activeDom : false,
+ expandRow : function(ri,pos)
+ {
+ var dom = grid.view.getRow(ri);
+ //Roo.log(dom);
+ //if (this.activeDom == dom) {
+ // return;
+ //}
+ if (this.activeDom) {
+ Roo.get(this.activeDom).removeClass('x-grid-dd-above');
+ Roo.get(this.activeDom).removeClass('x-grid-dd-below');
+
+ this.activeDom = false;
+ }
+
+ if (ri === false) {
+ return;
+ }
+ Roo.get(dom).addClass('x-grid-dd-' + pos);
+
+ this.activeDom = dom;
+
+
+ },
getDropPoint : function(e, data)
{
//var tn = n.node;
// data is from griddragzone
- var dragEl = data.ddel;
+ var te = Roo.lib.Event.getTarget(e);
+ var ri = Roo.fly(te).findParent("td", 6);
+
+
+ var dragEl = ri;
var t = Roo.lib.Dom.getY(dragEl),
b = t + dragEl.offsetHeight;
var y = Roo.lib.Event.getPageY(e);
var q = (b - t) / 2;
- Roo.log([y, t, q, b])
if(y >= t && y < (t + q)){
return "above";
if(y >= b-q && y <= b){
return "below";
}
+ Roo.log( JSON.stringify( {pos: y, dragtop : t, mid : q, drabgot: b }));
+
+
return false;
},
});