@@ -2,6 +2,7 @@ var Modal = require('client/head/modal');
22var courseForm = require ( '../templates/course-form.jade' ) ;
33var clientRender = require ( 'client/clientRender' ) ;
44var newsletter = require ( 'newsletter/client' ) ;
5+ var gaHitCallback = require ( 'gaHitCallback' ) ;
56
67exports . init = function ( ) {
78 initList ( ) ;
@@ -60,6 +61,52 @@ function initList() {
6061 '</div>'
6162 ) ;
6263 }
64+
65+ var links = document . querySelectorAll ( 'a[data-video-id]' ) ;
66+ for ( var i = 0 ; i < links . length ; i ++ ) {
67+ var link = links [ i ] ;
68+ link . onclick = function ( e ) {
69+ e . preventDefault ( ) ;
70+ var videoId = this . getAttribute ( 'data-video-id' ) ;
71+ window . ga ( 'send' , 'event' , 'nodejs-screencast' , 'open' , videoId , {
72+ hitCallback : gaHitCallback ( function ( ) {
73+ openVideo ( videoId ) ;
74+ } )
75+ } ) ;
76+ } ;
77+ }
6378}
6479
80+ function openVideo ( videoId ) {
81+ // sizes from https://developers.google.com/youtube/iframe_api_reference
82+ var sizeList = [
83+ { width : 0 , height : 0 } , // mobile screens lower than any player => new window
84+ { width : 640 , height : 360 + 30 } ,
85+ { width : 853 , height : 480 + 30 } ,
86+ { width : 1280 , height : 720 + 30 }
87+ ] ;
88+
89+ for ( var i = 0 ; i < sizeList . length ; i ++ ) {
90+ if ( document . documentElement . clientHeight < sizeList [ i ] . height ||
91+ document . documentElement . clientWidth < sizeList [ i ] . width ) break ;
92+ }
93+ i -- ;
94+
95+ var width = sizeList [ i ] . width ;
96+ var height = sizeList [ i ] . height ;
97+ window . ga ( 'send' , 'event' , 'nodejs-screencast' , 'open' , videoId + '-' + width + 'x' + height , {
98+ hitCallback : gaHitCallback ( function ( ) {
99+
100+ if ( i === 0 ) {
101+ window . location . href = '//www.youtube.com/watch?v=' + videoId ;
102+ } else {
103+ var modal = new Modal ( ) ;
104+ modal . setContent (
105+ `<iframe width="${ width } " height="${ height } " src="//www.youtube.com/embed/${ videoId } " frameborder="0" allowfullscreen></iframe>`
106+ ) ;
107+ }
108+ } )
109+ } ) ;
65110
111+
112+ }
0 commit comments