Commit 1266b64884b8fbb0df139271e07774e06a698a60

Authored by daniel@ruoso.com
1 parent 573abfd8
Exists in master

evita race condition

;

git-svn-id: http://svn.softwarepublico.gov.br/svn/sistemadeatendimento/sistema/trunk@24 63db2ce5-8a6c-0410-abb9-a418dd412890
Showing 1 changed file with 18 additions and 6 deletions   Show diff stats
Fila-Web/root/header.tt
@@ -26,13 +26,14 @@ var page_loaded = 0; @@ -26,13 +26,14 @@ var page_loaded = 0;
26 var waiting_for = ''; 26 var waiting_for = '';
27 var timeout = 0; 27 var timeout = 0;
28 var timeout_callback; 28 var timeout_callback;
  29 +var timeout_key;
29 function disconnected_so_move_away() { 30 function disconnected_so_move_away() {
30 if (page_loaded) { 31 if (page_loaded) {
31 window.location='about:blank'; 32 window.location='about:blank';
32 } 33 }
33 } 34 }
34 35
35 -function check_timeout() { 36 +function check_timeout(tk) {
36 if (timeout == 0) { 37 if (timeout == 0) {
37 if (waiting_for) { 38 if (waiting_for) {
38 timeout_callback(); 39 timeout_callback();
@@ -42,16 +43,27 @@ function check_timeout() { @@ -42,16 +43,27 @@ function check_timeout() {
42 $('aviso_timeout').replace('<DIV id="aviso_timeout" class="aviso_timeout">' + 43 $('aviso_timeout').replace('<DIV id="aviso_timeout" class="aviso_timeout">' +
43 timeout + ' segundos para ' + waiting_for +'</DIV>'); 44 timeout + ' segundos para ' + waiting_for +'</DIV>');
44 45
45 - window.setTimeout(function() { check_timeout() }, 1000); 46 + window.setTimeout(function() {
  47 + if (tk == timeout_key) { check_timeout(tk) }
  48 + }, 1000);
46 timeout--; 49 timeout--;
47 } 50 }
48 } 51 }
49 52
50 function set_timeout(tempo, motivo, callback) { 53 function set_timeout(tempo, motivo, callback) {
51 - waiting_for = motivo;  
52 - timeout = tempo;  
53 - timeout_callback = callback;  
54 - check_timeout(); 54 + if (motivo && waiting_for == motivo) {
  55 + return
  56 + } else if (motivo && waiting_for) {
  57 + waiting_for = motivo;
  58 + timeout = tempo;
  59 + timeout_callback = callback;
  60 + } else {
  61 + waiting_for = motivo;
  62 + timeout = tempo;
  63 + timeout_callback = callback;
  64 + timeout_key = Math.random();
  65 + check_timeout(timeout_key);
  66 + }
55 } 67 }
56 68
57 </script> 69 </script>