diff --git a/app/assets/javascripts/landing.js b/app/assets/javascripts/landing.js index 00eaa4f5..c932b10d 100644 --- a/app/assets/javascripts/landing.js +++ b/app/assets/javascripts/landing.js @@ -88,16 +88,30 @@ }, columns: [ { title: "Date Recorded", data: "start_time" }, + { title: "Presentation", data: "previews"}, { title: "Duration", data: "duration" }, { title: "Views", data: "playbacks" }, { title: "Actions", data: "id" } ], columnDefs: [ { - targets: 2, + targets: 1, render: function(data, type, row) { if (type === 'display') { - var str = ""; + var str = ''; + for(let i in data) { + str += ''+data[i].alt+' '; + } + return str; + } + return data; + } + }, + { + targets: 3, + render: function(data, type, row) { + if (type === 'display') { + var str = ''; if (row.published) { for(let i in data) { str += ''+data[i].type+' '; diff --git a/app/lib/bbb_api.rb b/app/lib/bbb_api.rb index 539d085c..a6ba019e 100644 --- a/app/lib/bbb_api.rb +++ b/app/lib/bbb_api.rb @@ -75,7 +75,53 @@ module BbbApi if meeting_id options[:meetingID] = (Digest::SHA1.hexdigest(Rails.application.secrets[:secret_key_base]+meeting_id)).to_s end - bbb_safe_execute :get_recordings, options + res = bbb_safe_execute :get_recordings, options + + # ensure recordings is an array + if !res[:recordings] + res[:recordings] = [] + elsif !res[:recordings].is_a? Array + res[:recordings] = [res[:recordings]] + end + + res[:recordings].each do |recording| + pref_preview = {} + + # create a playbacks attribute on recording for playback formats + recording[:playbacks] = if !recording[:playback] || !recording[:playback][:format] + [] + elsif recording[:playback][:format].is_a? Array + recording[:playback][:format] + else + [recording[:playback][:format]] + end + + recording[:playbacks].each_with_index do |playback, index| + # create a previews attribute on playbacks for preview images + playback[:previews] = if !playback[:preview] || !playback[:preview][:images] || !playback[:preview][:images][:image] + [] + elsif playback[:preview][:images][:image].is_a? Array + playback[:preview][:images][:image] + else + [playback[:preview][:images][:image]] + end + if playback[:type] == 'presentation' && playback[:previews].present? + pref_preview[:presentation] = index + elsif playback[:previews].present? && pref_preview[:other].blank? + pref_preview[:other] = index + end + end + + # create a previews attribute on recordings for preview images + recording[:previews] = if pref_preview[:presentation] + recording[:playbacks][pref_preview[:presentation]][:previews] + elsif pref_preview[:other] + recording[:playbacks][pref_preview[:other]][:previews] + else + [] + end + end + res end def bbb_update_recordings(id, published) diff --git a/app/views/bbb/_preview.jbuilder b/app/views/bbb/_preview.jbuilder new file mode 100644 index 00000000..66fcdc3c --- /dev/null +++ b/app/views/bbb/_preview.jbuilder @@ -0,0 +1,4 @@ +json.url preview[:content] +json.width preview[:width] +json.height preview[:height] +json.alt preview[:alt] diff --git a/app/views/bbb/recordings.jbuilder b/app/views/bbb/recordings.jbuilder index 23781b77..384c2c29 100644 --- a/app/views/bbb/recordings.jbuilder +++ b/app/views/bbb/recordings.jbuilder @@ -2,22 +2,26 @@ json.partial! 'bbb', messageKey: @messageKey, message: @message, status: @status unless @response.blank? json.is_owner current_user == @user json.recordings do - unless @response.is_a? Array - @response = [@response] - end json.array!(@response) do |recording| json.id recording[:recordID] json.name recording[:name] json.start_time recording[:startTime] json.end_time recording[:endTime] json.published recording[:published] - json.playbacks do - unless recording[:playback][:format].is_a? Array - recording[:playback][:format] = [recording[:playback][:format]] + json.previews do + json.array!(recording[:previews]) do |preview| + json.partial! 'preview', preview: preview end - json.array!(recording[:playback][:format]) do |playback| + end + json.playbacks do + json.array!(recording[:playbacks]) do |playback| json.type playback[:type] json.url playback[:url] + json.previews do + json.array!(playback[:previews]) do |preview| + json.partial! 'preview', preview: preview + end + end end end end