changeset 1156:79291bafbf5e

Added master volume. Ensured playhead, page-count and volume <interfaceoption> show options are enabled on all test pages.
author Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk>
date Mon, 25 Jan 2016 17:29:34 +0000
parents 5352a2adc6d1
children 7eb7461f473a
files example_eval/AB_example.xml example_eval/horizontal_example.xml example_eval/mushra_example.xml example_eval/radio_example.xml interfaces/AB.css interfaces/AB.js interfaces/ape.css interfaces/ape.js interfaces/discrete.css interfaces/discrete.js interfaces/horizontal-sliders.css interfaces/horizontal-sliders.js interfaces/mushra.css interfaces/mushra.js
diffstat 14 files changed, 251 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/example_eval/AB_example.xml	Fri Jan 22 17:03:18 2016 +0000
+++ b/example_eval/AB_example.xml	Mon Jan 25 17:29:34 2016 +0000
@@ -49,6 +49,7 @@
 			<interfaceoption type="check" name="scalerange" min="25" max="75"/>
 			<interfaceoption type="show" name='playhead'/>
 			<interfaceoption type="show" name="page-count"/>
+            <interfaceoption type="show" name='volume'/>
 		</interface>
 	</setup>
 	<page id='test-0' hostURL="example_eval/" randomiseOrder='true' repeatCount='0' loop='true' showElementComments='true' loudness="-12">
--- a/example_eval/horizontal_example.xml	Fri Jan 22 17:03:18 2016 +0000
+++ b/example_eval/horizontal_example.xml	Mon Jan 25 17:29:34 2016 +0000
@@ -15,6 +15,7 @@
 			<interfaceoption type="check" name="scalerange" min="25" max="75"/>
 			<interfaceoption type="show" name='playhead'/>
 			<interfaceoption type="show" name="page-count"/>
+            <interfaceoption type="show" name="volume"/>
 		</interface>
 	</setup>
 	<page id='test-0' hostURL="example_eval/" randomiseOrder='true' repeatCount='0' loop='true' showElementComments='true' loudness="-12">
--- a/example_eval/mushra_example.xml	Fri Jan 22 17:03:18 2016 +0000
+++ b/example_eval/mushra_example.xml	Mon Jan 25 17:29:34 2016 +0000
@@ -49,6 +49,7 @@
 			<interfaceoption type="check" name="scalerange" min="25" max="75"/>
 			<interfaceoption type="show" name='playhead'/>
 			<interfaceoption type="show" name="page-count"/>
+            <interfaceoption type="show" name="volume"/>
 		</interface>
 	</setup>
 	<page id='test-0' hostURL="example_eval/" randomiseOrder='true' repeatCount='0' loop='true' showElementComments='true' loudness="-12">
--- a/example_eval/radio_example.xml	Fri Jan 22 17:03:18 2016 +0000
+++ b/example_eval/radio_example.xml	Mon Jan 25 17:29:34 2016 +0000
@@ -13,6 +13,7 @@
 		<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>
--- a/interfaces/AB.css	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/AB.css	Mon Jan 25 17:29:34 2016 +0000
@@ -72,3 +72,18 @@
 	position: relative;
 	margin-top: 5px;
 }
+
+div.playhead {
+    margin: 5px;
+}
+
+div#page-count {
+    float: left;
+    margin: 0px 5px;
+}
+
+div#master-volume-holder {
+    position: absolute;
+    top: 10px;
+    left: 120px;
+}
\ No newline at end of file
--- a/interfaces/AB.js	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/AB.js	Mon Jan 25 17:29:34 2016 +0000
@@ -108,6 +108,45 @@
 	{
 		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.style.float = "left";
+                        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 '+(audioHolderObject.presentedId+1)+' of '+specification.pages.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;
+            }
+        }
+    }
 	
 	// Populate the comparitor object
 	interfaceContext.comparitor = new Comparitor(audioHolderObject);
--- a/interfaces/ape.css	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/ape.css	Mon Jan 25 17:29:34 2016 +0000
@@ -86,3 +86,9 @@
 div.comment-box-playing {
 	background-color: #FFDDDD;
 }
+
+div#master-volume-holder {
+    position: absolute;
+    top: 10px;
+    left: 120px;
+}
\ No newline at end of file
--- a/interfaces/ape.js	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/ape.js	Mon Jan 25 17:29:34 2016 +0000
@@ -293,33 +293,43 @@
 	for (var k=0; k<interfaceObj.length; k++) {
 		// Create the div box to center align
 		interfaceContext.interfaceSliders.push(new interfaceSliderHolder(interfaceObj[k]));
-		for (var i=0; i<interfaceObj[k].options.length; i++)
-		{
-			if (interfaceObj[k].options[i].type == 'option' && interfaceObj[k].options[i].name == '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);
-				}
-			} else if (interfaceObj[k].options[i].type == 'option' && interfaceObj[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 '+(audioHolderObject.presentedId+1)+' of '+specification.audioHolders.length+'</span>';
-				var inject = document.getElementById('interface-buttons');
-				inject.appendChild(pagecountHolder);
-			}
-		}
 	}
