Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | espaco | 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 | }(); |