recordings table

This commit is contained in:
Zachary Chai
2016-11-10 17:24:50 -05:00
parent 18a1c0f835
commit 8d2d4299f9
2 changed files with 166 additions and 128 deletions

View File

@ -1,5 +1,4 @@
(function() {
var recordingsTable = null;
var waitForModerator = function(url) {
$.get(url + "/wait", function(html) {
@ -94,137 +93,13 @@
var initRooms = function() {
displayRoomURL();
// initialize recordings datatable
recordingsTable = $('#recordings').dataTable({
data: [],
rowId: 'id',
paging: false,
searching: false,
info: false,
order: [[ 0, "desc" ]],
language: {
emptyTable: " "
},
columns: [
{ data: "start_time" },
{ data: "previews" },
{ data: "duration" },
{ data: "playbacks" },
{ data: "id" }
],
columnDefs: [
{
targets: 1,
render: function(data, type, row) {
if (type === 'display') {
var str = '';
for(let i in data) {
str += '<img height="50" width="50" src="'+data[i].url+'" alt="'+data[i].alt+'"></img> ';
}
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 += '<a href="'+data[i].url+'">'+data[i].type+'</a> ';
}
}
return str;
}
return data;
}
},
{
targets: -1,
render: function(data, type, row) {
if (type === 'display') {
var roomName = Meeting.getInstance().getId();
var published = row.published;
var eye = getPublishClass(published);
return '<button type="button" class="btn btn-default recording-update" data-published="'+published+'">' +
'<i class="fa '+eye+'" aria-hidden="true"></i></button> ' +
'<a tabindex="0" role="button" class="btn btn-default has-popover"' +
'data-toggle="popover" data-placement="top">' +
'<i class="fa fa-trash-o" aria-hidden="true"></i>' +
'</a>';
}
return data;
}
}
]
});
$('#recordings').on('click', '.recording-update', function(event) {
var btn = $(this);
var row = recordingsTable.api().row($(this).closest('tr')).data();
var url = $('.meeting-url').val();
var id = row.id;
var published = btn.data('published');
btn.prop('disabled', true);
$.ajax({
method: 'PATCH',
url: url+'/recordings/'+id,
data: {published: (!published).toString()}
}).done(function(data) {
}).fail(function(data) {
btn.prop('disabled', false);
});
});
$('#recordings').on('click', '.recording-delete', function(event) {
var btn = $(this);
var row = recordingsTable.api().row($(this).closest('tr')).data();
var url = $('.meeting-url').val();
var id = row.id;
btn.prop('disabled', true);
$.ajax({
method: 'DELETE',
url: url+'/recordings/'+id
}).done(function() {
}).fail(function(data) {
btn.prop('disabled', false);
});
});
refreshRecordings();
Recordings.getInstance().refresh();
Recordings.getInstance().setupActionHandlers();
};
var refreshRecordings = function() {
if (!recordingsTable) {
return;
}
table = recordingsTable.api();
$.get("/rooms/"+Meeting.getInstance().getId()+"/recordings", function(data) {
if (!data.is_owner) {
table.column(-1).visible( false );
}
var i;
for (i = 0; i < data.recordings.length; i++) {
var totalMinutes = Math.round((new Date(data.recordings[i].end_time) - new Date(data.recordings[i].start_time)) / 1000 / 60);
data.recordings[i].duration = totalMinutes;
data.recordings[i].start_time = new Date(data.recordings[i].start_time)
.toLocaleString($('html').attr('lang'),
{month: 'long', day: 'numeric', year: 'numeric', hour12: 'true', hour: '2-digit', minute: '2-digit'});
}
table.clear();
table.rows.add(data.recordings);
table.columns.adjust().draw();
});
}
$(document).on("turbolinks:load", function() {
init();
if ($("body[data-controller=landing]").get(0)) {
init();
if ($("body[data-action=meetings]").get(0)) {
initIndex();
} else if ($("body[data-action=rooms]").get(0)) {