X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/a528895b70b51139a214ace3ef87e585a7496ca5..c37f013998c68de1d65ed6c551aedaac83d69754:/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 227bce63..e8762ec5 100644 --- a/redakcja/static/edumed/js/edumed.coffee +++ b/redakcja/static/edumed/js/edumed.coffee @@ -17,29 +17,32 @@ class EduModule extends Binding # $(".teacher", @element).removeClass "show" -class Excercise extends Binding +class Exercise extends Binding constructor: (element) -> - super 'excercise', element - # just save the html to reset the excercise - $(@element).data("excercise-html", $(@element).html()) + super 'exercise', element + # just save the html to reset the exercise + $(@element).data("exercise-html", $(@element).html()) $(".check", @element).click (ev) => @check() $(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('excercise-html')) - excercise @element + $(@element).html($(@element).data('exercise-html')) + exercise @element piece_correct: (qpiece) -> $(qpiece).removeClass('incorrect').addClass('correct') @@ -94,7 +97,12 @@ class Excercise 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) -> @@ -116,19 +124,28 @@ class Excercise extends Binding $placeholder.after($added) if not $placeholder.hasClass('multiple') $placeholder.hide() - $added.append('x') + if $added.is(".add-li") + $added.wrap("
  • ") + + $added.append('x
    ') $('.remove', $added).click (ev) => - $added.prev(".placeholder:not(.multiple)").show() + @retry() if not ismultiple $($added.data('original')).removeClass('disabled').draggable('enable') + + if $added.is(".add-li") + $added = $added.closest('li') + $added.prev(".placeholder:not(.multiple)").show() $added.remove() + ## XXX co z issortable? dragging: (ismultiple, issortable) -> $(".question", @element).each (i, question) => draggable_opts = revert: 'invalid' helper: 'clone' + start: @retry $(".draggable", question).draggable(draggable_opts) self = this @@ -178,9 +195,10 @@ class Excercise extends Binding -class Wybor extends Excercise +class Wybor extends Exercise constructor: (element) -> super element + $(".question-piece input", element).change(@retry); check_question: (question) -> @@ -220,14 +238,14 @@ class Wybor extends Excercise else should_be_checked = solution.indexOf(piece_no) >= 0 console.log("check " + $("input[type=checkbox]", qpiece).attr("id") + " -> " + should_be_checked) - $("input[type=checkbox]", qpiece).prop 'checked', should_be_checked + $("input[type=checkbox],input[type=radio]", qpiece).prop 'checked', should_be_checked -class Uporzadkuj extends Excercise +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) @@ -263,7 +281,7 @@ class Uporzadkuj extends Excercise # XXX propozycje="1/0" -class Luki extends Excercise +class Luki extends Exercise constructor: (element) -> super element @dragging false, false @@ -288,7 +306,7 @@ class Luki extends Excercise @draggable_move $qp, $(placeholder), false -class Zastap extends Excercise +class Zastap extends Exercise constructor: (element) -> super element $(".paragraph", @element).each (i, par) => @@ -354,10 +372,10 @@ class Zastap extends Excercise $(chld).remove() -class Przyporzadkuj extends Excercise +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 @@ -413,23 +431,25 @@ class Przyporzadkuj extends Excercise 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 -class PrawdaFalsz extends Excercise +class PrawdaFalsz extends Exercise constructor: (element) -> 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: -> @@ -447,9 +467,9 @@ class PrawdaFalsz extends Excercise return [good, all] show_solutions: -> - reset() + @reset() for qp in $(".question-piece", @element) - if $(qp).data('solution') == 'true' + if $(qp).data('solution') == true $(".true", qp).click() else $(".false", qp).click() @@ -457,7 +477,7 @@ class PrawdaFalsz extends Excercise ########## -excercise = (ele) -> +exercise = (ele) -> es = wybor: Wybor uporzadkuj: Uporzadkuj @@ -480,5 +500,5 @@ window.edumed = $(document).ready () -> new EduModule($("#book-text")) - $(".excercise").each (i, el) -> - excercise(this) \ No newline at end of file + $(".exercise").each (i, el) -> + exercise(this)