source: EDIS/tags/ed/tracking-ui-core/src/main/flex/gov/va/med/edp/util/InactivityTimeout.as@ 1240

Last change on this file since 1240 was 1240, checked in by George Lilly, 13 years ago

new version from the VA

File size: 3.4 KB
Line 
1package gov.va.med.edp.util {
2import flash.events.TimerEvent;
3import flash.utils.Timer;
4import flash.utils.getTimer;
5
6import gov.va.med.edp.control.ClearUnsavedViewsModelEvent;
7import gov.va.med.edp.model.TrackingModelLocator;
8
9import mx.core.Application;
10import mx.core.SoundAsset;
11public class InactivityTimeout {
12 // private var timeOutInterval:uint;
13 private var confirmInterval:uint;
14 private var sessionTimeOutTimer:Timer;
15
16 private var confirmTimer:Timer;
17 private var countdownTimer:Timer = new Timer(1000)
18 private var lastActivityTime:Number = 0;
19 private var counter:uint = 0;
20 private var timersStarted:Boolean = false;
21
22 [Embed(source="Timeout.mp3")]
23 private var alertSound: Class;
24
25 [Bindable]
26 public var status:String = "";
27
28 private var model:TrackingModelLocator = TrackingModelLocator.getInstance();
29
30 public function start():void {
31 sessionTimeOutTimer = new Timer(model.session.timeOut);
32 sessionTimeOutTimer.addEventListener(TimerEvent.TIMER, onTimeOutTimer);
33
34 confirmTimer = new Timer(model.session.countDown);
35 confirmTimer.addEventListener(TimerEvent.TIMER, onConfirmTimer);
36 countdownTimer.addEventListener(TimerEvent.TIMER, onCountdownTimer);
37
38 confirmInterval = model.session.countDown;
39
40 Application.application.addEventListener("keyDown", activity);
41 Application.application.addEventListener("mouseMove", activity);
42
43 sessionTimeOutTimer.start();
44 timersStarted = true;
45 }
46
47 public function reset():void
48 {
49 lastActivityTime = getTimer();
50 //For some reason the reset method in the Timer class is flaky..Not reliable..
51 if (sessionTimeOutTimer != null) {
52 sessionTimeOutTimer.stop();
53 sessionTimeOutTimer.start();
54 }
55
56 if (timersStarted && confirmTimer.running) {
57 confirmTimer.stop();
58 countdownTimer.stop();
59 counter = 0;
60 status = "";
61 }
62 }
63
64 private function activity(event:Event):void {
65 reset();
66 }
67
68 private function onTimeOutTimer(event:TimerEvent):void
69 {
70 confirmTimer.start();
71 countdownTimer.start();
72 }
73
74
75 private function onConfirmTimer(event:TimerEvent):void
76 {
77 status = "Session timed out..Redirecting to Logout...";
78 //Make sure you clear out any unsaved views
79 //other wise the javascript will not let you navigate out..
80 var clearUnsavedViewsEvent: ClearUnsavedViewsModelEvent = new ClearUnsavedViewsModelEvent(ClearUnsavedViewsModelEvent.EVENT_CLEAR_UNSAVED_VIEWS);
81 clearUnsavedViewsEvent.dispatch();
82
83 Application.application.removeEventListener("keyDown", reset);
84 Application.application.removeEventListener("mouseMove", reset);
85
86 confirmTimer.stop();
87 countdownTimer.stop();
88
89 model.logout();
90 }
91
92 private function onCountdownTimer(event:TimerEvent):void
93 {
94 counter++;
95 var seconds:String = String(confirmInterval / 1000 - counter);
96
97 trace("Counter: ", counter);
98 if (counter == 1) playAlertSound();
99 status = "EDIS has been idle and will close in " + seconds + " seconds.";
100 }
101
102 private function playAlertSound(): void
103 {
104 var chime: SoundAsset = new alertSound() as SoundAsset;
105 chime.play(0,1);
106 }
107}
108}
Note: See TracBrowser for help on using the repository browser.