summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--css/codeq.css7
-rw-r--r--index.html23
-rw-r--r--js/codeq/core.js8
-rw-r--r--js/codeq/language.js34
-rw-r--r--js/codeq/startup.js100
5 files changed, 29 insertions, 143 deletions
diff --git a/css/codeq.css b/css/codeq.css
index 42fdb30..8604b9c 100644
--- a/css/codeq.css
+++ b/css/codeq.css
@@ -176,6 +176,7 @@ body {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
}
-
-
-
+/* main screen */
+#screen_language a {
+ cursor: pointer;
+}
diff --git a/index.html b/index.html
index bea88df..31e383b 100644
--- a/index.html
+++ b/index.html
@@ -85,24 +85,9 @@
<div id="screen_language" style="text-align: center; display: none;">
<h1>CodeQ Select Language</h1>
<hr>
- <table style="margin: 0 auto;">
- <tbody>
- <tr>
- <td style="text-align: right;">Problem:</td>
- <td>
- <select name="language" id="language" style="min-width: 10em;">
- <option value="prolog">prolog</option>
- <option value="python">python</option>
- </select>
- </td>
- </tr>
- <tr>
- <td colspan="2" style="text-align: center;">
- <button type="button" id="submit_language">Select</button>
- </td>
- </tr>
- </tbody>
- </table>
+ <br>
+ <a id="choose-prolog">Prolog</a><br>
+ <a id="choose-python">Python</a>
</div>
<!-- problem selection screen for a specific language: groups of problems, with descriptions -->
@@ -217,12 +202,10 @@
<script src="js/codeq/comms.js"></script>
<script src="js/codeq/console.js"></script>
<script src="js/codeq/hint.js"></script>
- <script src="js/def_parser.js"></script>
<script src="js/codeq/prolog.js"></script>
<script src="js/codeq/python.js"></script>
<script src="js/codeq/login.js"></script>
<script src="js/codeq/language.js"></script>
<script src="js/codeq/problem.js"></script>
- <script src="js/codeq/startup.js"></script>
</body>
</html>
diff --git a/js/codeq/core.js b/js/codeq/core.js
index 564aec3..61ef607 100644
--- a/js/codeq/core.js
+++ b/js/codeq/core.js
@@ -264,4 +264,12 @@
};
}
};
+
+ // ================================================================================
+ // The boot sequence
+ // ================================================================================
+
+ $(document).ready(function () {
+ codeq.globalStateMachine.transition('login');
+ });
})();
diff --git a/js/codeq/language.js b/js/codeq/language.js
index d4b6ee4..be2a319 100644
--- a/js/codeq/language.js
+++ b/js/codeq/language.js
@@ -3,34 +3,28 @@
*/
(function(){
+ var jqScreen = $('#screen_language'),
+ jqProlog = $('#choose-prolog'),
+ jqPython = $('#choose-python'),
+ chooseProlog = function () {codeq.globalStateMachine.transition('problem', 'prolog');},
+ choosePython = function () {codeq.globalStateMachine.transition('problem', 'python');};
+
codeq.globalStateMachine.register('language',{
'enter': function(){
- $('#submit_language').on('click',function(){
- codeq.globalStateMachine.transition('problem',$('#language').val());
- //var lan = $('#language').val();
- //codeq.activateState('problem',{'lan':lan});
- });
-
$('#navigation-login').css('display', '');
- /*$('#navigation-login').on('click', function(){
- codeq.globalStateMachine.transition('login');
- //codeq.activateState('login');
- });*/
- $("#navigation-language").addClass("active");
- $('#navigation-language').css('display', '');
+ $("#navigation-language").addClass("active").css('display', '');
- $("#screen_language").css('display', '');
+ jqScreen.css('display', '');
+ jqProlog.on('click', chooseProlog);
+ jqPython.on('click', choosePython);
},
'exit' : function(){
- $("#submit_language").off();
- $("#screen_language").css('display', 'none');
+ jqProlog.off();
+ jqPython.off();
+ jqScreen.css('display', 'none');
$('#navigation-login').css('display', 'none');
- //$('#navigation-login').off();
- $('#navigation-language').css('display', 'none');
- $("#navigation-language").removeClass("active");
-
- $('#language').val("prolog");//reset to the default value
+ $('#navigation-language').css('display', 'none').removeClass("active");
}
});
})(); \ No newline at end of file
diff --git a/js/codeq/startup.js b/js/codeq/startup.js
deleted file mode 100644
index ccef9f9..0000000
--- a/js/codeq/startup.js
+++ /dev/null
@@ -1,100 +0,0 @@
-$(document).ready(function () {
- /*codeq.comms.connect().then(function () {
- return codeq.comms.send({'action': 'list_problems'});
- }).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('<option value="', p.identifier, '">', p.name, '</option>\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('<option value="', identifier, '">', name, '</option>\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").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.login($('#username').val(), $('#password').val())
- .then(function (data) {
- $('#disabled').css('display', 'none');
- if (data.code !== 0) throw new Error('Login failed, code: ' + data.code + ', message: ' + data.message);
- })
- .then(function () {
- return 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':
- // TODO: assignment to window for debug only
- $('#screen_login').css('display', 'none');
- $('#screen_prolog').css('display', '');
- window.phandler = codeq.createPrologHandler(data.data);
- break;
- case 'python':
- // TODO: assignment to window for debug only
- $('#screen_login').css('display', 'none');
- $('#screen_prolog').css('display', '');
- window.phandler = codeq.createPythonHandler(data.data);
- break;
- default:
- alert('Unknown language: ' + identifier[0]);
- break;
- }
- })
- .fail(function (reason) {
- $('#disabled').css('display', 'none');
- codeq.log.error('Login request failed: ' + reason, reason);
- alert('Login request failed: ' + reason);
- })
- .done();
- }
- });
- }
- 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();*/
-
- codeq.globalStateMachine.transition('login');
-}); \ No newline at end of file