jitsi-8.x-1.0-beta1/js/jitsi.js

js/jitsi.js
(function ($, Drupal, drupalSettings) {

    Drupal.behaviors.ek_jitsi = {
        attach: function (context, settings) {
            var logger = [];

            function ek_jitsi_start() {
                var videodomain = settings.ek_jitsi.domain;
                var options = {
                    roomName: settings.ek_jitsi.room,
                    width: '100%',
                    height: '100%',
                    parentNode: document.querySelector('#meet'),
                    userInfo: {
                        email: settings.ek_jitsi.email,
                        displayName: settings.ek_jitsi.user ? settings.ek_jitsi.user : 'guest',
                    },
                    interfaceConfigOverwrite: {enableClosePage: true},
                    configOverwrite: {
                        prejoinPageEnabled: false,
                    },
                };

                if (settings.ek_jitsi.jwt) {
                    $.ajax({
                        url: settings.ek_jitsi.jwt + '?room=' + settings.ek_jitsi.room,
                        async: false,
                        method: 'GET',
                        dataType: "json",
                        success: function (result) {
                            options.jwt = result.token;
                        }
                    });
                }

                api = new JitsiMeetExternalAPI(videodomain, options);
                api.executeCommand('sendTones', {
                    tones: '192837#',
                });

                api.executeCommand('avatarUrl', settings.ek_jitsi.avatar);

                api.on("videoConferenceJoined", function (element) {
                    log_event('Conference Joined', element);
                });

                api.on("videoConferenceLeft", function (element) {
                    log_event('Conference Left', element);
                });

                api.on("participantJoined", function (element) {
                    log_event('Participant Joined', element);
                });

                api.on("participantKickedOut", function (element) {
                    log_event('Participant Kicked out', element);
                })

                api.on("participantLeft", function (element) {
                    log_event('Participant left', element);
                });

                $('#meet-stop', context).show();
                $('#meet-start', context).hide();
                if(settings.ek_jitsi.menu_bar) {
                    $('#on-meet-controls', context).show(500);
                    $('#off-meet-controls', context).show(500);
                } 
            }

            $('#meet-stop', context).hide();
            $('#on-meet-controls', context).hide();
            $('#off-meet-controls', context).hide();
            $('#meet-start', context).click(function (event) {
                event.preventDefault();
                ek_jitsi_start();
            });

            $('#meet-stop', context).click(function (event) {
                event.preventDefault();
                $('#meet-start').show();
                $('#meet-stop').hide();
                $('#on-meet-controls').hide(300);
                api.dispose();
            });

            $('#set-name', context).click(function (event) {
                event.preventDefault();
                var name = $('#staticName').val();
                api.executeCommand('displayName', name);
            });

            $('#set-subject', context).click(function (event) {
                event.preventDefault();
                var subject = $('#staticSubject').val();
                api.executeCommand('subject', subject);
            });

            $('#set-password', context).click(function (event) {
                event.preventDefault();
                var password = $('#staticPassword').val();
                api.executeCommand('password', password);
            });

            $('#share-screen', context).click(function (event) {
                event.preventDefault();
                api.executeCommand('toggleShareScreen');
            });

            $('#meet-chat', context).click(function (event) {
                event.preventDefault();
                api.executeCommand('toggleChat');
                $('#meet-chat span').toggleClass('meetred');
            });

            $('#meet-mute', context).click(function (event) {
                event.preventDefault();
                api.executeCommand('toggleAudio');
                $('#meet-mute span').toggleClass('meetred');
            });

            $('#meet-film', context).click(function (event) {
                event.preventDefault();
                api.executeCommand('toggleFilmStrip');
                $('#meet-film span').toggleClass('meetred');
            });

            $(".copylink", context).click(function () {
                var roomlink = $('#roomlink').attr('href');
                $body = document.getElementsByTagName('body')[0];
                var $tempInput = document.createElement('INPUT');
                $body.appendChild($tempInput);
                $tempInput.setAttribute('value', roomlink)
                $tempInput.select();
                document.execCommand('copy');
                $body.removeChild($tempInput);
            });

            function log_event(event, element) {
                var d = new Date();
                var t = d.getTime();
                var data = [{
                        'type': event,
                        'time': t,
                        'element': element,
                    }]
                logger.push(data);
                console.log(data);
            }

            if (settings.ek_jitsi.autostart == "1") {
                // prevent multiple calls to start video
                settings.ek_jitsi.autostart = 0;
                
                if (settings.ek_jitsi.countdown > 0) {
                    var localdate = new Date(settings.ek_jitsi.timezone);                    
                    // Update the count down every 1 second
                    var x = setInterval(function () {
                        // Get today's date and time
                        var now = new Date().getTime();
                        // Find the distance between now and the count down date
                        var distance = (1000*settings.ek_jitsi.countdown) - now; 
                        // Time calculations for days, hours, minutes and seconds
                        var days = Math.floor(distance / (1000 * 60 * 60 * 24));
                        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
                        var seconds = Math.floor((distance % (1000 * 60)) / 1000);
                        // Display the result in the element 
                        $('#timestamp').html(Drupal.t('Starts in')+ ": "  
                                + days +" "+ Drupal.t('day(s)') +" "
                                + hours +" "+ Drupal.t('hour(s)')+" "
                                + minutes + "m " 
                                + seconds + "s "
                                + "<br>" + localdate);
                        // If the count down is finished go to start
                        if (distance < 0) {
                            clearInterval(x);
                            $('#timestamp').remove();
                            ek_jitsi_start();
                        }
                    }, 1000);
                } else {
                    $('#timestamp').remove();
                    ek_jitsi_start();
                }

            }
        }
    };
})(jQuery, Drupal, drupalSettings);


Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc