X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/ca531bd353bd00ebe786c63df893f7f71167411b..7d9331d0912698ec04e95a8639600306525e00e6:/redakcja/static/edumed/js/edumed.coffee diff --git a/redakcja/static/edumed/js/edumed.coffee b/redakcja/static/edumed/js/edumed.coffee index 84fb91f1..771e7c72 100644 --- a/redakcja/static/edumed/js/edumed.coffee +++ b/redakcja/static/edumed/js/edumed.coffee @@ -44,7 +44,7 @@ class Excercise extends Binding @show_score(score) get_value_list: (elem, data_key, numbers) -> - vl = $(elem).data(data_key).split(/[ ,]+/).map($.trim) #.map((x) -> parseInt(x)) + vl = $(elem).attr("data-" + data_key).split(/[ ,]+/).map($.trim) #.map((x) -> parseInt(x)) if numbers vl = vl.map((x) -> parseInt(x)) return vl @@ -72,10 +72,14 @@ class Wybor extends Excercise check_question: (question) -> all = 0 good = 0 - solution = @get_value_list(question, 'solution', true) + solution = @get_value_list(question, 'solution') $(".question-piece", question).each (i, qpiece) => - piece_no = parseInt $(qpiece).attr 'data-no' - should_be_checked = solution.indexOf(piece_no) >= 0 + piece_no = $(qpiece).attr 'data-no' + piece_name = $(qpiece).attr 'data-name' + if piece_name + should_be_checked = solution.indexOf(piece_name) >= 0 + else + should_be_checked = solution.indexOf(piece_no) >= 0 is_checked = $("input", qpiece).is(":checked") if should_be_checked @@ -226,15 +230,17 @@ class Przyporzadkuj extends Excercise $(".draggable", question).draggable($.extend({}, draggable_opts, helper_opts)) - $(".predicate .droppable", question).droppable + $(".predicate .droppable", question).parent().droppable accept: (draggable) -> $draggable = $(draggable) if not $draggable.is(".draggable") + console.log('not draggable?') return false $predicate = $(this) for added in $predicate.find("li") if $(added).text() == $draggable.text() + console.log('already here:' + $draggable.text()) return false return true @@ -242,12 +248,14 @@ class Przyporzadkuj extends Excercise added = ui.draggable.clone() added.attr('style', '') - $(ev.target).append(added) + $(ev.target).find(".droppable").append(added) added.draggable(draggable_opts) if not @multiple or ui.draggable.closest(".predicate").length > 0 ui.draggable.remove() + $(".predicate .droppable", question).sortable + items: "> li" $(".subject", question).droppable accept: ".draggable" @@ -297,9 +305,34 @@ class Przyporzadkuj extends Excercise return [count, all] +class PrawdaFalsz extends Excercise + constructor: (element) -> + super element + for qp in $(".question-piece", @element) + $(".true", qp).click (ev) -> + ev.preventDefault() + $(this).closest(".question-piece").data("value", "true") + $(this).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') + + + check_question: -> + all = 0 + good = 0 + for qp in $(".question-piece", @element) + if $(qp).data("solution").toString() == $(qp).data("value") + good += 1 + @piece_correct qp + else + @piece_incorrect qp + all += 1 + return [good, all] ########## @@ -310,6 +343,7 @@ excercise = (ele) -> luki: Luki zastap: Zastap przyporzadkuj: Przyporzadkuj + prawdafalsz: PrawdaFalsz cls = es[$(ele).attr('data-type')]