Subversion Repositories Integrator Subversion

Rev

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