+    
+    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.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 '+(audioHolderObject.presentedId+1)+' of '+specification.pages.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);
+                }
+            }
+        }
+    }
 	
 	var commentBoxPrefix = "Comment on fragment";
 	
--- a/interfaces/discrete.css	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/discrete.css	Mon Jan 25 17:29:34 2016 +0000
@@ -107,4 +107,15 @@
 
 div.track-slider-playing {
 	background-color: #FFDDDD;
+}
+
+div#page-count {
+    float: left;
+    margin: 0px 5px;
+}
+
+div#master-volume-holder {
+    position: absolute;
+    top: 10px;
+    left: 120px;
 }
\ No newline at end of file
--- a/interfaces/discrete.js	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/discrete.js	Mon Jan 25 17:29:34 2016 +0000
@@ -113,6 +113,7 @@
 	var id = page.id;
 	
 	var feedbackHolder = document.getElementById('feedbackHolder');
+    feedbackHolder.innerHTML = null;
 	var interfaceObj = page.interfaces;
 	if (interfaceObj.length > 1)
 	{
@@ -123,6 +124,44 @@
 	{
 		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 '+(page.presentedId+1)+' of '+specification.pages.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');
@@ -131,7 +170,6 @@
 	}
 	
 	var sliderBox = document.getElementById('slider-holder');
-	feedbackHolder.innerHTML = null;
 	sliderBox.innerHTML = null;
 	
 	var commentBoxPrefix = "Comment on track";
--- a/interfaces/horizontal-sliders.css	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/horizontal-sliders.css	Mon Jan 25 17:29:34 2016 +0000
@@ -132,4 +132,15 @@
 
 input.track-slider-not-moved[type=range]::-moz-range-track {
 	background: #aaa;
+}
+
+div#page-count {
+    float: left;
+    margin: 0px 5px;
+}
+
+div#master-volume-holder {
+    position: absolute;
+    top: 10px;
+    left: 120px;
 }
\ No newline at end of file
--- a/interfaces/horizontal-sliders.js	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/horizontal-sliders.js	Mon Jan 25 17:29:34 2016 +0000
@@ -113,6 +113,8 @@
 	var id = page.id;
 	
 	var feedbackHolder = document.getElementById('feedbackHolder');
+    feedbackHolder.innerHTML = null;
+    
 	var interfaceObj = page.interfaces;
 	if (interfaceObj.length > 1)
 	{
@@ -124,6 +126,44 @@
 		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 '+(page.presentedId+1)+' of '+specification.pages.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');
 	if (outsideReferenceHolder != null) {
@@ -131,7 +171,6 @@
 	}
 	
 	var sliderBox = document.getElementById('slider-holder');
-	feedbackHolder.innerHTML = null;
 	sliderBox.innerHTML = null;
 	
 	var commentBoxPrefix = "Comment on track";
@@ -293,6 +332,7 @@
 			audioEngineContext.audioObjects[i].interfaceDOM.resize(event);
 		}
 	}
+    document.getElementById("slider").style.height = totalHeight+50+'px';
 	drawScale();
 }
 
--- a/interfaces/mushra.css	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/mushra.css	Mon Jan 25 17:29:34 2016 +0000
@@ -134,3 +134,14 @@
 	margin-top: -1px;
 	margin-left: -4px;
 }
+
+div#page-count {
+    float: left;
+    margin: 0px 5px;
+}
+
+div#master-volume-holder {
+    position: absolute;
+    top: 10px;
+    left: 120px;
+}
\ No newline at end of file
--- a/interfaces/mushra.js	Fri Jan 22 17:03:18 2016 +0000
+++ b/interfaces/mushra.js	Mon Jan 25 17:29:34 2016 +0000
@@ -114,6 +114,7 @@
 	var id = audioHolderObject.id;
 	
 	var feedbackHolder = document.getElementById('feedbackHolder');
+    feedbackHolder.innerHTML = null;
 	var interfaceObj = audioHolderObject.interfaces;
 	if (interfaceObj.length > 1)
 	{
@@ -124,6 +125,43 @@
 	{
 		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 '+(audioHolderObject.presentedId+1)+' of '+specification.pages.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');
@@ -132,7 +170,6 @@
 	}
 	
 	var sliderBox = document.getElementById('slider-holder');
-	feedbackHolder.innerHTML = null;
 	sliderBox.innerHTML = null;
 	
 	var commentBoxPrefix = "Comment on track";