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>