github.com/apremalal/vamps-core@v1.0.1-0.20161221121535-d430b56ec174/server/webapps/app/base/js/quick-sidebar.js (about) 1 /** 2 Core script to handle the entire theme and core functions 3 **/ 4 var QuickSidebar = function () { 5 6 // Handles quick sidebar toggler 7 var handleQuickSidebarToggler = function () { 8 // quick sidebar toggler 9 $('.top-menu .dropdown-quick-sidebar-toggler a, .page-quick-sidebar-toggler').click(function (e) { 10 $('body').toggleClass('page-quick-sidebar-open'); 11 }); 12 }; 13 14 // Handles quick sidebar chats 15 var handleQuickSidebarChat = function () { 16 var wrapper = $('.page-quick-sidebar-wrapper'); 17 var wrapperChat = wrapper.find('.page-quick-sidebar-chat'); 18 19 var initChatSlimScroll = function () { 20 var chatUsers = wrapper.find('.page-quick-sidebar-chat-users'); 21 var chatUsersHeight; 22 23 chatUsersHeight = wrapper.height() - wrapper.find('.nav-justified > .nav-tabs').outerHeight(); 24 25 // chat user list 26 Metronic.destroySlimScroll(chatUsers); 27 chatUsers.attr("data-height", chatUsersHeight); 28 Metronic.initSlimScroll(chatUsers); 29 30 var chatMessages = wrapperChat.find('.page-quick-sidebar-chat-user-messages'); 31 var chatMessagesHeight = chatUsersHeight - wrapperChat.find('.page-quick-sidebar-chat-user-form').outerHeight() - wrapperChat.find('.page-quick-sidebar-nav').outerHeight(); 32 33 // user chat messages 34 Metronic.destroySlimScroll(chatMessages); 35 chatMessages.attr("data-height", chatMessagesHeight); 36 Metronic.initSlimScroll(chatMessages); 37 }; 38 39 initChatSlimScroll(); 40 Metronic.addResizeHandler(initChatSlimScroll); // reinitialize on window resize 41 42 wrapper.find('.page-quick-sidebar-chat-users .media-list > .media').click(function () { 43 wrapperChat.addClass("page-quick-sidebar-content-item-shown"); 44 }); 45 46 wrapper.find('.page-quick-sidebar-chat-user .page-quick-sidebar-back-to-list').click(function () { 47 wrapperChat.removeClass("page-quick-sidebar-content-item-shown"); 48 }); 49 50 var handleChatMessagePost = function (e) { 51 e.preventDefault(); 52 53 var chatContainer = wrapperChat.find(".page-quick-sidebar-chat-user-messages"); 54 var input = wrapperChat.find('.page-quick-sidebar-chat-user-form .form-control'); 55 56 var text = input.val(); 57 if (text.length === 0) { 58 return; 59 } 60 61 var preparePost = function(dir, time, name, avatar, message) { 62 var tpl = ''; 63 tpl += '<div class="post '+ dir +'">'; 64 tpl += '<img class="avatar" alt="" src="' + Layout.getLayoutImgPath() + avatar +'.jpg"/>'; 65 tpl += '<div class="message">'; 66 tpl += '<span class="arrow"></span>'; 67 tpl += '<a href="#" class="name">Bob Nilson</a> '; 68 tpl += '<span class="datetime">' + time + '</span>'; 69 tpl += '<span class="body">'; 70 tpl += message; 71 tpl += '</span>'; 72 tpl += '</div>'; 73 tpl += '</div>'; 74 75 return tpl; 76 }; 77 78 // handle post 79 var time = new Date(); 80 var message = preparePost('out', (time.getHours() + ':' + time.getMinutes()), "Bob Nilson", 'avatar3', text); 81 message = $(message); 82 chatContainer.append(message); 83 84 var getLastPostPos = function() { 85 var height = 0; 86 chatContainer.find(".post").each(function() { 87 height = height + $(this).outerHeight(); 88 }); 89 90 return height; 91 }; 92 93 chatContainer.slimScroll({ 94 scrollTo: getLastPostPos() 95 }); 96 97 input.val(""); 98 99 // simulate reply 100 setTimeout(function(){ 101 var time = new Date(); 102 var message = preparePost('in', (time.getHours() + ':' + time.getMinutes()), "Ella Wong", 'avatar2', 'Lorem ipsum doloriam nibh...'); 103 message = $(message); 104 chatContainer.append(message); 105 106 chatContainer.slimScroll({ 107 scrollTo: getLastPostPos() 108 }); 109 }, 3000); 110 }; 111 112 wrapperChat.find('.page-quick-sidebar-chat-user-form .btn').click(handleChatMessagePost); 113 wrapperChat.find('.page-quick-sidebar-chat-user-form .form-control').keypress(function (e) { 114 if (e.which == 13) { 115 handleChatMessagePost(e); 116 return false; 117 } 118 }); 119 }; 120 121 // Handles quick sidebar tasks 122 var handleQuickSidebarAlerts = function () { 123 var wrapper = $('.page-quick-sidebar-wrapper'); 124 var wrapperAlerts = wrapper.find('.page-quick-sidebar-alerts'); 125 126 var initAlertsSlimScroll = function () { 127 var alertList = wrapper.find('.page-quick-sidebar-alerts-list'); 128 var alertListHeight; 129 130 alertListHeight = wrapper.height() - wrapper.find('.nav-justified > .nav-tabs').outerHeight(); 131 132 // alerts list 133 Metronic.destroySlimScroll(alertList); 134 alertList.attr("data-height", alertListHeight); 135 Metronic.initSlimScroll(alertList); 136 }; 137 138 initAlertsSlimScroll(); 139 Metronic.addResizeHandler(initAlertsSlimScroll); // reinitialize on window resize 140 }; 141 142 // Handles quick sidebar settings 143 var handleQuickSidebarSettings = function () { 144 var wrapper = $('.page-quick-sidebar-wrapper'); 145 var wrapperAlerts = wrapper.find('.page-quick-sidebar-settings'); 146 147 var initSettingsSlimScroll = function () { 148 var settingsList = wrapper.find('.page-quick-sidebar-settings-list'); 149 var settingsListHeight; 150 151 settingsListHeight = wrapper.height() - wrapper.find('.nav-justified > .nav-tabs').outerHeight(); 152 153 // alerts list 154 Metronic.destroySlimScroll(settingsList); 155 settingsList.attr("data-height", settingsListHeight); 156 Metronic.initSlimScroll(settingsList); 157 }; 158 159 initSettingsSlimScroll(); 160 Metronic.addResizeHandler(initSettingsSlimScroll); // reinitialize on window resize 161 }; 162 163 return { 164 165 init: function () { 166 //layout handlers 167 handleQuickSidebarToggler(); // handles quick sidebar's toggler 168 handleQuickSidebarChat(); // handles quick sidebar's chats 169 handleQuickSidebarAlerts(); // handles quick sidebar's alerts 170 handleQuickSidebarSettings(); // handles quick sidebar's setting 171 } 172 }; 173 174 }();