| analytics.coffee | |
|---|---|
| Template  |  | 
| Private constants |  | 
| Code for Templates analytics account. | ACCOUNT = 'UA-28812528-1' | 
| Source URL of the analytics script. | SOURCE  = 'https://ssl.google-analytics.com/ga.js' | 
| Analytics setup | analytics = window.analytics = new class Analytics extends utils.Class | 
| Public functions |  | 
| Add analytics to the current page. |   add: -> | 
| Setup tracking details for analytics. |     _gaq = window._gaq ?= []
    _gaq.push ['_setAccount', ACCOUNT]
    _gaq.push ['_trackPageview'] | 
| Inject script to capture analytics. |     ga = document.createElement 'script'
    ga.async = 'async'
    ga.src   = SOURCE
    script = document.getElementsByTagName('script')[0]
    script.parentNode.insertBefore ga, script | 
| Determine whether or not analytics are enabled. |   enabled: -> not store? or store.get 'analytics' | 
| Remove analytics from the current page. |   remove: -> | 
| Delete scripts used to capture analytics. |     for script in document.querySelectorAll "script[src='#{SOURCE}']"
      script.parentNode.removeChild script | 
| Remove tracking details for analytics. |     delete window._gaq | 
| Create an event with the information provided and track it in analytics. |   track: (category, action, label, value, nonInteraction) -> if @enabled()
    event = ['_trackEvent'] | 
| Add the required information. |     event.push category
    event.push action | 
| Add the optional information where possible. |     event.push label          if label?
    event.push value          if value?
    event.push nonInteraction if nonInteraction? | 
| Add the event to analytics. |     _gaq = window._gaq ?= []
    _gaq.push event | 
| Configuration |  | 
| Initialize analytics. | store?.init 'analytics', yes
 |