changeset 2407:b7ed9d43ea87

Fix for #71
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Fri, 27 May 2016 12:15:40 +0100
parents c2db5860a247
children 3013cf945716
files interfaces/AB.js interfaces/ape.js interfaces/discrete.js interfaces/horizontal-sliders.js interfaces/mushra.js js/specification.js tests/examples/AB_example.xml tests/examples/horizontal_example.xml tests/examples/mushra_example.xml tests/examples/project.xml tests/examples/radio_example.xml
diffstat 11 files changed, 232 insertions(+), 197 deletions(-) [+]
line wrap: on
line diff
--- a/interfaces/AB.js	Fri May 27 11:05:30 2016 +0100
+++ b/interfaces/AB.js	Fri May 27 12:15:40 2016 +0100
@@ -153,6 +153,9 @@
         if (node){feedbackHolder.removeChild(node);}
     }
     
+    // Populate the comparator object
+	interfaceContext.comparator = new comparator(audioHolderObject);
+    
     for (var option of interfaceOptions)
     {
         if (option.type == "show")
@@ -187,30 +190,27 @@
                         feedbackHolder.appendChild(interfaceContext.volume.object);
                     }
                     break;
+                case "comments":
+                    var commentHolder = document.createElement('div');
+                    commentHolder.id = 'commentHolder';
+                    document.getElementById('testContent').appendChild(commentHolder);
+                    // Generate one comment box per presented page
+                    for (var element of audioEngineContext.audioObjects)
+                    {
+                        interfaceContext.commentBoxes.createCommentBox(element);
+                    }
+                    interfaceContext.commentBoxes.showCommentBoxes(commentHolder,true);
+                    break;
             }
         }
     }
-	
-	// Populate the comparator object
-	interfaceContext.comparator = new comparator(audioHolderObject);
-    if (audioHolderObject.showElementComments)
-    {
-        var commentHolder = document.createElement('div');
-        commentHolder.id = 'commentHolder';
-        document.getElementById('testContent').appendChild(commentHolder);
-        // Generate one comment box per presented page
-        for (var element of audioEngineContext.audioObjects)
-        {
-            interfaceContext.commentBoxes.createCommentBox(element);
-        }
-        interfaceContext.commentBoxes.showCommentBoxes(commentHolder,true);
-    }
-	resizeWindow(null);
     
     $(audioHolderObject.commentQuestions).each(function(index,element) {
 		var node = interfaceContext.createCommentQuestion(element);
 		commentHolder.appendChild(node.holder);
 	});
+    
+	resizeWindow(null);
 }
 
 function comparator(audioHolderObject)
--- a/interfaces/ape.js	Fri May 27 11:05:30 2016 +0100
+++ b/interfaces/ape.js	Fri May 27 12:15:40 2016 +0100
@@ -339,6 +339,12 @@
                 {
                     feedbackHolder.appendChild(interfaceContext.volume.object);
                 }
+            } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'comments') {
+                var commentHolder = document.createElement('div');
+                commentHolder.id = 'commentHolder';
+                document.getElementById('testContent').appendChild(commentHolder);
+                interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
+                break;
             }
         }
     }
@@ -444,17 +450,51 @@
 		interfaceContext.releaseObject();
 	});
 	
