diff options
author | James Phillpotts <jphillpotts@scottlogic.co.uk> | 2014-04-08 09:51:11 +0100 |
---|---|---|
committer | Aaron O'Mullan <aaron.omullan@friendco.de> | 2014-04-12 01:25:07 -0700 |
commit | f6595f51119baca04bf91e619f64518d400e5cae (patch) | |
tree | 765ad8ab0f40d3bb68c03e8df1d5246664556e9c /theme/javascript/core | |
parent | ab27725b9935b185a58b725e75aedeb579e87d8f (diff) | |
download | gitbook-f6595f51119baca04bf91e619f64518d400e5cae.zip gitbook-f6595f51119baca04bf91e619f64518d400e5cae.tar.gz gitbook-f6595f51119baca04bf91e619f64518d400e5cae.tar.bz2 |
Tabular quiz
Diffstat (limited to 'theme/javascript/core')
-rw-r--r-- | theme/javascript/core/quiz.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/theme/javascript/core/quiz.js b/theme/javascript/core/quiz.js new file mode 100644 index 0000000..2e900e8 --- /dev/null +++ b/theme/javascript/core/quiz.js @@ -0,0 +1,50 @@ +define([ + "jQuery", + "utils/execute", + "utils/analytic", + "core/state" +], function($, execute, analytic, state){ + // Bind an exercise + var prepareExercise = function($exercise) { + var $answers = $exercise.find(".quiz-answers").find("input[type=radio], input[type=checkbox]"); + + $answers.click(function(e) { + e.preventDefault(); + }); + + // Submit: test code + $exercise.find(".action-submit").click(function(e) { + e.preventDefault(); + analytic.track("exercise.submit"); + $exercise.find("tr.alert-danger").removeClass("alert-danger"); + $exercise.find(".alert-success,.alert-danger").addClass("hidden"); + + var result = true; + $exercise.find(".quiz input[type=radio],.quiz input[type=checkbox]").each(function(i) { + var correct = $(this).is(":checked") === $answers.slice(i).first().is(":checked"); + result = result && correct; + if (!correct) { + $(this).closest("tr").addClass("alert-danger"); + } + }); + + $exercise.find(result ? "div.alert-success" : "div.alert-danger").toggleClass("hidden"); + }); + + $exercise.find(".action-solution").click(function(e) { + $exercise.find(".quiz, .quiz-answers").toggleClass("hidden"); + }); + }; + + // Prepare all exercise + var init = function() { + state.$book.find("section.quiz").each(function() { + prepareExercise($(this)); + }); + }; + + return { + init: init, + prepare: prepareExercise + }; +}); |