0

I am using http://fullcalendar.io/ My user can create multiple events to indicate his disponibilities. Everytime he selects a slot, he is creating an event :

 $('#calendar').fullCalendar({
    defaultView:  'agendaWeek',
    lang:         "fr",
    header:       false,
    timezone:     'local',
    minTime:      "08:00:00",
    columnFormat: 'dddd',
    selectHelper: true,
    selectable:   true,
    select: function(start, end, id, allDay) {
      var eventData = {
        start: start,
        end: end,
        block:  true,
        editable: true,
        id: id,
        backgroundColor: "#469278"
      };

      // console.log(moment(eventData.start["_d"]).format("dddd"));
      // console.log(moment(eventData.end["_d"]).format("dddd"));


      $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true

      // console.log(eventData);
      // if (moment(eventData.start["_d"]).format("dddd") != moment(eventData.end["_d"]).format("dddd")) {
      //   $('#calendar').fullCalendar('unselect');
      // };
      var day         = moment(eventData.start["_d"]).format("dddd");
      var start_time  = moment(eventData.start["_d"]).format("HH:mm");
      var end_time    = moment(eventData.end["_d"]).format("HH:mm");
      var id          = moment(eventData.end["_id"]);

      var slot        = {
        day: day,
        start_time: start_time,
        end_time: end_time
      };
      array_dispo.push(slot);

      $("#dispo_array").val(JSON.stringify(array_dispo));
      $('#calendar').fullCalendar('unselect');
    },
    editable:     true,
    eventLimit:   true,
    eventClick: function(event, element) {
      if(confirm('Voulez-vous supprimer cette dispo?')) {
        $('#calendar').fullCalendar('removeEvents',event._id);
      }
    },

    selectOverlap: function(event) {
      return ! event.block;
    }
  });
});
          // console.log(moment(eventData.start["_d"]).format("dddd"));
          // console.log(moment(eventData.end["_d"]).format("dddd"));


          $('#calendar').fullCalendar('renderEvent', eventData, true); // stick? = true

          // console.log(eventData);
          // if (moment(eventData.start["_d"]).format("dddd") != moment(eventData.end["_d"]).format("dddd")) {
          //   $('#calendar').fullCalendar('unselect');
          // };
          var day         = moment(eventData.start["_d"]).format("dddd");
          var start_time  = moment(eventData.start["_d"]).format("HH:mm");
          var end_time    = moment(eventData.end["_d"]).format("HH:mm");
          var id          = moment(eventData.end["_id"]);

          var slot        = {
            day: day,
            start_time: start_time,
            end_time: end_time
            id: id

          };
          array_dispo.push(slot);

          $("#dispo_array").val(JSON.stringify(array_dispo));
          $('#calendar').fullCalendar('unselect');
        },

Everytime a user selects a timeslot, it creates an Event Object http://fullcalendar.io/docs/event_data/Event_Object/ with the eventData I specified that is sent as a JSON in a hidden field. Problem is I didnt manage to get the id of this event object that I suppose is sent by fullcalendar. The object I get when I do console.log(eventData); is :

Object {start: Moment, end: Moment, id: jQuery.Event, block: true, editable: true…}

but this jQuery.event doesnt have a unique id, it looks like this :

id: jQuery.Event
altKey: false
bubbles: true
button: 0
buttons: 0
cancelable: true
clientX: 336
clientY: 290
ctrlKey: false

I need this id if I want to delete or modify an event object later on. How can I get this event id ?

David Geismar
  • 3,152
  • 6
  • 41
  • 80

1 Answers1

0

You specify your own id in the eventData object, it's 1 in the example you've given. Make sure to have these unique and then you can pass this id to .fullCalendar( 'removeEvents' [, idOrFilter ] ) for example.

Find examples of creating unique id's at: Create GUID / UUID in JavaScript?

Community
  • 1
  • 1
Gudbergur
  • 2,684
  • 2
  • 16
  • 5