Avoid overlapping in the admin schedule

Not allow that an event is scheduled at the same time than other event in the admin schedule.
This commit is contained in:
Ana 2016-07-23 00:23:24 +02:00
parent 99f71497cc
commit 325a5ae77a

View file

@ -9,6 +9,18 @@ var Schedule = {
conference = conference_param; conference = conference_param;
schedule_id = schedule_id_param; schedule_id = schedule_id_param;
}, },
invalidateCells: function(element, length) {
for (i = 0; i < length; i++) {
element.addClass('with-event');
element = element.next();
}
},
validateCells: function(element, length) {
for (i = 0; i < length; i++) {
element.removeClass('with-event');
element = element.next();
}
},
remove: function(element) { remove: function(element) {
var e = $("#" + element); var e = $("#" + element);
var event_schedule_id = e.attr("event_schedule_id"); var event_schedule_id = e.attr("event_schedule_id");
@ -18,6 +30,7 @@ var Schedule = {
} }
delete events_to_save[event_id]; delete events_to_save[event_id];
var unscheduled = $(".unscheduled-events"); var unscheduled = $(".unscheduled-events");
Schedule.validateCells(e.parent(), e.attr("length"));
e.appendTo(unscheduled); e.appendTo(unscheduled);
e.find(".schedule-event-delete-button").hide(); e.find(".schedule-event-delete-button").hide();
}, },
@ -81,8 +94,18 @@ $(document).ready( function() {
revertDuration: 200, revertDuration: 200,
revert: function (event, ui) { revert: function (event, ui) {
console.log(event.attr); console.log(event.attr);
var dropable = $(this).parent();
if(!dropable.hasClass('unscheduled-events')){
Schedule.invalidateCells(dropable, $(this).attr("length"));
}
return !event; return !event;
}, },
start: function(event, ui) {
var dropable = $(this).parent();
if(!dropable.hasClass('unscheduled-events')){
Schedule.validateCells(dropable, $(this).attr("length"));
}
},
stop: function(event, ui) { stop: function(event, ui) {
this._originalPosition = this._originalPosition || ui.originalPosition; this._originalPosition = this._originalPosition || ui.originalPosition;
ui.helper.animate( this._originalPosition ); ui.helper.animate( this._originalPosition );
@ -96,9 +119,12 @@ $(document).ready( function() {
$('.schedule-room-slot').droppable({ $('.schedule-room-slot').droppable({
accept: '.schedule-event', accept: '.schedule-event',
tolerance: "pointer", tolerance: "pointer",
accept: function(dropElem){
return !$(this).hasClass('with-event');
},
drop: function(event, ui) { drop: function(event, ui) {
$(ui.draggable).appendTo(this);
var myId = $(ui.draggable).attr("guid"); var myId = $(ui.draggable).attr("guid");
var myLength = $(ui.draggable).attr("length");
var myRoom = $(this).attr("room-guid") var myRoom = $(this).attr("room-guid")
var myDate = $(this).attr("date"); var myDate = $(this).attr("date");
var myTime = $(this).attr("hour"); var myTime = $(this).attr("hour");
@ -107,6 +133,8 @@ $(document).ready( function() {
$(ui.draggable).css("top", 0); $(ui.draggable).css("top", 0);
$(this).css("background-color", "#ffffff"); $(this).css("background-color", "#ffffff");
Schedule.add(myId, myRoom, myDate, myTime, myEventSchedule); Schedule.add(myId, myRoom, myDate, myTime, myEventSchedule);
Schedule.invalidateCells($(this), myLength);
$(ui.draggable).appendTo(this);
}, },
over: function(event, ui) { over: function(event, ui) {
$(this).css("background-color", "#009ED8"); $(this).css("background-color", "#009ED8");