changeset 167:fa33bf58d863 Dev_main

Create_test: Submit button exposes completed XML file.
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Wed, 03 Jun 2015 12:15:14 +0100
parents dcc553484103
children f95a30a25a87
files test_create/test_create.html
diffstat 1 files changed, 99 insertions(+), 79 deletions(-) [+]
line wrap: on
line diff
--- a/test_create/test_create.html	Wed Jun 03 12:07:07 2015 +0100
+++ b/test_create/test_create.html	Wed Jun 03 12:15:14 2015 +0100
@@ -63,92 +63,112 @@
 			function buttonClickedSubmit() {
 				var ready = validate();
 				if (ready == true) {
-					var xmlDoc = document.createElement('BrowserEvalProjectDocument');
-					var setup = document.createElement('setup');
-					setup.setAttribute('interface',document.getElementById('interface').value);
-					if (document.getElementById('projectReturn').value == "") {
-						setup.setAttribute('projectReturn',"null");
-					} else {
-						setup.setAttribute('projectReturn',document.getElementById('projectReturn').value);
+					var xmlDoc = buildXML();
+					var inject = document.getElementById('errorMessage');
+					createProjectSave(xmlDoc, inject);
+				}
+			}
+			
+			function createProjectSave(xmlDoc, injectPoint) {
+				var parent = document.createElement("div");
+				parent.appendChild(xmlDoc);
+				var file = [parent.innerHTML];
+				var bb = new Blob(file,{type : 'application/xml'});
+				var dnlk = window.URL.createObjectURL(bb);
+				var a = document.createElement("a");
+				a.hidden = '';
+				a.href = dnlk;
+				a.download = "save.xml";
+				a.textContent = "Save File";
+				injectPoint.appendChild(a);
+			}
+			
+			function buildXML() {
+				var xmlDoc = document.createElement('BrowserEvalProjectDocument');
+				var setup = document.createElement('setup');
+				setup.setAttribute('interface',document.getElementById('interface').value);
+				if (document.getElementById('projectReturn').value == "") {
+					setup.setAttribute('projectReturn',"null");
+				} else {
+					setup.setAttribute('projectReturn',document.getElementById('projectReturn').value);
+				}
+				setup.setAttribute('randomiseOrder',document.getElementById('randomisePageOrder').checked);
+				setup.setAttribute('collectMetrics',document.getElementById('collectMetrics').checked);
+				
+				var globalPreTest = document.createElement('preTest');
+				var options = document.getElementById('globalPreTest').getElementsByClassName('head');
+				constructPrePost(globalPreTest, options);
+				
+				var globalPostTest = document.createElement('postTest');
+				options = document.getElementById('globalPostTest').getElementsByClassName('head');
+				constructPrePost(globalPostTest, options);
+				
+				var globalMetrics = document.createElement('metric');
+				options = document.getElementById('globalMetric').getElementsByClassName('attrib')[0].getElementsByTagName('input');
+				for (var i=0; i<options.length; i++) {
+					if (options[i].checked) {
+						var metric = document.createElement('metricEnable');
+						metric.textContent = options[i].id;
+						globalMetrics.appendChild(metric);
 					}
-					setup.setAttribute('randomiseOrder',document.getElementById('randomisePageOrder').checked);
-					setup.setAttribute('collectMetrics',document.getElementById('collectMetrics').checked);
+				}
+				setup.appendChild(globalPreTest);
+				setup.appendChild(globalPostTest);
+				setup.appendChild(globalMetrics);
+				xmlDoc.appendChild(setup);
+				
+				var audioHolders = document.getElementsByName('audio-holder');
+				for (var i=0; i<audioHolders.length; i++) {
+					var audioHolder = document.createElement('audioHolder');
+					var audioHolderDOM = audioHolders[i];
+					var attribs = audioHolderDOM.getElementsByClassName('attrib')[0].getElementsByTagName('input');
+					audioHolder.id = attribs[0].value;
+					if (attribs[1].value != "") {audioHolder.setAttribute('sampleRate',attribs[1].value);}
+					if (attribs[2].value != "") {audioHolder.setAttribute('hostURL',attribs[2].value);}
+					audioHolder.setAttribute('randomiseOrder',attribs[3].checked);
+					audioHolder.setAttribute('repeatCount',attribs[4].checked);
+					audioHolder.setAttribute('loop',attribs[5].checked);
+					audioHolder.setAttribute('elementComments',attribs[6].checked);
 					
-					var globalPreTest = document.createElement('preTest');
-					var options = document.getElementById('globalPreTest').getElementsByClassName('head');
-					constructPrePost(globalPreTest, options);
+					// Audio-Holder PreTests
+					var audioHolderPreTest = document.createElement('preTest');
+					var audioHolderPostTest = document.createElement('postTest');
+					options = audioHolderDOM.childNodes[2].getElementsByClassName('head');
+					constructPrePost(audioHolderPreTest, options);
+					options = audioHolderDOM.childNodes[3].getElementsByClassName('head');
+					constructPrePost(audioHolderPostTest, options);
 					
-					var globalPostTest = document.createElement('postTest');
-					options = document.getElementById('globalPostTest').getElementsByClassName('head');
-					constructPrePost(globalPostTest, options);
+					audioHolder.appendChild(audioHolderPreTest);
+					audioHolder.appendChild(audioHolderPostTest);
 					
-					var globalMetrics = document.createElement('metric');
-					options = document.getElementById('globalMetric').getElementsByClassName('attrib')[0].getElementsByTagName('input');
-					for (var i=0; i<options.length; i++) {
-						if (options[i].checked) {
-							var metric = document.createElement('metricEnable');
-							metric.textContent = options[i].id;
-							globalMetrics.appendChild(metric);
-						}
+					// audio-Elements
+					var audioElementsDOM = [];
+					var commentQuestionDOM = [];
+					for (var j=0; j<audioHolderDOM.childElementCount; j++) {
+						var child = audioHolderDOM.childNodes[j];
+						var name = child.getAttribute('name');
+						if (name == 'audio-element') {audioElementsDOM.push(child);}
+						else if (name == 'comment-question') {commentQuestionDOM.push(child);}
 					}
-					setup.appendChild(globalPreTest);
-					setup.appendChild(globalPostTest);
-					setup.appendChild(globalMetrics);
-					xmlDoc.appendChild(setup);
 					
-					var audioHolders = document.getElementsByName('audio-holder');
-					for (var i=0; i<audioHolders.length; i++) {
-						var audioHolder = document.createElement('audioHolder');
-						var audioHolderDOM = audioHolders[i];
-						var attribs = audioHolderDOM.getElementsByClassName('attrib')[0].getElementsByTagName('input');
-						audioHolder.id = attribs[0].value;
-						if (attribs[1].value != "") {audioHolder.setAttribute('sampleRate',attribs[1].value);}
-						if (attribs[2].value != "") {audioHolder.setAttribute('hostURL',attribs[2].value);}
-						audioHolder.setAttribute('randomiseOrder',attribs[3].checked);
-						audioHolder.setAttribute('repeatCount',attribs[4].checked);
-						audioHolder.setAttribute('loop',attribs[5].checked);
-						audioHolder.setAttribute('elementComments',attribs[6].checked);
-						
-						// Audio-Holder PreTests
-						var audioHolderPreTest = document.createElement('preTest');
-						var audioHolderPostTest = document.createElement('postTest');
-						options = audioHolderDOM.childNodes[2].getElementsByClassName('head');
-						constructPrePost(audioHolderPreTest, options);
-						options = audioHolderDOM.childNodes[3].getElementsByClassName('head');
-						constructPrePost(audioHolderPostTest, options);
-						
-						audioHolder.appendChild(audioHolderPreTest);
-						audioHolder.appendChild(audioHolderPostTest);
-						
-						// audio-Elements
-						var audioElementsDOM = [];
-						var commentQuestionDOM = [];
-						for (var j=0; j<audioHolderDOM.childElementCount; j++) {
-							var child = audioHolderDOM.childNodes[j];
-							var name = child.getAttribute('name');
-							if (name == 'audio-element') {audioElementsDOM.push(child);}
-							else if (name == 'comment-question') {commentQuestionDOM.push(child);}
-						}
-						
-						for (var j=0; j<audioElementsDOM.length; j++) {
-							var audioElement = document.createElement('audioElement');
-							attribs = audioElementsDOM[j].getElementsByClassName('attrib')[0].getElementsByTagName('input');
-							audioElement.id = attribs[0].value;
-							audioElement.setAttribute('url',attribs[1].value);
-							audioHolder.appendChild(audioElement);
-						}
-						
-						for (var j=0; j<commentQuestionDOM.length; j++) {
-							var commentQuestion = document.createElement('commentQuestion');
-							attribs = commentQuestionDOM[j].getElementsByClassName('attrib')[0].getElementsByTagName('input');
-							commentQuestion.id = attribs[0].value;
-							commentQuestion.textContent = attribs[1].value;
-							audioHolder.appendChild(commentQuestion);
-						}
-						xmlDoc.appendChild(audioHolder);
+					for (var j=0; j<audioElementsDOM.length; j++) {
+						var audioElement = document.createElement('audioElement');
+						attribs = audioElementsDOM[j].getElementsByClassName('attrib')[0].getElementsByTagName('input');
+						audioElement.id = attribs[0].value;
+						audioElement.setAttribute('url',attribs[1].value);
+						audioHolder.appendChild(audioElement);
 					}
-					return xmlDoc;
+					
+					for (var j=0; j<commentQuestionDOM.length; j++) {
+						var commentQuestion = document.createElement('commentQuestion');
+						attribs = commentQuestionDOM[j].getElementsByClassName('attrib')[0].getElementsByTagName('input');
+						commentQuestion.id = attribs[0].value;
+						commentQuestion.textContent = attribs[1].value;
+						audioHolder.appendChild(commentQuestion);
+					}
+					xmlDoc.appendChild(audioHolder);
 				}
+				return xmlDoc;
 			}
 			
 			function constructPrePost(parent, options) {
@@ -437,7 +457,7 @@
 	<body>
 		<h1>Create Test Setup XML</h1>
 		<button id="validateXML" onclick="buttonClickedValidate();">Validate</button>
-		<button id="createXML" onclick="buttonClickedValidate();" disabled>Submit</button>
+		<button id="createXML" onclick="buttonClickedSubmit();" disabled>Submit</button>
 		<span id="errorMessage" visibility="hidden"></span>
 		<div id="topLevelBody" align="left">
 			<!-- Interface goes here -->