Przeglądaj źródła

make side panels init from js

master
Konstantyn Pahsura 8 lat temu
rodzic
commit
a1e098680d

+ 1
- 88
index.html Wyświetl plik

@@ -140,94 +140,7 @@
140 140
 
141 141
             <a class="button icon-feedback" id="feedbackButton"></a>
142 142
 
143
-            <div id="sideToolbarContainer">
144
-                <div id="profile_container" class="sideToolbarContainer__inner">
145
-                    <div class="title" data-i18n="profile.title"></div>
146
-                    <div class="sideToolbarBlock first">
147
-                        <label class="first" data-i18n="profile.setDisplayNameLabel"></label>
148
-                        <input type="text" id="setDisplayName" data-i18n="[placeholder]settings.name">
149
-                    </div>
150
-                    <div class="sideToolbarBlock">
151
-                        <label data-i18n="profile.setEmailLabel"></label>
152
-                        <input data-i18n="[placeholder]profile.setEmailInput" type="text" id="setEmail">
153
-                    </div>
154
-                    <div class="sideToolbarBlock auth_container" id="authenticationContainer">
155
-                        <p data-i18n="toolbar.authenticate"></p>
156
-                        <ul>
157
-                            <li id="toolbar_auth_identity"></li>
158
-                            <li id="toolbar_button_login">
159
-                                <a class="authButton" data-i18n="toolbar.login"></a>
160
-                            </li>
161
-                            <li id="toolbar_button_logout">
162
-                                <a class="authButton" data-i18n="toolbar.logout"></a>
163
-                            </li>
164
-                        </ul>
165
-                    </div>
166
-                </div>
167
-                <div id="chat_container" class="sideToolbarContainer__inner">
168
-                    <div id="nickname">
169
-                        <span data-i18n="chat.nickname.title"></span>
170
-                        <form>
171
-                            <input type='text' id="nickinput" data-i18n="[placeholder]chat.nickname.popover" autofocus>
172
-                        </form>
173
-                    </div>
174
-
175
-                    <div id="chatconversation"></div>
176
-                    <audio id="chatNotification" src="sounds/incomingMessage.wav" preload="auto"></audio>
177
-                    <textarea id="usermsg" data-i18n="[placeholder]chat.messagebox" autofocus></textarea>
178
-                    <div id="smileysarea">
179
-                        <div id="smileys" id="toggle_smileys">
180
-                            <img src="images/smile.svg"/>
181
-                        </div>
182
-                    </div>
183
-                </div>
184
-                <div id="contacts_container" class="sideToolbarContainer__inner">
185
-                    <div class="title" data-i18n="contactlist" data-i18n-options='{"pcount":"1"}'></div>
186
-                    <ul id="contacts"></ul>
187
-                </div>
188
-                <div id="settings_container" class="sideToolbarContainer__inner">
189
-                    <div class="title" data-i18n="settings.title"></div>
190
-                    <form class="aui">
191
-                        <div id="languagesSelectWrapper" class="sideToolbarBlock first hide">
192
-                            <select id="languagesSelect"></select>
193
-                        </div>
194
-                        <div id="deviceOptionsWrapper" class="hide">
195
-                            <div id="deviceOptionsTitle" class="subTitle hide" data-i18n="settings.audioVideo"></div>
196
-                            <div class="sideToolbarBlock first">
197
-                                <label class="first" data-i18n="settings.selectCamera"></label>
198
-                                <select id="selectCamera"></select>
199
-                            </div>
200
-                            <div class="sideToolbarBlock">
201
-                                <label data-i18n="settings.selectMic"></label>
202
-                                <select id="selectMic"></select>
203
-                            </div>
204
-                            <div class="sideToolbarBlock">
205
-                                <label data-i18n="settings.selectAudioOutput"></label>
206
-                                <select id="selectAudioOutput"></select>
207
-                            </div>
208
-                        </div>
209
-                        <div id="moderatorOptionsWrapper" class="hide">
210
-                            <div id="moderatorOptionsTitle" class="subTitle hide" data-i18n="settings.moderator"></div>
211
-                            <div id="startMutedOptions" class="hide">
212
-                                <div class="sideToolbarBlock first">
213
-                                    <input type="checkbox" id="startAudioMuted">
214
-                                    <label class="startMutedLabel" for="startAudioMuted" data-i18n="settings.startAudioMuted"></label>
215
-                                </div>
216
-                                <div class="sideToolbarBlock">
217
-                                    <input type="checkbox" id="startVideoMuted">
218
-                                    <label class="startMutedLabel" for="startVideoMuted" data-i18n="settings.startVideoMuted"></label>
219
-                                </div>
220
-                            </div>
221
-                            <div id="followMeOptions" class="hide">
222
-                                <div class="sideToolbarBlock">
223
-                                    <input type="checkbox" id="followMeCheckBox">
224
-                                    <label class="followMeLabel" for="followMeCheckBox" data-i18n="settings.followMe"></label>
225
-                                </div>
226
-                            </div>
227
-                        </div>
228
-                    </form>
229
-                </div>
230
-            </div>
143
+            <div id="sideToolbarContainer"></div>
231 144
         </div>
