source: timingandestimationplugin/branches/trac1.0-Permissions/timingandestimationplugin/htdocs/StopwatchControls.js

Last change on this file was 7477, checked in by Russ Tyndall, 14 years ago

Made the stopwatch component less susceptible to browser flakiness and jsavascript slowdown. (Thanks T.R.Chuan)

File size: 1.4 KB
Line 
1/**
2 * Copyright (C) 2010, Tay Ray Chuan
3 */
4jQuery(function($) {
5    StopwatchControls = function() {
6        var m_state;
7
8        var btn_flow = $('<div class="stopwatch-button"></div>');
9        var btn_reset = $('<div class="stopwatch-button">Reset</div>');
10        var controls = $('<div></div>')
11            .append(btn_flow)
12            .append(btn_reset);
13
14        /* first handlers to run; set states */
15        controls.bind('pause', function() {
16            m_state.running = false;
17            m_state.use_value = true;
18            m_state.reset = false;
19        });
20
21        controls.bind('continue', function() {
22            m_state.running = true;
23            m_state.use_value = false;
24            m_state.reset = false;
25        });
26
27        controls.bind('reset', function() {
28            m_state.running = false;
29            m_state.use_value = false;
30            m_state.reset = true;
31        });
32
33        /* make buttons trigger events */
34        btn_flow.click(function() {
35            if (m_state.running)
36                controls.trigger('pause');
37            else
38                controls.trigger('continue');
39        });
40
41        btn_reset.click(function() {
42            if (m_state.running) return;
43
44            controls.trigger('reset');
45        });
46
47        /* make button states react to events */
48        controls.bind('pause', function() {
49            btn_flow.text('Continue');
50            btn_reset.show();
51        });
52
53        controls.bind('continue', function() {
54            btn_flow.text('Pause');
55            btn_reset.hide();
56        });
57
58        controls.bind('reset', function() {
59            btn_flow.text('Start');
60            btn_reset.hide();
61        });
62
63        return {
64            controls: controls,
65
66            init: function(state) {
67                m_state = state;
68            }
69        };
70    }();
71});
Note: See TracBrowser for help on using the repository browser.