Bonjour,
Je suis nouveau sur ce forum mais pas nouveau en informatique
, je fais appel aux âmes charitables qui passe par là.
Je souhaite faire un compte rendu d'activité avec des noms de clients qui sont déplaçables dans un tableau en suivant le même principe que ce qui est proposé au dessus. Le soucis c'est que le nom du client que je déplace doit pouvoir être placé à différents endroit en même temps, mais pour l'instant pas possible car le nom du client se supprime de la liste.
Plutôt qu'un long discours, voici mon code simplifié:
Index.html
style.css
javascript.js
En clair je voudrais pouvoir cliquer glisser "client1" dans la liste et quand je le lâche ça me créé une nouvelle instance de ce nom de client. Et quand je clique et glisse cette nouvelle instance vers une autre cellule ça doit pas créer de nouvelles instance.
J'espère être clair
Modifié par jmpicot (04 Jan 2010 - 17:49)
Je suis nouveau sur ce forum mais pas nouveau en informatique

Je souhaite faire un compte rendu d'activité avec des noms de clients qui sont déplaçables dans un tableau en suivant le même principe que ce qui est proposé au dessus. Le soucis c'est que le nom du client que je déplace doit pouvoir être placé à différents endroit en même temps, mais pour l'instant pas possible car le nom du client se supprime de la liste.
Plutôt qu'un long discours, voici mon code simplifié:

Index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<link rel="stylesheet" href="./style.css" type="text/css" media="screen"/>
<script type="text/javascript" src="./scriptaculous-1.8.3/lib/prototype.js"></script>
<script type="text/javascript" src="./scriptaculous-1.8.3/src/scriptaculous.js?load=effects,dragdrop"></script>
<script type="text/javascript" src="./javascript.js"></script>
<title>Test: drag and drop in table</title>
</head>
<body>
</body>
</html>
style.css
.table { margin:0; padding:0; width:70em; font-size:.9em; float:left;}
.petite-ligne{ width:100%; height:22px;}
.ligne{ width:100%; height:52px;}
.cellule { height:50px; width:3.5em; float:left; display:block; }
.cellule-vide { height:20px; width:6em; float:left; display:block; }
.cellule-horaire { height:20px; width:3.5em; float:left; display:block;}
.cellule-date { height:50px; width:6em; float:left; display:block;}
.cellule-content-vide{ height:18px; margin:1px; border:1px solid #CCC; background:#CAF; }
.cellule-content{ height:48px; margin:1px; border:1px solid #CCC; background:#ACF; text-align:center; }
.cellule-content-horaire{ height:18px; margin:1px; border:1px solid #CCC; background:#ACF; text-align:center;}
.cellule-content-date{ height:48px; margin:1px; border:1px solid #CCC; background:#FCA; text-align:center;}
.hover{ border:1px solid #F00; background:#FBB; }
.tableClient { margin:0; padding:0; border:1px solid #CCC; width:11em; font-size:.9em; float:left; margin-left:2em;}
.client{ display:block; border: 1px solid #FFF; background:#333; color:#FFF; height:20px; }
javascript.js
Event.observe(window, 'load', init);
function init() {
var table = new Element('div',{'class':'table'});
for (var rows = 0; rows < 32; rows++) {
if (rows == 0) {
var ligne = new Element('div',{'class':'petite-ligne'});
} else {
var ligne = new Element('div',{'class':'ligne'});
}
for (var cols = 0; cols < 19; cols++) {
if (rows == 0 && cols == 0) {
var cellule = new Element('div',{'class':'cellule-vide'});
var cellule_content_vide = new Element('div',{'class':'cellule-content-vide'});
cellule.insert(cellule_content_vide);
} else if (rows == 0 && cols != 0) {
var cellule = new Element('div',{'class':'cellule-horaire'});
var cellule_content_horaire = new Element('div',{'id': (cols+5)+'h', 'class':'cellule-content-horaire'}).update((cols+5)+'h');
cellule.insert(cellule_content_horaire);
} else if (rows != 0 && cols == 0) {
var cellule = new Element('div',{'class':'cellule-date'});
var cellule_content_date = new Element('div',{'class':'cellule-content-date'}).update(rows+'/12/1984');
cellule.insert(cellule_content_date);
} else {
var cellule = new Element('div',{'class':'cellule'});
var cellule_content = new Element('div',{'id':rows+'-'+(cols+5)+'h', 'class':'cellule-content'});
cellule.insert(cellule_content);
}
ligne.insert(cellule);
}
table.insert(ligne);
}
$(document.body).insert(table);
var tableClient = new Element('div',{'class':'tableClient'});
var ligneClient = new Element('div',{'class':'ligne'});
var celluleClient = new Element('div',{'class':'cellule'});
var client_content = new Element('div',{'class':'cellule-content'});
var client1 = new Element('div',{'id':'client1', 'class':'client'}).update('client1');
var client2 = new Element('div',{'class':'client'}).update('client2');
client_content.insert(client1);
client_content.insert(client2);
celluleClient.insert(client_content);
ligneClient.insert(celluleClient);
tableClient.insert(ligneClient);
$(document.body).insert(tableClient);
$$("div.cellule-content").each(function(el){
Droppables.add(el,{
'accept': 'client',
'onDrop': updateEventCram,
'hoverclass': 'hover'
});
});
$$("div.client").each(function(el){
new Draggable(el, {
'ghosting': false,
'revert': function(eventA) {
eventA.style.left = '0px';
eventA.style.top = '0px';
},
'onStart': function(obj,mouse){
obj.element.parentNode.style.zIndex=1;}
});
});
}
function updateEventCram(dragEl, dropEl, event){
dragEl.parentNode.style.zIndex=0;
dropEl.insert({bottom:dragEl});
}
En clair je voudrais pouvoir cliquer glisser "client1" dans la liste et quand je le lâche ça me créé une nouvelle instance de ce nom de client. Et quand je clique et glisse cette nouvelle instance vers une autre cellule ça doit pas créer de nouvelles instance.

J'espère être clair

Modifié par jmpicot (04 Jan 2010 - 17:49)