232 145
         <div id="videospace">
233 146
             <div id="largeVideoContainer" class="videocontainer">

+ 5
- 14
modules/UI/UI.js Wyświetl plik

@@ -2,6 +2,7 @@
2 2
 var UI = {};
3 3
 
4 4
 import Chat from "./side_pannels/chat/Chat";
5
+import SidePanels from "./side_pannels/SidePanels";
5 6
 import Toolbar from "./toolbars/Toolbar";
6 7
 import ToolbarToggler from "./toolbars/ToolbarToggler";
7 8
 import Avatar from "./avatar/Avatar";
@@ -125,20 +126,13 @@ function promptDisplayName() {
125 126
 }
126 127
 
127 128
 /**
128
- * Initialize chat.
129
- */
130
-function setupChat() {
131
-    Chat.init(eventEmitter);
132
-    $("#toggle_smileys").click(function() {
133
-        Chat.toggleSmileys();
134
-    });
135
-}
136
-
137
-/**
138
- * Initialize toolbars.
129
+ * Initialize toolbars with side panels.
139 130
  */
140 131
 function setupToolbars() {
132
+    // Initialize toolbar buttons
141 133
     Toolbar.init(eventEmitter);
134
+    // Initialize side panels
135
+    SidePanels.init(eventEmitter);
142 136
 }
143 137
 
144 138
 /**
@@ -439,7 +433,6 @@ UI.start = function () {
439 433
         }, 100, { leading: true, trailing: false });
440 434
         $("#videoconference_page").mousemove(debouncedShowToolbar);
441 435
         setupToolbars();
442
-        setupChat();
443 436
 
444 437
         // Initialise the recording module.
445 438
         if (config.enableRecording)
@@ -482,8 +475,6 @@ UI.start = function () {
482 475
             "newestOnTop": false
483 476
         };
484 477
 
485
-        SettingsMenu.init(eventEmitter);
486
-        Profile.init(eventEmitter);
487 478
     }
488 479
 
489 480
     if(APP.tokenData.callee) {

+ 19
- 0
modules/UI/side_pannels/SidePanels.js Wyświetl plik

@@ -0,0 +1,19 @@
1
+import Chat from './chat/Chat';
2
+import SettingsMenu from './settings/SettingsMenu';
3
+import Profile from './profile/Profile';
4
+import ContactListView from './contactlist/ContactListView';
5
+
6
+const SidePanels = {
7
+    init (eventEmitter) {
8
+        //Initialize chat
9
+        Chat.init(eventEmitter);
10
+        //Initialize settings
11
+        SettingsMenu.init(eventEmitter);
12
+        //Initialize profile
13
+        Profile.init(eventEmitter);
14
+        //Initialize contact list view
15
+        ContactListView.init();
16
+    }
17
+};
18
+
19
+export default SidePanels;

+ 33
- 1
modules/UI/side_pannels/chat/Chat.js Wyświetl plik

@@ -1,4 +1,4 @@
1
-/* global APP, $ */
1
+/* global APP, $, _ */
2 2
 
3 3
 import {processReplacements, linkify} from './Replacement';
4 4
 import CommandsProcessor from './Commands';
@@ -10,6 +10,33 @@ import UIEvents from '../../../../service/UI/UIEvents';
10 10
 
11 11
 import { smileys } from './smileys';
12 12
 
13
+const sidePannelsContainerId = 'sideToolbarContainer';
14
+const compiledTpl = _.template(`
15
+    <div id="chat_container" class="sideToolbarContainer__inner">
16
+        <div id="nickname">
17
+            <span data-i18n="chat.nickname.title"></span>
18
+            <form>
19
+                <input type='text' id="nickinput" autofocus 
20
+                    data-i18n="[placeholder]chat.nickname.popover">
21
+            </form>
22
+        </div>
23
+
24
+        <div id="chatconversation"></div>
25
+        <audio id="chatNotification" src="sounds/incomingMessage.wav" 
26
+            preload="auto"></audio>
27
+        <textarea id="usermsg" autofocus 
28
+            data-i18n="[placeholder]chat.messagebox"></textarea>
29
+        <div id="smileysarea">
30
+            <div id="smileys" id="toggle_smileys">
31
+                <img src="images/smile.svg"/>
32
+            </div>
33
+        </div>
34
+    </div>`);
35
+function initHTML() {
36
+    $(`#${sidePannelsContainerId}`)
37
+        .append(compiledTpl());
38
+}
39
+
13 40
 var unreadMessages = 0;
