Mixpanel Analytics

James Peret 8 years ago
parent
commit
d4341d76a9

+ 2 - 0
app/index.html

@@ -28,6 +28,8 @@
28 28
 		<script src="../bower_components/angular-ui-router/release/angular-ui-router.js"></script>
29 29
 		<script src="../bower_components/angular-youtube-mb/src/angular-youtube-embed.js"></script>
30 30
 		<script src="../bower_components/createjs-preloadjs/lib/preloadjs-0.6.1.combined.js"></script>
31
+    <script src="../bower_components/mixpanel/mixpanel-jslib-snippet.min.js"></script>
32
+    <script src="../bower_components/angular-mixpanel/src/angular-mixpanel.js"></script>
31 33
     <!-- endbower -->
32 34
     <!-- endbuild -->
33 35
     <script src="https://www.youtube.com/iframe_api"></script>

+ 2 - 1
app/scripts/app.js

@@ -26,7 +26,8 @@ angular
26 26
     'goApp.video',
27 27
     'goApp.slider',
28 28
     'goApp.contact',
29
-    'mandrill'
29
+    'mandrill',
30
+    'analytics.mixpanel'
30 31
   ])
31 32
 
32 33
   .config(['$stateProvider', '$urlRouterProvider', '$httpProvider', function($stateProvider, $urlRouterProvider, $httpProvider) {

+ 3 - 5
app/scripts/controllers/contact.js

@@ -8,11 +8,12 @@
8 8
  * Controller of the domainManagerApp
9 9
  */
10 10
 angular.module('goApp.contact', ['ngFx', 'ngAnimate', 'goApp.data', 'mandrill'])
11
-  .controller('ContactController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', 'Mandrill', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data, Mandrill) {
11
+  .controller('ContactController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', 'Mandrill', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data, Mandrill, $mixpanel) {
12 12
 
13 13
     'use strict';
14 14
 
15 15
     console.log('> Loading Contact Page');
16
+    $mixpanel.track('Page View', { "Page": "Contact" });
16 17
 
17 18
     // Get Page Data
18 19
     var link = $location.url();
@@ -29,6 +30,7 @@ angular.module('goApp.contact', ['ngFx', 'ngAnimate', 'goApp.data', 'mandrill'])
29 30
     $scope.sendMessage = function(msgData){
30 31
       console.log("> Sending message from " + msgData.name)
31 32
       Mandrill.sendMail(msgData);
33
+      $mixpanel.track('Messsage Sent', { "Name": msgData.name, "email": msgData.email });
32 34
     }
33 35
 
34 36
     // FadeIn
@@ -45,8 +47,4 @@ angular.module('goApp.contact', ['ngFx', 'ngAnimate', 'goApp.data', 'mandrill'])
45 47
     };
46 48
 
47 49
 
48
-
49
-
50
-
51
-
52 50
   }]);

+ 2 - 1
app/scripts/controllers/index.js

@@ -8,8 +8,9 @@
8 8
  * Controller of the domainManagerApp
9 9
  */
10 10
 angular.module('goApp.index', ['famous.angular', 'ngFx', 'ngAnimate'])
11
-  .controller('IndexController',['$scope', '$rootScope', '$famous', '$timeline', function ($scope,  $rootScope, $famous, $timeline) {
11
+  .controller('IndexController',['$scope', '$rootScope', '$famous', '$timeline', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $mixpanel) {
12 12
 
13 13
     'use strict';
14
+    $mixpanel.track('Page View', { "Page": "index" });
14 15
 
15 16
   }]);

+ 7 - 1
app/scripts/controllers/navigation.js

@@ -8,7 +8,7 @@
8 8
  * Controller of the domainManagerApp
9 9
  */
10 10
 angular.module('goApp.navigation', ['famous.angular', 'ngRoute', 'ngFx', 'ngAnimate', 'goApp.data'])
11
-  .controller('NavigationController',['$scope', '$rootScope', '$famous', '$timeline', '$http', '$location', '$route', '$timeout', 'Data', function ($scope,  $rootScope, $famous, $timeline, $http, $location, $route, $timeout, Data) {
11
+  .controller('NavigationController',['$scope', '$rootScope', '$famous', '$timeline', '$http', '$location', '$route', '$timeout', 'Data', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $http, $location, $route, $timeout, Data, $mixpanel) {
12 12
 
13 13
     'use strict';
14 14
 
@@ -16,9 +16,11 @@ angular.module('goApp.navigation', ['famous.angular', 'ngRoute', 'ngFx', 'ngAnim
16 16
       if(!$scope.$$phase) {
17 17
         $scope.$apply(function(){
18 18
           $scope.navigation = Data.getNavigation();
19
+          $scope.track();
19 20
         });
20 21
       } else {
21 22
         $scope.navigation = Data.getNavigation();
23
+        $scope.track();
22 24
       }
23 25
     });
24 26
 
@@ -76,4 +78,8 @@ angular.module('goApp.navigation', ['famous.angular', 'ngRoute', 'ngFx', 'ngAnim
76 78
       }
77 79
     };
78 80
 
81
+    $scope.track = function(){
82
+      $mixpanel.track('Index View');
83
+    }
84
+
79 85
   }]);

+ 3 - 1
app/scripts/controllers/page.js

@@ -8,12 +8,13 @@
8 8
  * Controller of the domainManagerApp
9 9
  */
10 10
 angular.module('goApp.page', ['ngFx', 'ngAnimate', 'goApp.data'])
11
-  .controller('PageController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data) {
11
+  .controller('PageController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data, $mixpanel) {
12 12
 
13 13
     'use strict';
14 14
 
15 15
     console.log('> Loading Text Page');
16 16
 
17
+
17 18
     // Get Page Data
18 19
     var link = $location.url();
19 20
     $scope.pageData = Data.getPageData(link);
@@ -22,6 +23,7 @@ angular.module('goApp.page', ['ngFx', 'ngAnimate', 'goApp.data'])
22 23
         $scope.$apply(function(){
23 24
           $scope.pageData = Data.getPageData(link);
24 25
           $scope.showSlider();
26
+          $mixpanel.track('Page View', { "Page": $scope.pageData.link });
25 27
         });
26 28
       }
27 29
     });

+ 2 - 1
app/scripts/controllers/slideshow.js

@@ -8,7 +8,7 @@
8 8
  * Controller of the domainManagerApp
9 9
  */
10 10
 angular.module('goApp.slideshow', ['ngFx', 'ngAnimate', 'goApp.data'])
11
-  .controller('SlideshowController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data) {
11
+  .controller('SlideshowController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data, $mixpanel) {
12 12
 
13 13
     'use strict';
14 14
 
@@ -22,6 +22,7 @@ angular.module('goApp.slideshow', ['ngFx', 'ngAnimate', 'goApp.data'])
22 22
         $scope.$apply(function(){
23 23
           $scope.pageData = Data.getPageData(link);
24 24
           $scope.showSlider();
25
+          $mixpanel.track('Page View', { "Page": $scope.pageData.link });
25 26
         });
26 27
       }
27 28
     });

+ 2 - 1
app/scripts/controllers/test.js

@@ -8,7 +8,7 @@
8 8
  * Controller of the domainManagerApp
9 9
  */
10 10
 angular.module('goApp.test', ['ngFx', 'ngAnimate', 'goApp.data'])
11
-  .controller('TestController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data) {
11
+  .controller('TestController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data, $mixpanel) {
12 12
 
13 13
     'use strict';
14 14
 
@@ -18,6 +18,7 @@ angular.module('goApp.test', ['ngFx', 'ngAnimate', 'goApp.data'])
18 18
       if(!$scope.$$phase) {
19 19
         $scope.$apply(function(){
20 20
           $scope.pageData = Data.getPageData(link);
21
+          $mixpanel.track('Page View', { "Page": $scope.pageData.link });
21 22
         });
22 23
       }
23 24
     });

+ 2 - 1
app/scripts/controllers/video.js

@@ -8,7 +8,7 @@
8 8
  * Controller of the domainManagerApp
9 9
  */
10 10
 angular.module('goApp.video', ['ngFx', 'ngAnimate', 'goApp.data'])
11
-  .controller('VideoController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data) {
11
+  .controller('VideoController',['$scope', '$rootScope', '$famous', '$timeline', '$location', '$route', '$timeout', 'Data', '$mixpanel', function ($scope,  $rootScope, $famous, $timeline, $location, $route, $timeout, Data, $mixpanel) {
12 12
 
13 13
     'use strict';
14 14
 
@@ -72,6 +72,7 @@ angular.module('goApp.video', ['ngFx', 'ngAnimate', 'goApp.data'])
72 72
           $scope.startFileVideo();
73 73
         }
74 74
       }
75
+      $mixpanel.track('Page View', { "Page": $scope.pageData.link });
75 76
     }
76 77
 
77 78
     $scope.startFileVideo = function() {

+ 5 - 0
app/scripts/services/mixpanel.js

@@ -0,0 +1,5 @@
1
+
2
+angular.module('analytics.mixpanel')
3
+  .config(['$mixpanelProvider', function($mixpanelProvider) {
4
+      $mixpanelProvider.apiKey('e85c78f33e523545390227e2590582d5');
5
+  }]);

+ 2 - 1
bower.json

@@ -33,7 +33,8 @@
33 33
     "angular-ui": "~0.4.0",
34 34
     "angular-ui-router": "~0.2.15",
35 35
     "angular-youtube-mb": "~1.0.2",
36
-    "createjs-preloadjs": "~0.6.1"
36
+    "createjs-preloadjs": "~0.6.1",
37
+    "angular-mixpanel": "~1.1.0"
37 38
   },
38 39
   "resolutions": {
39 40
     "angular": "1.3.8"