diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-11-22 21:23:14 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-11-22 22:23:51 +0100 |
commit | 32523cdcd9eaa4ad9363d79ebe82d5de4b852676 (patch) | |
tree | 88b27b82007047e6923c608cc44ca38dcd0e125a /modules/zelfoverhoor/docent.js | |
parent | 58d635e0c88ea5428072f7901417908f455b93ec (diff) |
Add module 'zelfoverhoor'
Beta stage
Diffstat (limited to 'modules/zelfoverhoor/docent.js')
-rw-r--r-- | modules/zelfoverhoor/docent.js | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/modules/zelfoverhoor/docent.js b/modules/zelfoverhoor/docent.js new file mode 100644 index 0000000..7987351 --- /dev/null +++ b/modules/zelfoverhoor/docent.js @@ -0,0 +1,173 @@ +var questionsets=null; + +function getQuestionSets(){ + var xhr=new XMLHttpRequest(); + xhr.onreadystatechange=function(){ + if(xhr.readyState==4){ + questionsets=JSON.parse(xhr.responseText); + updateQuestionSetsList(); + } + }; + xhr.responseType="text"; + xhr.open("GET","/zelfoverhoor/docent/sets"); + xhr.send(); +} + +function updateQuestionSetsList(){ + var tbody=document.getElementById("qsets"); + clearElement(tbody); + if(questionsets.length==0){ + var tr=document.createElement("tr"); + var td=document.createElement("td"); + td.appendChild(document.createTextNode("Nog geen vragensets...")); + td.setAttribute("colspan","4"); + tr.appendChild(td); + tbody.appendChild(tr); + } + for(var i=0;i<questionsets.length;i++){ + var tr=document.createElement("tr"); + td=document.createElement("td"); + var a=document.createElement("a"); + a.setAttribute("href",location.origin+"/zelfoverhoor/qs/"+questionsets[i].id); + a.setAttribute("target","_blank"); + a.innerHTML=questionsets[i].id; + td.appendChild(a); + tr.appendChild(td); + td=document.createElement("td"); + td.appendChild(document.createTextNode(questionsets[i].name)); + tr.appendChild(td); + td=document.createElement("td"); + td.appendChild(document.createTextNode(questionsets[i].description)); + tr.appendChild(td); + td=document.createElement("td"); + td.appendChild(document.createTextNode(questionsets[i].questions.length)); + tr.appendChild(td); + td=document.createElement("td"); + var input=document.createElement("input"); + input.setAttribute("type","button"); + input.setAttribute("value","verwijder"); + input.addEventListener("click",(function(id,name){return function(){ + if(confirm("Weet je zeker dat je de vragenset '"+name+"' wilt verwijderen?")){ + var xhr=new XMLHttpRequest(); + xhr.onreadystatechange=function(){ + if(xhr.readyState==4){ + if(xhr.status==200){ + getQuestionSets(); + } else if(xhr.status==404){ + alert("Vragenset kon niet worden gevonden... Misschien even de pagina herladen?"); + } else { + alert("Onbekende error: "+xhr.responseText); + } + } + }; + xhr.open("POST","/zelfoverhoor/docent/deleteset"); + xhr.send(id); + } + };})(questionsets[i].id,questionsets[i].name)); + td.appendChild(input); + tr.appendChild(td); + tbody.appendChild(tr); + } +} + +function clearElement(el){ + var c; + while((c=el.lastChild))el.removeChild(c); +} + +function doNewQSet(){ + document.getElementById("newqsetname").value=""; + document.getElementById("newqsetdescr").value=""; + clearElement("newquestions"); + document.getElementById("newqsetform").classList.remove("invisible"); + document.getElementById("newqsetvisible").classList.add("invisible"); + addNewQuestion(); +} + +function closeQSetForm(){ + document.getElementById("newqsetform").classList.add("invisible"); + document.getElementById("newqsetvisible").classList.remove("invisible"); +} + +function addNewQuestion(){ + var parent=document.getElementById("newquestions"); + + var div=document.createElement("div"); + div.classList.add("newquestioncontainer"); + + var span=document.createElement("span"); + span.setAttribute("style","display:inline-block"); + var b=document.createElement("b"); + b.appendChild(document.createTextNode("Vraag:")); + span.appendChild(b); + span.appendChild(document.createElement("br")); + var qta=document.createElement("textarea"); + span.appendChild(qta); + div.appendChild(span); + + span=document.createElement("span"); + span.setAttribute("style","display:inline-block"); + b=document.createElement("b"); + b.appendChild(document.createTextNode("Antwoord:")); + span.appendChild(b); + span.appendChild(document.createElement("br")); + span.appendChild(document.createElement("textarea")); + div.appendChild(span); + + span=document.createElement("span"); + var input=document.createElement("input"); + input.setAttribute("type","button"); + input.setAttribute("value","verwijder vraag"); + input.setAttribute("style","vertical-align:50px"); + input.addEventListener("click",function(){ + if(confirm("Weet je zeker dat je de volgende vraag wil verwijderen?\n"+qta.value)){ + parent.removeChild(div); + } + }); + span.appendChild(input); + div.appendChild(span); + + parent.appendChild(div); +} + +function submitQSet(){ + var name=document.getElementById("newqsetname").value.trim(); + var description=document.getElementById("newqsetdescr").value.trim(); + if(name==""||description==""){ + alert("Naam en beschrijving zijn nodig."); + return; + } + + var div=document.getElementById("newquestions"); + var ch=div.children,nq=ch.length; + var questions=[]; + for(var i=0;i<nq;i++){ + var tas=ch[i].getElementsByTagName("textarea"); + var q={"q": tas[0].value.trim(), "a": tas[1].value.trim()}; + if(q.q==""||q.a==""){ + alert("Een van de vragen of antwoorden is leeg; graag even vullen of de vraag verwijderen."); + return; + } + questions.push(q); + } + + var obj={"name": name, "description": description, "questions": questions}; + + var xhr=new XMLHttpRequest(); + xhr.onreadystatechange=function(){ + if(xhr.readyState==4){ + if(xhr.status==200){ + getQuestionSets(); + closeQSetForm(); + } else { + alert("Vragenset lijkt niet succesvol toegevoegd te zijn...\n"+xhr.responseText); + } + } + }; + xhr.open("POST","/zelfoverhoor/docent/addset"); + xhr.send(JSON.stringify(obj)); +} + +window.addEventListener("load",function(){ + getQuestionSets(); +}); |