14 41
 
15 42
 /**
@@ -137,10 +164,15 @@ var Chat = {
137 164
      * Initializes chat related interface.
138 165
      */
139 166
     init (eventEmitter) {
167
+        initHTML();
140 168
         if (APP.settings.getDisplayName()) {
141 169
             Chat.setChatConversationMode(true);
142 170
         }
143 171
 
172
+        $("#toggle_smileys").click(function() {
173
+            Chat.toggleSmileys();
174
+        });
175
+
144 176
         $('#nickinput').keydown(function (event) {
145 177
             if (event.keyCode === 13) {
146 178
                 event.preventDefault();

+ 2
- 1
modules/UI/side_pannels/contactlist/ContactList.js Wyświetl plik

@@ -14,7 +14,8 @@ class ContactList {
14 14
         this.conference = conference;
15 15
         this.contacts = [];
16 16
         this.roomLocked = false;
17
-        ContactListView.init(this);
17
+        //setup ContactList Model into ContactList View
18
+        ContactListView.setup(this);
18 19
     }
19 20
 
20 21
     /**

+ 24
- 3
modules/UI/side_pannels/contactlist/ContactListView.js Wyświetl plik

@@ -1,8 +1,20 @@
1
-/* global $, APP, interfaceConfig */
1
+/* global $, APP, interfaceConfig, _ */
2 2
 import Avatar from '../../avatar/Avatar';
3 3
 import UIEvents from '../../../../service/UI/UIEvents';
4 4
 import UIUtil from '../../util/UIUtil';
5 5
 
6
+const sidePannelsContainerId = 'sideToolbarContainer';
7
+const compiledTpl = _.template(`
8
+    <div id="contacts_container" class="sideToolbarContainer__inner">
9
+        <div class="title" data-i18n="contactlist"
10
+            data-i18n-options='{"pcount":"1"}'></div>
11
+        <ul id="contacts"></ul>
12
+    </div>`);
13
+
14
+function initHTML() {
15
+    $(`#${sidePannelsContainerId}`)
16
+        .append(compiledTpl());
17
+}
6 18
 let numberOfContacts = 0;
7 19
 
8 20
 /**
@@ -67,10 +79,19 @@ function getContactEl (id) {
67 79
  * Contact list.
68 80
  */
69 81
 var ContactListView = {
70
-    init (model) {
71
-        this.model = model;
82
+    init () {
83
+        initHTML();
72 84
         this.lockKey = 'roomLocked';
73 85
         this.unlockKey = 'roomUnlocked';
86
+    },
87
+
88
+    /**
89
+     * setup ContactList Model into ContactList View
90
+     *
91
+     * @param model
92
+     */
93
+    setup (model) {
94
+        this.model = model;
74 95
         this.addInviteButton();
75 96
         this.registerListeners();
76 97
         this.toggleLock();

+ 36
- 1
modules/UI/side_pannels/profile/Profile.js Wyświetl plik

@@ -1,10 +1,45 @@
1
-/* global $ */
1
+/* global $, _ */
2 2
 import UIUtil from "../../util/UIUtil";
3 3
 import UIEvents from "../../../../service/UI/UIEvents";
4 4
 import Settings from '../../../settings/Settings';
5 5
 
6
+const sidePannelsContainerId = 'sideToolbarContainer';
7
+const compiledTpl = _.template(`
8
+    <div id="profile_container" class="sideToolbarContainer__inner">
9
+        <div class="title" data-i18n="profile.title"></div>
10
+        <div class="sideToolbarBlock first">
11
+            <label class="first" data-i18n="profile.setDisplayNameLabel">
12
+            </label>
13
+            <input type="text" id="setDisplayName"
14
+                data-i18n="[placeholder]settings.name">
15
+        </div>
16
+        <div class="sideToolbarBlock">
17
+            <label data-i18n="profile.setEmailLabel"></label>
18
+            <input id="setEmail" type="text" 
19
+                data-i18n="[placeholder]profile.setEmailInput">
20
+        </div>
21
+        <div id="authenticationContainer" 
22
+             class="sideToolbarBlock auth_container">
23
+            <p data-i18n="toolbar.authenticate"></p>
24
+            <ul>
25
+                <li id="toolbar_auth_identity"></li>
26
+                <li id="toolbar_button_login">
27
+                    <a class="authButton" data-i18n="toolbar.login"></a>
28
+                </li>
29
+                <li id="toolbar_button_logout">
30
+                    <a class="authButton" data-i18n="toolbar.logout"></a>
31
+                </li>
32
+            </ul>
33
+        </div>
34
+    </div>`);
35
+function initHTML() {
36
+    $(`#${sidePannelsContainerId}`)
37
+        .append(compiledTpl());
38
+}
39
+
6 40
 export default {
7 41
     init (emitter) {
42
+        initHTML();
8 43
         // DISPLAY NAME
9 44
         function updateDisplayName () {
10 45
             emitter.emit(UIEvents.NICKNAME_CHANGED, $('#setDisplayName').val());

+ 58
- 1
modules/UI/side_pannels/settings/SettingsMenu.js Wyświetl plik

@@ -1,10 +1,66 @@
1
-/* global $, APP, AJS, interfaceConfig, JitsiMeetJS */
1
+/* global $, _, APP, AJS, interfaceConfig, JitsiMeetJS */
2 2
 
3 3
 import UIUtil from "../../util/UIUtil";
4 4
 import UIEvents from "../../../../service/UI/UIEvents";
5 5
 import languages from "../../../../service/translation/languages";
6 6
 import Settings from '../../../settings/Settings';
7 7
 
8
+const sidePannelsContainerId = 'sideToolbarContainer';
9
+const compiledTpl = _.template(`
10
+    <div id="settings_container" class="sideToolbarContainer__inner">
11
+        <div class="title" data-i18n="settings.title"></div>
12
+        <form class="aui">
13
+            <div id="languagesSelectWrapper" 
14
+                class="sideToolbarBlock first hide">
15
+                <select id="languagesSelect"></select>
16
+            </div>
17
+            <div id="deviceOptionsWrapper" class="hide">
18
+                <div id="deviceOptionsTitle" class="subTitle hide" 
19
+                    data-i18n="settings.audioVideo"></div>
20
+                <div class="sideToolbarBlock first">
21
+                    <label class="first" data-i18n="settings.selectCamera">
22
+                    </label>
23
+                    <select id="selectCamera"></select>
24
+                </div>
25
+                <div class="sideToolbarBlock">
26
+                    <label data-i18n="settings.selectMic"></label>
27
+                    <select id="selectMic"></select>
28
+                </div>
29
+                <div class="sideToolbarBlock">
30
+                    <label data-i18n="settings.selectAudioOutput"></label>
31
+                    <select id="selectAudioOutput"></select>
32
+                </div>
33
+            </div>
34
+            <div id="moderatorOptionsWrapper" class="hide">
35
+                <div id="moderatorOptionsTitle" class="subTitle hide" 
36
+                    data-i18n="settings.moderator"></div>
37
+                <div id="startMutedOptions" class="hide">
38
+                    <div class="sideToolbarBlock first">
39
+                        <input type="checkbox" id="startAudioMuted">
40
+                        <label class="startMutedLabel" for="startAudioMuted" 
41
+                            data-i18n="settings.startAudioMuted"></label>
42
+                    </div>
43
+                    <div class="sideToolbarBlock">
44
+                        <input type="checkbox" id="startVideoMuted">
45
+                        <label class="startMutedLabel" for="startVideoMuted" 
46
+                            data-i18n="settings.startVideoMuted"></label>
47
+                    </div>
48
+                </div>
49
+                <div id="followMeOptions" class="hide">
50
+                    <div class="sideToolbarBlock">
51
+                        <input type="checkbox" id="followMeCheckBox">
52
+                        <label class="followMeLabel" for="followMeCheckBox" 
53
+                            data-i18n="settings.followMe"></label>
54
+                    </div>
55
+                </div>
56
+            </div>
57
+        </form>
58
+    </div>`);
59
+function initHTML() {
60
+    $(`#${sidePannelsContainerId}`)
61
+        .append(compiledTpl());
62
+}
63
+
8 64
 /**
9 65
  * Generate html select options for available languages.
10 66
  *
@@ -79,6 +135,7 @@ function initSelect2($el, onSelectedCb) {
79 135
 
80 136
 export default {
81 137
     init (emitter) {
138
+        initHTML();
82 139
         //LANGUAGES BOX
83 140
         if (UIUtil.isSettingEnabled('language')) {
84 141
             const wrapperId = 'languagesSelectWrapper';

Ładowanie…
Anuluj
Zapisz