From 25bccb7699ba160fdf2015ca0b01d9350df39f4d Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Fri, 18 Nov 2016 17:05:44 -0500 Subject: [PATCH] open recordings in new tab and hide from viewers when unpublished --- .../javascripts/channels/recording_update.js | 9 ++++-- app/assets/javascripts/recordings.coffee | 32 +++++++++++++------ app/views/landing/rooms.html.erb | 1 + 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/channels/recording_update.js b/app/assets/javascripts/channels/recording_update.js index 51c9d842..3beec545 100644 --- a/app/assets/javascripts/channels/recording_update.js +++ b/app/assets/javascripts/channels/recording_update.js @@ -7,17 +7,20 @@ }, { received: function(data) { - var table = $("#recordings").DataTable(); + var recordings = Recordings.getInstance(); + var table = recordings.table.api() var row = table.row("#"+data.record_id); if (data.action === 'update') { var rowData = row.data(); rowData.published = data.published - table.row("#"+data.record_id).data(rowData).draw(); + table.row("#"+data.record_id).data(rowData); + recordings.draw(); var published = (data.published) ? 'published' : 'unpublished'; showAlert(I18n['recording_'+published], 4000); } else if (data.action === 'delete') { - row.remove().draw(); + row.remove(); + recordings.draw(); showAlert(I18n.recording_deleted, 4000); } diff --git a/app/assets/javascripts/recordings.coffee b/app/assets/javascripts/recordings.coffee index 2e9dfff3..94f6ba52 100644 --- a/app/assets/javascripts/recordings.coffee +++ b/app/assets/javascripts/recordings.coffee @@ -9,17 +9,19 @@ class @Recordings data: [], rowId: 'id', paging: false, - searching: false, + dom: 'lrtip', info: false, order: [[ 0, "desc" ]], language: { - emptyTable: I18n.no_recordings + emptyTable: I18n.no_recordings, + zeroRecords: I18n.no_recordings }, columns: [ { data: "start_time" }, { data: "previews", orderable: false }, { data: "duration" }, { data: "playbacks", orderable: false }, + { data: "published", visible: false }, { data: "id", orderable: false } ], columnDefs: [ @@ -38,8 +40,9 @@ class @Recordings render: (data, type, row) -> if type == 'display' str = '' - for d in data - str += ''+d.alt+' ' + if row.published + for d in data + str += ''+d.alt+' ' return str return data }, @@ -50,7 +53,7 @@ class @Recordings str = '' if row.published for d in data - str += ''+d.type_i18n+' ' + str += ''+d.type_i18n+' ' return str return data }, @@ -95,12 +98,17 @@ class @Recordings @initialized: -> return $.fn.DataTable.isDataTable('#recordings') && _recordingsInstance + draw: -> + if !@isOwner() + @table.api().columns(4).search('true') + @table.api().columns.adjust().draw() + # refresh the recordings from the server refresh: -> - _this = this table_api = this.table.api() - $.get "/rooms/"+Meeting.getInstance().getId()+"/recordings", (data) -> - if !data.is_owner + $.get "/rooms/"+Meeting.getInstance().getId()+"/recordings", (data) => + @setOwner(data.is_owner) + if !@owner table_api.column(-1).visible(false) for recording in data.recordings totalMinutes = Math.round((new Date(recording.end_time) - new Date(recording.start_time)) / 1000 / 60) @@ -109,7 +117,7 @@ class @Recordings return new Date(b.start_time) - new Date(a.start_time) table_api.clear() table_api.rows.add(data.recordings) - table_api.columns.adjust().draw() + @draw() # setup click handlers for the action buttons setupActionHandlers: -> @@ -145,3 +153,9 @@ class @Recordings ).fail((data) -> btn.prop('disabled', false) ) + + isOwner: -> + @owner + + setOwner: (owner) -> + @owner = owner diff --git a/app/views/landing/rooms.html.erb b/app/views/landing/rooms.html.erb index 397cfaa1..6c82ba3a 100644 --- a/app/views/landing/rooms.html.erb +++ b/app/views/landing/rooms.html.erb @@ -20,6 +20,7 @@ <%= t('thumbnails') %> <%= t('duration') %> <%= t('views') %> + published <%= t('actions') %>