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 conference; // Should be initialize in Schedule.initialize
var schedule_id; // 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 = { var Schedule = {
initialize: function(conference_param, schedule_id_param) { initialize: function(conference_param, schedule_id_param) {
conference = conference_param; conference = conference_param;
@ -9,57 +12,63 @@ var Schedule = {
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");
var event_id = e.attr("guid");
if(event_schedule_id != null){ if(event_schedule_id != null){
var url = '/admin/conference/' + conference + '/event_schedule/' + event_schedule_id; events_to_remove[event_id] = { event_schedule_id: 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'
});
} }
delete events_to_save[event_id];
var unscheduled = $(".unscheduled-events"); var unscheduled = $(".unscheduled-events");
e.appendTo(unscheduled); e.appendTo(unscheduled);
e.find(".schedule-event-delete-button").hide(); e.find(".schedule-event-delete-button").hide();
}, },
add: function (event_id, room_id, date, time, event_schedule_id) { 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 = { var params = {
event: event_id, event: event_id,
schedule: schedule_id, schedule: schedule_id,
room: room_id, room: room_id,
date: date, date: date,
time: time, 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); console.log(data);
var e = $("#event-" + event_id); $("#event-" + data.event).attr("event_schedule_id", data.event_schedule_id);
e.attr("event_schedule_id", data.event_schedule_id); }
e.find(".schedule-event-delete-button").show(); 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({ $.ajax({
url: url, url: url,
type: type, type: type,
data: params, data: events_to_save[key],
success: callback, success: callback_save,
dataType : 'json' 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() { $(document).ready( function() {
@ -106,4 +115,8 @@ $(document).ready( function() {
$(this).css("background-color", "#ffffff"); $(this).css("background-color", "#ffffff");
} }
}); });
$('.schedule-save').on('click', function(e) {
Schedule.saveEvents();
});
}); });

View file

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

View file

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