From 6e8d9772baff4fd2e58c005bb6358d29113100ad Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Wed, 23 Sep 2015 12:12:37 +0200 Subject: Improve error handling for button actions --- js/codeq/python.js | 63 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 28 deletions(-) (limited to 'js/codeq/python.js') diff --git a/js/codeq/python.js b/js/codeq/python.js index 37fdccd..b745a20 100644 --- a/js/codeq/python.js +++ b/js/codeq/python.js @@ -220,7 +220,10 @@ editor = CodeMirror(jqEditor[0], { cursorHeight: 0.85, lineNumbers: true, matchBrackets: true, mode: 'python' }), activityHandler = makeActivityHandler(editor, problem.id), terminal = makePythonTerminalHandler(jqTerminal, editor, problem.id, activityHandler), - hinter = codeq.makeHinter(jqHints, jqEditor, editor, problem.hint, problem.plan); + hinter = codeq.makeHinter(jqHints, jqEditor, editor, problem.hint, problem.plan), + commError = function (error) { + alert(error); + }; editor.setValue(info.solution); $('#title').text(problem.slug); @@ -251,17 +254,17 @@ 'language': 'python', 'program': editor.getDoc().getValue(), 'problem_id': problem.id - }).then( - function hintSuccess(data) { - if (data.code === 0) - hinter.handle(data.hints); - else - terminal.append('error: ' + data.message); - }, - function hintFailed (error) { - terminal.append('exception: ' + error); + }) + .then(function (data) { + if (data.code === 0) { + hinter.handle(data.hints); + } + else { + terminal.append('error: ' + data.message); } - ).done(); + }) + .fail(commError) + .done(); }); jqBtnTest.on('click', function () { var doc = editor.getDoc(); @@ -269,31 +272,35 @@ 'language': 'python', 'program': editor.getDoc().getValue(), 'problem_id': problem.id - }).then( - function testSuccess(data) { - if (data.code === 0) - hinter.handle(data.hints); - else - terminal.append('error: ' + data.message); - }, - function testFailed (error) { - terminal.append('exception: ' + error); + }) + .then(function (data) { + if (data.code === 0) { + hinter.handle(data.hints); + } + else { + terminal.append('error: ' + data.message); } - ).done(); + }) + .fail(commError) + .done(); }); jqBtnRun.on('click', function () { var program = editor.getDoc().getValue(); - // TODO error handling - codeq.comms.sendPythonStop({}); - codeq.comms.sendPythonExec({ - 'program': program - }); + codeq.comms.sendPythonStop({}) + .then(function () { + codeq.comms.sendPythonExec({ + 'program': program + }); + }) + .fail(commError) + .done(); // focus the terminal jqTerminal.click(); }); jqBtnStop.on('click', function () { - // TODO error handling - codeq.comms.sendPythonStop({}); + codeq.comms.sendPythonStop({}) + .fail(commError) + .done(); }); // TODO first line of interpreter output is buffered without this, why? -- cgit v1.2.1