DJ Engineer
2006-Nov-16 14:17 UTC
Draggable/Droppable revert positioning and/or relative positioning problems.
Hello everyone. I am still having problems with my code. I just submitted a bug, but perhaps someone here could try and help me out as well. When I drag and item to a drop location (I have manually positioned these drop locations using javascript), the drop locations will move to their original page positions. The divs are all relative. Here''s the code, I have 2 files, the page code and the stylesheet code. You will have to have the scriptaculous, prototype, dragdrop, effects, and control javascript code already. Here is the page code: [code] <code> <pre> {{{ <html><head> <style type="text/css" media="screen">@import "images/test.css";</style> <script src="images/prototype.js" language="javascript" type="text/javascript"></script> <script src="images/scriptaculous.js" language="javascript" type="text/javascript"></script> <script src="images/controls.js" language="javascript" type="text/javascript"></script> <script src="images/effects.js" language="javascript" type="text/javascript"></script> <script src="images/dragdrop.js" language="javascript" type="text/javascript"></script> </head> <body onload="setup()"> <div id="drag" class="drag">Hello</div> <div id="box"> <div id="drop1" class="drop"></div><div id="drop2" class="drop"></div><div id="drop3" class="drop"></div> <div id="drop4" class="drop"></div><div id="drop5" class="drop"></div><div id="drop6" class="drop"></div> </div> </body> <script language="javascript" type="text/javascript"> var drag4Drop = new Array(); function setup(){ positionTable(); createDrag(); } function createDrag(){ var dragElement = document.getElementById(''drag''); var theEl = new Array(); for(var i = 0; i < 6; ++i) theEl[i] = document.getElementById(''drop'' + (i+1)); var dragObj = new Draggable(dragElement.id,{revert:true,ghosting:true}); for(var i = 0; i < 6; ++i){ Droppables.add(theEl[i].id, {accept:[''drag'',''hasData'',''drop''], hoverclass:''over'', onDrop: function(element1, element2){//element1 - drag; element2 - drop if(element1.className == "drag"){ element2.innerText = element1.innerText; for(var i = 0; i < 6; ++i) if(element2.id==("drop" + (i+1))) drag4Drop[i] = new Draggable(element2.id,{revert:true,ghosting:true}); hasDataChangeStyle(element2); } else if(element1.className == "hasData"){ if(element2.innerText==""){ for(var j = 0; j < 6; ++j){ if(element1.id == ("drop" + (j+1))) drag4Drop[j].destroy(); if(element2.id == ("drop" + (j+1))) drag4Drop[0] = new Draggable(element2.id,{revert:true,ghosting:true}); } element2.innerText = element1.innerText; element1.innerText = ""; hasNoDataChangeStyle(element1); hasDataChangeStyle(element2); } else{ var temp = element1.innerText; element1.innerText = element2.innerText; element2.innerText = temp; } } }}); } Droppables.add(dragElement.id,{accept:[''hasData''],onDrop: function(element1, element2){ element1.innerText = ""; for(var i = 0; i < 6; ++i) if(element1.id == ("drop" + (i+1))) drag4Drop[i].destroy(); hasNoDataChangeStyle(element1);}}); } function hasDataChangeStyle(element){element.className = "hasData";} function hasNoDataChangeStyle(element){element.className = "drop";} function positionTable(){ var element; for(var i = 0; i < 6; ++i){ element = document.getElementById("drop" + (i+1)); if(i < 3) element.style.top = 5 + 5*i - 55*i + "px"; else element.style.top = 5 + 5*i - 55*i + 55 + "px"; element.style.left = (((i)%3))*55 + 5 + "px"; } } </script> </html> }}} </pre> </code> [/code] Here is the stylesheet code: [code] <code> <pre> {{{ .hasData{ background:#0000FF; color:#FFFFFF; width:50px; height:50px; } .drop{ position:relative; background-color:#FF0000; color:#FFFFFF; width:50px; height:50px; } .drag{ position:relative; top:0px; left:0px; background-color:#000000; color:#FFFFFF; width:50px; height:50px; } #box{ position:absolute; background-color:#565656; color:#000000; width:170px; height:300px; overflow:hidden; z-index:-1; } .over{ background-color:#FFFFFF; color:#000000; border:1px solid #000000; overflow:hidden; } .blank{ background-color:#FFFFFF; color:#FFFFFF; border:0px; } }}} </pre> </code> [/code] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
DJ Engineer
2006-Nov-16 18:14 UTC
Re: Draggable/Droppable revert positioning and/or relative positioning problems.
Here''s a link to the a demo page. http://rubyonrails-spinoffs.googlegroups.com/web/test.htm?gda=W3uoSz4AAABjCujD-N5kwQJ5nOKsudZZQGKHOe05HC1ea-xYV7X9ChVJVT3hrgKrn_IySc8la3ImwalfbFNGWiV7zhB8JdfX&hl=en --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---