Browse Source

Refactor filmstrip module

master
Ilya Daynatovich 9 years ago
parent
commit
51d48e18c6
1 changed files with 60 additions and 28 deletions
  1. 60
    28
      modules/UI/videolayout/FilmStrip.js

+ 60
- 28
modules/UI/videolayout/FilmStrip.js View File

@@ -10,36 +10,35 @@ const FilmStrip = {
10 10
      * emit/fire {UIEvents} (such as {UIEvents.TOGGLED_FILM_STRIP}).
11 11
      */
12 12
     init (eventEmitter) {
13
+        this.iconMenuDownClassName = 'icon-menu-down';
14
+        this.iconMenuUpClassName = 'icon-menu-up';
13 15
         this.filmStrip = $('#remoteVideos');
14 16
         this.eventEmitter = eventEmitter;
15 17
         this.filmStripIsVisible = true;
16
-        this.renderFilmstripToolbar();
17
-        this.activateHideButton();
18
+        this._initFilmStripToolbar();
19
+        this.registerListeners();
18 20
     },
19 21
 
20 22
     /**
21
-     * Attach 'click' listener to "hide filmstrip" button
23
+     * Initializes the filmstrip toolbar
22 24
      */
23
-    activateHideButton () {
24
-        $('#videospace').on('click', '#hideVideoToolbar', () => {
25
-            var icon = document.querySelector('#hideVideoToolbar i');
25
+    _initFilmStripToolbar() {
26
+        let toolbar = this._generateFilmStripToolbar();
26 27
 
27
-            this.filmStripIsVisible = !this.filmStripIsVisible;
28
-            this.toggleFilmStrip(this.filmStripIsVisible);
28
+        document.querySelector('#videospace')
29
+            .insertBefore(toolbar, document.querySelector('#remoteVideos'));
29 30
 
30
-            icon.classList.remove(
31
-                this.filmStripIsVisible ? 'icon-menu-up' : 'icon-menu-down');
32
-            icon.classList.add(
33
-                this.filmStripIsVisible ? 'icon-menu-down' : 'icon-menu-up');
34
-        });
31
+        let iconSelector = '#hideVideoToolbar i';
32
+        this.toggleFilmStripIcon = document.querySelector(iconSelector);
35 33
     },
36 34
 
37 35
     /**
38
-     * Shows toolbar on the right of the filmstrip
36
+     * Generates HTML layout for filmstrip toolbar
37
+     * @returns {HTMLElement}
38
+     * @private
39 39
      */
40
-    renderFilmstripToolbar () {
41
-        // create toolbar
42
-        var container = document.createElement('div');
40
+    _generateFilmStripToolbar() {
41
+        let container = document.createElement('div');
43 42
         container.className = 'filmstripToolbar';
44 43
 
45 44
         container.innerHTML = `
@@ -49,9 +48,42 @@ const FilmStrip = {
49 48
             </button>
50 49
         `;
51 50
 
52
-        // show toolbar
53
-        document.querySelector('#videospace')
54
-            .insertBefore(container, document.querySelector('#remoteVideos'));
51
+        return container;
52
+    },
53
+
54
+    /**
55
+     * Attach 'click' listener to "hide filmstrip" button
56
+     */
57
+    registerListeners() {
58
+        $('#videospace').on('click', '#hideVideoToolbar', () => {
59
+
60
+            this.filmStripIsVisible = !this.filmStripIsVisible;
61
+            this.toggleFilmStrip(this.filmStripIsVisible);
62
+
63
+            if (this.filmStripIsVisible) {
64
+                this.showMenuDownIcon();
65
+            } else {
66
+                this.showMenuUpIcon();
67
+            }
68
+        });
69
+    },
70
+
71
+    /**
72
+     * Changes classes of icon for showing down state
73
+     */
74
+    showMenuDownIcon() {
75
+        let icon = this.toggleFilmStripIcon;
76
+        icon.classList.add(this.iconMenuDownClassName);
77
+        icon.classList.remove(this.iconMenuUpClassName);
78
+    },
79
+
80
+    /**
81
+     * Changes classes of icon for showing up state
82
+     */
83
+    showMenuUpIcon() {
84
+        let icon = this.toggleFilmStripIcon;
85
+        icon.classList.add(this.iconMenuUpClassName);
86
+        icon.classList.remove(this.iconMenuDownClassName);
55 87
     },
56 88
 
57 89
     /**
@@ -62,7 +94,7 @@ const FilmStrip = {
62 94
      * (i.e. toggled); otherwise, the visibility will be set to the specified
63 95
      * value.
64 96
      */
65
-    toggleFilmStrip (visible) {
97
+    toggleFilmStrip(visible) {
66 98
         if (typeof visible === 'boolean'
67 99
             && this.isFilmStripVisible() == visible) {
68 100
             return;
@@ -79,18 +111,18 @@ const FilmStrip = {
79 111
         }
80 112
     },
81 113
 
82
-    isFilmStripVisible () {
114
+    isFilmStripVisible() {
83 115
         return !this.filmStrip.hasClass('hidden');
84 116
     },
85 117
 
86
-    setupFilmStripOnly () {
118
+    setupFilmStripOnly() {
87 119
         this.filmStrip.css({
88 120
             padding: "0px 0px 18px 0px",
89 121
             right: 0
90 122
         });
91 123
     },
92 124
 
93
-    getFilmStripHeight () {
125
+    getFilmStripHeight() {
94 126
         if (this.isFilmStripVisible()) {
95 127
             return this.filmStrip.outerHeight();
96 128
         } else {
@@ -98,7 +130,7 @@ const FilmStrip = {
98 130
         }
99 131
     },
100 132
 
101
-    getFilmStripWidth () {
133
+    getFilmStripWidth() {
102 134
         return this.filmStrip.innerWidth()
103 135
             - parseInt(this.filmStrip.css('paddingLeft'), 10)
104 136
             - parseInt(this.filmStrip.css('paddingRight'), 10);
@@ -115,7 +147,7 @@ const FilmStrip = {
115 147
     /**
116 148
      * Normalizes local and remote thumbnail ratios
117 149
      */
118
-    normalizeThumbnailRatio () {
150
+    normalizeThumbnailRatio() {
119 151
         let remoteHeightRatio = interfaceConfig.REMOTE_THUMBNAIL_RATIO_HEIGHT;
120 152
         let remoteWidthRatio = interfaceConfig.REMOTE_THUMBNAIL_RATIO_WIDTH;
121 153
 
@@ -251,7 +283,7 @@ const FilmStrip = {
251 283
         };
252 284
     },
253 285
 
254
-    resizeThumbnails (local, remote,
286
+    resizeThumbnails(local, remote,
255 287
                       animate = false, forceUpdate = false) {
256 288
 
257 289
         return new Promise(resolve => {
@@ -289,7 +321,7 @@ const FilmStrip = {
289 321
         });
290 322
     },
291 323
 
292
-    getThumbs (only_visible = false) {
324
+    getThumbs(only_visible = false) {
293 325
         let selector = 'span';
294 326
         if (only_visible) {
295 327
             selector += ':visible';

Loading…
Cancel
Save