diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index ed8c1b0..10eb75a 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -14,3 +14,11 @@ *= require _font-awesome *= require_self */ + +.lecture-future { + background: repeating-linear-gradient(45deg, #f3f4f6, #f3f4f6 10px, white 10px, white 20px); +} + +.lecture-cancelled { + background: repeating-linear-gradient(45deg, rgb(254 226 226/var(--tw-bg-opacity)), rgb(254 226 226/var(--tw-bg-opacity)) 10px, white 10px, white 20px); +} \ No newline at end of file diff --git a/app/dashboards/lecture_dashboard.rb b/app/dashboards/lecture_dashboard.rb index 6e438a3..536f502 100644 --- a/app/dashboards/lecture_dashboard.rb +++ b/app/dashboards/lecture_dashboard.rb @@ -12,9 +12,10 @@ class LectureDashboard < Administrate::BaseDashboard attendance: Field::HasOne, course: Field::BelongsTo, event_uuid: Field::String, - recording: Field::BelongsTo, + recording: Field::HasOne, start_time: Field::DateTime, title: Field::String, + cancelled: Field::Boolean, created_at: Field::DateTime, updated_at: Field::DateTime, }.freeze @@ -27,6 +28,7 @@ class LectureDashboard < Administrate::BaseDashboard COLLECTION_ATTRIBUTES = %i[ title course + cancelled start_time recording ].freeze @@ -37,6 +39,7 @@ class LectureDashboard < Administrate::BaseDashboard id attendance course + cancelled event_uuid recording start_time @@ -51,6 +54,7 @@ class LectureDashboard < Administrate::BaseDashboard FORM_ATTRIBUTES = %i[ attendance course + cancelled event_uuid recording start_time diff --git a/app/dashboards/recording_dashboard.rb b/app/dashboards/recording_dashboard.rb index 22dd54e..9d998d9 100644 --- a/app/dashboards/recording_dashboard.rb +++ b/app/dashboards/recording_dashboard.rb @@ -10,6 +10,7 @@ class RecordingDashboard < Administrate::BaseDashboard ATTRIBUTE_TYPES = { id: Field::Number, course: Field::BelongsTo, + lecture: Field::BelongsTo, recording_uuid: Field::String, start_time: Field::DateTime, title: Field::String, diff --git a/app/jobs/scrape_panopto_job.rb b/app/jobs/scrape_panopto_job.rb index 62d911e..c5909ad 100644 --- a/app/jobs/scrape_panopto_job.rb +++ b/app/jobs/scrape_panopto_job.rb @@ -36,11 +36,10 @@ class ScrapePanoptoJob < ApplicationJob lecture.update!(recording_id: new_recording.id) else # Else create a new lecture - Lecture.create!( + lecture = Lecture.create!( title: new_recording.nice_title, start_time: new_recording.start_time, course_id: new_recording.course_id, - recording_id: new_recording.id ) end end diff --git a/app/models/lecture.rb b/app/models/lecture.rb index f5fa816..80a489f 100644 --- a/app/models/lecture.rb +++ b/app/models/lecture.rb @@ -1,7 +1,7 @@ class Lecture < ApplicationRecord belongs_to :course has_one :attendance - belongs_to :recording, optional: true + has_one :recording def week_number ((start_time.beginning_of_week - course.semester_start_date.to_time) / 1.week).floor + 1 diff --git a/app/models/recording.rb b/app/models/recording.rb index dac26ae..a20d9a8 100644 --- a/app/models/recording.rb +++ b/app/models/recording.rb @@ -1,6 +1,7 @@ # This is a Foreign Object Reference Table, keyed to the external data source by #recording_uuid class Recording < ApplicationRecord belongs_to :course + belongs_to :lecture, optional: true def recording_url return nil if recording_uuid.nil? @@ -17,4 +18,12 @@ class Recording < ApplicationRecord title end + + def create_lecture!(fixup_time: false) + Lecture.create!( + title: nice_title, + course: course, + recording: self + ) + end end diff --git a/app/views/attendance_tracker/index.html.erb b/app/views/attendance_tracker/index.html.erb index 497e672..cb296c3 100644 --- a/app/views/attendance_tracker/index.html.erb +++ b/app/views/attendance_tracker/index.html.erb @@ -25,8 +25,10 @@ <% lectures.each do |lecture| %> - <% style = if lecture.start_time.future? then 'background: repeating-linear-gradient(45deg, #f3f4f6, #f3f4f6 10px, white 10px, white 20px);' else '' end %> -