Mercurial > hg > webaudioevaluationtool
changeset 189:f4c6c9805529 Dev_main
Added radio boxes
author | Nicholas Jillings <nicholas.jillings@eecs.qmul.ac.uk> |
---|---|
date | Fri, 05 Jun 2015 12:42:32 +0100 |
parents | 8a5d6a5f0604 |
children | 437f826a9a05 8ea4b48bbe11 |
files | core.js example_eval/project.xml |
diffstat | 2 files changed, 55 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/core.js Fri Jun 05 12:10:49 2015 +0100 +++ b/core.js Fri Jun 05 12:42:32 2015 +0100 @@ -144,6 +144,31 @@ optHold.appendChild(hold); } this.popupContent.appendChild(optHold); + } else if (node.type == 'radio') { + var span = document.createElement('span'); + span.textContent = node.statement; + this.popupContent.appendChild(span); + var optHold = document.createElement('div'); + optHold.id = 'option-holder'; + optHold.align = 'none'; + optHold.style.float = 'left'; + optHold.style.width = "100%"; + for (var i=0; i<node.options.length; i++) { + var option = node.options[i]; + var input = document.createElement('input'); + input.id = option.name; + input.type = 'radio'; + input.name = node.id; + var span = document.createElement('span'); + span.textContent = option.text; + var hold = document.createElement('div'); + hold.setAttribute('name','option'); + hold.style.padding = '4px'; + hold.appendChild(input); + hold.appendChild(span); + optHold.appendChild(hold); + } + this.popupContent.appendChild(optHold); } this.popupContent.appendChild(this.popupButton); }; @@ -192,6 +217,7 @@ var optHold = document.getElementById('option-holder'); var hold = document.createElement('checkbox'); console.log("Checkbox: "+ node.statement); + hold.id = node.id; for (var i=0; i<optHold.childElementCount; i++) { var input = optHold.childNodes[i].getElementsByTagName('input')[0]; var statement = optHold.childNodes[i].getElementsByTagName('span')[0]; @@ -202,6 +228,22 @@ console.log(input.id +': '+ input.checked); } this.responses.appendChild(hold); + } else if (node.type == "radio") { + var optHold = document.getElementById('option-holder'); + var hold = document.createElement('radio'); + var responseID = null; + var i=0; + while(responseID == null) { + var input = optHold.childNodes[i].getElementsByTagName('input')[0]; + if (input.checked == true) { + responseID = i; + } + i++; + } + hold.id = node.id; + hold.setAttribute('name',node.options[responseID].name); + hold.textContent = node.options[responseID].text; + this.responses.appendChild(hold); } this.currentIndex++; if (this.currentIndex < this.popupOptions.length) { @@ -1056,6 +1098,7 @@ this.childOption = function(element) { this.type = 'option'; this.id = element.id; + this.name = element.getAttribute('name'); this.text = element.textContent; } @@ -1068,11 +1111,12 @@ this.question = child.textContent; } else if (child.nodeName == "statement") { this.statement = child.textContent; - } else if (child.nodeName == "checkbox") { + } else if (child.nodeName == "checkbox" || child.nodeName == "radio") { var element = child.firstElementChild; + this.id = child.id; if (element == null) { - console.log('Malformed checkbox entry'); - this.statement = 'Malformed checkbox entry'; + console.log('Malformed' +child.nodeName+ 'entry'); + this.statement = 'Malformed' +child.nodeName+ 'entry'; this.type = 'statement'; } else { this.options = [];
--- a/example_eval/project.xml Fri Jun 05 12:10:49 2015 +0100 +++ b/example_eval/project.xml Fri Jun 05 12:42:32 2015 +0100 @@ -11,6 +11,13 @@ <option id="studio">Studio Mixing</option> <option id="player">Play an instrument</option> </checkbox> + <radio id="rating"> + <statement>Please rate this interface</statement> + <option name="bad">Bad</option> + <option name="OK">OK</option> + <option name="Good">Good</option> + <option name="Great">Great</option> + </radio> <statement>Please listen to all mixes</statement> </PreTest> <PostTest> @@ -48,16 +55,7 @@ <audioElements url="9.wav" id="9"/> <audioElements url="10.wav" id="10"/>--> <CommentQuestion id='mixingExperience'>What is your mixing experience</CommentQuestion> - <PreTest> - <checkbox id="experience"> - <statement>Check options which are relevant to you</statement> - <option id="digital">Digital Consoles</option> - <option id="analog">Analog Consoles</option> - <option id="live">Live Mixing</option> - <option id="studio">Studio Mixing</option> - <option id="player">Play an instrument</option> - </checkbox> - </PreTest> + <PreTest/> <PostTest> <question id="genre" mandatory="true">Please enter the genre</question> </PostTest>