diff options
Diffstat (limited to 'assets/javascript')
-rw-r--r-- | assets/javascript/app.js | 6 | ||||
-rw-r--r-- | assets/javascript/core/exercise.js | 5 | ||||
-rw-r--r-- | assets/javascript/utils/analytic.js | 15 |
3 files changed, 24 insertions, 2 deletions
diff --git a/assets/javascript/app.js b/assets/javascript/app.js index 55e3546..7d044ab 100644 --- a/assets/javascript/app.js +++ b/assets/javascript/app.js @@ -1,14 +1,18 @@ require([ "jQuery", + "utils/analytic", "core/state", "core/exercise", "core/progress", "core/sidebar" -], function($, _state, exercise, progress, sidebar){ +], function($, analytic, _state, exercise, progress, sidebar){ $(document).ready(function() { var state = _state(); var $book = state.$book; + // Tract page view + analytic.track("View"); + // Init sidebar sidebar.init(); diff --git a/assets/javascript/core/exercise.js b/assets/javascript/core/exercise.js index 153f544..c181732 100644 --- a/assets/javascript/core/exercise.js +++ b/assets/javascript/core/exercise.js @@ -1,8 +1,9 @@ define([ "jQuery", "utils/execute", + "utils/analytic", "core/state" -], function($, execute, state){ +], function($, execute, analytic, state){ // Bind an exercise var prepareExercise = function($exercise) { var codeSolution = $exercise.find(".code-solution").html(); @@ -16,6 +17,8 @@ define([ $exercise.find(".action-submit").click(function(e) { e.preventDefault(); + analytic.track("exercise.submit"); + execute(editor.getValue(), codeValidation, function(err, result) { $exercise.toggleClass("return-error", err != null); $exercise.toggleClass("return-success", err == null); diff --git a/assets/javascript/utils/analytic.js b/assets/javascript/utils/analytic.js new file mode 100644 index 0000000..2f9e2f1 --- /dev/null +++ b/assets/javascript/utils/analytic.js @@ -0,0 +1,15 @@ +define([], function() { + var isAvailable = function() { + return (typeof mixpanel === "undefined"); + }; + + var track = function(event, data) { + if (!isAvailable()) return; + mixpanel.track(event, data); + }; + + return { + isAvailable: isAvailable, + track: track + }; +});
\ No newline at end of file |