-	
-	if (audioHolderObject.showElementComments) {
-		interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
-	}
-	
-	$(audioHolderObject.commentQuestions).each(function(index,element) {
+    var interfaceList = audioHolderObject.interfaces.concat(specification.interfaces);
+    for (var k=0; k<interfaceList.length; k++)
+    {
+        for (var i=0; i<interfaceList[k].options.length; i++)
+        {
+            if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'playhead')
+            {
+                var playbackHolder = document.getElementById('playback-holder');
+                if (playbackHolder == null)
+                {
+                    playbackHolder = document.createElement('div');
+                    playbackHolder.id = "playback-holder";
+                    playbackHolder.style.width = "100%";
+                    playbackHolder.align = 'center';
+                    playbackHolder.appendChild(interfaceContext.playhead.object);
+                    feedbackHolder.appendChild(playbackHolder);
+                }
+            } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'page-count')
+            {
+                var pagecountHolder = document.getElementById('page-count');
+                if (pagecountHolder == null)
+                {
+                    pagecountHolder = document.createElement('div');
+                    pagecountHolder.id = 'page-count';
+                }
+                pagecountHolder.innerHTML = '<span>Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+'</span>';
+                var inject = document.getElementById('interface-buttons');
+                inject.appendChild(pagecountHolder);
+            } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'volume') {
+                if (document.getElementById('master-volume-holder') == null)
+                {
+                    feedbackHolder.appendChild(interfaceContext.volume.object);
+                }
+            } else if (interfaceList[k].options[i].type == 'show' && interfaceList[k].options[i].name == 'comments') {
+                interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
+                break;
+            }
+        }
+    }
+    
+    $(audioHolderObject.commentQuestions).each(function(index,element) {
 		var node = interfaceContext.createCommentQuestion(element);
 		feedbackHolder.appendChild(node.holder);
 	});
 	
-	
 	//testWaitIndicator();
 }
 
--- a/interfaces/discrete.js	Fri May 27 11:05:30 2016 +0100
+++ b/interfaces/discrete.js	Fri May 27 12:15:40 2016 +0100
@@ -130,44 +130,6 @@
 	{
 		document.getElementById("pageTitle").textContent = interfaceObj.title;
 	}
-    
-    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
-    for (var option of interfaceOptions)
-    {
-        if (option.type == "show")
-        {
-            switch(option.name) {
-                case "playhead":
-                    var playbackHolder = document.getElementById('playback-holder');
-                    if (playbackHolder == null)
-                    {
-                        playbackHolder = document.createElement('div');
-                        playbackHolder.style.width = "100%";
-                        playbackHolder.align = 'center';
-                        playbackHolder.appendChild(interfaceContext.playhead.object);
-                        feedbackHolder.appendChild(playbackHolder);
-                    }
-                    break;
-                case "page-count":
-                    var pagecountHolder = document.getElementById('page-count');
-                    if (pagecountHolder == null)
-                    {
-                        pagecountHolder = document.createElement('div');
-                        pagecountHolder.id = 'page-count';
-                    }
-                    pagecountHolder.innerHTML = '<span>Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+'</span>';
-                    var inject = document.getElementById('interface-buttons');
-                    inject.appendChild(pagecountHolder);
-                    break;
-                case "volume":
-                    if (document.getElementById('master-volume-holder') == null)
-                    {
-                        feedbackHolder.appendChild(interfaceContext.volume.object);
-                    }
-                    break;
-            }
-        }
-    }
 	
 	// Delete outside reference
     document.getElementById("outside-reference-holder").innerHTML = "";
@@ -224,11 +186,52 @@
         
 	});
 	
-    if (page.showElementComments)
+    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
+    for (var option of interfaceOptions)
     {
-        interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
+        if (option.type == "show")
+        {
+            switch(option.name) {
+                case "playhead":
+                    var playbackHolder = document.getElementById('playback-holder');
+                    if (playbackHolder == null)
+                    {
+                        playbackHolder = document.createElement('div');
+                        playbackHolder.style.width = "100%";
+                        playbackHolder.align = 'center';
+                        playbackHolder.appendChild(interfaceContext.playhead.object);
+                        feedbackHolder.appendChild(playbackHolder);
+                    }
+                    break;
+                case "page-count":
+                    var pagecountHolder = document.getElementById('page-count');
+                    if (pagecountHolder == null)
+                    {
+                        pagecountHolder = document.createElement('div');
+                        pagecountHolder.id = 'page-count';
+                    }
+                    pagecountHolder.innerHTML = '<span>Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+'</span>';
+                    var inject = document.getElementById('interface-buttons');
+                    inject.appendChild(pagecountHolder);
+                    break;
+                case "volume":
+                    if (document.getElementById('master-volume-holder') == null)
+                    {
+                        feedbackHolder.appendChild(interfaceContext.volume.object);
+                    }
+                    break;
+                case "comments":
+                    interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
+                    break;
+            }
+        }
     }
     
