new format of cwiczenie wybor
authorJan Szejko <janek37@gmail.com>
Fri, 28 Jul 2017 08:33:09 +0000 (10:33 +0200)
committerJan Szejko <janek37@gmail.com>
Fri, 28 Jul 2017 08:33:09 +0000 (10:33 +0200)
catalogue/static/catalogue/js/edumed.js
lib/librarian

index 68a558b..ec1eabc 100644 (file)
     }
 
     Wybor.prototype.check_question = function(question) {
-      var all, bad, good, solution,
-        _this = this;
-      all = 0;
-      good = 0;
-      bad = 0;
-      solution = this.get_value_list(question, 'solution');
+      var all = 0, bad = 0, good = 0, _this = this;
+      var single = $(question).closest('.exercise').attr('data-subtype') === 'single';
+
       $(".question-piece", question).each(function(i, qpiece) {
-        var is_checked, piece_name, piece_no, should_be_checked;
-        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;
-        }
+        var is_checked, should_be_checked;
+        should_be_checked = $(qpiece).attr('data-sol') === 'prawda';
         is_checked = $("input", qpiece).is(":checked");
-        if (should_be_checked) {
+        if (!single || should_be_checked)
           all += 1;
-        }
-        if (is_checked) {
-          if (should_be_checked) {
-            good += 1;
-            return _this.piece_correct(qpiece);
+        if (single) {
+          if (is_checked) {
+            if (should_be_checked) {
+              good += 1;
+              return _this.piece_correct(qpiece);
+            } else {
+              bad += 1;
+              return _this.piece_incorrect(qpiece);
+            }
           } else {
+            return $(qpiece).removeClass("correct,incorrect");
+          }
+        } else {
+          if (is_checked !== should_be_checked) {
             bad += 1;
             return _this.piece_incorrect(qpiece);
+          } else {
+            good += 1;
+            return _this.piece_correct(qpiece);
           }
-        } else {
-          return $(qpiece).removeClass("correct,incorrect");
         }
       });
       return [good, bad, all];
     Wybor.prototype.solve_question = function(question) {
       var solution,
         _this = this;
-      solution = this.get_value_list(question, 'solution');
       return $(".question-piece", question).each(function(i, qpiece) {
-        var piece_name, piece_no, should_be_checked;
-        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;
-        }
-        console.log("check " + $("input[type=checkbox]", qpiece).attr("id") + " -> " + should_be_checked);
+        var should_be_checked;
+        should_be_checked = $(qpiece).attr('data-sol') === 'prawda';
         return $("input[type=checkbox],input[type=radio]", qpiece).prop('checked', should_be_checked);
       });
     };
index e797b32..6c528bc 160000 (submodule)
@@ -1 +1 @@
-Subproject commit e797b32fa517a05d15fbd3c15a30d8c615500fd6
+Subproject commit 6c528bcbd5a184387bbb30500b67caef8a21889d