@@ -21,6 +21,7 @@ import Stipend from "./fields/Stipend";
2121import BusinessType from "./fields/BusinessType" ;
2222import Website from "./fields/Website" ;
2323import MetaTags from 'react-meta-tags' ;
24+ import ReactGA from 'react-ga' ;
2425
2526function separateAndTrimList ( list ) {
2627
@@ -37,21 +38,35 @@ function separateAndTrimList(list) {
3738
3839class SchoolContent extends Component {
3940 render ( ) {
40- let classes = { } ;
41- classes . card = "cardSchool" ;
42- classes . cardHeading = "cardHeading" ;
43- classes . avatar = "avatar" ;
44- classes . media = "media" ;
45- classes . chip = "chip" ;
46- classes . actions = "actions" ;
47- classes . heading = "heading" ;
48- let school = this . props . school ;
49- let theme = this . props . theme ;
50-
5141
42+ let classes = {
43+ card : "cardSchool" ,
44+ cardHeading : "cardHeading" ,
45+ avatar : "avatar" ,
46+ media : "media" ,
47+ chip : "chip" ,
48+ actions : "actions" ,
49+ heading : "heading" ,
50+ } ;
51+ let theme = this . props . theme ;
52+ let school = this . props . school ;
5253 let technologiesList = separateAndTrimList ( school . technologies ) ;
5354 let locationsList = separateAndTrimList ( school . locations ) ;
5455
56+ // If the user hasn't viewed this school before, then count as an impression.
57+ // i.e. each user can only generate a single page impression for any school.
58+ var viewed = JSON . parse ( localStorage . getItem ( 'csd-views' ) ) || [ ] ;
59+ const key = school . key ;
60+ let index = viewed . indexOf ( key ) ;
61+ if ( index === - 1 ) {
62+ // Track impression.
63+ ReactGA . pageview ( '/' + key ) ;
64+ // Mark as viewed.
65+ viewed . push ( key ) ;
66+ localStorage . setItem ( 'csd-views' , JSON . stringify ( viewed ) ) ;
67+ console . log ( 'first view: ' + key )
68+ }
69+
5570 const cardStyle = {
5671 boxShadow : "none"
5772 }
0 commit comments