@@ -54,14 +54,16 @@ const BuggyTracker = function (d) {
5454 function linkInfo ( link , l , p , gp , m ) {
5555 l = d . location . pathname ; p = link . parentElement ; gp = p . parentElement ;
5656 m = l . match ( publisherr ) ;
57- if ( m && p . tagName == 'H3' ) return [ 'publishers' , m [ 1 ] , 'html' ] ;
57+ if ( m ) return p . tagName == 'H3' ? [ 'publishers' , m [ 1 ] , 'html' ] : [ 'Generic Links' , m [ 1 ] ] ;
5858 m = l . match ( seriesr ) ;
59- if ( m && p . tagName == 'H3' ) return [ 'series' , m [ 1 ] ] ;
59+ if ( m ) return [ p . tagName == 'H3' ? 'series' : 'Generic Links' , m [ 1 ] ] ;
6060 m = l . match ( journalr ) ;
61- if ( m && p . tagName == 'H3' ) return [ 'journals' , m [ 1 ] , 'html' ] ;
62- if ( p . className == 'courselink' && l == '/courses/' )
63- return [ 'courses' , 'external_courses' ] ;
64- if ( link . className == 'f3' && l == '/courses/' ) return [ 'courses' , 'mit_courses' , 'html' ] ;
61+ if ( m ) return p . tagName == 'H3' ?[ 'journals' , m [ 1 ] , 'html' ] :[ 'Generic Links' , m [ 1 ] ] ;
62+ if ( l == '/courses/' ) {
63+ if ( p . className == 'courselink' ) return [ 'courses' , 'external_courses' ] ;
64+ if ( link . className == 'f3' ) return [ 'courses' , 'mit_courses' , 'html' ] ;
65+ return [ 'Generic Links' , 'courses' ] ;
66+ }
6567 if ( gp . className == 'social-media-list' ) return [ 'marketing' , 'social_media_links' ] ;
6668 if ( gp . className == 'contact-list' ) return [ 'marketing' , 'contact_links' ] ;
6769 if ( gp . tagName == 'UL' && l == '/sources/' )
@@ -70,12 +72,14 @@ const BuggyTracker = function (d) {
7072 link . getAttribute ( 'data-slug' ) || link . text ,
7173 'html'
7274 ] ;
73- return [ 'Generic Links' , d . location . pathname ] ;
75+ m = l . match ( courser ) || l . match ( tagr ) || l . match ( authorr ) ;
76+ if ( m ) return [ 'Generic Links' , m [ 1 ] ] ;
77+ return [ 'Generic Links' , l ] ;
7478 }
7579 function inferLinkType ( link ) {
7680 if ( link . host . startsWith ( 'youtu' ) ) return 'YouTube (link)' ;
7781 switch ( link . pathname . slice ( - 4 ) ) {
78- case '.htm' : return 'htm ' ;
82+ case '.htm' : return 'html ' ;
7983 case 'html' : return 'html' ;
8084 case '.mp3' : return 'mp3' ;
8185 case '.pdf' : return 'pdf' ;
@@ -91,48 +95,54 @@ const BuggyTracker = function (d) {
9195 if ( ! this . _uid ) { this . _uid = Math . random ( ) * 10000000 ; localStorage . setItem ( "uid" , this . _uid ) ; }
9296 } return this . _uid ;
9397 } ;
94- this . sendEvent = function ( oid , value , categories ) { gtag ( 'event' , 'purchase' , {
95- transaction_id : "T_" + cyrb53 ( this . getUID ( ) + ":" + oid ) ,
96- value : value ,
97- items : [ {
98- item_id : oid ,
99- price : value ,
100- item_category : categories [ 0 ] ,
101- item_category2 : categories [ 1 ] ,
102- item_category3 : categories [ 2 ] ,
103- item_category4 : categories [ 3 ] ,
104- item_category5 : categories [ 4 ] ,
105- item_list_name : whenceContent ( d . referrer ) ,
106- item_brand : window . WEBSITE_SECTION
107- } ]
108- } ) ; } ;
109- this . handleEvent = function ( e , link ) { link = e . target . closest ( 'a' ) ; if ( ! link ) return ;
98+ this . sendEvent = function ( oid , name , value , categories , thost ) {
99+ if ( localStorage . getItem ( oid + ":click" ) ) return ; else localStorage . setItem ( oid + ":click" , 1 ) ;
100+ gtag ( 'event' , 'purchase' , {
101+ transaction_id : "T_" + cyrb53 ( this . getUID ( ) + ":" + oid ) ,
102+ value : value ,
103+ items : [ {
104+ item_id : oid ,
105+ item_name : name ,
106+ price : value ,
107+ item_category : window . WEBSITE_SECTION + ' ' + categories [ 0 ] ,
108+ item_category2 : categories [ 1 ] ,
109+ item_category3 : categories [ 2 ] ,
110+ item_category4 : categories [ 3 ] ,
111+ item_category5 : categories [ 4 ] ,
112+ item_list_name : whenceContent ( d . referrer ) ,
113+ item_brand : thost
114+ } ]
115+ } ) ;
116+ } ;
117+ this . handleEvent = function ( e ) { this . handleClick ( e . target . closest ( 'a' ) ) ; } ;
118+ this . handleClick = function ( link ) { if ( ! link ) return ;
110119 var value = link . getAttribute ( 'ga-event-value' ) * 1 ;
111120 if ( link . host != d . location . host || value > 0 ) {
112121 var cid = link . getAttribute ( 'data-content-path' ) ;
113122 var oid = cid || link . href ;
114- if ( localStorage . getItem ( oid + ":click" ) ) return ; else localStorage . setItem ( oid + ":click" , 1 ) ;
115123 value ||= 0.15 ;
116- var categories = null ;
124+ var categories = null , name = null ;
117125 if ( cid ) {
118126 var category = link . getAttribute ( 'data-content-subcat' ) ;
119127 if ( category ) category = link . getAttribute ( 'data-content-category' ) + '/' + category ;
120128 else category = link . getAttribute ( 'data-content-category' ) ;
121129 categories = [
122- 'Content ' ,
130+ 'content ' ,
123131 category ,
124132 link . getAttribute ( 'data-content-course' ) ,
125- null ,
133+ link . getAttribute ( 'data-content-authors' ) ,
126134 link . getAttribute ( 'data-content-link-ext' )
127135 ] ;
136+ name = link . getAttribute ( 'data-content-title' ) ;
128137 } else {
129138 categories = linkInfo ( link ) ;
130- categories . splice ( 2 , 0 , null ) ;
131- categories . unshift ( 'External Link' ) ;
139+ categories . splice ( 2 , 0 , link . getAttribute ( 'data-content-authors' ) || '(unknown)' ) ;
140+ categories . unshift ( 'link' ) ;
141+ name = link . text ;
132142 }
133- categories [ 3 ] = link . host || link . pathname ;
143+ thost = link . host || link . pathname ;
134144 categories [ 4 ] ||= inferLinkType ( link ) ;
135- this . sendEvent ( oid , value , categories ) ;
145+ this . sendEvent ( oid , name , value , categories , thost ) ;
136146 } } ;
137147 d . addEventListener ( "click" , this , { useCapture : true } ) ;
138148 d . addEventListener ( "contextmenu" , this , { useCapture : true , passive : true } ) ;
0 commit comments