Mercurial > hg > webaudioevaluationtool
comparison ape.js @ 16:f2dad7c64e1e
Added comments. Variable name changes to match specification document during ape.js loading.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Tue, 07 Apr 2015 11:32:46 +0100 |
parents | 94e080247b11 |
children | a87846fba882 375410a5571d |
comparison
equal
deleted
inserted
replaced
15:94e080247b11 | 16:f2dad7c64e1e |
---|---|
6 // Once this is loaded and parsed, begin execution | 6 // Once this is loaded and parsed, begin execution |
7 loadInterface(projectXML); | 7 loadInterface(projectXML); |
8 | 8 |
9 function loadInterface(xmlDoc) { | 9 function loadInterface(xmlDoc) { |
10 | 10 |
11 // Get the dimensions of the screen available to the page | |
11 var width = window.innerWidth; | 12 var width = window.innerWidth; |
12 var height = window.innerHeight; | 13 var height = window.innerHeight; |
13 | 14 |
14 // Set background to grey #ddd | 15 // Set background to grey #ddd |
15 document.getElementsByTagName('body')[0].style.backgroundColor = '#ddd'; | 16 document.getElementsByTagName('body')[0].style.backgroundColor = '#ddd'; |
52 downloadPoint.id = 'download-point'; | 53 downloadPoint.id = 'download-point'; |
53 | 54 |
54 // Create playback start/stop points | 55 // Create playback start/stop points |
55 var playback = document.createElement("button"); | 56 var playback = document.createElement("button"); |
56 playback.innerText = 'Start'; | 57 playback.innerText = 'Start'; |
58 // onclick function. Check if it is playing or not, call the correct function in the | |
59 // audioEngine, change the button text to reflect the next state. | |
57 playback.onclick = function() { | 60 playback.onclick = function() { |
58 if (audioEngineContext.status == 0) { | 61 if (audioEngineContext.status == 0) { |
59 audioEngineContext.play(); | 62 audioEngineContext.play(); |
60 this.innerText = 'Stop'; | 63 this.innerText = 'Stop'; |
61 } else { | 64 } else { |
62 audioEngineContext.stop(); | 65 audioEngineContext.stop(); |
63 this.innerText = 'Start'; | 66 this.innerText = 'Start'; |
64 } | 67 } |
65 } | 68 }; |
66 // Create Submit (save) button | 69 // Create Submit (save) button |
67 var submit = document.createElement("button"); | 70 var submit = document.createElement("button"); |
68 submit.innerText = 'Submit'; | 71 submit.innerText = 'Submit'; |
69 submit.onclick = function() { | 72 submit.onclick = function() { |
70 // TODO: Update this for postTest tags | 73 // TODO: Update this for postTest tags |
71 createProjectSave(projectReturn) | 74 createProjectSave(projectReturn) |
72 } | 75 }; |
73 | 76 // Append the interface buttons into the interfaceButtons object. |
74 interfaceButtons.appendChild(playback); | 77 interfaceButtons.appendChild(playback); |
75 interfaceButtons.appendChild(submit); | 78 interfaceButtons.appendChild(submit); |
76 interfaceButtons.appendChild(downloadPoint); | 79 interfaceButtons.appendChild(downloadPoint); |
77 | 80 |
78 // Now create the slider and HTML5 canvas boxes | 81 // Now create the slider and HTML5 canvas boxes |
79 | 82 |
83 // Create the div box to center align | |
80 var sliderBox = document.createElement('div'); | 84 var sliderBox = document.createElement('div'); |
81 sliderBox.className = 'sliderCanvasDiv'; | 85 sliderBox.className = 'sliderCanvasDiv'; |
82 sliderBox.id = 'sliderCanvasHolder'; // create an id so we can easily link to it later | 86 sliderBox.id = 'sliderCanvasHolder'; |
83 sliderBox.align = 'center'; | 87 sliderBox.align = 'center'; |
84 | 88 |
89 // Create the slider box to hold the slider elements | |
85 var canvas = document.createElement('div'); | 90 var canvas = document.createElement('div'); |
86 canvas.id = 'slider'; | 91 canvas.id = 'slider'; |
92 // Must have a known EXACT width, as this is used later to determine the ratings | |
87 canvas.style.width = width - 100 +"px"; | 93 canvas.style.width = width - 100 +"px"; |
88 canvas.style.height = 150 + "px"; | 94 canvas.style.height = 150 + "px"; |
89 canvas.style.marginBottom = "25px" | 95 canvas.style.marginBottom = "25px"; |
90 canvas.style.backgroundColor = '#eee'; | 96 canvas.style.backgroundColor = '#eee'; |
91 canvas.align = "left"; | 97 canvas.align = "left"; |
92 sliderBox.appendChild(canvas); | 98 sliderBox.appendChild(canvas); |
93 | 99 |
100 // Global parent for the comment boxes on the page | |
94 var feedbackHolder = document.createElement('div'); | 101 var feedbackHolder = document.createElement('div'); |
95 | 102 // Find the parent audioHolder object. |
96 var tracks = xmlDoc.find('audioHolder'); | 103 var audioHolder = xmlDoc.find('audioHolder'); |
97 tracks = tracks[0]; | 104 audioHolder = audioHolder[0]; // Remove from one field array |
98 var hostURL = tracks.attributes['hostURL']; | 105 // Extract the hostURL attribute. If not set, create an empty string. |
106 var hostURL = audioHolder.attributes['hostURL']; | |
99 if (hostURL == undefined) { | 107 if (hostURL == undefined) { |
100 hostURL = ""; | 108 hostURL = ""; |
101 } else { | 109 } else { |
102 hostURL = hostURL.value; | 110 hostURL = hostURL.value; |
103 } | 111 } |
104 | 112 // Extract the sampleRate. If set, convert the string to a Number. |
105 var hostFs = tracks.attributes['sampleRate']; | 113 var hostFs = audioHolder.attributes['sampleRate']; |
106 if (hostFs != undefined) { | 114 if (hostFs != undefined) { |
107 hostFs = Number(hostFs.value); | 115 hostFs = Number(hostFs.value); |
108 } | 116 } |
109 | 117 |
110 /// CHECK FOR SAMPLE RATE COMPATIBILITY | 118 /// CHECK FOR SAMPLE RATE COMPATIBILITY |
113 var errStr = 'Sample rates do not match! Requested '+Number(hostFs)+', got '+audioContext.sampleRate+'. Please set the sample rate to match before completing this test.'; | 121 var errStr = 'Sample rates do not match! Requested '+Number(hostFs)+', got '+audioContext.sampleRate+'. Please set the sample rate to match before completing this test.'; |
114 alert(errStr); | 122 alert(errStr); |
115 return; | 123 return; |
116 } | 124 } |
117 } | 125 } |
118 | 126 // Find all the audioElements from the audioHolder |
119 var tracksXML = xmlDoc.find('audioElements'); | 127 var audioElements = $(audioHolder).find('audioElements'); |
120 tracksXML.each(function(index,element){ | 128 audioElements.each(function(index,element){ |
121 // Find URL of track | 129 // Find URL of track |
130 // In this jQuery loop, variable 'this' holds the current audioElement. | |
131 | |
132 // Now load each audio sample. First create the new track by passing the full URL | |
122 var trackURL = hostURL + this.attributes['url'].value; | 133 var trackURL = hostURL + this.attributes['url'].value; |
123 // Now load each track in | |
124 audioEngineContext.newTrack(trackURL); | 134 audioEngineContext.newTrack(trackURL); |
125 var trackObj = document.createElement('div'); | 135 // Create document objects to hold the comment boxes |
126 var trackTitle = document.createElement('span'); | 136 var trackComment = document.createElement('div'); |
127 trackTitle.innerText = 'Comment on track '+index; | 137 // Create a string next to each comment asking for a comment |
128 var trackComment = document.createElement('textarea'); | 138 var trackString = document.createElement('span'); |
129 trackComment.rows = '4'; | 139 trackString.innerText = 'Comment on track '+index; |
130 trackComment.cols = '100'; | 140 // Create the HTML5 comment box 'textarea' |
131 trackComment.name = 'trackComment'+index; | 141 var trackCommentBox = document.createElement('textarea'); |
132 trackComment.className = 'trackComment'; | 142 trackCommentBox.rows = '4'; |
133 trackObj.appendChild(trackTitle); | 143 trackCommentBox.cols = '100'; |
134 trackObj.appendChild(trackComment); | 144 trackCommentBox.name = 'trackComment'+index; |
135 feedbackHolder.appendChild(trackObj); | 145 trackCommentBox.className = 'trackComment'; |
146 // Add to the holder. | |
147 trackComment.appendChild(trackString); | |
148 trackComment.appendChild(trackCommentBox); | |
149 feedbackHolder.appendChild(trackComment); | |
150 | |
136 // Create a slider per track | 151 // Create a slider per track |
137 | 152 |
138 var trackSliderObj = document.createElement('div'); | 153 var trackSliderObj = document.createElement('div'); |
139 trackSliderObj.className = 'track-slider'; | 154 trackSliderObj.className = 'track-slider'; |
140 trackSliderObj.id = 'track-slider-'+index; | 155 trackSliderObj.id = 'track-slider-'+index; |