OLD | NEW |
1 /** | 1 /** |
2 * Common JS that talks XHR back to the server and runs the code and receives | 2 * Common JS that talks XHR back to the server and runs the code and receives |
3 * the results. | 3 * the results. |
4 */ | 4 */ |
5 | 5 |
6 | 6 |
7 /** | 7 /** |
8 * All the functionality is wrapped up in this anonymous closure, but we need | 8 * All the functionality is wrapped up in this anonymous closure, but we need |
9 * to be told if we are on the workspace page or a normal try page, so the | 9 * to be told if we are on the workspace page or a normal try page, so the |
10 * workspaceName is passed into the closure, it must be set in the global | 10 * workspaceName is passed into the closure, it must be set in the global |
11 * namespace. If workspaceName is the empty string then we know we aren't | 11 * namespace. If workspaceName is the empty string then we know we aren't |
12 * running on a workspace page. | 12 * running on a workspace page. |
13 * | 13 * |
14 * If we are on a workspace page we also look for a 'history_' | 14 * If we are on a workspace page we also look for a 'history_' |
15 * variable in the global namespace which contains the list of tries | 15 * variable in the global namespace which contains the list of tries |
16 * that are included in this workspace. That variable is used to | 16 * that are included in this workspace. That variable is used to |
17 * populate the history list. | 17 * populate the history list. |
18 */ | 18 */ |
19 (function() { | 19 (function() { |
20 function onLoad() { | 20 function onLoad() { |
21 var run = document.getElementById('run'); | 21 var run = document.getElementById('run'); |
22 var permalink = document.getElementById('permalink'); | 22 var permalink = document.getElementById('permalink'); |
23 var embed = document.getElementById('embed'); | 23 var embed = document.getElementById('embed'); |
24 var embedButton = document.getElementById('embedButton'); | 24 var embedButton = document.getElementById('embedButton'); |
25 var code = document.getElementById('code'); | 25 var code = document.getElementById('code'); |
26 var output = document.getElementById('output'); | 26 var output = document.getElementById('output'); |
27 var stdout = document.getElementById('stdout'); | 27 var stdout = document.getElementById('stdout'); |
| 28 var gpu = document.getElementById('use-gpu'); |
28 var img = document.getElementById('img'); | 29 var img = document.getElementById('img'); |
29 var imageWidth = document.getElementById('image-width'); | 30 var imageWidth = document.getElementById('image-width'); |
30 var imageHeight = document.getElementById('image-height'); | 31 var imageHeight = document.getElementById('image-height'); |
31 var tryHistory = document.getElementById('tryHistory'); | 32 var tryHistory = document.getElementById('tryHistory'); |
32 var parser = new DOMParser(); | 33 var parser = new DOMParser(); |
33 var tryTemplate = document.getElementById('tryTemplate'); | 34 var tryTemplate = document.getElementById('tryTemplate'); |
34 var sourcesTemplate = document.getElementById('sourcesTemplate'); | 35 var sourcesTemplate = document.getElementById('sourcesTemplate'); |
35 | 36 |
36 var enableSource = document.getElementById('enableSource'); | 37 var enableSource = document.getElementById('enableSource'); |
37 var selectedSource = document.getElementById('selectedSource'); | 38 var selectedSource = document.getElementById('selectedSource'); |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 // "hash": "unique id for a try", | 209 // "hash": "unique id for a try", |
209 // "code": "source code for try" | 210 // "code": "source code for try" |
210 // } | 211 // } |
211 endWait(); | 212 endWait(); |
212 body = JSON.parse(e.target.response); | 213 body = JSON.parse(e.target.response); |
213 code.value = body.code; | 214 code.value = body.code; |
214 editor.setValue(body.code); | 215 editor.setValue(body.code); |
215 img.src = '/i/'+body.hash+'.png'; | 216 img.src = '/i/'+body.hash+'.png'; |
216 imageWidth.value = body.width; | 217 imageWidth.value = body.width; |
217 imageHeight.value = body.height; | 218 imageHeight.value = body.height; |
| 219 gpu.checked = body.gpu; |
218 sourceSelectByID(body.source); | 220 sourceSelectByID(body.source); |
219 if (permalink) { | 221 if (permalink) { |
220 permalink.href = '/c/' + body.hash; | 222 permalink.href = '/c/' + body.hash; |
221 permalink.style.display='inline-block'; | 223 permalink.style.display='inline-block'; |
222 } | 224 } |
223 } | 225 } |
224 | 226 |
225 | 227 |
226 /** | 228 /** |
227 * Add the given try image to the history of a workspace. | 229 * Add the given try image to the history of a workspace. |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 288 |
287 function onSubmitCode() { | 289 function onSubmitCode() { |
288 beginWait(); | 290 beginWait(); |
289 clearOutput(); | 291 clearOutput(); |
290 var req = new XMLHttpRequest(); | 292 var req = new XMLHttpRequest(); |
291 req.addEventListener('load', codeComplete); | 293 req.addEventListener('load', codeComplete); |
292 req.addEventListener('error', xhrError); | 294 req.addEventListener('error', xhrError); |
293 req.overrideMimeType('application/json'); | 295 req.overrideMimeType('application/json'); |
294 req.open('POST', '/', true); | 296 req.open('POST', '/', true); |
295 req.setRequestHeader('content-type', 'application/json'); | 297 req.setRequestHeader('content-type', 'application/json'); |
296 req.send(JSON.stringify({'code': editor.getValue(), 'width': parseInt(im
ageWidth.value), 'height': parseInt(imageHeight.value), 'name': workspaceName, '
source': sourceId})); | 298 req.send(JSON.stringify({ |
| 299 'code': editor.getValue(), |
| 300 'width': parseInt(imageWidth.value), |
| 301 'height': parseInt(imageHeight.value), |
| 302 'name': workspaceName, |
| 303 'source': sourceId, |
| 304 'gpu': gpu.checked |
| 305 })); |
297 } | 306 } |
298 run.addEventListener('click', onSubmitCode); | 307 run.addEventListener('click', onSubmitCode); |
299 | 308 |
300 | 309 |
301 function onEmbedClick() { | 310 function onEmbedClick() { |
302 embed.style.display='inline'; | 311 embed.style.display='inline'; |
303 } | 312 } |
304 | 313 |
305 if (embedButton) { | 314 if (embedButton) { |
306 embedButton.addEventListener('click', onEmbedClick); | 315 embedButton.addEventListener('click', onEmbedClick); |
(...skipping 10 matching lines...) Expand all Loading... |
317 } | 326 } |
318 | 327 |
319 // If loaded via HTML Imports then DOMContentLoaded will be long done. | 328 // If loaded via HTML Imports then DOMContentLoaded will be long done. |
320 if (document.readyState != "loading") { | 329 if (document.readyState != "loading") { |
321 onLoad(); | 330 onLoad(); |
322 } else { | 331 } else { |
323 this.addEventListener('load', onLoad); | 332 this.addEventListener('load', onLoad); |
324 } | 333 } |
325 | 334 |
326 })(); | 335 })(); |
OLD | NEW |