X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/961a81da0b681193f5ac37fedc046002fb1e5512..c63cb9e4a92378f9a630f95faa3d4d167e7aa8ec:/redakcja/static/edumed/js/edumed.coffee?ds=sidebyside diff --git a/redakcja/static/edumed/js/edumed.coffee b/redakcja/static/edumed/js/edumed.coffee index c3d8fa7a..6fce16bf 100644 --- a/redakcja/static/edumed/js/edumed.coffee +++ b/redakcja/static/edumed/js/edumed.coffee @@ -28,15 +28,18 @@ class Exercise extends Binding $(ev.target).next(".retry").show() $(ev.target).hide() $(".retry", @element).click (ev) => - $(".correct, .incorrect", @element).removeClass("correct incorrect") - $(ev.target).prev(".check").show() - $(ev.target).hide() + @retry() $('.solutions', @element).click => @show_solutions() $(".comment", @element).show() $('.reset', @element).click => @reset() + retry: -> + $(".correct, .incorrect", @element).removeClass("correct incorrect") + $(".check", @element).show() + $(".retry", @element).hide() + reset: -> $(@element).html($(@element).data('exercise-html')) exercise @element @@ -94,7 +97,12 @@ class Exercise extends Binding return [mandat, opt] show_score: (score) -> - $(".message", @element).text("Wynik: #{score[0]} / #{score[1]}") + $msg = $(".message", @element) + $msg.text("Wynik: #{score[0]} / #{score[1]}") + if score[0] == score[1] + $msg.addClass("maxscore") + else + $msg.removeClass("maxscore") draggable_equal: ($draggable1, $draggable2) -> @@ -121,6 +129,7 @@ class Exercise extends Binding $added.append('x
') $('.remove', $added).click (ev) => + @retry() if not ismultiple $($added.data('original')).removeClass('disabled').draggable('enable') @@ -136,6 +145,7 @@ class Exercise extends Binding draggable_opts = revert: 'invalid' helper: 'clone' + start: @retry $(".draggable", question).draggable(draggable_opts) self = this @@ -188,6 +198,7 @@ class Exercise extends Binding class Wybor extends Exercise constructor: (element) -> super element + $(".question-piece input", element).change(@retry); check_question: (question) -> @@ -234,7 +245,7 @@ class Wybor extends Exercise class Uporzadkuj extends Exercise constructor: (element) -> super element - $('ol, ul', @element).sortable({ items: "> li" }) + $('ol, ul', @element).sortable({ items: "> li", start: @retry }) check_question: (question) -> positions = @get_value_list(question, 'original', true) @@ -364,7 +375,7 @@ class Zastap extends Exercise class Przyporzadkuj extends Exercise is_multiple: -> for qp in $(".question-piece", @element) - if $(qp).data('solution').split(/[ ,]+/).length > 1 + if $(qp).attr('data-solution').split(/[ ,]+/).length > 1 return true return false @@ -385,7 +396,7 @@ class Przyporzadkuj extends Exercise count = 0 all = 0 if not minimum - all = $(".subjects .question-piece", question).length + all = $(".subject .question-piece", question).length for pred in $(".predicate [data-predicate]", question) pn = $(pred).attr('data-predicate') @@ -420,7 +431,7 @@ class Przyporzadkuj extends Exercise for m in draggables $pr = $(".predicate [data-predicate=" + m + "]", question) $ph = $pr.find ".placeholder:visible" - @draggable_move $(qp), $ph, @multiple + @draggable_move $(qp), $ph.eq(0), @multiple @@ -429,14 +440,16 @@ class PrawdaFalsz extends Exercise super element for qp in $(".question-piece", @element) - $(".true", qp).click (ev) -> + $(".true", qp).click (ev) => ev.preventDefault() - $(this).closest(".question-piece").data("value", "true") - $(this).addClass('chosen').siblings('a').removeClass('chosen') - $(".false", qp).click (ev) -> + @retry() + $(ev.target).closest(".question-piece").data("value", "true") + $(ev.target).addClass('chosen').siblings('a').removeClass('chosen') + $(".false", qp).click (ev) => ev.preventDefault() - $(this).closest(".question-piece").data("value", "false") - $(this).addClass('chosen').siblings('a').removeClass('chosen') + @retry() + $(ev.target).closest(".question-piece").data("value", "false") + $(ev.target).addClass('chosen').siblings('a').removeClass('chosen') check_question: ->