浏览代码

Merge branch 'gerges-issue/client-analytics'

master
hristoterezov 9 年前
父节点
当前提交
a7cd8bab11
共有 4 个文件被更改,包括 74 次插入12 次删除
  1. 18
    8
      analytics.js
  2. 4
    0
      modules/UI/toolbars/BottomToolbar.js
  3. 37
    4
      modules/UI/toolbars/Toolbar.js
  4. 15
    0
      modules/statistics/AnalyticsAdapter.js

+ 18
- 8
analytics.js 查看文件

1
-/**
2
- * Google Analytics
3
- */
4
-(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
5
-             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
-          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
7
-        ga('create', 'UA-319188-14', 'jit.si');
8
-        ga('send', 'pageview');
1
+(function (ctx) {
2
+  function Analytics() {
3
+    /**
4
+     * Google Analytics
5
+     */
6
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
7
+        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
8
+    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
9
+    ga('create', 'UA-319188-14', 'jit.si');
10
+    ga('send', 'pageview');
11
+  }
12
+
13
+  Analytics.prototype.sendEvent = function (action, data) {
14
+    ga('send', 'event', 'jit.si', action);
15
+  };
16
+
17
+  ctx.Analytics = Analytics;
18
+}(window));

+ 4
- 0
modules/UI/toolbars/BottomToolbar.js 查看文件

1
 /* global $ */
1
 /* global $ */
2
 var PanelToggler = require("../side_pannels/SidePanelToggler");
2
 var PanelToggler = require("../side_pannels/SidePanelToggler");
3
 var UIUtil = require("../util/UIUtil");
3
 var UIUtil = require("../util/UIUtil");
4
+var AnalyticsAdapter = require("../../statistics/AnalyticsAdapter");
4
 
5
 
5
 var buttonHandlers = {
6
 var buttonHandlers = {
6
     "bottom_toolbar_contact_list": function () {
7
     "bottom_toolbar_contact_list": function () {
8
+        AnalyticsAdapter.sendEvent('bottomtoolbar.contacts.toggled');
7
         BottomToolbar.toggleContactList();
9
         BottomToolbar.toggleContactList();
8
     },
10
     },
9
     "bottom_toolbar_film_strip": function () {
11
     "bottom_toolbar_film_strip": function () {
12
+        AnalyticsAdapter.sendEvent('bottomtoolbar.filmstrip.toggled');
10
         BottomToolbar.toggleFilmStrip();
13
         BottomToolbar.toggleFilmStrip();
11
     },
14
     },
12
     "bottom_toolbar_chat": function () {
15
     "bottom_toolbar_chat": function () {
16
+        AnalyticsAdapter.sendEvent('bottomtoolbar.chat.toggled');
13
         BottomToolbar.toggleChat();
17
         BottomToolbar.toggleChat();
14
     }
18
     }
15
 };
19
 };

+ 37
- 4
modules/UI/toolbars/Toolbar.js 查看文件

10
 var UIUtil = require("../util/UIUtil");
10
 var UIUtil = require("../util/UIUtil");
11
 var AuthenticationEvents
11
 var AuthenticationEvents
12
     = require("../../../service/authentication/AuthenticationEvents");
12
     = require("../../../service/authentication/AuthenticationEvents");
13
+var AnalyticsAdapter = require("../../statistics/AnalyticsAdapter");
13
 
14
 
14
 var roomUrl = null;
15
 var roomUrl = null;
15
 var sharedKey = '';
16
 var sharedKey = '';
18
 
19
 
19
 var buttonHandlers = {
20
 var buttonHandlers = {
20
     "toolbar_button_mute": function () {
21
     "toolbar_button_mute": function () {
22
+        if (APP.RTC.localAudio.isMuted()) {
23
+            AnalyticsAdapter.sendEvent('toolbar.audio.unmuted');
24
+        } else {
25
+            AnalyticsAdapter.sendEvent('toolbar.audio.muted');
26
+        }
21
         return APP.UI.toggleAudio();
27
         return APP.UI.toggleAudio();
22
     },
28
     },
23
     "toolbar_button_camera": function () {
29
     "toolbar_button_camera": function () {
30
+        if (APP.RTC.localVideo.isMuted()) {
31
+            AnalyticsAdapter.sendEvent('toolbar.video.enabled');
32
+        } else {
33
+            AnalyticsAdapter.sendEvent('toolbar.video.disabled');
34
+        }
24
         return APP.UI.toggleVideo();
35
         return APP.UI.toggleVideo();
25
     },
36
     },
26
     /*"toolbar_button_authentication": function () {
37
     /*"toolbar_button_authentication": function () {
27
         return Toolbar.authenticateClicked();
38
         return Toolbar.authenticateClicked();
28
     },*/
39
     },*/
29
     "toolbar_button_record": function () {
40
     "toolbar_button_record": function () {
41
+        AnalyticsAdapter.sendEvent('toolbar.recording.toggled');
30
         return toggleRecording();
42
         return toggleRecording();
31
     },
43
     },
32
     "toolbar_button_security": function () {
44
     "toolbar_button_security": function () {
45
+        if (sharedKey) {
46
+            AnalyticsAdapter.sendEvent('toolbar.lock.disabled');
47
+        } else {
48
+            AnalyticsAdapter.sendEvent('toolbar.lock.enabled');
49
+        }
33
         return Toolbar.openLockDialog();
50
         return Toolbar.openLockDialog();
34
     },
51
     },
35
     "toolbar_button_link": function () {
52
     "toolbar_button_link": function () {
53
+        AnalyticsAdapter.sendEvent('toolbar.invite.clicked');
36
         return Toolbar.openLinkDialog();
54
         return Toolbar.openLinkDialog();
37
     },
55
     },
38
     "toolbar_button_chat": function () {
56
     "toolbar_button_chat": function () {
57
+        AnalyticsAdapter.sendEvent('toolbar.chat.toggled');
39
         return BottomToolbar.toggleChat();
58
         return BottomToolbar.toggleChat();
40
     },
59
     },
41
     "toolbar_button_prezi": function () {
60
     "toolbar_button_prezi": function () {
61
+        AnalyticsAdapter.sendEvent('toolbar.prezi.clicked');
42
         return Prezi.openPreziDialog();
62
         return Prezi.openPreziDialog();
43
     },
63
     },
44
     "toolbar_button_etherpad": function () {
64
     "toolbar_button_etherpad": function () {
65
+        AnalyticsAdapter.sendEvent('toolbar.etherpad.clicked');
45
         return Etherpad.toggleEtherpad(0);
66
         return Etherpad.toggleEtherpad(0);
46
     },
67
     },
47
     "toolbar_button_desktopsharing": function () {
68
     "toolbar_button_desktopsharing": function () {
69
+        if (APP.desktopsharing.isUsingScreenStream) {
70
+            AnalyticsAdapter.sendEvent('toolbar.screen.disabled');
71
+        } else {
72
+            AnalyticsAdapter.sendEvent('toolbar.screen.enabled');
73
+        }
48
         return APP.desktopsharing.toggleScreenSharing();
74
         return APP.desktopsharing.toggleScreenSharing();
49
     },
75
     },
50
     "toolbar_button_fullScreen": function() {
76
     "toolbar_button_fullScreen": function() {
77
+        AnalyticsAdapter.sendEvent('toolbar.fullscreen.enabled');
51
         UIUtil.buttonClick("#toolbar_button_fullScreen", "icon-full-screen icon-exit-full-screen");
78
         UIUtil.buttonClick("#toolbar_button_fullScreen", "icon-full-screen icon-exit-full-screen");
52
         return Toolbar.toggleFullScreen();
79
         return Toolbar.toggleFullScreen();
53
     },
80
     },
54
     "toolbar_button_sip": function () {
81
     "toolbar_button_sip": function () {
82
+        AnalyticsAdapter.sendEvent('toolbar.sip.clicked');
55
         return callSipButtonClicked();
83
         return callSipButtonClicked();
56
     },
84
     },
57
     "toolbar_button_dialpad": function () {
85
     "toolbar_button_dialpad": function () {
86
+        AnalyticsAdapter.sendEvent('toolbar.sip.dialpad.clicked');
58
         return dialpadButtonClicked();
87
         return dialpadButtonClicked();
59
     },
88
     },
60
     "toolbar_button_settings": function () {
89
     "toolbar_button_settings": function () {
90
+        AnalyticsAdapter.sendEvent('toolbar.settings.toggled');
61
         PanelToggler.toggleSettingsMenu();
91
         PanelToggler.toggleSettingsMenu();
62
     },
92
     },
63
     "toolbar_button_hangup": function () {
93
     "toolbar_button_hangup": function () {
94
+        AnalyticsAdapter.sendEvent('toolbar.hangup');
64
         return hangup();
95
         return hangup();
65
     },
96
     },
66
     "toolbar_button_login": function () {
97
     "toolbar_button_login": function () {
98
+        AnalyticsAdapter.sendEvent('toolbar.authenticate.login.clicked');
67
         Toolbar.authenticateClicked();
99
         Toolbar.authenticateClicked();
68
     },
100
     },
69
     "toolbar_button_logout": function () {
101
     "toolbar_button_logout": function () {
102
+        AnalyticsAdapter.sendEvent('toolbar.authenticate.logout.clicked');
70
         // Ask for confirmation
103
         // Ask for confirmation
71
         messageHandler.openTwoButtonDialog(
104
         messageHandler.openTwoButtonDialog(
72
             "dialog.logoutTitle",
105
             "dialog.logoutTitle",
418
      * Opens the invite link dialog.
451
      * Opens the invite link dialog.
419
      */
452
      */
420
     my.openLinkDialog = function () {
453
     my.openLinkDialog = function () {
421
-        var inviteAttreibutes;
454
+        var inviteAttributes;
422
 
455
 
423
         if (roomUrl === null) {
456
         if (roomUrl === null) {
424
-            inviteAttreibutes = 'data-i18n="[value]roomUrlDefaultMsg" value="' +
457
+            inviteAttributes = 'data-i18n="[value]roomUrlDefaultMsg" value="' +
425
             APP.translation.translateString("roomUrlDefaultMsg") + '"';
458
             APP.translation.translateString("roomUrlDefaultMsg") + '"';
426
         } else {
459
         } else {
427
-            inviteAttreibutes = "value=\"" + encodeURI(roomUrl) + "\"";
460
+            inviteAttributes = "value=\"" + encodeURI(roomUrl) + "\"";
428
         }
461
         }
429
         messageHandler.openTwoButtonDialog("dialog.shareLink",
462
         messageHandler.openTwoButtonDialog("dialog.shareLink",
430
             null, null,
463
             null, null,
431
             '<input id="inviteLinkRef" type="text" ' +
464
             '<input id="inviteLinkRef" type="text" ' +
432
-                inviteAttreibutes + ' onclick="this.select();" readonly>',
465
+                inviteAttributes + ' onclick="this.select();" readonly>',
433
             false,
466
             false,
434
             "dialog.Invite",
467
             "dialog.Invite",
435
             function (e, v) {
468
             function (e, v) {

+ 15
- 0
modules/statistics/AnalyticsAdapter.js 查看文件

1
+function NoopAnalytics() {}
2
+NoopAnalytics.prototype.sendEvent = function () {};
3
+
4
+function AnalyticsAdapter() {
5
+  var AnalyticsImpl = window.Analytics || NoopAnalytics;
6
+  this.analytics = new AnalyticsImpl();
7
+}
8
+
9
+AnalyticsAdapter.prototype.sendEvent = function (action, data) {
10
+  try {
11
+    this.analytics.sendEvent.apply(this.analytics, arguments);
12
+  } catch (ignored) {}
13
+};
14
+
15
+module.exports = new AnalyticsAdapter();

正在加载...
取消
保存