mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-18 05:51:26 +02:00
I'm almost done with the webmail :p Mailboxes manipulation is working pretty well now. see #204
81 lines
1.9 KiB
JavaScript
81 lines
1.9 KiB
JavaScript
/*
|
|
* Simple poller plugin.
|
|
*
|
|
* Sends a request at a given frequency.
|
|
*/
|
|
var Poller = function(url, options) {
|
|
this.initialize(url, options);
|
|
};
|
|
|
|
Poller.prototype = {
|
|
constructor: Poller,
|
|
|
|
defaults: {
|
|
interval: 2000,
|
|
success_cb: null,
|
|
error_cb: null
|
|
},
|
|
|
|
initialize: function(url, options) {
|
|
this.url = url;
|
|
this.options = $.extend({}, this.defaults, options);
|
|
this.running_request = false;
|
|
this.paused = false;
|
|
this.reset();
|
|
},
|
|
|
|
reset: function() {
|
|
if (!this.paused) {
|
|
this.tid = setTimeout($.proxy(this.send_request, this), this.options.interval);
|
|
}
|
|
},
|
|
|
|
pause: function() {
|
|
this.paused = true;
|
|
if (!this.tid) {
|
|
return;
|
|
}
|
|
clearTimeout(this.tid);
|
|
},
|
|
|
|
resume: function() {
|
|
if (!this.paused) {
|
|
return;
|
|
}
|
|
this.paused = false;
|
|
this.reset();
|
|
},
|
|
|
|
send_request: function() {
|
|
var poller = this;
|
|
var args = "";
|
|
|
|
if (this.options.args != undefined) {
|
|
args = "?";
|
|
if (typeof this.options.args === "function") {
|
|
args += this.options.args();
|
|
} else {
|
|
args += this.options.args;
|
|
}
|
|
}
|
|
this.running_request = true;
|
|
$.ajax({
|
|
url: this.url + args,
|
|
dataType: 'json',
|
|
success: function(data) {
|
|
poller.running_request = false;
|
|
if (data.status == "ok") {
|
|
if (poller.options.success_cb) {
|
|
poller.options.success_cb(data);
|
|
}
|
|
poller.reset();
|
|
} else {
|
|
$("body").notify("error", data.respmsg);
|
|
if (poller.options.error_cb) {
|
|
poller.options.error_cb(data);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}; |