var MatchMultiple = { getPreview: function () { var result = { content: "" } var vystup = "
" var tis = document.querySelectorAll("#editForms .base li"); vystup += "
    " for (var i = 0; i < tis.length-1; i++) { vystup += "
  1. " + tis[i].querySelector(".editArea").innerHTML + "
  2. "; } vystup += "
" tis = document.querySelectorAll("#editForms .variants li"); vystup += "
    " for (var i = 0; i < tis.length-1; i++) { vystup += "
  1. " + tis[i].querySelector(".editArea").innerHTML + "
  2. "; } vystup += "
" vystup += "
"; result.content = vystup return result; }, getCode: function () { var result = { content: "", ok: "" } var base = document.querySelector("#editForms .base"); var blis = base.querySelectorAll("li"); var variants = document.querySelector("#editForms .variants"); var vlis = variants.querySelectorAll("li"); var vars = {}; var vClass = variants.className.replace(/\s?(edit|connect)/, "") var varList = "
    \n" for (var i = 0; i < vlis.length-1; i++) { var vid = vlis[i].getAttribute("data-id"); var cont = vlis[i].querySelector(".editArea").innerHTML; if (vlis[i].className && vlis[i].className.indexOf("img")>-1) { varList += "
  1. \"matching
  2. \n"; } else varList += "
  3. " + cont + "
  4. \n"; vars[vid] = i+1; } varList += "
      " var bondCount = 0; var bClass = base.className.replace(/\s?(edit|connect)/, "") var baseList = "
        \n" var pairing = "
        " for (var i = 0; i < blis.length-1; i++) { var cont = blis[i].querySelector(".editArea").innerHTML; if (blis[i].className && blis[i].className.indexOf("img")>-1) { baseList += "
      1. \"matching
      2. \n"; } else baseList += "
      3. " + cont + "
      4. \n"; var bonds = blis[i].getAttribute("data-bonds"); for (var j = 0; j < vlis.length-1; j++) { var vid = vlis[j].getAttribute("data-id"); if (bonds.indexOf(vid) > -1) { result.ok += "\n:c" + (j+1) + "" + String.fromCharCode(i+97) + " ok scoreOK"; } else { result.ok += "\n:c" + (j+1) + "" + String.fromCharCode(i+97) + " scoreNOK"; } pairing += " :c" + (j+1) + String.fromCharCode(i+97) + " "; } result.ok += "\n" pairing += "\n" } baseList += "
      " var scoreOK = document.getElementById("score_ok_amount").value; if (document.getElementById("score_ok_units").value == "%") scoreOK += "%"; var scoreNOK = document.getElementById("score_nok_amount").value; if (document.getElementById("score_nok_units").value == "%") scoreNOK += "%"; if (document.getElementById("score_nok_units").value == "nop") scoreNOK = "0"; result.ok = result.ok.replace( /scoreOK/g, scoreOK); result.ok = result.ok.replace(/scoreNOK/g, scoreNOK); pairing += "\n"; result.content = "
      \n" + baseList + varList + pairing + "\n
      \n"; return result; }, getCodeNew: function () { var result = { content: "", ok: "" } var base = document.querySelector("#editForms .base"); var blis = base.querySelectorAll("li"); var variants = document.querySelector("#editForms .variants"); var vlis = variants.querySelectorAll("li"); var vars = {}; var vClass = variants.className.replace(/\s?(edit|connect)/, "") var varList = "\n
        \n" for (var i = 0; i < vlis.length-1; i++) { var vid = vlis[i].getAttribute("data-id"); var cont = vlis[i].querySelector(".editArea").innerHTML; if (vlis[i].className && vlis[i].className.indexOf("img")>-1) { varList += "
      1. \"matching
      2. \n"; } else varList += "
      3. " + cont + "
      4. \n"; vars[vid] = i+1; } varList += "
      " var bondCount = 0; var bClass = base.className.replace(/\s?(edit|connect)/, "") var baseList = "\n
        \n" var pairing = "\n
        " for (var i = 0; i < blis.length-1; i++) { var cont = blis[i].querySelector(".editArea").innerHTML; if (blis[i].className && blis[i].className.indexOf("img")>-1) { baseList += "
      1. \"matching
      2. \n"; } else baseList += "
      3. " + cont + "
      4. \n"; var bonds = blis[i].getAttribute("data-bonds"); for (var j = 0; j < vlis.length-1; j++) { var vid = vlis[j].getAttribute("data-id"); if (bonds.indexOf(vid) > -1) { result.ok += "\n:c" + (j+1) + "" + String.fromCharCode(i+97) + " ok scoreOK"; } else { result.ok += "\n:c" + (j+1) + "" + String.fromCharCode(i+97) + " scoreNOK"; } pairing += " :c" + (j+1) + String.fromCharCode(i+97) + " "; } result.ok += "\n" pairing += "\n" } baseList += "
      " var scoreOK = document.getElementById("score_ok_amount").value; if (document.getElementById("score_ok_units").value == "%") scoreOK += "%"; var scoreNOK = document.getElementById("score_nok_amount").value; if (document.getElementById("score_nok_units").value == "%") scoreNOK += "%"; if (document.getElementById("score_nok_units").value == "nop") scoreNOK = "0"; result.ok = result.ok.replace( /scoreOK/g, scoreOK); result.ok = result.ok.replace(/scoreNOK/g, scoreNOK); pairing += "\n"; result.content = "
      \n" + baseList + varList + pairing + "\n
      \n"; return result; } } function initMatchingEditor() { resetMatching(); setEditMode("edit") } function resetMatching() { document.getElementById("edit_title").innerHTML = ""; document.getElementById("edit_task").innerHTML = ""; initMatching(); setEditMode("edit") } var editMode = "edit"; function setEditMode(mode) { if (mode == editMode) return; editMode = mode; var base = document.querySelector(".base"); base.classList.remove("edit"); base.classList.remove("connect"); base.classList.add(mode); var vars = document.querySelector(".variants"); vars.classList.remove("edit"); vars.classList.remove("connect"); vars.classList.add(mode); var editAreas = document.querySelectorAll(".editArea"); if (mode == "edit") { document.getElementById("mode_edit").checked = true; for (var i = 0; i < editAreas.length; i++) { editAreas[i].setAttribute("contentEditable", "true"); editAreas[i].parentNode.onclick = null; editAreas[i].addEventListener( "keydown", function (evt) { } ) } } if (mode == "connect") { document.getElementById("mode_connect").checked = true; for (var i = 0; i < editAreas.length; i++) { var ea = editAreas[i]; ea.removeAttribute("contentEditable"); ea.blur(); var li = ea.parentNode li.onclick = (li.hasAttribute("data-bonds")) ? function () { toggleBaseTerm(this); } : function () { toggleVariant(this); }; } } } function showImportDialog() { $('#dialog-importCode' ).dialog( 'open' ); } function importCode() { /* { title: "", task: "Свържете съществителните с прилагателните:", base: "апетит\nболка\nлекар\nпреглед\nпулс\nтемпература", variants: "викам\nгубя\nзаписвам се\nимам\nмеря\nпипам\nсвалям\nусещам", solution: [ [1, 3], [6, 7], [0, 2], [2], [5], [4, 6] ] }, */ var question = { title: "", task: "", base: "", variants: "", solution: [ ] } var vstup = document.getElementById("import_code").value; if (vstup == "") return; var isOld = true; if (vstup.indexOf("::") > -1) { var qTask = vstup.match(/::[^:]+::/) console.log(qTask); if (qTask) question.task = qTask[0].replace(/::/g, ""); vstup = vstup.replace(/::([^:]+)::/, "
      $1
      "); isOld = false; } var qText = (isOld) ? vstup.substring(vstup.indexOf("