forked from External/greenlight
add/remove from previous meetings & loading spinner
This commit is contained in:
parent
b9ace4dfa6
commit
42f0c14b49
|
@ -1,3 +1,4 @@
|
||||||
|
// Handles action cable events from bbb-webhooks and initial population of active meetings.
|
||||||
|
|
||||||
MEETINGS = {}
|
MEETINGS = {}
|
||||||
|
|
||||||
|
@ -5,18 +6,19 @@ MEETINGS = {}
|
||||||
if($('body').data('current-user')){
|
if($('body').data('current-user')){
|
||||||
App.messages = App.cable.subscriptions.create('RefreshMeetingsChannel', {
|
App.messages = App.cable.subscriptions.create('RefreshMeetingsChannel', {
|
||||||
received: function(data) {
|
received: function(data) {
|
||||||
console.log(data)
|
console.log('Recieved ' + data['method'] + ' action for ' + data['meeting'] + '.')
|
||||||
if(isPreviouslyJoined(data['meeting'])){
|
if(isPreviouslyJoined(data['meeting'])){
|
||||||
if(data['method'] == 'create'){
|
if(data['method'] == 'create'){
|
||||||
|
|
||||||
// Create an empty meeting.
|
// Create an empty meeting.
|
||||||
MEETINGS[data['meeting']] = {'name': data['meeting'],
|
MEETINGS[data['meeting']] = {'name': data['meeting'],
|
||||||
'participants': 0,
|
'participants': 0,
|
||||||
'moderators': 0}
|
'moderators': 0}
|
||||||
|
|
||||||
renderActiveMeeting(MEETINGS[data['meeting']])
|
renderActiveMeeting(MEETINGS[data['meeting']])
|
||||||
|
updatePreviousMeetings();
|
||||||
} else if(data['method'] == 'destroy'){
|
} else if(data['method'] == 'destroy'){
|
||||||
removeActiveMeeting(MEETINGS[data['meeting']])
|
removeActiveMeeting(MEETINGS[data['meeting']])
|
||||||
|
PreviousMeetings.append([data['meeting']])
|
||||||
delete MEETINGS[data['meeting']]
|
delete MEETINGS[data['meeting']]
|
||||||
} else if(data['method'] == 'join'){
|
} else if(data['method'] == 'join'){
|
||||||
handleUser(data, 1)
|
handleUser(data, 1)
|
||||||
|
@ -29,6 +31,15 @@ if($('body').data('current-user')){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updatePreviousMeetings = function(){
|
||||||
|
$("ul.previously-joined li").each(function(idx, li) {
|
||||||
|
previous_meeting = $(li);
|
||||||
|
if(Object.keys(MEETINGS).indexOf(previous_meeting.text()) > -1){
|
||||||
|
previous_meeting.remove()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
handleUser = function(data, n){
|
handleUser = function(data, n){
|
||||||
if(data['role'] == 'MODERATOR'){
|
if(data['role'] == 'MODERATOR'){
|
||||||
MEETINGS[data['meeting']]['moderators'] += n
|
MEETINGS[data['meeting']]['moderators'] += n
|
||||||
|
@ -39,7 +50,7 @@ handleUser = function(data, n){
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMeetingText = function(meeting){
|
updateMeetingText = function(meeting){
|
||||||
$('#' + meeting['name']).html('<a>' + meeting['name'] + '</a> <i>(' +
|
$('#' + meeting['name'].replace(' ', '_')).html('<a>' + meeting['name'] + '</a> <i>(' +
|
||||||
meeting['participants'] + ((meeting['participants'] == 1) ? ' user, ' : ' users, ') +
|
meeting['participants'] + ((meeting['participants'] == 1) ? ' user, ' : ' users, ') +
|
||||||
meeting['moderators'] + ((meeting['moderators'] == 1) ? ' mod)' : ' mods)'))
|
meeting['moderators'] + ((meeting['moderators'] == 1) ? ' mod)' : ' mods)'))
|
||||||
}
|
}
|
||||||
|
@ -57,9 +68,13 @@ initialPopulate = function(){
|
||||||
'moderators': moderators}
|
'moderators': moderators}
|
||||||
if(isPreviouslyJoined(name)){
|
if(isPreviouslyJoined(name)){
|
||||||
renderActiveMeeting(MEETINGS[name])
|
renderActiveMeeting(MEETINGS[name])
|
||||||
// remove it.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}).done(function(){
|
||||||
|
// Remove from previous meetings if they are active.
|
||||||
|
updatePreviousMeetings();
|
||||||
|
$('.hidden-list').show();
|
||||||
|
$('.fa-spinner').hide();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +84,7 @@ isPreviouslyJoined = function(meeting){
|
||||||
}
|
}
|
||||||
|
|
||||||
renderActiveMeeting = function(m){
|
renderActiveMeeting = function(m){
|
||||||
var meeting_item = $('<li id = ' + m['name'] + '><a>' + m['name'] + '</a>' +
|
var meeting_item = $('<li id = ' + m['name'].replace(' ', '_') + '><a>' + m['name'] + '</a>' +
|
||||||
' <i>(' + m['participants'] + ' users, ' + m['moderators'] + ' mods)</i>' + '</li>')
|
' <i>(' + m['participants'] + ' users, ' + m['moderators'] + ' mods)</i>' + '</li>')
|
||||||
$('.actives').append(meeting_item);
|
$('.actives').append(meeting_item);
|
||||||
|
|
||||||
|
@ -80,8 +95,7 @@ renderActiveMeeting = function(m){
|
||||||
}
|
}
|
||||||
|
|
||||||
removeActiveMeeting = function(meeting){
|
removeActiveMeeting = function(meeting){
|
||||||
$('#' + meeting['name']).remove()
|
$('#' + meeting['name'].replace(' ', '_')).remove()
|
||||||
//$(".actives:contains('" + meeting['name'] + "')").remove()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Directly join a meeting from active meetings.
|
// Directly join a meeting from active meetings.
|
||||||
|
@ -114,4 +128,4 @@ joinMeeting = function(meeting_name){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($('body').data('current-user')){ console.log('Populating active meetings.'); initialPopulate() }
|
if($('body').data('current-user')){ console.log('Populating active meetings.'); setTimeout(initialPopulate, 1250); }
|
||||||
|
|
|
@ -89,3 +89,8 @@
|
||||||
color: green;
|
color: green;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.fa-spinner {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
|
@ -16,14 +16,18 @@
|
||||||
<% if current_user %>
|
<% if current_user %>
|
||||||
<div class="previously-joined-wrapper hidden">
|
<div class="previously-joined-wrapper hidden">
|
||||||
<div class = 'row'>
|
<div class = 'row'>
|
||||||
<div class = 'col-xs-4 col-xs-offset-2'>
|
<div class = 'col-xs-3 col-xs-offset-2'>
|
||||||
<div class="list-group text-center">
|
<div class="list-group text-center hidden-list" hidden>
|
||||||
<h4><%= t('previous_meetings') %></h4>
|
<h4><%= t('previous_meetings') %></h4>
|
||||||
<ul class="previously-joined"></ul>
|
<ul class="previously-joined"></ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class = 'col-xs-4'>
|
<div class = 'col-xs-2'>
|
||||||
<div class="list-group text-center">
|
<br><br>
|
||||||
|
<i class="fa fa-spinner fa-spin fa-3x" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<div class = 'col-xs-3'>
|
||||||
|
<div class="list-group text-center hidden-list" hidden>
|
||||||
<h4><%= t('active_meetings') %></h4>
|
<h4><%= t('active_meetings') %></h4>
|
||||||
<ul class="actives"></ul>
|
<ul class="actives"></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue