summaryrefslogtreecommitdiff
path: root/js/codeq/prolog.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/codeq/prolog.js')
-rw-r--r--js/codeq/prolog.js33
1 files changed, 20 insertions, 13 deletions
diff --git a/js/codeq/prolog.js b/js/codeq/prolog.js
index be6b0c8..cd3fcb4 100644
--- a/js/codeq/prolog.js
+++ b/js/codeq/prolog.js
@@ -66,7 +66,7 @@
};
var prologHandler; //created when we enter the prolog state and destroyed once we leave it
codeq.globalStateMachine.register('prolog', {
- 'enter': function (data) {
+ 'enter': function (problemDef, commonHints, currentSolution) {
$('#navigation-login').css('display', '');
$('#navigation-language').css('display', '');
$('#navigation-problem').css('display', '');
@@ -74,7 +74,7 @@
$('#navigation-prolog').css('display', '');
jqScreen.css('display', '');//we have to show the screen now so the code editor shows its initial values correctly
- prologHandler = createPrologHandler(data.data);
+ prologHandler = createPrologHandler(problemDef, commonHints, currentSolution);
subScreens = codeq.makeStateMachine(substates);
subScreens.transition(jqDescription.data(stateNameTag));
/* Q.delay(100).then(function(){
@@ -245,30 +245,36 @@
};
};
+ codeq.on('init', function (args) {
+ codeq.tr.registerDictionary('prolog', codeq.tr.emptyDictionary); // to make the translator happy, when this screen is not active
+ });
+
/**
* Creates a new handler for the given Prolog assignment definition.
*
* @param {PrologTaskDef} info
* @returns {{destroy: Function, processServerHints: Function}}
*/
- createPrologHandler = function (info) {
- var problem = info.problem,
+ createPrologHandler = function (problemDef, commonHints, currentSolution) {
+ var //problem = info.problem,
jqDescriptionContent = jqDescription.find('.description'),
jqEditor = jqCode.find('.code_editor'),
jqTerminal = jqConsole.find('.console'),
jqHints = jqInfo.find('.hints'),
editor = CodeMirror(jqEditor[0], { cursorHeight: 0.85, lineNumbers: true, matchBrackets: true }),
- activityHandler = makeActivityHandler(editor, problem.id),
- terminal = makePrologTerminalHandler(jqTerminal, editor, problem.id, activityHandler),
- hinter = codeq.makeHinter(jqHints, jqEditor, editor, problem.hint, problem.plan),
+ activityHandler = makeActivityHandler(editor, problemDef.id),
+ terminal = makePrologTerminalHandler(jqTerminal, editor, problemDef.id, activityHandler),
+ hinter = codeq.makeHinter(jqHints, jqEditor, editor, 'prolog_hints', problemDef.hint, commonHints, problemDef.plan),
commError = function (error) {
alert(error);
};
- editor.setValue(info.solution);
- $('#screen_prolog .title').text(problem.slug);
- jqDescriptionContent.html(problem.description);
- jqBtnPlan.prop('disabled', (problem.plan || '').length == 0);
+ codeq.tr.registerDictionary('prolog', problemDef.translations);
+ codeq.tr.translateDom(jqScreen);
+ if (currentSolution) editor.setValue(currentSolution);
+// $('#screen_prolog .title').text(problem.slug);
+// jqDescriptionContent.html(problem.description);
+ jqBtnPlan.prop('disabled', ((problemDef.plan && problemDef.plan.en) || []).length == 0);
editor.on('change', function (instance, changeObj) {
var doc = editor.getDoc(),
@@ -295,7 +301,7 @@
codeq.comms.sendHint({
'language': 'prolog',
'program': editor.getDoc().getValue(),
- 'problem_id': problem.id
+ 'problem_id': problemDef.id
})
.then(function (data) {
if (data.code === 0) {
@@ -319,7 +325,7 @@
codeq.comms.sendTest({
'language': 'prolog',
'program': editor.getDoc().getValue(),
- 'problem_id': problem.id
+ 'problem_id': problemDef.id
})
.then(function (data) {
if (data.code === 0) {
@@ -351,6 +357,7 @@
jqEditor = null;
jqTerminal = null;
jqHints = null;
+ codeq.tr.registerDictionary('prolog', codeq.tr.emptyDictionary);
}
};
};