seperate js in files

This commit is contained in:
Josh 2018-06-13 14:43:08 -04:00
parent 83642f22c1
commit 7fadd6be69
16 changed files with 109 additions and 134 deletions

View File

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

View File

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

View File

View File

@ -0,0 +1,40 @@
// Room specific js for copy button and email link.
$(document).on('turbolinks:load', function(){
var controller = $("body").data('controller');
var action = $("body").data('action');
// Only run on room pages.
if (controller == "rooms" && action == "show"){
var invite_url;
var copy = $('#copy');
// Handle copy button.
copy.on('click', function(){
var inviteURL = $('#invite-url');
inviteURL.select();
var success = document.execCommand("copy");
if (success) {
inviteURL.blur();
copy.addClass('btn-success');
copy.html("<i class='fas fa-check'></i> Copy")
setTimeout(function(){
copy.removeClass('btn-success');
copy.html("<i class='fas fa-copy'></i> Copy")
}, 2000)
}
});
// Handle recording emails.
$('.email-link').each(function(){
$(this).click(function(){
var subject = $(".username").text() + " has invited you to view a recording.";
var body = "To view the recording, follow the link below:\n\n" + $(this).attr("data-pres-link");
var footer = "\n\nThis e-mail is auto-generated by BigBlueButton.\nBigBlueButton is an open source web conferencing system. For more information on BigBlueButton, see https://bigbluebutton.org/."
var win = window.open("mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body) + encodeURIComponent(footer), '_blank');
win.focus();
});
});
}
});

View File

@ -1,27 +0,0 @@
$(document).on("turbolinks:load", function() {
var action = $("body").data('action');
var controller = $("body").data('controller');
// If the user is on the waiting screen.
if (controller == 'rooms' && action == 'wait') {
setTimeout(refresh, 10000);
}
});
// Send a request to the meeting wait endpoint.
// This checks if the meeting is running on the
// server and will auto join the user if it is.
var refresh = function() {
$.ajax({
url: window.location.pathname,
type: 'POST',
data: {
unauthenticated_join_name: $('#unauthenticated_join_name_').val()
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
setTimeout(refresh, 10000);
}

View File

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

View File

@ -0,0 +1,27 @@
// Handle changing of settings tabs.
$(document).on('turbolinks:load', function(){
var controller = $("body").data('controller');
var action = $("body").data('action');
// Only run on the settings page.
if (controller == "users" && action == "edit"){
settingsButtons = $('.setting-btn');
settingsViews = $('.setting-view');
settingsButtons.each(function(i, btn) {
if(i != 0){ $(settingsViews[i]).hide(); }
$(btn).click(function(){
$(btn).addClass("active");
settingsViews.each(function(i, view){
if($(view).attr("id") == $(btn).attr("id")){
$(view).show();
} else {
$(settingsButtons[i]).removeClass("active");
$(view).hide();
}
});
});
});
}
});

View File

@ -1,3 +0,0 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/

View File

@ -0,0 +1,38 @@
// Handle client request to join when meeting starts.
$(document).on("turbolinks:load", function(){
var controller = $("body").data('controller');
var action = $("body").data('action');
if(controller == "rooms" && action == "join"){
App.waiting = App.cable.subscriptions.create({
channel: "WaitingChannel",
uid: $(".room-section").attr("room")
}, {
received: function(data){
if(data.action = "started"){ request_to_join_meeting(); }
}
});
}
});
var join_attempts = 0;
var request_to_join_meeting = function(){
$.ajax({
url: window.location.pathname,
type: 'POST',
data: {
join_name: $(".room-section").attr("join-name")
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
error: function(){
// The meeting is still booting (going slowly), retry shortly.
if(join_attempts < 4){ setTimeout(request_to_join_meeting, 10000); }
join_attempts++;
}
});
}

View File

@ -166,7 +166,7 @@ class Room < ApplicationRecord
# Sets a BigBlueButtonApi object for interacting with the API.
def bbb
@bbb = BigBlueButton::BigBlueButtonApi.new(remove_slash(bbb_endpoint), bbb_secret, "0.8")
@bbb ||= BigBlueButton::BigBlueButtonApi.new(remove_slash(bbb_endpoint), bbb_secret, "0.8")
#@bbb ||= if Rails.configuration.loadbalanced_configuration
# lb_user = retrieve_loadbalanced_credentials(self.room.owner.provider)
# BigBlueButton::BigBlueButtonApi.new(remove_slash(lb_user["apiURL"]), lb_user["secret"], "0.8")

View File

@ -30,7 +30,6 @@
<%= yield %>
<!-- Modal Load -->
<% if current_user %>
<%= render "shared/modals/create_room_modal" %>
<% end %>

View File

@ -55,36 +55,3 @@
</div>
<%= render "shared/sessions", recordings: @recordings, only_public: false %>
<script>
var invite_url;
var copy = $('#copy');
// Handle copy button.
copy.on('click', function(){
var inviteURL = $('#invite-url');
inviteURL.select();
var success = document.execCommand("copy");
if (success) {
inviteURL.blur();
copy.addClass('btn-success');
copy.html("<i class='fas fa-check'></i> Copy")
setTimeout(function(){
copy.removeClass('btn-success');
copy.html("<i class='fas fa-copy'></i> Copy")
}, 2000)
}
});
// Handle recording emails.
$('.email-link').each(function(){
$(this).click(function(){
var subject = $(".username").text() + " has invited you to view a recording.";
var body = "To view the recording, follow the link below:\n\n" + $(this).attr("data-pres-link");
var footer = "\n\nThis e-mail is auto-generated by BigBlueButton.\nBigBlueButton is an open source web conferencing system. For more information on BigBlueButton, see https://bigbluebutton.org/."
var win = window.open("mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body) + encodeURIComponent(footer), '_blank');
win.focus();
});
});
</script>

View File

@ -9,37 +9,3 @@
</div>
</div>
<% end %>
<script>
$(document).on("turbolinks:load", function(){
App.waiting = App.cable.subscriptions.create({
channel: "WaitingChannel",
uid: $(".room-section").attr("room")
}, {
received: function(data){
if(data.action = "started"){ request_to_join_meeting(); }
}
});
});
var join_attempts = 0;
var request_to_join_meeting = function(){
$.ajax({
url: window.location.pathname,
type: 'POST',
data: {
join_name: $(".room-section").attr("join-name")
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
error: function(){
// The meeting is still booting (going slowly), retry shortly.
if(join_attempts < 4){ setTimeout(request_to_join_meeting, 10000); }
join_attempts++;
}
});
}
</script>

View File

@ -34,7 +34,8 @@
</div>
<script>
// Handle validation messages client-side because
// form is served in modal, and they are minimal.
var roomCreateValidations = function(){
if($('#room-name').val().length == 0){
$('#room-name').addClass("is-invalid");
@ -42,5 +43,4 @@ var roomCreateValidations = function(){
}
$('#create-room-submit').on('click', roomCreateValidations);
</script>

View File

@ -1,5 +1,4 @@
<div class="container mt-8">
<%= render "shared/components/subtitle", subtitle: "Settings", search: false %>
<div class="row">
@ -46,25 +45,3 @@
</div>
</div>
</div>
<script>
settingsButtons = $('.setting-btn');
settingsViews = $('.setting-view');
$(document).ready(function(){
settingsButtons.each(function(i, btn) {
if(i != 0){ $(settingsViews[i]).hide(); }
$(btn).click(function(){
$(btn).addClass("active");
settingsViews.each(function(i, view){
if($(view).attr("id") == $(btn).attr("id")){
$(view).show();
} else {
$(settingsButtons[i]).removeClass("active");
$(view).hide();
}
});
});
});
});
</script>

View File

@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0'
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )
Rails.application.config.assets.precompile += %w(settings.js room.js wait.js)