Mercurial > hg > webaudioevaluationtool
comparison interfaces/mushra.js @ 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 | 342ef7948c47 |
children | 41b7fcd245da |
comparison
equal
deleted
inserted
replaced
2622:88b1c15eb202 | 2623:d4707c4a8b98 |
---|---|
154 currentTestHolder.repeatCount = audioHolderObject.repeatCount; | 154 currentTestHolder.repeatCount = audioHolderObject.repeatCount; |
155 | 155 |
156 // Find all the audioElements from the audioHolder | 156 // Find all the audioElements from the audioHolder |
157 var index = 0; | 157 var index = 0; |
158 var interfaceScales = testState.currentStateMap.interfaces[0].scales; | 158 var interfaceScales = testState.currentStateMap.interfaces[0].scales; |
159 var labelType = page.label; | 159 var labelType = audioHolderObject.label; |
160 if (labelType == "default") { | 160 if (labelType == "default") { |
161 labelType = "number"; | 161 labelType = "number"; |
162 } | 162 } |
163 $(audioHolderObject.audioElements).each(function (pageIndex, element) { | 163 $(audioHolderObject.audioElements).each(function (pageIndex, element) { |
164 // Find URL of track | 164 // Find URL of track |
169 // Construct outside reference; | 169 // Construct outside reference; |
170 var orNode = new interfaceContext.outsideReferenceDOM(audioObject, index, outsideReferenceHolder); | 170 var orNode = new interfaceContext.outsideReferenceDOM(audioObject, index, outsideReferenceHolder); |
171 audioObject.bindInterface(orNode); | 171 audioObject.bindInterface(orNode); |
172 } else { | 172 } else { |
173 // Create a slider per track | 173 // Create a slider per track |
174 var label = interfaceContext.getLabel(labelType, index, page.labelStart); | 174 var label = interfaceContext.getLabel(labelType, index, audioHolderObject.labelStart); |
175 var sliderObj = new sliderObject(audioObject, label); | 175 var sliderObj = new sliderObject(audioObject, label); |
176 | 176 |
177 if (typeof audioHolderObject.initialPosition === "number") { | 177 if (typeof audioHolderObject.initialPosition === "number") { |
178 // Set the values | 178 // Set the values |
179 sliderObj.slider.value = audioHolderObject.initalPosition; | 179 sliderObj.slider.value = audioHolderObject.initalPosition; |
186 interfaceContext.commentBoxes.createCommentBox(audioObject); | 186 interfaceContext.commentBoxes.createCommentBox(audioObject); |
187 index += 1; | 187 index += 1; |
188 } | 188 } |
189 | 189 |
190 }); | 190 }); |
191 | |
192 if (testState.currentStateMap.restrictMovement) { | |
193 $(".track-slider-range").addClass("track-slider-range-disabled"); | |
194 $(".track-slider-range").each(function (i, e) { | |
195 e.disabled = true | |
196 }); | |
197 } | |
191 | 198 |
192 | 199 |
193 var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); | 200 var interfaceOptions = specification.interfaces.options.concat(interfaceObj.options); |
194 for (var option of interfaceOptions) { | 201 for (var option of interfaceOptions) { |
195 if (option.type == "show") { | 202 if (option.type == "show") { |
235 resizeWindow(null); | 242 resizeWindow(null); |
236 } | 243 } |
237 | 244 |
238 function sliderObject(audioObject, label) { | 245 function sliderObject(audioObject, label) { |
239 // Constructs the slider object. We use the HTML5 slider object | 246 // Constructs the slider object. We use the HTML5 slider object |
247 var page = testState.currentStateMap; | |
240 this.parent = audioObject; | 248 this.parent = audioObject; |
241 this.holder = document.createElement('div'); | 249 this.holder = document.createElement('div'); |
242 this.title = document.createElement('span'); | 250 this.title = document.createElement('span'); |
243 this.slider = document.createElement('input'); | 251 this.slider = document.createElement('input'); |
244 this.play = document.createElement('button'); | 252 this.play = document.createElement('button'); |
300 var node = storage.document.createElement('value'); | 308 var node = storage.document.createElement('value'); |
301 node.textContent = this.slider.value; | 309 node.textContent = this.slider.value; |
302 return node; | 310 return node; |
303 }; | 311 }; |
304 this.startPlayback = function () { | 312 this.startPlayback = function () { |
313 var self = this; | |
305 // Called when playback has begun | 314 // Called when playback has begun |
306 this.play.setAttribute("playstate", "playing"); | 315 this.play.setAttribute("playstate", "playing"); |
307 $(".track-slider").removeClass('track-slider-playing'); | 316 $(".track-slider").removeClass('track-slider-playing'); |
308 $(this.holder).addClass('track-slider-playing'); | 317 $(this.holder).addClass('track-slider-playing'); |
309 var outsideReference = document.getElementById('outside-reference'); | 318 var outsideReference = document.getElementById('outside-reference'); |
310 if (outsideReference != null) { | 319 if (outsideReference != null) { |
311 $(outsideReference).removeClass('track-slider-playing'); | 320 $(outsideReference).removeClass('track-slider-playing'); |
312 } | 321 } |
313 this.play.textContent = "Stop"; | 322 this.play.textContent = "Stop"; |
323 if (page.restrictMovement) { | |
324 if (page.loop) { | |
325 $(this.slider).removeClass("track-slider-range-disabled"); | |
326 this.slider.removeAttribute("disabled"); | |
327 } else { | |
328 $(".track-slider-range").addClass("track-slider-range-disabled"); | |
329 $(this.slider).removeClass("track-slider-range-disabled"); | |
330 $(".track-slider-range").each(function (i, m) { | |
331 if (m == self.slider) { | |
332 m.removeAttribute("disabled"); | |
333 } else { | |
334 m.setAttribute("disabled", "true"); | |
335 } | |
336 }); | |
337 } | |
338 } | |
314 }; | 339 }; |
315 this.stopPlayback = function () { | 340 this.stopPlayback = function () { |
316 // Called when playback has stopped. This gets called even if playback never started! | 341 // Called when playback has stopped. This gets called even if playback never started! |
317 this.play.setAttribute("playstate", "ready"); | 342 this.play.setAttribute("playstate", "ready"); |
318 $(this.holder).removeClass('track-slider-playing'); | 343 $(this.holder).removeClass('track-slider-playing'); |
319 this.play.textContent = "Play"; | 344 this.play.textContent = "Play"; |
345 if (page.restrictMovement && page.loop) { | |
346 $(this.slider).addClass("track-slider-range-disabled"); | |
347 this.slider.setAttribute("disabled", "true"); | |
348 } | |
320 }; | 349 }; |
321 this.getValue = function () { | 350 this.getValue = function () { |
322 return this.slider.value; | 351 return this.slider.value; |
323 }; | 352 }; |
324 | 353 |