Mercurial > hg > webaudioevaluationtool
changeset 2623:d4707c4a8b98
#146 implemented for Mushra
author | Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk> |
---|---|
date | Thu, 08 Dec 2016 14:33:01 +0000 |
parents | 88b1c15eb202 |
children | a33b66ca3baa |
files | interfaces/mushra.css interfaces/mushra.js tests/examples/mushra_example.xml xml/test-schema.xsd |
diffstat | 4 files changed, 88 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/interfaces/mushra.css Thu Dec 08 14:03:39 2016 +0000 +++ b/interfaces/mushra.css Thu Dec 08 14:33:01 2016 +0000 @@ -7,43 +7,52 @@ /* Set the background colour (note US English spelling) to grey*/ background-color: #ddd } + div.pageTitle { width: auto; height: 20px; margin: 10px 0px; } + div.pageTitle span { font-size: 1.5em; } + button { /* Specify any button structure or style */ min-width: 20px; background-color: #ddd } + div#slider-holder { height: inherit; position: absolute; left: 0px; z-index: 3; } + div#scale-holder { height: inherit; position: absolute; left: 0px; z-index: 2; } + div#scale-text-holder { position: relative; width: 100px; float: left; } + div.scale-text { position: absolute; } + canvas#scale-canvas { position: relative; float: left; } + div.track-slider { float: left; width: 94px; @@ -53,22 +62,27 @@ padding: 2px; margin-left: 50px; } + div#outside-reference-holder { display: flex; align-content: center; justify-content: center; margin-bottom: 5px; } + button.outside-reference { position: inherit; margin: 0px 5px; } + div.track-slider-playing { background-color: #FFDDDD; } + input.track-slider-range { margin: 2px 0px; } + input[type=range][orient=vertical] { writing-mode: bt-lr; /* IE */ @@ -78,6 +92,7 @@ padding: 0 5px; color: rgb(255, 144, 144); } + input[type=range]::-webkit-slider-runnable-track { width: 8px; cursor: pointer; @@ -85,6 +100,7 @@ border-radius: 4px; border: 1px solid #000; } + input[type=range]::-moz-range-track { width: 8px; cursor: pointer; @@ -92,41 +108,79 @@ border-radius: 4px; border: 1px solid #000; } + input[type=range]::-ms-track { cursor: pointer; background: #fff; border-radius: 4px; border: 1px solid #000; } + input.track-slider-not-moved[type=range]::-webkit-slider-runnable-track { background: #aaa; } + input.track-slider-not-moved[type=range]::-moz-range-track { background: #aaa; } + input[type=range]::-moz-range-thumb { margin-left: -7px; cursor: pointer; margin-top: -1px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } + input[type=range]::-webkit-slider-thumb { cursor: pointer; margin-top: -1px; margin-left: -4px; } + input[type=range]::-ms-thumb { cursor: pointer; margin-top: -1px; margin-left: -4px; } + input[type=range]::-ms-tooltip { visibility: hidden; } + +input.track-slider-range-disabled {} + +input.track-slider-range-disabled[type=range]::-webkit-slider-runnable-track { + cursor: not-allowed; +} + +input.track-slider-range-disabled[type=range]::-moz-range-track { + cursor: not-allowed; +} + +input.track-slider-range-disabled[type=range]::-ms-track { + cursor: not-allowed; +} + +input.track-slider-range-disabled[type=range]::-moz-range-thumb { + cursor: not-allowed; + background-color: #888; +} + +input.track-slider-range-disabled[type=range]::-webkit-slider-thumb { + cursor: not-allowed; + background-color: #888; +} + +input.track-slider-range-disabled[type=range]::-ms-thumb { + cursor: not-allowed; + background-color: #888; +} + div#page-count { float: left; margin: 0px 5px; } + div#master-volume-holder { position: absolute; top: 10px;
--- a/interfaces/mushra.js Thu Dec 08 14:03:39 2016 +0000 +++ b/interfaces/mushra.js Thu Dec 08 14:33:01 2016 +0000 @@ -156,7 +156,7 @@ // Find all the audioElements from the audioHolder var index = 0; var interfaceScales = testState.currentStateMap.interfaces[0].scales; - var labelType = page.label; + var labelType = audioHolderObject.label; if (labelType == "default") { labelType = "number"; } @@ -171,7 +171,7 @@ audioObject.bindInterface(orNode); } else { // Create a slider per track - var label = interfaceContext.getLabel(labelType, index, page.labelStart); + var label = interfaceContext.getLabel(labelType, index, audioHolderObject.labelStart); var sliderObj = new sliderObject(audioObject, label); if (typeof audioHolderObject.initialPosition === "number") { @@ -189,6 +189,13 @@ }); + if (testState.currentStateMap.restrictMovement) { + $(".track-slider-range").addClass("track-slider-range-disabled"); + $(".track-slider-range").each(function (i, e) { + e.disabled = true + }); + } + var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); for (var option of interfaceOptions) { @@ -237,6 +244,7 @@ function sliderObject(audioObject, label) { // Constructs the slider object. We use the HTML5 slider object + var page = testState.currentStateMap; this.parent = audioObject; this.holder = document.createElement('div'); this.title = document.createElement('span'); @@ -302,6 +310,7 @@ return node; }; this.startPlayback = function () { + var self = this; // Called when playback has begun this.play.setAttribute("playstate", "playing"); $(".track-slider").removeClass('track-slider-playing'); @@ -311,12 +320,32 @@ $(outsideReference).removeClass('track-slider-playing'); } this.play.textContent = "Stop"; + if (page.restrictMovement) { + if (page.loop) { + $(this.slider).removeClass("track-slider-range-disabled"); + this.slider.removeAttribute("disabled"); + } else { + $(".track-slider-range").addClass("track-slider-range-disabled"); + $(this.slider).removeClass("track-slider-range-disabled"); + $(".track-slider-range").each(function (i, m) { + if (m == self.slider) { + m.removeAttribute("disabled"); + } else { + m.setAttribute("disabled", "true"); + } + }); + } + } }; this.stopPlayback = function () { // Called when playback has stopped. This gets called even if playback never started! this.play.setAttribute("playstate", "ready"); $(this.holder).removeClass('track-slider-playing'); this.play.textContent = "Play"; + if (page.restrictMovement && page.loop) { + $(this.slider).addClass("track-slider-range-disabled"); + this.slider.setAttribute("disabled", "true"); + } }; this.getValue = function () { return this.slider.value;
--- a/tests/examples/mushra_example.xml Thu Dec 08 14:03:39 2016 +0000 +++ b/tests/examples/mushra_example.xml Thu Dec 08 14:33:01 2016 +0000 @@ -53,7 +53,7 @@ <interfaceoption type="show" name="volume" /> </interface> </setup> - <page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' loudness="-12"> + <page id='test-0' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='true' loudness="-12" restrictMovement="true"> <commentboxprefix>Comment on fragment</commentboxprefix> <interface> <scales> @@ -82,7 +82,7 @@ </surveyentry> </survey> </page> - <page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false'> + <page id='test-1' hostURL="media/example/" randomiseOrder='true' repeatCount='0' loop='false' restrictMovement="true"> <commentboxprefix>Comment on fragment</commentboxprefix> <interface name="preference"> <title>Example Test Question</title>
--- a/xml/test-schema.xsd Thu Dec 08 14:03:39 2016 +0000 +++ b/xml/test-schema.xsd Thu Dec 08 14:33:01 2016 +0000 @@ -102,7 +102,7 @@ <xs:attribute ref="preSilence" /> <xs:attribute ref="postSilence" /> <xs:attribute ref="playOne" /> - <xs:attribute name="restrictMovement" type="xs:boolean" default="fase" use="optional" /> + <xs:attribute name="restrictMovement" type="xs:boolean" default="false" use="optional" /> </xs:complexType> </xs:element>