The changes were saved after you drop an event, and now it only saves the schedule when you're done with the changes and click the "Save" button.
122 lines
3.7 KiB
JavaScript
122 lines
3.7 KiB
JavaScript
var conference; // Should be initialize in Schedule.initialize
|
|
var schedule_id; // Should be initialize in Schedule.initialize
|
|
|
|
var events_to_save = {};
|
|
var events_to_remove = {};
|
|
|
|
var Schedule = {
|
|
initialize: function(conference_param, schedule_id_param) {
|
|
conference = conference_param;
|
|
schedule_id = schedule_id_param;
|
|
},
|
|
remove: function(element) {
|
|
var e = $("#" + element);
|
|
var event_schedule_id = e.attr("event_schedule_id");
|
|
var event_id = e.attr("guid");
|
|
if(event_schedule_id != null){
|
|
events_to_remove[event_id] = { event_schedule_id: event_schedule_id };
|
|
}
|
|
delete events_to_save[event_id];
|
|
var unscheduled = $(".unscheduled-events");
|
|
e.appendTo(unscheduled);
|
|
e.find(".schedule-event-delete-button").hide();
|
|
},
|
|
add: function (event_id, room_id, date, time, event_schedule_id) {
|
|
var params = {
|
|
event: event_id,
|
|
schedule: schedule_id,
|
|
room: room_id,
|
|
date: date,
|
|
time: time,
|
|
event_schedule_id: event_schedule_id
|
|
};
|
|
events_to_save[event_id] = params;
|
|
delete events_to_remove[event_id];
|
|
$("#event-" + event_id).find(".schedule-event-delete-button").show();
|
|
},
|
|
saveEvents: function () {
|
|
var callback_save = function(data) {
|
|
console.log(data);
|
|
$("#event-" + data.event).attr("event_schedule_id", data.event_schedule_id);
|
|
}
|
|
var callback_remove = function(data) {
|
|
console.log(data);
|
|
$("#event-" + data.event).attr("event_schedule_id", null);
|
|
}
|
|
for (var key in events_to_save){
|
|
var type = 'POST';
|
|
var url = '/admin/conference/' + conference + '/event_schedule';
|
|
var event_schedule_id = events_to_save[key].event_schedule_id;
|
|
if(event_schedule_id != null){
|
|
type = 'PUT';
|
|
url += ('/' + event_schedule_id);
|
|
}
|
|
$.ajax({
|
|
url: url,
|
|
type: type,
|
|
data: events_to_save[key],
|
|
success: callback_save,
|
|
dataType : 'json'
|
|
});
|
|
}
|
|
for (var key in events_to_remove){
|
|
$.ajax({
|
|
url: '/admin/conference/' + conference + '/event_schedule/' + events_to_remove[key].event_schedule_id,
|
|
type: 'DELETE',
|
|
success: callback_remove,
|
|
dataType : 'json'
|
|
});
|
|
}
|
|
alert('Schedule correctly saved');
|
|
}
|
|
};
|
|
|
|
$(document).ready( function() {
|
|
// hide the remove button for unshceduled events
|
|
$('.unscheduled-events .schedule-event-delete-button').hide();
|
|
|
|
// set events as draggable
|
|
$('.schedule-event').draggable({
|
|
snap: '.schedule-room-slot',
|
|
revertDuration: 200,
|
|
revert: function (event, ui) {
|
|
console.log(event.attr);
|
|
return !event;
|
|
},
|
|
stop: function(event, ui) {
|
|
this._originalPosition = this._originalPosition || ui.originalPosition;
|
|
ui.helper.animate( this._originalPosition );
|
|
},
|
|
opacity: 0.7,
|
|
snapMode: "inner",
|
|
zIndex: 2
|
|
});
|
|
|
|
// set room cells as droppable
|
|
$('.schedule-room-slot').droppable({
|
|
accept: '.schedule-event',
|
|
tolerance: "pointer",
|
|
drop: function(event, ui) {
|
|
$(ui.draggable).appendTo(this);
|
|
var myId = $(ui.draggable).attr("guid");
|
|
var myRoom = $(this).attr("room-guid")
|
|
var myDate = $(this).attr("date");
|
|
var myTime = $(this).attr("hour");
|
|
var myEventSchedule = $(ui.draggable).attr("event_schedule_id");
|
|
$(ui.draggable).css("left", 0);
|
|
$(ui.draggable).css("top", 0);
|
|
$(this).css("background-color", "#ffffff");
|
|
Schedule.add(myId, myRoom, myDate, myTime, myEventSchedule);
|
|
},
|
|
over: function(event, ui) {
|
|
$(this).css("background-color", "#009ED8");
|
|
},
|
|
out: function(event, ui) {
|
|
$(this).css("background-color", "#ffffff");
|
|
}
|
|
});
|
|
|
|
$('.schedule-save').on('click', function(e) {
|
|
Schedule.saveEvents();
|
|
});
|
|
});
|