2017-06-14 2 views
2

Comment puis-je ajuster la date de fin d'un événement fullcalendar qui est supprimé dans le calendrier? J'utilise l'interface utilisateur Calendrier de AngularJS et fullcalendar-planificateur-1.3.2 et j'ai la fonction suivante qui gère un nouvel événement reçuLa définition de la date de fin de l'événement fullcalendar reçu échoue avec l'erreur

function eventReceive(event) { // called when a new event is received 
    console.log(event.start.format()); // 2017-06-14T12:00:00 
    console.log(event.end);    // null 
    event.end = moment(event.start).add(3600, 'seconds'); 
    console.log(event.end.format());  // 2017-06-14T13:00:00+00:00 
} 

Quand je laisse tomber le premier événement, tout fonctionne bien. Lorsque je dépose le deuxième événement, l'erreur ci-dessous se produit. Lorsque j'augmente la date de fin de 0 secondes au lieu de 3600 (ce qui signifie que la durée de l'événement est 0 et n'a que peu de sens), l'erreur ne se produit pas.

Uncaught TypeError: Cannot read property 'apply' of undefined 
at n.fb.time (fullcalendar.min.js:6) 
at r.d.internalApiVersion.o.isValidDate (scheduler.min.js:7) 
at r.d.internalApiVersion.o.spanToSegs (scheduler.min.js:7) 
at r.d.internalApiVersion.r.spanToSegs (scheduler.min.js:8) 
at r.eventSpanToSegs (fullcalendar.min.js:7) 
at r.eventRangeToSegs (fullcalendar.min.js:7) 
at Array.<anonymous> (fullcalendar.min.js:7) 
at Function.each (jquery.js:382) 
at r.eventsToSegs (fullcalendar.min.js:7) 
at renderFgEvents (fullcalendar.min.js:7) 
    fb.time @ fullcalendar.min.js:6 
    d.internalApiVersion.o.isValidDate @ scheduler.min.js:7 
    d.internalApiVersion.o.spanToSegs @ scheduler.min.js:7 
    d.internalApiVersion.r.spanToSegs @ scheduler.min.js:8 
    eventSpanToSegs @ fullcalendar.min.js:7 
    eventRangeToSegs @ fullcalendar.min.js:7 
    (anonymous) @ fullcalendar.min.js:7 
    each @ jquery.js:382 
    eventsToSegs @ fullcalendar.min.js:7 
    renderFgEvents @ fullcalendar.min.js:7 
    renderEvents @ fullcalendar.min.js:7 
    d.internalApiVersion.r.renderEvents @ scheduler.min.js:7 
    displayEvents @ fullcalendar.min.js:8 
    (anonymous) @ scheduler.min.js:6 
    d.internalApiVersion.X.whenResources @ scheduler.min.js:6 
    d.internalApiVersion.X.displayEvents @ scheduler.min.js:6 
    o @ fullcalendar.min.js:6 
    s @ fullcalendar.min.js:6 
    p @ fullcalendar.min.js:6 
    reportExternalDrop @ fullcalendar.min.js:8 
    reportExternalDrop @ scheduler.min.js:6 
    interactionEnd @ fullcalendar.min.js:7 
    trigger @ fullcalendar.min.js:7 
    handleInteractionEnd @ fullcalendar.min.js:7 
    handleInteractionEnd @ fullcalendar.min.js:7 
    endInteraction @ fullcalendar.min.js:7 
    f @ jquery.js:512 
    dispatch @ jquery.js:4435 
    r.handle @ jquery.js:4121 

J'ai trouvé une question similaire StackOverflow how to get start and end date of external dragged and dropped event on fullcalendar mais la date de fin est réglée dans le menu gestionnaire et donc pour chaque événement de chute. Je pense aussi que $ (cela) ne fonctionne pas correctement avec AngularJS parce que $ (ce) .data n'est pas une fonction

MISE À JOUR

Un autre symptôme: appeler UpdateEvent après avoir modifié l'événement fixe la date de fin de retour à null

function eventReceive(event) { // called when a new event is received 
    // here everything as above 
    console.log(event.start.format()); // 2017-06-14T12:00:00 
    console.log(event.end);    // null 
    event.end = moment(event.start).add(3600, 'seconds'); 
    console.log(event.end.format());  // 2017-06-14T13:00:00+00:00 

    // here additional test code 
    event.title = 'TEST'; 
    uiCalendarConfig.calendars.myCalendar.fullCalendar('updateEvent', event); 
    console.log(event.title);    // TEST, ok 
    console.log(event.end);    // null, not ok 
} 
+0

Je vois la même question. Je mets l'objet événement dans l'attribut data-event sur l'élément html. La valeur de fin est correcte dans le rappel de suppression pour les événements externes, mais dans eventReceive, elle revient à zéro, uniquement après avoir déplacé le même événement pour la deuxième fois. J'utilise FullCalendar version 3.4.0. – Jonathan

Répondre

0

Je l'ai compris. Le problème est que je définissais correctement l'attribut data-duration sur l'élément html lorsque je faisais glisser l'événement externe sur le calendrier la première fois que je le déposais. Après l'avoir supprimé du calendrier et l'avoir rajouté par la suite, je ne définissais pas correctement cet attribut data-duration. Cet attribut est ce qui détermine la date de fin dans le rappel eventReceive.

Consultez la documentation sur l'attribut de données de durée: https://fullcalendar.io/docs/dropping/droppable/