From ca3aa94da7798bba4fed6ae467d8fa94324a832e Mon Sep 17 00:00:00 2001 From: Robert Zorko Date: Wed, 16 Dec 2015 14:05:18 +0100 Subject: moved loading of problem data into the 'enter' of the python, robot and prolog states --- js/codeq/prolog.js | 49 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) (limited to 'js/codeq/prolog.js') diff --git a/js/codeq/prolog.js b/js/codeq/prolog.js index 7f74aaf..0bbf547 100644 --- a/js/codeq/prolog.js +++ b/js/codeq/prolog.js @@ -80,10 +80,44 @@ along with this program. If not, see . */ } } }; + + var enterFun = function(problemDef, commonDef, currentSolution){ + $('#navigation-problem_list').css('display', ''); + var navigationProlog = $("#navigation-prolog"); + navigationProlog.addClass("active"); + navigationProlog.css('display', ''); + + jqScreen.css('display', '');//we have to show the screen now so the code editor shows its initial values correctly + prologHandler = createPrologHandler(problemDef, commonDef, currentSolution); + subScreens = codeq.makeStateMachine(substates); + subScreens.transition(jqDescription.data(stateNameTag)); + + jqAllButtons.on(transitionEventName, function (event) { + subScreens.transition('info'); // set focus on the hints quadrant + event.stopPropagation(); // don't allow the event to go on and trigger further transition + }); + jqAllQuadrants.on(transitionEventName, function () { + subScreens.transition($(this).data(stateNameTag)); + }); + }; + var prologHandler; //created when we enter the prolog state and destroyed once we leave it codeq.globalStateMachine.register('prolog', { - 'enter': function (problemDef, commonDef, currentSolution) { - $('#navigation-problem_list').css('display', ''); + //'enter': function (problemDef, commonDef, currentSolution) { + 'enter': function (ref, data) {//function (problemDef, commonDef, currentSolution) {// + + codeq.loadProblemData(ref,data).then(function(problem){ + //codeq.log.debug("then:"+JSON.stringify(problem)); + enterFun(problem.generalProblemData,data.commonDef,problem.solution); + }) + .fail(function (reason) { + codeq.log.error('Failed to obtain the problem definition: ' + reason, reason); + alert('Failed to obtain the problem definition: ' + reason); + + history.back();//TODO test + }) + .done(); + /*$('#navigation-problem_list').css('display', ''); $("#navigation-prolog").addClass("active"); $('#navigation-prolog').css('display', ''); @@ -91,16 +125,14 @@ along with this program. If not, see . */ prologHandler = createPrologHandler(problemDef, commonDef, currentSolution); subScreens = codeq.makeStateMachine(substates); subScreens.transition(jqDescription.data(stateNameTag)); -/* Q.delay(100).then(function(){ - jqAllQuadrants.addClass('transition');//for smooth animations - need to be delayed, because otherwise we get some weird "animations" while the page is loading - }).done();*/ + jqAllButtons.on(transitionEventName, function (event) { subScreens.transition('info'); // set focus on the hints quadrant event.stopPropagation(); // don't allow the event to go on and trigger further transition }); jqAllQuadrants.on(transitionEventName, function () { subScreens.transition($(this).data(stateNameTag)); - }); + });*/ }, 'exit': function () { jqAllButtons.off(); // unregister all event handlers @@ -114,8 +146,9 @@ along with this program. If not, see . */ jqScreen.addClass('block1'); $('#navigation-problem_list').css('display', 'none'); - $("#navigation-prolog").removeClass("active"); - $('#navigation-prolog').css('display', 'none'); + var navigationProlog = $("#navigation-prolog"); + navigationProlog.removeClass("active"); + navigationProlog.css('display', 'none'); } }); -- cgit v1.2.1