multi meeting rooms

This commit is contained in:
Zachary Chai
2017-01-27 15:44:24 -05:00
parent 0ce2a226a7
commit d67663fbf1
17 changed files with 123 additions and 66 deletions

View File

@ -23,10 +23,15 @@
});
};
var initRooms = function() {
var enableMeetingUpdates = function() {
var meeting_id = '';
if ($(".page-wrapper.rooms").data('main-room') === false) {
meeting_id = $(".page-wrapper.rooms").data('id');
}
App.messages = App.cable.subscriptions.create({
channel: 'MeetingUpdatesChannel',
encrypted_id: $(".page-wrapper").data('id')
admin_id: $(".page-wrapper.rooms").data('admin-id'),
meeting_id: meeting_id
},
{
received: function(data) {
@ -58,7 +63,7 @@
$(document).on("turbolinks:load", function() {
if ($("body[data-controller=landing]").get(0)) {
if ($("body[data-action=rooms]").get(0)) {
initRooms();
enableMeetingUpdates();
}
}
});

View File

@ -64,6 +64,10 @@
}
});
$('.center-panel-wrapper').on ('click', '.meeting-start', function (event) {
Turbolinks.visit(Meeting.getInstance().getURL());
});
$('.center-panel-wrapper').on ('keypress', '.meeting-user-name', function (event) {
if (event.keyCode === 13) {
event.preventDefault();
@ -192,12 +196,15 @@
displayRoomURL();
$('.center-panel-wrapper').on('keyup', '.meeting-name', function (event, msg) {
var newName = $(this).val();
// Meeting.getInstance().setMeetingId(newId);
Meeting.getInstance().setMeetingName(newName);
// $(".page-wrapper.meetings").data('id', newId);
// $('.meeting-url').val(Meeting.getInstance().getURL());
// $('.join-meeting-title').html(I18n.join_title.replace(/%{id}/, newId));
var newId = $(this).val();
Meeting.getInstance().setMeetingId(newId);
$('.meeting-url').val(Meeting.getInstance().getURL());
$('.join-meeting-title').html(I18n.join_title.replace(/%{id}/, newId));
if (newId === '') {
$('.invite-join-wrapper').addClass('hidden');
} else {
$('.invite-join-wrapper').removeClass('hidden');
}
});
Recordings.getInstance().refresh();

View File

@ -19,28 +19,30 @@
_meetingInstance = null
class @Meeting
constructor: (@meetingId, @type, @userName, @meetingName) ->
constructor: (@meetingId, @type, @userName, @adminId) ->
# Gets the current instance or creates a new one
@getInstance: ->
if _meetingInstance
return _meetingInstance
id = $(".page-wrapper").data('id')
meetingId = $(".page-wrapper").data('id')
if (type = location.pathname.split('/')[1]) != 'rooms'
type = 'meetings'
name = $('.meeting-user-name').val()
_meetingInstance = new Meeting(id, type, name)
adminId = $(".page-wrapper").data('admin-id')
_meetingInstance = new Meeting(meetingId, type, name, adminId)
return _meetingInstance
@clear: ->
_meetingInstance = null
@buildMeetingURL: (id, type, name) ->
if name
name = '/' + encodeURIComponent(name)
@buildMeetingURL: (meetingId, type, adminId) ->
fullId = ''
if adminId
fullId = encodeURIComponent(adminId) + '/' + encodeURIComponent(meetingId)
else
name = ''
return @buildFullDomainURL() + '/' + type + '/' + encodeURIComponent(id) + name
fullId = encodeURIComponent(meetingId)
return @buildFullDomainURL() + '/' + type + '/' + fullId
@buildFullDomainURL: ->
url = location.protocol + '//' + location.hostname
@ -84,8 +86,11 @@ class @Meeting
@meetingId = id
return this
setMeetingName: (name) ->
@meetingName = name
getAdminId: ->
return @adminId
setAdminId: (id) ->
@adminId = id
return this
getType: ->
@ -96,7 +101,7 @@ class @Meeting
return this
getURL: ->
return Meeting.buildMeetingURL(@meetingId, @type, @meetingName)
return Meeting.buildMeetingURL(@meetingId, @type, @adminId)
getUserName: ->
return @userName

View File

@ -157,7 +157,7 @@ class @Recordings
# refresh the recordings from the server
refresh: ->
table_api = this.table.api()
$.get "/rooms/"+Meeting.getInstance().getMeetingId()+"/recordings", (data) =>
$.get "/rooms/"+Meeting.getInstance().getAdminId()+"/recordings", (data) =>
@setOwner(data.is_owner)
if !@owner
table_api.column(-1).visible(false)