summaryrefslogtreecommitdiff
path: root/modules/zelfoverhoor/docent.js
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2017-11-22 21:23:14 +0100
committertomsmeding <tom.smeding@gmail.com>2017-11-22 22:23:51 +0100
commit32523cdcd9eaa4ad9363d79ebe82d5de4b852676 (patch)
tree88b27b82007047e6923c608cc44ca38dcd0e125a /modules/zelfoverhoor/docent.js
parent58d635e0c88ea5428072f7901417908f455b93ec (diff)
Add module 'zelfoverhoor'
Beta stage
Diffstat (limited to 'modules/zelfoverhoor/docent.js')
-rw-r--r--modules/zelfoverhoor/docent.js173
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();
+});