Introduce a "Save" button for the admin schedule

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.
This commit is contained in:
Ana 2016-07-22 17:57:26 +02:00
parent 2d95cd05ff
commit 99f71497cc
3 changed files with 52 additions and 37 deletions

View file

@ -1,6 +1,9 @@
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;
@ -9,56 +12,62 @@ var Schedule = {
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){
var url = '/admin/conference/' + conference + '/event_schedule/' + event_schedule_id;
var params = {
event: e.attr("guid"),
schedule: schedule_id
};
var callback = function(data) {
console.log(data);
e.attr("event_schedule_id", null);
}
$.ajax({
url: url,
type: 'DELETE',
data: params,
success: callback,
dataType : 'json'
});
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 url = '/admin/conference/' + conference + '/event_schedule';
var type = 'POST'
if(event_schedule_id != null){
type = 'PUT';
url += ('/' + event_schedule_id);
}
var params = {
event: event_id,
schedule: schedule_id,
room: room_id,
date: date,
time: time,
schedule: schedule_id
event_schedule_id: event_schedule_id
};
var callback = function(data) {
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);
var e = $("#event-" + event_id);
e.attr("event_schedule_id", data.event_schedule_id);
e.find(".schedule-event-delete-button").show();
$("#event-" + data.event).attr("event_schedule_id", data.event_schedule_id);
}
$.ajax({
url: url,
type: type,
data: params,
success: callback,
dataType : 'json'
});
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');
}
};
@ -106,4 +115,8 @@ $(document).ready( function() {
$(this).css("background-color", "#ffffff");
}
});
$('.schedule-save').on('click', function(e) {
Schedule.saveEvents();
});
});

View file

@ -4,17 +4,17 @@ module Admin
def create
event_schedule = EventSchedule.create(get_event_schedule_params(params))
render json: { 'status' => 'ok', event_schedule_id: event_schedule.id }
render json: { 'status' => 'ok', event: event_schedule.event.guid, event_schedule_id: event_schedule.id }
end
def update
@event_schedule.update(get_event_schedule_params(params))
render json: { 'status' => 'ok', event_schedule_id: @event_schedule.id }
render json: { 'status' => 'ok', event: @event_schedule.event.guid, event_schedule_id: @event_schedule.id }
end
def destroy
@event_schedule.destroy if @event_schedule
render json: { 'status' => 'ok' }
render json: { 'status' => 'ok', event: @event_schedule.event.guid }
end
private

View file

@ -21,6 +21,8 @@
off_color: 'warning',
on_text: 'Yes',
off_text: 'No' }
%button.btn.btn-success.schedule-save
Save
.h4
Unscheduled events
.unscheduled-events