diff --git a/app/assets/javascripts/google_anlytics.js.coffee.erb b/app/assets/javascripts/google_anlytics.js.coffee.erb new file mode 100644 index 0000000..a029068 --- /dev/null +++ b/app/assets/javascripts/google_anlytics.js.coffee.erb @@ -0,0 +1,44 @@ +class @GoogleAnalytics + + @load: -> + # Google Analytics depends on a global _gaq array. window is the global scope. + window._gaq = [] + window._gaq.push ["_setAccount", GoogleAnalytics.analyticsId()] + + # Create a script element and insert it in the DOM + ga = document.createElement("script") + ga.type = "text/javascript" + ga.async = true + ga.src = ((if "https:" is document.location.protocol then "https://ssl" else "http://www")) + ".google-analytics.com/ga.js" + firstScript = document.getElementsByTagName("script")[0] + firstScript.parentNode.insertBefore ga, firstScript + + # If Turbolinks is supported, set up a callback to track pageviews on page:change. + # If it isn't supported, just track the pageview now. + if typeof Turbolinks isnt 'undefined' and Turbolinks.supported + document.addEventListener "page:change", (-> + GoogleAnalytics.trackPageview() + ), true + else + GoogleAnalytics.trackPageview() + + @trackPageview: (url) -> + unless GoogleAnalytics.isLocalRequest() + if url + window._gaq.push ["_trackPageview", url] + else + window._gaq.push ["_trackPageview"] + window._gaq.push ["_trackPageLoadTime"] + + @isLocalRequest: -> + GoogleAnalytics.documentDomainIncludes "local" + + @documentDomainIncludes: (str) -> + document.domain.indexOf(str) isnt -1 + + @analyticsId: -> + '<%= ENV['GOOGLE'] %>' + +<%- if ENV['GOOGLE'] %> + GoogleAnalytics.load() +<% end %>