Action de revert sur un eventDrop
Bonjour, je viens d'implémenter le plugin fullcalendar qui fait appel à jquery 1.3 et jquery-ui pour faire un agenda comme celui de google avec des drag and drop.
Ici il est question de limiter la possibilité de dropper les évènements, pour cela je récupère dans mes tableaux JSON les limites et cela fonctionne bien puisque les alertes marchent à chaque fois que je fais déborder un évènement,
le souci est de faire revenir l'évènement à sa place initiale.
voici le code :
Code:
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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| eventDrop: function(event, delta, minuteDelta, revert) {
//alert(event.title + ' was moved ' + delta + ' days\n' + '(should probably update your database)');
// On fait la requête Ajax du fichier "pages/ajaxupdate_planning_formateur.php" en ajoutant le delta à la date de début et de fin
httpRequest('loading','pages/ajax_update_planning_formateur.php?delta_d_f='+delta+'&id_formateur_participe_stage='+event.id);
// On vérifie les dates desession puis on recharge le contenu de la div que l'on vient de déplacer
$("#calendar").delay(200,function(){
$.getJSON(
'https://intranet/pages/ajax_update_planning_on_event.php?id_formateur_participe_stage='+event.id,
function(json){
//On vérifie que la date de fin du drop n'est pas supérieure à celle de la session
//les limites de la session
var limitd = json.limit_d;
var limitf = json.limit_f;
// les valeurs de debut et de fin du drop
var drop_start = json.start;
var drop_end = json.end;
//la regexp
var reg = new RegExp("-","g");
//on explose les date de limites pour comparer
var tabd = limitd.split(reg);
var tabf = limitf.split(reg);
//on explose les dates du drop pour comparer
var tabdd = drop_start.split(reg);
var tabdf = drop_end.split(reg);
//les zones "dropables sont donc...
/*
for(i = tabd[2];i<=tabf[2];i++){
$('.fc-day' + i + ' > .fc-day-content').droppable({accept:'fc-event'});
}*/
//on crée les objet dates pour les comparer
var limite_debut = new Date(tabd[0],tabd[1],tabd[2]);
var limite_fin = new Date(tabf[0],tabf[1],tabf[2]);
var drop_debut = new Date(tabdd[0],tabdd[1],tabdd[2]);
var drop_fin = new Date(tabdf[0],tabdf[1],tabdf[2]);
if(drop_debut.getTime() < limite_debut.getTime()){
alert('Vous ne pouvez pas déplacer l\'intervention de ce formateur avant le début de la session');
var elem = $('#' + event.id).draggable({
cursor: "crosshair",
revert: "valid"
});
}
//alert($('#' + event.id).draggable.originalPosition);
//$('#' + event.id).animate(this.originalPosition, 200);
//revert();
if(drop_fin.getTime() > limite_fin.getTime()){
alert('Vous ne pouvez pas déplacer l\'intervention de ce formateur après la fin de la session');
var elem = $('#' + event.id).draggable('option','revert','true');
//alert($('#' + event.id).draggable.originalPosition);
//$('#' + event.id).animate(this.originalPosition, 200);
//revert();
}
$("#calendar").delay(100,function(){ // temoprisation pour éviter les pb de temps de maj de la base et d'affichage// On recharge l'event
event.title = json.title;
event.start = json.start;
event.end = json.end;
event.url = json.url;
$('#calendar').fullCalendar('updateEvent',event);
});
});
});
} |
j'ai pourtant mis l'option revert sur l'élément, mais rien n'y fait, pas d'erreur rien ! :(
Merci d'avance à ceux qui prendront la peine de se pencher sur mon problème :ccool: