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