Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: experimental/webtry/res/js/webtry.js

Issue 623173004: rework webtry css with compass and bootstrap (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « experimental/webtry/res/img/skia.png ('k') | experimental/webtry/res/webtry/config.rb » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
(...skipping 27 matching lines...) Expand all
38 var chooseList = document.getElementById('chooseList'); 38 var chooseList = document.getElementById('chooseList');
39 39
40 // Id of the source image to use, 0 if no source image is used. 40 // Id of the source image to use, 0 if no source image is used.
41 var sourceId = 0; 41 var sourceId = 0;
42 42
43 sourceId = parseInt(enableSource.getAttribute('data-id')); 43 sourceId = parseInt(enableSource.getAttribute('data-id'));
44 if (sourceId) { 44 if (sourceId) {
45 sourceSelectByID(sourceId); 45 sourceSelectByID(sourceId);
46 } 46 }
47 47
48 function setIFrameURL() {
49 var url = document.URL;
50 url = url.replace('/c/', '/iframe/');
51 embed.value = '<iframe src="' + url + '" width="740" height="550" style= "border: solid #00a 5px; border-radius: 5px;"/>'
52 }
48 53
49 function beginWait() { 54 function beginWait() {
50 document.body.classList.add('waiting'); 55 document.body.classList.add('waiting');
51 run.disabled = true; 56 run.disabled = true;
52 } 57 }
53 58
54 59
55 function endWait() { 60 function endWait() {
56 document.body.classList.remove('waiting'); 61 document.body.classList.remove('waiting');
57 run.disabled = false; 62 run.disabled = false;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 if (enableSource.checked) { 131 if (enableSource.checked) {
127 beginWait(); 132 beginWait();
128 var req = new XMLHttpRequest(); 133 var req = new XMLHttpRequest();
129 req.addEventListener('load', sourcesComplete); 134 req.addEventListener('load', sourcesComplete);
130 req.addEventListener('error', xhrError); 135 req.addEventListener('error', xhrError);
131 req.overrideMimeType('application/json'); 136 req.overrideMimeType('application/json');
132 req.open('GET', '/sources/', true); 137 req.open('GET', '/sources/', true);
133 req.send(); 138 req.send();
134 } else { 139 } else {
135 sourceId = 0; 140 sourceId = 0;
141 chooseSource.classList.remove('show');
136 } 142 }
137 } 143 }
138 144
139 enableSource.addEventListener('click', sourceClick, true); 145 enableSource.addEventListener('click', sourceClick, true);
140 selectedSource.addEventListener('click', sourceClick, true); 146 selectedSource.addEventListener('click', sourceClick, true);
141 147
142 148
143 var editor = CodeMirror.fromTextArea(code, { 149 var editor = CodeMirror.fromTextArea(code, {
144 theme: "default", 150 theme: "default",
145 lineNumbers: true, 151 lineNumbers: true,
(...skipping 13 matching lines...) Expand all
159 * Callback when there's an XHR error. 165 * Callback when there's an XHR error.
160 * @param e The callback event. 166 * @param e The callback event.
161 */ 167 */
162 function xhrError(e) { 168 function xhrError(e) {
163 endWait(); 169 endWait();
164 alert('Something bad happened: ' + e); 170 alert('Something bad happened: ' + e);
165 } 171 }
166 172
167 function clearOutput() { 173 function clearOutput() {
168 output.textContent = ""; 174 output.textContent = "";
175 output.style.display='none';
169 if (stdout) { 176 if (stdout) {
170 stdout.textContent = ""; 177 stdout.textContent = "";
178 stdout.style.display='none';
171 } 179 }
172 embed.style.display='none'; 180 if (embed) {
181 embed.style.display='none';
182 }
173 } 183 }
174 184
175 /** 185 /**
176 * Called when an image in the workspace history is clicked. 186 * Called when an image in the workspace history is clicked.
177 */ 187 */
178 function historyClick() { 188 function historyClick() {
179 beginWait(); 189 beginWait();
180 clearOutput(); 190 clearOutput();
181 var req = new XMLHttpRequest(); 191 var req = new XMLHttpRequest();
182 req.addEventListener('load', historyComplete); 192 req.addEventListener('load', historyComplete);
(...skipping 14 matching lines...) Expand all
197 // "code": "source code for try" 207 // "code": "source code for try"
198 // } 208 // }
199 endWait(); 209 endWait();
200 body = JSON.parse(e.target.response); 210 body = JSON.parse(e.target.response);
201 code.value = body.code; 211 code.value = body.code;
202 editor.setValue(body.code); 212 editor.setValue(body.code);
203 img.src = '/i/'+body.hash+'.png'; 213 img.src = '/i/'+body.hash+'.png';
204 sourceSelectByID(body.source); 214 sourceSelectByID(body.source);
205 if (permalink) { 215 if (permalink) {
206 permalink.href = '/c/' + body.hash; 216 permalink.href = '/c/' + body.hash;
217 permalink.style.display='inline-block';
207 } 218 }
208 } 219 }
209 220
210 221
211 /** 222 /**
212 * Add the given try image to the history of a workspace. 223 * Add the given try image to the history of a workspace.
213 */ 224 */
214 function addToHistory(hash, imgUrl) { 225 function addToHistory(hash, imgUrl) {
215 var clone = tryTemplate.content.cloneNode(true); 226 var clone = tryTemplate.content.cloneNode(true);
216 clone.querySelector('img').src = imgUrl; 227 clone.querySelector('img').src = imgUrl;
(...skipping 13 matching lines...) Expand all
230 // "message": "you had an error...", 241 // "message": "you had an error...",
231 // "img": "<base64 encoded image but only on success>" 242 // "img": "<base64 encoded image but only on success>"
232 // } 243 // }
233 // 244 //
234 // The img is optional and only appears if there is a valid 245 // The img is optional and only appears if there is a valid
235 // image to display. 246 // image to display.
236 endWait(); 247 endWait();
237 console.log(e.target.response); 248 console.log(e.target.response);
238 body = JSON.parse(e.target.response); 249 body = JSON.parse(e.target.response);
239 output.textContent = body.message; 250 output.textContent = body.message;
251 if (body.message) {
252 output.style.display = 'block';
253 }
240 if (stdout) { 254 if (stdout) {
241 stdout.textContent = body.stdout; 255 stdout.textContent = body.stdout;
256 if (body.stdout) {
257 stdout.style.display = 'block';
258 }
242 } 259 }
243 if (body.hasOwnProperty('img')) { 260 if (body.hasOwnProperty('img')) {
244 img.src = 'data:image/png;base64,' + body.img; 261 img.src = 'data:image/png;base64,' + body.img;
245 } else { 262 } else {
246 img.src = ''; 263 img.src = '';
247 } 264 }
248 // Add the image to the history if we are on a workspace page. 265 // Add the image to the history if we are on a workspace page.
249 if (tryHistory) { 266 if (tryHistory) {
250 addToHistory(body.hash, 'data:image/png;base64,' + body.img); 267 addToHistory(body.hash, 'data:image/png;base64,' + body.img);
251 } else { 268 } else {
252 window.history.pushState(null, null, '/c/' + body.hash); 269 window.history.pushState(null, null, '/c/' + body.hash);
253 } 270 }
254 if (permalink) { 271 if (permalink) {
255 permalink.href = '/c/' + body.hash; 272 permalink.href = '/c/' + body.hash;
273 permalink.style.display = 'inline-block';
256 } 274 }
257 if (embed) { 275 if (embed) {
258 var url = document.URL; 276 setIFrameURL();
259 url = url.replace('/c/', '/iframe/');
260 embed.value = '<iframe src="' + url + '" width="740" height="550" styl e="border: solid #00a 5px; border-radius: 5px;"/>'
261 } 277 }
262 if (embedButton && embedButton.hasAttribute('disabled')) { 278 if (embedButton) {
263 embedButton.removeAttribute('disabled'); 279 embedButton.style.display = 'inline-block';
264 } 280 }
265 } 281 }
266 282
267 283
268 function onSubmitCode() { 284 function onSubmitCode() {
269 beginWait(); 285 beginWait();
270 clearOutput(); 286 clearOutput();
271 var req = new XMLHttpRequest(); 287 var req = new XMLHttpRequest();
272 req.addEventListener('load', codeComplete); 288 req.addEventListener('load', codeComplete);
273 req.addEventListener('error', xhrError); 289 req.addEventListener('error', xhrError);
274 req.overrideMimeType('application/json'); 290 req.overrideMimeType('application/json');
275 req.open('POST', '/', true); 291 req.open('POST', '/', true);
276 req.setRequestHeader('content-type', 'application/json'); 292 req.setRequestHeader('content-type', 'application/json');
277 req.send(JSON.stringify({'code': editor.getValue(), 'name': workspaceNam e, 'source': sourceId})); 293 req.send(JSON.stringify({'code': editor.getValue(), 'name': workspaceNam e, 'source': sourceId}));
278 } 294 }
279 run.addEventListener('click', onSubmitCode); 295 run.addEventListener('click', onSubmitCode);
280 296
281 297
282 function onEmbedClick() { 298 function onEmbedClick() {
283 embed.style.display='inline'; 299 embed.style.display='inline';
284 } 300 }
285 301
286 if (embedButton) { 302 if (embedButton) {
287 embedButton.addEventListener('click', onEmbedClick); 303 embedButton.addEventListener('click', onEmbedClick);
288 } 304 }
289 305
306 setIFrameURL();
307
290 // Add the images to the history if we are on a workspace page. 308 // Add the images to the history if we are on a workspace page.
291 if (tryHistory && history_) { 309 if (tryHistory && history_) {
292 for (var i=0; i<history_.length; i++) { 310 for (var i=0; i<history_.length; i++) {
293 addToHistory(history_[i].hash, '/i/'+history_[i].hash+'.png'); 311 addToHistory(history_[i].hash, '/i/'+history_[i].hash+'.png');
294 } 312 }
295 } 313 }
296 } 314 }
297 315
298 // If loaded via HTML Imports then DOMContentLoaded will be long done. 316 // If loaded via HTML Imports then DOMContentLoaded will be long done.
299 if (document.readyState != "loading") { 317 if (document.readyState != "loading") {
300 onLoad(); 318 onLoad();
301 } else { 319 } else {
302 this.addEventListener('load', onLoad); 320 this.addEventListener('load', onLoad);
303 } 321 }
304 322
305 })(); 323 })();
OLDNEW
« no previous file with comments | « experimental/webtry/res/img/skia.png ('k') | experimental/webtry/res/webtry/config.rb » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698