| Index: experimental/webtry/res/js/webtry.js
|
| diff --git a/experimental/webtry/res/js/webtry.js b/experimental/webtry/res/js/webtry.js
|
| index b04ef7fb13b1bd978813cc6e99600bb3cb1c8107..8bce06bfd78261681723f9ea1a90f0cd6c53e0c0 100644
|
| --- a/experimental/webtry/res/js/webtry.js
|
| +++ b/experimental/webtry/res/js/webtry.js
|
| @@ -24,7 +24,7 @@
|
| var embedButton = document.getElementById('embedButton');
|
| var code = document.getElementById('code');
|
| var output = document.getElementById('output');
|
| - var stdout = document.getElementById('stdout');
|
| + var outputWrapper = document.getElementById('output-wrapper');
|
| var gpu = document.getElementById('use-gpu');
|
| var img = document.getElementById('img');
|
| var imageWidth = document.getElementById('image-width');
|
| @@ -163,6 +163,14 @@
|
| editor.setSize(editor.defaultCharWidth() * code.cols,
|
| null);
|
|
|
| + editor.on('beforeChange', function(instance, changeObj) {
|
| + var startLine = changeObj.from.line;
|
| + var endLine = changeObj.to.line;
|
| +
|
| + for (var i = startLine ; i <= endLine ; i++) {
|
| + editor.removeLineClass( i, "wrap", "error" );
|
| + }
|
| + });
|
|
|
| /**
|
| * Callback when there's an XHR error.
|
| @@ -175,11 +183,7 @@
|
|
|
| function clearOutput() {
|
| output.textContent = "";
|
| - output.style.display='none';
|
| - if (stdout) {
|
| - stdout.textContent = "";
|
| - stdout.style.display='none';
|
| - }
|
| + outputWrapper.style.display='none';
|
| if (embed) {
|
| embed.style.display='none';
|
| }
|
| @@ -236,6 +240,19 @@
|
| tryHistory.querySelector('.tries').addEventListener('click', historyClick, true);
|
| }
|
|
|
| + /**
|
| + * Callback for when the user clicks on a compile error message
|
| + *
|
| + */
|
| +
|
| + function errorClick() {
|
| + var line = this.getAttribute('data-line');
|
| + var col = this.getAttribute('data-col');
|
| +
|
| + editor.setCursor(line-1,col-1);
|
| + editor.focus();
|
| + }
|
| +
|
|
|
| /**
|
| * Callback for when the XHR returns after attempting to run the code.
|
| @@ -252,14 +269,39 @@
|
| // image to display.
|
| endWait();
|
| body = JSON.parse(e.target.response);
|
| - output.textContent = body.message;
|
| - if (body.message) {
|
| - output.style.display = 'block';
|
| - }
|
| - if (stdout) {
|
| - stdout.textContent = body.stdout;
|
| - if (body.stdout) {
|
| - stdout.style.display = 'block';
|
| + if (body.compileErrors.length) {
|
| + html = "";
|
| + for (i = 0 ; i < body.compileErrors.length ; i++) {
|
| + compileError = body.compileErrors[i];
|
| +
|
| + err = document.createElement("div");
|
| + err.className = "compile-error";
|
| +
|
| + loc = document.createElement("span");
|
| + loc.className = "error-location";
|
| + loc.innerHTML = "Line " + compileError.line + ", col " + compileError.column + ": ";
|
| +
|
| + errorMessage = document.createElement("span");
|
| + errorMessage.className = "error-mesage";
|
| + errorMessage.innerHTML = compileError.error;
|
| +
|
| + err.appendChild(loc);
|
| + err.appendChild(errorMessage);
|
| +
|
| + err.setAttribute('data-line', compileError.line);
|
| + err.setAttribute('data-col', compileError.column);
|
| +
|
| + output.appendChild(err);
|
| +
|
| + err.addEventListener('click', errorClick);
|
| +
|
| + editor.addLineClass( parseInt( compileError.line ) - 1, "wrap", "error" );
|
| + }
|
| + outputWrapper.style.display = 'block';
|
| + } else {
|
| + output.textContent = body.message;
|
| + if (body.message) {
|
| + outputWrapper.style.display = 'block';
|
| }
|
| }
|
| if (body.hasOwnProperty('img')) {
|
|
|