53 lines
1.9 KiB
Plaintext
53 lines
1.9 KiB
Plaintext
|
# HG changeset patch
|
||
|
# Parent 2921a545adc3406d3139be7951f3225e94493466
|
||
|
diff --git a/static/src/js/first_module.js b/static/src/js/first_module.js
|
||
|
--- a/static/src/js/first_module.js
|
||
|
+++ b/static/src/js/first_module.js
|
||
|
@@ -7,13 +7,46 @@ openerp.web_example = function (instance
|
||
|
'click .oe_web_example_start button': 'watch_start',
|
||
|
'click .oe_web_example_stop button': 'watch_stop'
|
||
|
},
|
||
|
+ init: function () {
|
||
|
+ this._super.apply(this, arguments);
|
||
|
+ this._start = null;
|
||
|
+ this._watch = null;
|
||
|
+ },
|
||
|
+ update_counter: function () {
|
||
|
+ var h, m, s;
|
||
|
+ // Subtracting javascript dates returns the difference in milliseconds
|
||
|
+ var diff = new Date() - this._start;
|
||
|
+ s = diff / 1000;
|
||
|
+ m = Math.floor(s / 60);
|
||
|
+ s -= 60*m;
|
||
|
+ h = Math.floor(m / 60);
|
||
|
+ m -= 60*h;
|
||
|
+ this.$('.oe_web_example_timer').text(
|
||
|
+ _.str.sprintf("%02d:%02d:%02d", h, m, s));
|
||
|
+ },
|
||
|
watch_start: function () {
|
||
|
this.$el.addClass('oe_web_example_started')
|
||
|
.removeClass('oe_web_example_stopped');
|
||
|
+ this._start = new Date();
|
||
|
+ // Update the UI to the current time
|
||
|
+ this.update_counter();
|
||
|
+ // Update the counter at 30 FPS (33ms/frame)
|
||
|
+ this._watch = setInterval(
|
||
|
+ this.proxy('update_counter'),
|
||
|
+ 33);
|
||
|
},
|
||
|
watch_stop: function () {
|
||
|
+ clearInterval(this._watch);
|
||
|
+ this.update_counter();
|
||
|
+ this._start = this._watch = null;
|
||
|
this.$el.removeClass('oe_web_example_started')
|
||
|
.addClass('oe_web_example_stopped');
|
||
|
},
|
||
|
+ destroy: function () {
|
||
|
+ if (this._watch) {
|
||
|
+ clearInterval(this._watch);
|
||
|
+ }
|
||
|
+ this._super();
|
||
|
+ }
|
||
|
});
|
||
|
};
|