+    $(page.commentQuestions).each(function(index,element) {
+		var node = interfaceContext.createCommentQuestion(element);
+		commentHolder.appendChild(node.holder);
+	});
+    
 	// Auto-align
 	resizeWindow(null);
 }
--- a/interfaces/horizontal-sliders.js	Fri May 27 11:05:30 2016 +0100
+++ b/interfaces/horizontal-sliders.js	Fri May 27 12:15:40 2016 +0100
@@ -130,44 +130,6 @@
 	{
 		document.getElementById("pageTitle").textContent = interfaceObj.title;
 	}
-	
-    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
-    for (var option of interfaceOptions)
-    {
-        if (option.type == "show")
-        {
-            switch(option.name) {
-                case "playhead":
-                    var playbackHolder = document.getElementById('playback-holder');
-                    if (playbackHolder == null)
-                    {
-                        playbackHolder = document.createElement('div');
-                        playbackHolder.style.width = "100%";
-                        playbackHolder.align = 'center';
-                        playbackHolder.appendChild(interfaceContext.playhead.object);
-                        feedbackHolder.appendChild(playbackHolder);
-                    }
-                    break;
-                case "page-count":
-                    var pagecountHolder = document.getElementById('page-count');
-                    if (pagecountHolder == null)
-                    {
-                        pagecountHolder = document.createElement('div');
-                        pagecountHolder.id = 'page-count';
-                    }
-                    pagecountHolder.innerHTML = '<span>Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+'</span>';
-                    var inject = document.getElementById('interface-buttons');
-                    inject.appendChild(pagecountHolder);
-                    break;
-                case "volume":
-                    if (document.getElementById('master-volume-holder') == null)
-                    {
-                        feedbackHolder.appendChild(interfaceContext.volume.object);
-                    }
-                    break;
-            }
-        }
-    }
     
 	// Delete outside reference
 	document.getElementById("outside-reference-holder").innerHTML = "";
@@ -231,9 +193,45 @@
 		}
         
 	});
-	if (page.showElementComments)
+    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
+    for (var option of interfaceOptions)
     {
-        interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
+        if (option.type == "show")
+        {
+            switch(option.name) {
+                case "playhead":
+                    var playbackHolder = document.getElementById('playback-holder');
+                    if (playbackHolder == null)
+                    {
+                        playbackHolder = document.createElement('div');
+                        playbackHolder.style.width = "100%";
+                        playbackHolder.align = 'center';
+                        playbackHolder.appendChild(interfaceContext.playhead.object);
+                        feedbackHolder.appendChild(playbackHolder);
+                    }
+                    break;
+                case "page-count":
+                    var pagecountHolder = document.getElementById('page-count');
+                    if (pagecountHolder == null)
+                    {
+                        pagecountHolder = document.createElement('div');
+                        pagecountHolder.id = 'page-count';
+                    }
+                    pagecountHolder.innerHTML = '<span>Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+'</span>';
+                    var inject = document.getElementById('interface-buttons');
+                    inject.appendChild(pagecountHolder);
+                    break;
+                case "volume":
+                    if (document.getElementById('master-volume-holder') == null)
+                    {
+                        feedbackHolder.appendChild(interfaceContext.volume.object);
+                    }
+                    break;
+                case "comments":
+                    interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
+                    break;
+            }
+        }
     }
 	// Auto-align
 	resizeWindow(null);
