summaryrefslogtreecommitdiff
path: root/itjs/timer.js
diff options
context:
space:
mode:
Diffstat (limited to 'itjs/timer.js')
-rw-r--r--itjs/timer.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/itjs/timer.js b/itjs/timer.js
new file mode 100644
index 0000000..25ebbec
--- /dev/null
+++ b/itjs/timer.js
@@ -0,0 +1,64 @@
+/**
+ * Start new timer
+ * Example: timer = new it_timer({ object:this, method:"timer", timeout:100});
+ *
+ * @param p.object Object to call method in when timer fires
+ * @param p.method String with method name to call in object
+ * @param p.timeout Timeout in milliseconds
+ * @param p.continuous One-shot or continuous timer, default is one-shot
+ * @return timer id (deprecated, use method stop() instead)
+ */
+function it_timer(p)
+{
+ this.func = p.continuous ? "Interval" : "Timeout";
+ return this.timer = window["set" + this.func](function() { p.object[p.method](p) }, p.timeout);
+}
+
+it_timer.prototype =
+{
+
+stop: function()
+{
+ if (this.timer)
+ {
+ window["clear" + this.func](this.timer);
+ this.timer = null;
+ }
+}/* NO COMMA */
+
+}
+
+/**
+ * Global helper function to benchmark javascript
+ * @parameter label Message label like "start" or "end"
+ * @paramter print Whether to output timerlog via ED() and clear it (optional)
+ */
+function it_timerlog(label, print)
+{
+ if (window.it_timerlog_active)
+ {
+ var end = new Date().getTime();
+
+ if (typeof window.it_timernow != "undefined")
+ {
+ var start = window.it_timernow;
+
+ if (window.it_timerlogmsg != "")
+ window.it_timerlogmsg += ", ";
+
+ window.it_timerlogmsg += label + ":" + (end - start);
+ }
+ else
+ window.it_timerlogmsg = "";
+
+ window.it_timernow = end;
+
+ if (print)
+ {
+ ED("timerlog: " + window.it_timerlogmsg);
+ window.it_timerlogmsg = "";
+ }
+ }
+}
+
+it_timerlog(""); // Set start time