changeset 751:3b8069ea47d2

Bug #1507 MUSHRA outside reference added
author Nicholas Jillings <nicholas.jillings@eecs.qmul.ac.uk>
date Mon, 21 Dec 2015 13:17:45 +0000
parents c9c010690d56
children fab881bdeeac
files core.js mushra.css mushra.js
diffstat 3 files changed, 54 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/core.js	Mon Dec 21 13:01:01 2015 +0000
+++ b/core.js	Mon Dec 21 13:17:45 2015 +0000
@@ -2858,7 +2858,7 @@
 		var failed = [];
 		for (var i in audioEngineContext.audioObjects)
 		{
-			if(audioEngineContext.audioObjects[i].metric.wasMoved == false)
+			if(audioEngineContext.audioObjects[i].metric.wasMoved == false && audioEngineContext.audioObjects[i].specification.type != 'outsidereference')
 			{
 				failed.push(audioEngineContext.audioObjects[i].id);
 			}
--- a/mushra.css	Mon Dec 21 13:01:01 2015 +0000
+++ b/mushra.css	Mon Dec 21 13:17:45 2015 +0000
@@ -61,6 +61,15 @@
 	margin-left: 50px;
 }
 
+div.outside-reference {
+	width:120px;
+	padding-left: 55px;
+	margin-left: 100px;
+	height:20px;
+	margin-bottom:5px;
+	background-color: rgb(100,200,100);
+}
+
 div.track-slider-playing {
 	background-color: #FFDDDD;
 }
--- a/mushra.js	Mon Dec 21 13:01:01 2015 +0000
+++ b/mushra.js	Mon Dec 21 13:17:45 2015 +0000
@@ -47,6 +47,7 @@
 	var playback = document.createElement("button");
 	playback.innerHTML = 'Stop';
 	playback.id = 'playback-button';
+	playback.style.float = 'left';
 	// onclick function. Check if it is playing or not, call the correct function in the
 	// audioEngine, change the button text to reflect the next state.
 	playback.onclick = function() {
@@ -62,6 +63,7 @@
 	submit.innerHTML = 'Submit';
 	submit.onclick = buttonSubmitClick;
 	submit.id = 'submit-button';
+	submit.style.float = 'left';
 	// Append the interface buttons into the interfaceButtons object.
 	interfaceButtons.appendChild(playback);
 	interfaceButtons.appendChild(submit);
@@ -116,6 +118,12 @@
 		document.getElementById("pageTitle").textContent = interfaceObj.title;
 	}
 	
+	// Delete outside reference
+	var outsideReferenceHolder = document.getElementById('outside-reference');
+	if (outsideReferenceHolder != null) {
+		document.getElementById('interface-buttons').removeChild(outsideReferenceHolder);
+	}
+	
 	var sliderBox = document.getElementById('slider-holder');
 	feedbackHolder.innerHTML = null;
 	sliderBox.innerHTML = null;
@@ -140,8 +148,12 @@
 		// Find URL of track
 		// In this jQuery loop, variable 'this' holds the current audioElement.
 		
-		// Now load each audio sample. First create the new track by passing the full URL
-		var trackURL = audioHolderObject.hostURL + element.url;
+		// Check if an outside reference
+		if (index == audioHolderObject.outsideReference)
+		{
+			return;
+		}
+		
 		var audioObject = audioEngineContext.newTrack(element);
 		
 		var node = interfaceContext.createCommentBox(audioObject);
@@ -168,6 +180,32 @@
 	var totalWidth = (numObj-1)*150+100;
 	var diff = (window.innerWidth - totalWidth)/2;
 	sliderBox.style.marginLeft = diff + 'px';
+	
+	// Construct outside reference;
+	if (audioHolderObject.outsideReference != null) {
+		var outsideReferenceHolder = document.createElement('div');
+		outsideReferenceHolder.id = 'outside-reference';
+		outsideReferenceHolder.className = 'outside-reference';
+		outsideReferenceHolderspan = document.createElement('span');
+		outsideReferenceHolderspan.textContent = 'Reference';
+		outsideReferenceHolder.appendChild(outsideReferenceHolderspan);
+		
+		var audioObject = audioEngineContext.newTrack(audioHolderObject.audioElements[audioHolderObject.outsideReference]);
+		
+		outsideReferenceHolder.onclick = function(event)
+		{
+			audioEngineContext.play(audioEngineContext.audioObjects.length-1);
+			$('.track-slider').removeClass('track-slider-playing');
+            $('.comment-div').removeClass('comment-box-playing');
+            if (event.currentTarget.nodeName == 'DIV') {
+            	$(event.currentTarget).addClass('track-slider-playing');
+            } else {
+            	$(event.currentTarget.parentElement).addClass('track-slider-playing');
+            }
+		};
+		
+		document.getElementById('interface-buttons').appendChild(outsideReferenceHolder);
+	}
 }
 
 function sliderObject(audioObject)
@@ -223,6 +261,10 @@
 		audioEngineContext.play(id);
 		$(".track-slider").removeClass('track-slider-playing');
 		$(event.currentTarget.parentElement).addClass('track-slider-playing');
+		var outsideReference = document.getElementById('outside-reference');
+		if (outsideReference != null) {
+			$(outsideReference).removeClass('track-slider-playing');
+		}
 	};
 	
 	this.enable = function() {