[feat]Fullcalendar integration done

This commit is contained in:
Jimmy 2021-04-26 17:33:31 +08:00
parent 49cf115844
commit df729b7dde
No known key found for this signature in database
GPG key ID: FAE75C760A4A5CC6
9 changed files with 116 additions and 18 deletions

View file

@ -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){

View file

@ -26,4 +26,6 @@
*= require osem-navbar
*= require mastodon
*= require conferences
*= require fullcalendar-scheduler/main.css
*/

View file

@ -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

View file

@ -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();

View file

@ -80,5 +80,7 @@ module Osem
end
end
end
config.assets.paths << Rails.root.join('node_modules')
end
end

87
package-lock.json generated Normal file
View file

@ -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=="
}
}
}

View file

@ -1,5 +1,6 @@
{
"dependencies": {
"@fullcalendar/resource-timegrid": "^5.6.0"
"@fullcalendar/resource-timegrid": "^5.6.0",
"fullcalendar-scheduler": "^5.6.0"
}
}

View file

@ -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)

View file

@ -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"