--- a/interfaces/mushra.js	Fri May 27 11:05:30 2016 +0100
+++ b/interfaces/mushra.js	Fri May 27 12:15:40 2016 +0100
@@ -131,43 +131,6 @@
 	{
 		document.getElementById("pageTitle").textContent = interfaceObj.title;
 	}
-    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
-    for (var option of interfaceOptions)
-    {
-        if (option.type == "show")
-        {
-            switch(option.name) {
-                case "playhead":
-                    var playbackHolder = document.getElementById('playback-holder');
-                    if (playbackHolder == null)
-                    {
-                        playbackHolder = document.createElement('div');
-                        playbackHolder.style.width = "100%";
-                        playbackHolder.align = 'center';
-                        playbackHolder.appendChild(interfaceContext.playhead.object);
-                        feedbackHolder.appendChild(playbackHolder);
-                    }
-                    break;
-                case "page-count":
-                    var pagecountHolder = document.getElementById('page-count');
-                    if (pagecountHolder == null)
-                    {
-                        pagecountHolder = document.createElement('div');
-                        pagecountHolder.id = 'page-count';
-                    }
-                    pagecountHolder.innerHTML = '<span>Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+'</span>';
-                    var inject = document.getElementById('interface-buttons');
-                    inject.appendChild(pagecountHolder);
-                    break;
-                case "volume":
-                    if (document.getElementById('master-volume-holder') == null)
-                    {
-                        feedbackHolder.appendChild(interfaceContext.volume.object);
-                    }
-                    break;
-            }
-        }
-    }
 	
 	// Delete outside reference
 	var outsideReferenceHolder = document.getElementById("outside-reference-holder");
@@ -232,9 +195,47 @@
         
 	});
     
