AnalyticsManager.coffee 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. define [
  2. "libs/md5"
  3. ], () ->
  4. class AnalyticsManager
  5. constructor: (@ide) ->
  6. @ide.editor.on "update:doc", () =>
  7. @updateCount ||= 0
  8. @updateCount++
  9. if @updateCount == 100
  10. ga('send', 'event', 'editor-interaction', 'multi-doc-update')
  11. @ide.pdfManager.on "compile:pdf", () =>
  12. @compileCount ||= 0
  13. @compileCount++
  14. if @compileCount == 1
  15. ga('send', 'event', 'editor-interaction', 'single-compile')
  16. if @compileCount == 3
  17. ga('send', 'event', 'editor-interaction', 'multi-compile')
  18. getABTestBucket: (test_name, buckets = []) ->
  19. hash = CryptoJS.MD5("#{@ide.user.get("id")}:#{test_name}")
  20. bucketIndex = parseInt(hash.toString().slice(0,2), 16) % buckets.length
  21. return buckets[bucketIndex]
  22. startABTest: (test_name, buckets = []) ->
  23. value = @getABTestBucket(test_name, buckets)
  24. ga('send', 'event', 'ab_tests', test_name, "viewed-#{value}")
  25. return value
  26. endABTest: (test_name, buckets = []) ->
  27. value = @getABTestBucket(test_name, buckets)
  28. ga('send', 'event', 'ab_tests', test_name, "converted-#{value}")
  29. return value