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>&nbsp;';
    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  }();