From 9113815d16d38373b378c6d34000a75f019b219f Mon Sep 17 00:00:00 2001 From: Robert Zorko Date: Fri, 18 Sep 2015 18:51:15 +0200 Subject: split the selection of the language and the selection of the problem into two seperate screens (this update also required some changes at the codeq-server, so that one needs to be up to date as well for this to work) --- js/codeq/language.js | 94 ++++------------------------------------------------ 1 file changed, 6 insertions(+), 88 deletions(-) (limited to 'js/codeq/language.js') diff --git a/js/codeq/language.js b/js/codeq/language.js index 78fa83a..2864098 100644 --- a/js/codeq/language.js +++ b/js/codeq/language.js @@ -5,97 +5,15 @@ (function(){ codeq.globalStateMachine.register('language',{ 'enter': function(){ - $('#disabled').css('display', ''); - $('#disabled').css('cursor', 'wait'); - codeq.comms.send({'action': 'list_problems'})//currently problem list and the actual login are still in the same state - .then( - function success(data) { - var i, groups, group, problems, problem, first_group, - jqGroup = $('#problem_group'), - jqProblems = $('#problems'), - html = [], - mapping = {}, - onGroupChange = function () { - var problems = mapping[jqGroup.val()], - html = [], - i, p; - if (problems) { - for (i = 0; i < problems.length; i++) { - p = problems[i]; - html.push('\n') - } - } - jqProblems.html(html.join('')); - }; - - if (data && (data.code === 0)) { - $('#disabled').css('display', 'none'); - groups = data.problems; - for (i = 0; i < groups.length; i++) { - group = groups[i]; - var identifier = group.identifier.language + '/' + group.identifier.group; - var name = group.name.language + ': ' + group.name.group; - html.push('\n'); - mapping[identifier] = group.problems; - } - jqGroup.html(html.join('')); - first_group = html[1]; - html = null; - - jqGroup.on('click', onGroupChange); - jqGroup.val(first_group); - onGroupChange(); - - $("#submit_problem").on('click', function(){ - var identifier = $('#problem_group').val().split('/'), - problem = $('#problems').val(); - if (identifier.length < 2) alert('Choose a problem group'); - else if (!problem) alert('Choose a problem'); - else { - $('#disabled').css('display', ''); - codeq.comms.getProblem(identifier[0], identifier[1], problem) - .then(function (data) { - if (data.code !== 0) throw new Error('Failed to obtain problem data, code: ' + data.code + ', message: ' + data.message); - $('#disabled').css('display', 'none'); - switch (identifier[0]) { - case 'prolog': - codeq.globalStateMachine.transition('prolog', data); - break; - case 'python': - codeq.globalStateMachine.transition('python', data); - break; - default: - alert('Unknown language: ' + identifier[0]); - break; - } - }) - .fail(function (reason) { - $('#disabled').css('display', 'none'); - alert('Login request failed: ' + reason); - }) - .done(); - } - }); - $('#screen_language').css('display', ''); - } - else { - $('#disabled').css('cursor', ''); - alert('Obtaining list of problems failed: code=' + data.code + ', reason=' + data.message); - } - }, - - function failure(reason) { - $('#disabled').css('cursor', ''); - alert('Request to obtain list of problems failed: ' + reason); - } - ).done(); + $("#screen_language").css('display', ''); + $('#submit_language').on('click',function(){ + codeq.globalStateMachine.transition('problem',$('#language').val()); + }); }, 'exit' : function(){ - $('#problem_group').off(); - $("#submit_problem").off(); - $("#problem_group option").remove();//empty the selects - $("#problems option").remove(); + $("#submit_language").off(); $("#screen_language").css('display', 'none'); + $('#language').val("prolog");//reset to the default value } }); })(); \ No newline at end of file -- cgit v1.2.1