# HG changeset patch # User Nicholas Jillings # Date 1449226855 0 # Node ID 56bdd4d357f9efaecf78b6342998e0f5f02099a1 # Parent 6703e0137cfc52fd7e3b067e2eaf65be0b0aea17# Parent bb60dabbd616719f15ba723cbacaed7845d80ea1 Merge of dev into default/master diff -r bb60dabbd616 -r 56bdd4d357f9 ape.css --- a/ape.css Fri Dec 04 10:57:39 2015 +0000 +++ b/ape.css Fri Dec 04 11:00:55 2015 +0000 @@ -21,18 +21,6 @@ font-size: 1.5em; } -div.testHalt { - /* Specify any colouring during the test halt for pre/post questions */ - background-color: rgba(0,0,0,0.5); - /* Don't mess with this bit */ - z-index: 2; - width: 100%; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} - button { /* Specify any button structure or style */ min-width: 20px; @@ -68,6 +56,15 @@ background-color: rgb(100,200,100); } +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-disabled { background-color: rgb(100,100,100); } @@ -79,11 +76,3 @@ div.comment-box-playing { background-color: #FFDDDD; } - -div#outside-reference { - width:250px; - margin-left: 100px; - height:20px; - margin-bottom:5px; - background-color: rgb(100,200,100); -} diff -r bb60dabbd616 -r 56bdd4d357f9 ape.js --- a/ape.js Fri Dec 04 10:57:39 2015 +0000 +++ b/ape.js Fri Dec 04 11:00:55 2015 +0000 @@ -7,6 +7,8 @@ // Once this is loaded and parsed, begin execution loadInterface(); +var clicking = -1; + function loadInterface() { // Get the dimensions of the screen available to the page @@ -174,6 +176,37 @@ } }; + Interface.prototype.objectSelected = null; + Interface.prototype.objectMoved = false; + Interface.prototype.selectObject = function(object) + { + if (this.objectSelected == null) + { + this.objectSelected = object; + this.objectMoved = false; + } + }; + Interface.prototype.moveObject = function() + { + if (this.objectMoved == false) + { + this.objectMoved = true; + } + }; + Interface.prototype.releaseObject = function() + { + this.objectSelected = null; + this.objectMoved = false; + }; + Interface.prototype.getSelectedObject = function() + { + return this.objectSelected; + }; + Interface.prototype.hasSelectedObjectMoved = function() + { + return this.objectMoved; + }; + // Bindings for audioObjects // Create the top div for the Title element @@ -368,9 +401,6 @@ audioEngineContext.loopPlayback = loopPlayback; // Create AudioEngine bindings for playback - audioEngineContext.selectedTrack = function(id) { - console.log('Deprecated'); - }; currentTestHolder = document.createElement('audioHolder'); currentTestHolder.id = audioHolderObject.id; @@ -405,6 +435,54 @@ audioObject.metric.initialised(convSliderPosToRate(audioObject.interfaceDOM.trackSliderObj)); }); + + $('.track-slider').mousedown(function(event) { + interfaceContext.selectObject($(this)[0]); + }); + + $('.track-slider').mousemove(function(event) { + event.preventDefault(); + }); + + $('#slider').mousemove(function(event) { + event.preventDefault(); + var obj = interfaceContext.getSelectedObject(); + if (obj == null) {return;} + $(obj).css("left",event.clientX + "px"); + interfaceContext.moveObject(); + }); + + $(document).mouseup(function(event){ + event.preventDefault(); + var obj = interfaceContext.getSelectedObject(); + if (obj == null) {return;} + if (interfaceContext.hasSelectedObjectMoved() == true) + { + var l = $(obj).css("left"); + var id = obj.getAttribute('trackIndex'); + var time = audioEngineContext.timer.getTestTime(); + var rate = convSliderPosToRate(obj); + audioEngineContext.audioObjects[id].metric.moved(time,rate); + console.log("slider "+id+" moved to "+rate+' ('+time+')'); + } else { + var id = Number(obj.attributes['trackIndex'].value); + //audioEngineContext.metric.sliderPlayed(id); + audioEngineContext.play(id); + // Currently playing track red, rest green + + //document.getElementById('track-slider-'+index).style.backgroundColor = "#FF0000"; + $('.track-slider').removeClass('track-slider-playing'); + $(obj).addClass('track-slider-playing'); + $('.comment-div').removeClass('comment-box-playing'); + $('#comment-div-'+id).addClass('comment-box-playing'); + var outsideReference = document.getElementById('outside-reference'); + if (outsideReference != undefined) + $(outsideReference).removeClass('track-slider-playing'); + } + interfaceContext.releaseObject(); + }); + + if (commentShow) { interfaceContext.showCommentBoxes(feedbackHolder,true); } @@ -452,43 +530,8 @@ this.trackSliderObj.setAttribute('trackIndex',audioObject.id); this.trackSliderObj.innerHTML = ''+audioObject.id+''; - this.trackSliderObj.draggable = true; - this.trackSliderObj.ondragend = dragEnd; - - this.trackSliderObj.ondragstart = function(event){ - event.dataTransfer.setData('Text',null); - }; - - this.trackSliderObj.ondrop = function(event) - { - if(event.stopPropagation) {event.stopPropagation();} - return false; - }; // Onclick, switch playback to that track - this.trackSliderObj.onclick = function(event) { - // Cannot continue to issue play command until audioObjects reported as ready! - // Get the track ID from the object ID - var element; - if (event.currentTarget.nodeName == "SPAN") { - element = event.currentTarget.parentNode; - } else { - element = event.currentTarget; - } - var id = Number(element.attributes['trackIndex'].value); - //audioEngineContext.metric.sliderPlayed(id); - audioEngineContext.play(id); - // Currently playing track red, rest green - - //document.getElementById('track-slider-'+index).style.backgroundColor = "#FF0000"; - $('.track-slider').removeClass('track-slider-playing'); - $(element).addClass('track-slider-playing'); - $('.comment-div').removeClass('comment-box-playing'); - $('#comment-div-'+id).addClass('comment-box-playing'); - var outsideReference = document.getElementById('outside-reference'); - if (outsideReference != undefined) - $(outsideReference).removeClass('track-slider-playing'); - }; this.enable = function() { if (this.parent.state == 1) @@ -508,32 +551,6 @@ }; } -function dragEnd(ev) { - // Function call when a div has been dropped - var slider = document.getElementById('slider'); - var marginSize = Number(slider.attributes['marginsize'].value); - var w = slider.style.width; - w = Number(w.substr(0,w.length-2)); - var x = ev.screenX; - - x += Math.abs(window.screenX); - x = x % window.outerWidth; - - if (x >= marginSize && x < w+marginSize) { - this.style.left = (x)+'px'; - } else { - if (x node are depricated"); } }; this.options = []; @@ -1543,24 +1533,32 @@ if (this.type == 'reference') {this.reference = true;} else {this.reference = false;} - this.marker = xml.getAttribute('marker'); - if (this.marker == null) {this.marker = undefined;} - - if (this.anchor == true) { - if (this.marker != undefined) {this.enforce = true;} - else {this.enforce = enforceAnchor;} - this.marker = anchor; + if (this.anchor == true || this.reference == true) + { + this.marker = xml.getAttribute('marker'); + if (this.marker != undefined) + { + this.marker = Number(this.marker); + if (isNaN(this.marker) == false) + { + if (this.marker > 1) + { this.marker /= 100.0;} + if (this.marker >= 0 && this.marker <= 1) + { + this.enforce = true; + return; + } else { + console.log("ERROR - Marker of audioElement "+this.id+" is not between 0 and 1 (float) or 0 and 100 (integer)!"); + console.log("ERROR - Marker not enforced!"); + } + } else { + console.log("ERROR - Marker of audioElement "+this.id+" is not a number!"); + console.log("ERROR - Marker not enforced!"); + } + } } - else if (this.reference == true) { - if (this.marker != undefined) {this.enforce = true;} - else {this.enforce = enforceReference;} - this.marker = reference; - } - - if (this.marker != undefined) { - this.marker = Number(this.marker); - if (this.marker > 1) {this.marker /= 100;} - } + this.marker = false; + this.enforce = false; }; this.commentQuestionNode = function(xml) { @@ -1616,50 +1614,6 @@ if (xml.getAttribute('elementComments') == "true") {this.elementComments = true;} else {this.elementComments = false;} - var anchor = xml.getElementsByTagName('anchor'); - var enforceAnchor = false; - if (anchor.length == 0) { - // Find anchor in commonInterface; - for (var i=0; i 1 && anchor < 100) {anchor /= 100.0;} - } - - if (typeof(reference) == 'number') { - if (reference > 1 && reference < 100) {reference /= 100.0;} - } - this.preTest = new parent.prepostNode('pretest',xml.getElementsByTagName('PreTest')); this.postTest = new parent.prepostNode('posttest',xml.getElementsByTagName('PostTest')); @@ -1697,36 +1651,6 @@ this.audioElements = randomiseOrder(this.audioElements); } - // Check only one anchor and one reference per audioNode - var anchor = []; - var reference = []; - this.anchorId = null; - this.referenceId = null; - for (var i=0; i 1) { - console.log('Error - cannot have more than one anchor!'); - console.log('Each anchor node will be a normal mode to continue the test'); - for (var i=0; i 1) { - console.log('Error - cannot have more than one anchor!'); - console.log('Each anchor node will be a normal mode to continue the test'); - for (var i=0; i= time) + { + passed = true; + break; + } + } + if (passed == false) + { + check_pass = false; + console.log("Continue listening to track-"+i); + error_obj.push(i); + } + } + if (check_pass == false) + { + var str_start = "You have not listened to fragments "; + for (var i=0; i