Bonjour.

J'utilise Dojo 1.1.1 dans le développement d'un site web.
J'arrive a faire du drag and drop pas de soucis.
Mais je voudrais qu'il n'y ai qu'un seul element dans des zones droppables.
On me demande de faire un truc a la netvibes, avec un nombre de cases
fixes.
J'ai une liste de graphs a gauche et des cases a remplir mais avec un seul
type de graphs a chaque fois.

Lorsque l'on droppe un element, si il y a un element existant alors
cet element est echanger avec l'element droppé:

Est-ce qu'il e"st possible au callback onDndDrop
d'echanger l'element existant entre la source et la target.

J'ai essayé avec insucces , je ne comprends pas ce qu'est _normalizedCreator dans container.js

Est ce que quelqu'un l'a deja fait ?

Voici une partie du source.

Merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<div class="cartContainer" >
<div dojoType="dijit.layout.BorderContainer" design="sidebar" id="main">
<div dojoType="dijit.layout.ContentPane" region="leading" style="background-color: #acb386; width: 100px;" >
 <div id="items" class="dndContainer products" dojoType="dojo.dnd.Source" accept="cartItem" style="height:100%; width: 100px;">    
    <legend>Stock items</legend>
    <div dndType="cartItem" class="dojoDndItem" title="orange" ><img src="BarChartImg/images.jpeg"> orange</div>
    <div dndType="cartItem" class="dojoDndItem" title="apple" ><img src="BarChartImg/images2.jpeg"> apple</div>
    <div dndType="cartItem" class="dojoDndItem" title="pear" ><img src="BarChartImg/images3.jpeg"> pear</div>
	<div dndType="cartItem" class="dojoDndItem" title="pear" > <img src="BarChartImg/images4.jpeg"> pear</div>
	<div dndType="cartItem" class="dojoDndItem" title="pear" > <img src="BarChartImg/images5.jpeg"> pear</div>
	<div dndType="cartItem" class="dojoDndItem" title="pear" ><img src="BarChartImg/images6.jpeg"> pear</div>
  </div>
			</div>
 
<div dojoType="dijit.layout.ContentPane" region="center" style="background-color: #f5ffbf; padding: 10px;">
<table WIDTH=400 HEIGHT=400>
  <tr>
  <td  id="basket_1" class="dndContainer basket" dojoType="dojo.dnd.Source" accept="cartItem">
  <script type="dojo/connect" event="onDndDrop" args="source, nodes, copy, target">         
 
	var children = target.getAllNodes();
	for(var i = 0;i<children.length;i++){
     console.debug(children[i]);
    }
	if(children.length > 1)
	{	
		console.debug("SOURCE "+ source.node.id);
		console.debug("TARGET "+ target.node.id);		
		source.node.appendChild(children[0]);
		target.node.removeChild(children[0]);
		target.delItem(children[0].id);
 
		//var t = source._normalizedCreator(children[0]);
		//source.setItem(t.node.id, {data: t.data, type: t.type});
 
	}
  </script>
 
   <legend>Cart</legend>   
  </td>
  <td id="basket_2" class="dndContainer basket" dojoType="dojo.dnd.Source" accept="cartItem">  
 
  <legend>Cart</legend>    
  </td>
  </tr>
  <tr>
  <td  id="basket_3" class="dndContainer basket" dojoType="dojo.dnd.Source" accept="cartItem">  
  <legend>Cart</legend>
 
  </td>
  <td  id="basket_4" class="dndContainer basket" dojoType="dojo.dnd.Source" accept="cartItem">  
  <legend>Cart</legend>
 
  </td>
  </tr>
  </table>