From 6ec905b666cf78f87851f8570570ad890be9f2c4 Mon Sep 17 00:00:00 2001 From: Henne Vogelsang Date: Fri, 22 Feb 2019 02:38:30 +0100 Subject: [PATCH] Fix scheduling Can't cache the event as the data is changed the scheduling js. We also can't verify the token in the EventSchedules controller as we are making susequent ajax calls and have no means to refresh the token for the second request. Make draggables scrollable. There also is no need to spam the console with debug code... Partly fixes #2353 --- app/assets/javascripts/osem-schedule.js | 8 +-- .../admin/event_schedules_controller.rb | 1 + app/views/admin/schedules/_event.html.haml | 59 +++++++++---------- 3 files changed, 32 insertions(+), 36 deletions(-) diff --git a/app/assets/javascripts/osem-schedule.js b/app/assets/javascripts/osem-schedule.js index 39e33922..aeb76ae3 100644 --- a/app/assets/javascripts/osem-schedule.js +++ b/app/assets/javascripts/osem-schedule.js @@ -18,13 +18,11 @@ var Schedule = { if(event_schedule_id != null){ var my_url = url + '/' + event_schedule_id; var success_callback = function(data) { - console.log(data); e.attr("event_schedule_id", null); e.appendTo($(".unscheduled-events")); e.find(".schedule-event-delete-button").hide(); } var error_callback = function(data) { - console.log(data); showError($.parseJSON(data.responseText).errors); } $.ajax({ @@ -57,12 +55,10 @@ var Schedule = { params['event_schedule']['schedule_id'] = schedule_id; } var success_callback = function(data) { - console.log(data); event.attr("event_schedule_id", data.event_schedule_id); event.find(".schedule-event-delete-button").show(); } var error_callback = function(data) { - console.log(data); showError($.parseJSON(data.responseText).errors); event.appendTo(previous_parent); } @@ -87,7 +83,6 @@ $(document).ready( function() { snap: '.schedule-room-slot', revertDuration: 200, revert: function (event, ui) { - console.log(event.attr); return !event; }, stop: function(event, ui) { @@ -96,7 +91,8 @@ $(document).ready( function() { }, opacity: 0.7, snapMode: "inner", - zIndex: 2 + zIndex: 2, + scroll: true }); // set room cells as droppable diff --git a/app/controllers/admin/event_schedules_controller.rb b/app/controllers/admin/event_schedules_controller.rb index 117ea238..8068b41e 100644 --- a/app/controllers/admin/event_schedules_controller.rb +++ b/app/controllers/admin/event_schedules_controller.rb @@ -3,6 +3,7 @@ module Admin class EventSchedulesController < Admin::BaseController load_and_authorize_resource :event_schedule + skip_before_action :verify_authenticity_token def create if @event_schedule.save diff --git a/app/views/admin/schedules/_event.html.haml b/app/views/admin/schedules/_event.html.haml index 20158689..9df56a39 100644 --- a/app/views/admin/schedules/_event.html.haml +++ b/app/views/admin/schedules/_event.html.haml @@ -1,30 +1,29 @@ -- cache [:admin, @conference, @program, :schedule, event] do - - cells_length = event.event_type.length / @program.schedule_interval - / this height fits the room cells - - compact_grid = @program.schedule_interval < 15 - - single_cell_height = compact_grid ? 32 : 58 - - height = (cells_length * single_cell_height) - - height -= 23 unless compact_grid - / subtracting the padding before calculate the number of lines - - lines = (height - 7) / 23 - - color = event.track.try(:color).present? ? event.track.try(:color) : 'FFFFFF' - - non_schedulable = event_schedule_id && (EventSchedule.find(event_schedule_id).schedule != @schedule) - .schedule-event{ style: "height: #{height}px; background-color: #{color}; color: #{contrast_color(color)}", | - id: "event-#{event.id}", | - event_id: event.id, | - length: cells_length, | - event_schedule_id: event_schedule_id, | - class: "#{'compact' if compact_grid} #{'non_schedulable' if non_schedulable}" } - .schedule-event-text{ style: "-webkit-line-clamp: #{lines}; height: #{lines * 23}px;"} - %span.schedule-event-delete-button{ onclick: "Schedule.remove(\'event-#{event.id}\');" } X - %b - = link_to(event.id, admin_conference_program_event_path(@conference, event)) - = event.speakers.collect(&:name).to_sentence - = ':' - = event.title - - if event.difficulty_level - %span.label.label-default= event.difficulty_level.title - - if event.event_type - %span.label.label-default= event.event_type.title - - if event.track - %span.label.label-default= event.track.short_name +- cells_length = event.event_type.length / @program.schedule_interval +/ this height fits the room cells +- compact_grid = @program.schedule_interval < 15 +- single_cell_height = compact_grid ? 32 : 58 +- height = (cells_length * single_cell_height) +- height -= 23 unless compact_grid +/ subtracting the padding before calculate the number of lines +- lines = (height - 7) / 23 +- color = event.track.try(:color).present? ? event.track.try(:color) : 'FFFFFF' +- non_schedulable = event_schedule_id && (EventSchedule.find(event_schedule_id).schedule != @schedule) +.schedule-event{ style: "height: #{height}px; background-color: #{color}; color: #{contrast_color(color)}", | + id: "event-#{event.id}", | + event_id: event.id, | + length: cells_length, | + event_schedule_id: event_schedule_id, | + class: "#{'compact' if compact_grid} #{'non_schedulable' if non_schedulable}" } + .schedule-event-text{ style: "-webkit-line-clamp: #{lines}; height: #{lines * 23}px;"} + %span.schedule-event-delete-button{ onclick: "Schedule.remove(\'event-#{event.id}\');" } X + %b + = link_to(event.id, admin_conference_program_event_path(@conference, event)) + = event.speakers.collect(&:name).to_sentence + = ':' + = event.title + - if event.difficulty_level + %span.label.label-default= event.difficulty_level.title + - if event.event_type + %span.label.label-default= event.event_type.title + - if event.track + %span.label.label-default= event.track.short_name