%PDF- %PDF-
Direktori : /home/tjamichg/portal.tjamich.gob.mx/adminit2018/assets/js/pages/ |
Current File : /home/tjamichg/portal.tjamich.gob.mx/adminit2018/assets/js/pages/base_ui_chat.js |
/* * Document : base_ui_chat.js * Author : pixelcave * Description: Custom JS code used in Chat Pages */ var BaseUIChat = function() { // Helper variables - set in initChat() var $lWindow, $lHeader, $lFooter, $cContainer, $cHead, $cTalk, $cPeople, $cform, $cTimeout; // Init chat var initChat = function() { // Set variables $lWindow = jQuery(window); $lHeader = jQuery('#header-navbar'); $lFooter = jQuery('#page-footer'); $cContainer = jQuery('.js-chat-container'); $cHead = jQuery('.js-chat-head'); $cTalk = jQuery('.js-chat-talk'); $cPeople = jQuery('.js-chat-people'); $cform = jQuery('.js-chat-form'); // Add word wraping to chat content $cTalk.css('word-wrap', 'break-word'); // Chat layout mode switch ($cContainer.data('chat-mode')) { case 'full': // Init chat windows' height initChatWindows(); // ..also on browser resize or orientation change jQuery(window).on('resize orientationchange', function(){ clearTimeout($cTimeout); $cTimeout = setTimeout(function(){ initChatWindows(); }, 150); }); break; case 'fixed': // Init chat windows' height with a specific height initChatWindows($cContainer.data('chat-height')); break; case 'popup': // Init chat windows' height with a specific height initChatWindows($cContainer.data('chat-height')); // Adjust chat container $cContainer.css({ 'position': 'fixed', 'right': '10px', 'bottom': 0, 'display': 'inline-block', 'padding': 0, 'width': '70%', 'max-width': '420px', 'min-width': '300px', 'z-index': '1031' }); break; default: return false; } // Enable scroll lock to chat talk window $cTalk.scrollLock('enable'); // Init form submission $cform.on('submit', function(e){ // Stop form submission e.preventDefault(); // Get chat input var $chatInput = jQuery('.js-chat-input', jQuery(this)); // Add message chatAddMessage($chatInput.data('target-chat-id'), $chatInput.val(), 'self', $chatInput); }); }; // Init chat windows' height var initChatWindows = function($customHeight) { if ($customHeight) { $cHeight = $customHeight; } else { // Calculate height var $cHeight = $lWindow.height() - $lHeader.outerHeight() - $lFooter.outerHeight() - $cHead.outerHeight() - (parseInt($cContainer.css('padding-top')) + parseInt($cContainer.css('padding-bottom'))); // Add a minimum height if ($cHeight < 200) { $cHeight = 200; } } // Set height to chat windows (+ people window if exists) if ($cPeople) { $cPeople.css('height', $cHeight); } $cTalk.css('height', $cHeight - $cform.outerHeight()); }; // Add a message to a chat window var chatAddMessage = function($chatId, $chatMsg, $chatMsgLevel, $chatInput) { // Get chat window var $chatWindow = jQuery('.js-chat-talk[data-chat-id="' + $chatId + '"]'); // If message and chat window exists if ($chatMsg && $chatWindow.length) { var $chatBlockClasses = 'animated fadeIn push-50-l'; var $chatMsgClasses = 'bg-gray-lighter'; // Post it to its related window (if message level is 'self', make it stand out) if ($chatMsgLevel === 'self') { $chatBlockClasses = 'animated fadeInUp push-50-r'; $chatMsgClasses = 'bg-gray-light'; } $chatWindow.append('<div class="block block-rounded block-transparent push-15 ' + $chatBlockClasses + '">' + '<div class="block-content block-content-full block-content-mini ' + $chatMsgClasses + '">' + jQuery('<div />').text($chatMsg).html() + '</div>' + '</div>'); // Scroll the message list to the bottom $chatWindow.animate({ scrollTop: $chatWindow[0].scrollHeight }, 150); // If input is set, reset it if ($chatInput) { $chatInput.val(''); } } }; return { init: function() { // Init chat initChat(); }, addMessage: function($chatId, $chatMsg, $chatMsgLevel) { // Add message chatAddMessage($chatId, $chatMsg, $chatMsgLevel, false); } }; }(); // Initialize when page loads jQuery(function(){ BaseUIChat.init(); });