Commit 1266b64884b8fbb0df139271e07774e06a698a60
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> |