summaryrefslogtreecommitdiff
path: root/js/codeq/python.js
diff options
context:
space:
mode:
authorAleš Smodiš <aless@guru.si>2015-09-28 18:44:48 +0200
committerAleš Smodiš <aless@guru.si>2015-09-28 18:44:48 +0200
commit7dab4d3640b7b37c407eea111eda1fc0b71adbda (patch)
treef6d422f294d796706634de43826bce117fef409a /js/codeq/python.js
parent1e0c68482267f7e7393d2cde5042fcd863b8e23b (diff)
Implement in-structure GUI translation for python and problem editing screens.
Hints are not yet covered.
Diffstat (limited to 'js/codeq/python.js')
-rw-r--r--js/codeq/python.js33
1 files changed, 19 insertions, 14 deletions
diff --git a/js/codeq/python.js b/js/codeq/python.js
index e80bbb7..8b66881 100644
--- a/js/codeq/python.js
+++ b/js/codeq/python.js
@@ -71,7 +71,7 @@
};
var pythonHandler; //created when we enter the python state and destroyed once we leave it
codeq.globalStateMachine.register('python', {
- 'enter': function (data) {
+ 'enter': function (problemDef, commonHints, currentSolution) {
$('#navigation-login').css('display', '');
$('#navigation-language').css('display', '');
$('#navigation-problem').css('display', '');
@@ -79,7 +79,7 @@
$('#navigation-python').css('display', '');
jqScreen.css('display', '');//we have to show the screen now so the code editor shows its initial values correctly
- pythonHandler = createPythonHandler(data.data);
+ pythonHandler = createPythonHandler(problemDef, commonHints, currentSolution);
subScreens = codeq.makeStateMachine(substates);
subScreens.transition(jqDescription.data(stateNameTag));
/* Q.delay(100).then(function(){
@@ -203,7 +203,9 @@
};
};
-
+ codeq.on('init', function (args) {
+ codeq.tr.registerDictionary('python', codeq.tr.emptyDictionary); // to make the translator happy, when this screen is not active
+ });
/**
* Creates a new handler for the given Prolog assignment definition.
@@ -211,24 +213,26 @@
* @param {PrologTaskDef} info
* @returns {{destroy: Function, processServerHints: Function}}
*/
- var createPythonHandler = function (info) {
- var problem = info.problem,
+ var createPythonHandler = 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, mode: 'python' }),
- activityHandler = makeActivityHandler(editor, problem.id),
- terminal = makePythonTerminalHandler(jqTerminal, editor, problem.id, activityHandler),
- hinter = codeq.makeHinter(jqHints, jqEditor, editor, problem.hint, problem.plan),
+ activityHandler = makeActivityHandler(editor, problemDef.id),
+ terminal = makePythonTerminalHandler(jqTerminal, editor, problemDef.id, activityHandler),
+ hinter = codeq.makeHinter(jqHints, jqEditor, editor, 'python_hints', problemDef.hint, commonHints, problemDef.plan),
commError = function (error) {
alert(error);
};
- editor.setValue(info.solution);
- $('#screen_python .title').text(problem.slug);
- jqDescriptionContent.html(problem.description);
- jqBtnPlan.prop('disabled', (problem.plan || '').length == 0);
+ codeq.tr.registerDictionary('python', problemDef.translations);
+ codeq.tr.translateDom(jqScreen);
+ if (currentSolution) editor.setValue(currentSolution);
+// $('#screen_python .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(),
@@ -253,7 +257,7 @@
codeq.comms.sendHint({
'language': 'python',
'program': editor.getDoc().getValue(),
- 'problem_id': problem.id
+ 'problem_id': problemDef.id
})
.then(function (data) {
if (data.code === 0) {
@@ -271,7 +275,7 @@
codeq.comms.sendTest({
'language': 'python',
'program': editor.getDoc().getValue(),
- 'problem_id': problem.id
+ 'problem_id': problemDef.id
})
.then(function (data) {
if (data.code === 0) {
@@ -323,6 +327,7 @@
jqEditor = null;
jqTerminal = null;
jqHints = null;
+ codeq.tr.registerDictionary('python', codeq.tr.emptyDictionary);
}
};
};