diff --git a/app/controllers/main_controller.rb b/app/controllers/main_controller.rb --- a/app/controllers/main_controller.rb +++ b/app/controllers/main_controller.rb @@ -279,7 +279,7 @@ if assignment == nil timeout = nil else - if assignment.expired? + if (assignment.expired?) or (assignment.submitted) timeout = 0 else timeout = assignment.created_at + TEST_ASSIGNMENT_EXPIRATION_DURATION - Time.new.gmtime diff --git a/public/javascripts/codejom_timeout.js b/public/javascripts/codejom_timeout.js --- a/public/javascripts/codejom_timeout.js +++ b/public/javascripts/codejom_timeout.js @@ -8,6 +8,8 @@ updateProblemMessages: function() { CodejomTimeout.timeouts.each(function(data) { + if(data==null) + return; if(data.timeout==null) { $("problem-submission-form-" + data.problem).hide(); } else if(data.timeout==0) { @@ -26,6 +28,8 @@ var timeElapsed = ((new Date()).getTime() - CodejomTimeout.timeStarted)/1000; // update timeout info CodejomTimeout.timeouts.each(function(data) { + if(data==null) + return; if(data.timeout > timeElapsed) { data.timeout -= timeElapsed; } else if(data.timeout > 0) { @@ -46,7 +50,7 @@ updateTimeoutAfterDownloadClick: function(problem) { CodejomTimeout.timeouts - .filter(function(data) { return data.problem==problem; }) + .filter(function(data) { return (data!=null) && (data.problem==problem); }) .each(function(data) { if(data.timeout==0 || data.timeout==null) { // TODO: use value from rails app.