Browse Source

Fix multiple running instances

Lucas de Souza 5 years ago
parent
commit
4f8ef3d2a8
1 changed files with 17 additions and 4 deletions
  1. 17 4
      js/visualUI/functions.js

+ 17 - 4
js/visualUI/functions.js

@@ -24,6 +24,7 @@ const globalChangeListeners = [];
 const functionsChangeListeners = [];
 let domConsole = null;
 let _testCases = [];
+let isRunning = false;
 window.studentGrade = null;
 window.LocalizedStrings = LocalizedStrings;
 const program = new Models.Program();
@@ -875,6 +876,9 @@ function updateSequenceFunction (oldIndex, newIndex) {
 }
 
 function runCodeAssessment () {
+  if (isRunning) {
+    return;
+  }
   
   window.studentGrade = null;
   const strCode = CodeManagement.generate();
@@ -888,19 +892,25 @@ function runCodeAssessment () {
     domConsole = new DOMConsole("#ivprog-term");
   $("#ivprog-term").slideDown(500);
   const runner = new IVProgAssessment(strCode, _testCases, domConsole);
-
+  isRunning = true;
   runner.runTest().then(grade => {
     if (!is_iassign) {
       parent.getEvaluationCallback(grade);
     } else {
       is_iassign = false;
     }
-  }).catch( err => console.log(err));
+    isRunning = false;
+  }).catch( err => {
+    console.log(err);
+    isRunning = false;
+  });
   
 }
 
 function runCode () {
-  
+  if (isRunning) {
+    return;
+  }
   const strCode = CodeManagement.generate();
   if (strCode == null) {
     return;
@@ -917,15 +927,18 @@ function runCode () {
     proc.registerInput(domConsole);
     proc.registerOutput(domConsole);
     $("#ivprog-term").addClass('ivprog-term-active');
-
+    isRunning = true;
     proc.interpretAST().then( _ => {
       domConsole.info("Programa executado com sucesso!");
       $("#ivprog-term").removeClass('ivprog-term-active');
+      isRunning = false;
     }).catch(err => {
       domConsole.err(err.message);
       $("#ivprog-term").removeClass('ivprog-term-active');
+      isRunning = false;
     }) 
   } catch (error) {
+    isRunning = false;
     domConsole.err(error.message);
     console.log(error);
   }