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 += '
';
+ }
+ 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