diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 6548a3fe..18c5d6f6 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -55,6 +55,7 @@ //= require bootstrap-select //= require osem-survey //= require pagy +//= require fullcalendar-scheduler/main.js $(document).ready(function() { $('a[disabled=disabled]').click(function(event){ diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index f5c58982..520eedbe 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -26,4 +26,6 @@ *= require osem-navbar *= require mastodon *= require conferences + + *= require fullcalendar-scheduler/main.css */ diff --git a/app/services/full_calendar_formatter.rb b/app/services/full_calendar_formatter.rb index 208eba2e..4deaa126 100644 --- a/app/services/full_calendar_formatter.rb +++ b/app/services/full_calendar_formatter.rb @@ -19,11 +19,11 @@ class FullCalendarFormatter def event_schedule_to_resource(event_schedule) { - id: event_schedule.event.guid, - title: event_schedule.event.title, - start: event_schedule.start_time, - end: event_schedule.end_time, - source: event_schedule.room.guid + id: event_schedule.event.guid, + title: event_schedule.event.title, + start: event_schedule.start_time, + end: event_schedule.end_time, + resourceId: event_schedule.room.guid } end end diff --git a/app/views/schedules/vertical_schedule.haml b/app/views/schedules/vertical_schedule.haml index c3ff7534..a494bfd5 100644 --- a/app/views/schedules/vertical_schedule.haml +++ b/app/views/schedules/vertical_schedule.haml @@ -14,8 +14,8 @@ var calendar = new FullCalendar.Calendar(calendarEl, { timeZone: 'UTC', initialView: 'resourceTimeGridDay', - resources: "<%= @rooms >", - events: "<%= @event_schedules >" + resources: #{@rooms.html_safe}, + events: #{@event_schedules.html_safe} }); calendar.render(); diff --git a/config/application.rb b/config/application.rb index 4e5e9b87..4d52dc2c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -80,5 +80,7 @@ module Osem end end end + + config.assets.paths << Rails.root.join('node_modules') end end diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..25f236f4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,87 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@fullcalendar/common": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fullcalendar/common/-/common-5.6.0.tgz", + "integrity": "sha512-4i4kZDVpRvfdKoJHRljDHsoYu466Odor9FhekP+67dIUoNnXSDTnQRmGfURwiF4RwaTsdWKe2+B7gors9G7zZA==", + "requires": { + "tslib": "^2.0.3" + } + }, + "@fullcalendar/daygrid": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-5.6.0.tgz", + "integrity": "sha512-UaNn6/vKQ3zI4/sDhrMACkIHOSZb/MA0JGlvvw3OTYFULqE5TISuYYnDbo9S1Wdz3AbTBvCzYy5Qk1vZQFsGwg==", + "requires": { + "@fullcalendar/common": "~5.6.0", + "tslib": "^2.0.3" + } + }, + "@fullcalendar/premium-common": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fullcalendar/premium-common/-/premium-common-5.6.0.tgz", + "integrity": "sha512-AtcoKphdGasBHNlN9DD7Kxc/7EmCUpIRu7JVRJYnrm4cR8rM3gCUCMMoPt8pyEfy4P/GN/4wGko54kgPkLzUTg==", + "requires": { + "@fullcalendar/common": "~5.6.0", + "tslib": "^2.0.3" + } + }, + "@fullcalendar/resource-common": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-common/-/resource-common-5.6.0.tgz", + "integrity": "sha512-9FTGQcUO+ER6U44Tj32c+pSvsJ+5CrGs1RDxRyei8UIvUwY6SxQySgdAozW3yxwozEoc5TZ7xLrlLw7vKAwN6w==", + "requires": { + "@fullcalendar/common": "~5.6.0", + "@fullcalendar/premium-common": "~5.6.0", + "tslib": "^2.0.3" + } + }, + "@fullcalendar/resource-daygrid": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-daygrid/-/resource-daygrid-5.6.0.tgz", + "integrity": "sha512-KWV61gxtgFoaFTPi6b/MP/FaROMtu8c2ijzznMY5VPjQzjU5CSaWLpPht1T2ZOije3QTiDZ8Gx4M4yLFKMHCAg==", + "requires": { + "@fullcalendar/common": "~5.6.0", + "@fullcalendar/daygrid": "~5.6.0", + "@fullcalendar/premium-common": "~5.6.0", + "@fullcalendar/resource-common": "~5.6.0", + "tslib": "^2.0.3" + } + }, + "@fullcalendar/resource-timegrid": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fullcalendar/resource-timegrid/-/resource-timegrid-5.6.0.tgz", + "integrity": "sha512-BAiSTeuL8P0YwG2o6roavDP2dlA5cXFrxcYhx4qvEyqxscmGunI5NnxhmXafpnWO60PgvwHO++EoJvAsR3WSSg==", + "requires": { + "@fullcalendar/common": "~5.6.0", + "@fullcalendar/premium-common": "~5.6.0", + "@fullcalendar/resource-common": "~5.6.0", + "@fullcalendar/resource-daygrid": "~5.6.0", + "@fullcalendar/timegrid": "~5.6.0", + "tslib": "^2.0.3" + } + }, + "@fullcalendar/timegrid": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-5.6.0.tgz", + "integrity": "sha512-NG55pzPvrzZEuVq+/Vn1ZbyKARVjsE6PzhiOHvJuyt3gzVPeWjXGUWjDN3BSDZ8p/4dthbF6H9mCPia977aV1g==", + "requires": { + "@fullcalendar/common": "~5.6.0", + "@fullcalendar/daygrid": "~5.6.0", + "tslib": "^2.0.3" + } + }, + "fullcalendar-scheduler": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/fullcalendar-scheduler/-/fullcalendar-scheduler-5.6.0.tgz", + "integrity": "sha512-0jx/Q+6QqzvIGWU/52OE27UVjVAiM9E0o/qRwRcEhyuKlL54ypTF/yXP/wo0ctUtui5dDsilGNsSsba1xmARJA==" + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } +} diff --git a/package.json b/package.json index 7a1501b9..211ced7b 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { - "@fullcalendar/resource-timegrid": "^5.6.0" + "@fullcalendar/resource-timegrid": "^5.6.0", + "fullcalendar-scheduler": "^5.6.0" } } diff --git a/spec/services/full_calendar_formatter_spec.rb b/spec/services/full_calendar_formatter_spec.rb index 5ef763b1..a3dd418d 100644 --- a/spec/services/full_calendar_formatter_spec.rb +++ b/spec/services/full_calendar_formatter_spec.rb @@ -30,18 +30,18 @@ describe FullCalendarFormatter do resources = described_class.event_schedules_to_resources(event_schedules) expected_json = [ { - id: event_schedule1.event.guid, - title: event_schedule1.event.title, - start: event_schedule1.start_time, - end: event_schedule1.end_time, - source: room1.guid + id: event_schedule1.event.guid, + title: event_schedule1.event.title, + start: event_schedule1.start_time, + end: event_schedule1.end_time, + resourceId: room1.guid }, { - id: event_schedule2.event.guid, - title: event_schedule2.event.title, - start: event_schedule2.start_time, - end: event_schedule2.end_time, - source: room2.guid + id: event_schedule2.event.guid, + title: event_schedule2.event.title, + start: event_schedule2.start_time, + end: event_schedule2.end_time, + resourceId: room2.guid } ].to_json expect(resources).to eq(expected_json) diff --git a/yarn.lock b/yarn.lock index 500a76fc..d72f1a29 100644 --- a/yarn.lock +++ b/yarn.lock @@ -66,6 +66,11 @@ "@fullcalendar/daygrid" "~5.6.0" tslib "^2.0.3" +fullcalendar-scheduler@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/fullcalendar-scheduler/-/fullcalendar-scheduler-5.6.0.tgz#8328318d3d5901188a4ccb8c3cd4b756d2c76e16" + integrity sha512-0jx/Q+6QqzvIGWU/52OE27UVjVAiM9E0o/qRwRcEhyuKlL54ypTF/yXP/wo0ctUtui5dDsilGNsSsba1xmARJA== + tslib@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c"