changeset 1017:e103d40537b5

create_test: File API to handle dragged in XML file.
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Wed, 03 Jun 2015 12:54:08 +0100
parents 3b24b06f93a1
children 6372b01560cd
files test_create/test_create.html
diffstat 1 files changed, 48 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/test_create/test_create.html	Wed Jun 03 12:15:14 2015 +0100
+++ b/test_create/test_create.html	Wed Jun 03 12:54:08 2015 +0100
@@ -22,6 +22,12 @@
 				var setup = document.createElement('div');
 				setup.id = 'setupTagDiv';
 				
+				// Setup drag/drop handles
+				var dropBody = document.getElementById('dragFile');
+				dropBody.addEventListener('dragover', handleDragOver, false);
+				dropBody.addEventListener('dragenter',handleDragEnter,false);
+				dropBody.addEventListener('dragleave',handleDragLeave,false);
+				dropBody.addEventListener('drop', handleDrop,false);
 			};
 			
 			function attributePair(string, type, mandatory){
@@ -430,6 +436,39 @@
 				node.appendChild(removeButton);
 				return node;
 			}
+			
+			
+			function handleDragOver(e) {
+				e.stopPropagation();
+				e.preventDefault();
+			}
+			function handleDragEnter(e) {
+				e.stopPropagation();
+				e.preventDefault();
+				this.style.backgroundColor = '#AAFFAA';
+			}
+			function handleDragLeave(e) {
+				e.stopPropagation();
+				e.preventDefault();
+				this.style.backgroundColor = "#FFFFFF";
+			}
+			function handleDrop(e) {
+				e.stopPropagation();
+				e.preventDefault();
+				
+				var file = e.dataTransfer.files[0];
+				
+				// Uses HTML5 FileAPI - https://w3c.github.io/FileAPI/#filereader-interface
+				var reader = new FileReader();
+				reader.readAsText(file);
+				var parse = new DOMParser();
+				var xml = parse.parseFromString(reader.result,'text/xml');
+				importXML(xml);
+			}
+			
+			function importXML(xml) {
+				console.log(xml);
+			}
 		</script>
 		<style>
 			div {
@@ -450,12 +489,21 @@
 				border-style: dashed;
 				margin-bottom: 10px;
 			}
+			div#dragFile{
+				height:100px;
+				border-width: 2px;
+				border-style: dashed;
+				margin-bottom: 10px;
+			}
 		</style>
 		
 	</head>
 
 	<body>
 		<h1>Create Test Setup XML</h1>
+		<div id="dragFile">
+			<span>Drag and Drop an XML specification file here to auto-load.</span>
+		</div>
 		<button id="validateXML" onclick="buttonClickedValidate();">Validate</button>
 		<button id="createXML" onclick="buttonClickedSubmit();" disabled>Submit</button>
 		<span id="errorMessage" visibility="hidden"></span>