-    if (audioHolderObject.showElementComments) {
-		interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
-	}
+    
+    var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options);
+    for (var option of interfaceOptions)
+    {
+        if (option.type == "show")
+        {
+            switch(option.name) {
+                case "playhead":
+                    var playbackHolder = document.getElementById('playback-holder');
+                    if (playbackHolder == null)
+                    {
+                        playbackHolder = document.createElement('div');
+                        playbackHolder.style.width = "100%";
+                        playbackHolder.align = 'center';
+                        playbackHolder.appendChild(interfaceContext.playhead.object);
+                        feedbackHolder.appendChild(playbackHolder);
+                    }
+                    break;
+                case "page-count":
+                    var pagecountHolder = document.getElementById('page-count');
+                    if (pagecountHolder == null)
+                    {
+                        pagecountHolder = document.createElement('div');
+                        pagecountHolder.id = 'page-count';
+                    }
+                    pagecountHolder.innerHTML = '<span>Page '+(testState.stateIndex+1)+' of '+testState.stateMap.length+'</span>';
+                    var inject = document.getElementById('interface-buttons');
+                    inject.appendChild(pagecountHolder);
+                    break;
+                case "volume":
+                    if (document.getElementById('master-volume-holder') == null)
+                    {
+                        feedbackHolder.appendChild(interfaceContext.volume.object);
+                    }
+                    break;
+                case "comments":
+                    interfaceContext.commentBoxes.showCommentBoxes(feedbackHolder,true);
+                    break;
+            }
+        }
+    }
 	
 	$(audioHolderObject.commentQuestions).each(function(index,element) {
 		var node = interfaceContext.createCommentQuestion(element);
--- a/js/specification.js	Fri May 27 11:05:30 2016 +0100
+++ b/js/specification.js	Fri May 27 12:15:40 2016 +0100
@@ -442,7 +442,6 @@
 		this.hostURL = undefined;
 		this.randomiseOrder = undefined;
 		this.loop = undefined;
-		this.showElementComments = undefined;
 		this.outsideReference = null;
 		this.loudness = null;
         this.label = null;
--- a/tests/examples/AB_example.xml	Fri May 27 11:05:30 2016 +0100
+++ b/tests/examples/AB_example.xml	Fri May 27 12:15:40 2016 +0100
@@ -50,9 +50,10 @@
 			<interfaceoption type="show" name='playhead'/>
 			<interfaceoption type="show" name="page-count"/>
             <interfaceoption type="show" name='volume'/>
+            <interfaceoption type="show" name='comments'/>
 		</interface>
 	</setup>
-	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' showElementComments='true' loudness="-12">
+	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' loudness="-12">
 		<commentboxprefix>Comment on fragment</commentboxprefix>
 		<interface>
 			<title>Depth</title>
@@ -70,7 +71,7 @@
 			</surveyentry>
 		</survey>
 	</page>
-	<page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false' showElementComments='true' loudness="-12">
+	<page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false' loudness="-12">
 		<commentboxprefix>Comment on fragment</commentboxprefix>
 		<interface>
 			<title>Depth</title>
--- a/tests/examples/horizontal_example.xml	Fri May 27 11:05:30 2016 +0100
+++ b/tests/examples/horizontal_example.xml	Fri May 27 12:15:40 2016 +0100
@@ -16,9 +16,10 @@
 			<interfaceoption type="show" name='playhead'/>
 			<interfaceoption type="show" name="page-count"/>
             <interfaceoption type="show" name="volume"/>
+            <interfaceoption type="show" name="comments"/>
 		</interface>
 	</setup>
-	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' showElementComments='true' loudness="-12">
+	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' loudness="-12">
 		<interface>
 			<scales>
 				<scalelabel position="0">-50</scalelabel>
--- a/tests/examples/mushra_example.xml	Fri May 27 11:05:30 2016 +0100
+++ b/tests/examples/mushra_example.xml	Fri May 27 12:15:40 2016 +0100
@@ -53,7 +53,7 @@
             <interfaceoption type="show" name="volume"/>
 		</interface>
 	</setup>
-	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' showElementComments='true' loudness="-12">
+	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' loudness="-12">
 		<commentboxprefix>Comment on fragment</commentboxprefix>
 		<interface>
 			<scales>
@@ -82,10 +82,11 @@
 			</surveyentry>
 		</survey>
 	</page>
-	<page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false' showElementComments='true'>
+	<page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false'>
 		<commentboxprefix>Comment on fragment</commentboxprefix>
 		<interface name="preference">
 			<title>Example Test Question</title>
+            <interfaceoption type="show" name="comments"/>
 			<scales>
 				<scalelabel position="0">Min</scalelabel>
 				<scalelabel position="100">Max</scalelabel>
--- a/tests/examples/project.xml	Fri May 27 11:05:30 2016 +0100
+++ b/tests/examples/project.xml	Fri May 27 12:15:40 2016 +0100
@@ -50,9 +50,10 @@
 			<interfaceoption type="check" name="scalerange" min="25" max="75"/>
 			<interfaceoption type="show" name='playhead'/>
 			<interfaceoption type="show" name="page-count"/>
+            <interfaceoption type="show" name="comments"/>
 		</interface>
 	</setup>
-	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' showElementComments='true' loudness="-12">
+	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' loudness="-12">
 		<commentboxprefix>Comment on fragment</commentboxprefix>
 		<interface name="preference">
             <title>Preference</title>
@@ -88,7 +89,7 @@
 			</surveyentry>
 		</survey>
 	</page>
-	<page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false' showElementComments='true' label="letter">
+	<page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false' label="letter">
 		<commentboxprefix>Comment on fragment</commentboxprefix>
 		<interface name="preference">
 			<title>Example Test Question</title>
--- a/tests/examples/radio_example.xml	Fri May 27 11:05:30 2016 +0100
+++ b/tests/examples/radio_example.xml	Fri May 27 12:15:40 2016 +0100
@@ -1,47 +1,37 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<waet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test-schema.xsd">
+<?xml version="1.0" encoding="UTF-8" ?>
+<waet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test-schema.xsd">
 	<setup interface="likert" projectReturn="save.php" crossFade="3.0">
-		<metric>
-			<metricenable>testTimer</metricenable>
-			<metricenable>elementTimer</metricenable>
-			<metricenable>elementInitialPosition</metricenable>
-			<metricenable>elementTracker</metricenable>
-			<metricenable>elementFlagListenedTo</metricenable>
-			<metricenable>elementFlagMoved</metricenable>
-			<metricenable>elementListenTracker</metricenable>
-		</metric>
-		<interface>
-			<interfaceoption type="check" name="fragmentMoved"/>
-			<interfaceoption type="check" name="scalerange" min="25" max="75"/>
-            <interfaceoption type="show" name="volume"/>
-			<interfaceoption type="show" name='playhead'/>
-			<interfaceoption type="show" name="page-count"/>
-		</interface>
-	</setup>
-	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='4' loop='true' showElementComments='true' loudness="-23">
-		<interface>
-			<scales>
-				<scalelabel position="0">(1) Very Annoying</scalelabel>
-				<scalelabel position="25">(2) Annoying</scalelabel>
-				<scalelabel position="50">(3) Slightly Annoying</scalelabel>
-				<scalelabel position="75">(4) Audible but not Annoying</scalelabel>
-				<scalelabel position="100">(5) Inaudible</scalelabel>
-			</scales>
-		</interface>
-		<audioelement url="0.wav" id="track-1" alwaysInclude="true"/>
-		<audioelement url="1.wav" id="track-2"/>
-        <audioelement url="3.wav" id="track-4"/>
-        <audioelement url="3.wav" id="track-5"/>
-        <audioelement url="3.wav" id="track-6"/>
-        <audioelement url="3.wav" id="track-7"/>
-        <audioelement url="3.wav" id="track-8"/>
-        <audioelement url="3.wav" id="track-9"/>
-        <audioelement url="3.wav" id="track-10"/>
-        <audioelement url="3.wav" id="track-11"/>
-        <audioelement url="3.wav" id="track-12"/>
-        <audioelement url="3.wav" id="track-13"/>
-        <audioelement url="3.wav" id="track-14"/>
-        <audioelement url="3.wav" id="track-15"/>
-        <audioelement url="2.wav" id="track-16" type="outside-reference"/>
-	</page>
-</waet>
+		<metric>
+			<metricenable>testTimer</metricenable>
+			<metricenable>elementTimer</metricenable>
+			<metricenable>elementInitialPosition</metricenable>
+			<metricenable>elementTracker</metricenable>
+			<metricenable>elementFlagListenedTo</metricenable>
+			<metricenable>elementFlagMoved</metricenable>
+			<metricenable>elementListenTracker</metricenable>
+		</metric>
+		<interface>
+			<interfaceoption type="check" name="fragmentMoved"/>
+			<interfaceoption type="check" name="scalerange" min="25" max="75"/>
+            <interfaceoption type="show" name="volume"/>
+			<interfaceoption type="show" name='playhead'/>
+			<interfaceoption type="show" name="page-count"/>
+            <interfaceoption type="show" name="comments"/>
+		</interface>
+	</setup>
+	<page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='4' loop='true' loudness="-23">
+		<interface>
+			<scales>
+				<scalelabel position="0">(1) Very Annoying</scalelabel>
+				<scalelabel position="25">(2) Annoying</scalelabel>
+				<scalelabel position="50">(3) Slightly Annoying</scalelabel>
+				<scalelabel position="75">(4) Audible but not Annoying</scalelabel>
+				<scalelabel position="100">(5) Inaudible</scalelabel>
+			</scales>
+		</interface>
+		<audioelement url="0.wav" id="track-1" alwaysInclude="true"/>
+		<audioelement url="1.wav" id="track-2"/>
+        <audioelement url="3.wav" id="track-4"/>
+        <audioelement url="3.wav" id="track-5"/>
+	</page>
+</waet>