1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
// On créé notre classe en héritant de Ajax.PeriodicalUpdater
var PeriodicalUpdaterStopScheduled = Class.create(Ajax.PeriodicalUpdater, {
initialize:function($super, container, url, options) {
// variable permettant de savoir si un stop est programmé
this.isStopScheduled = false;
// ajoutons des options pour nous :
options = Object.extend({
// temps après le premier succès avant d'arrêter : par défaut non
stopSecsAfterSuccess: null
}, options || {});
// on recuper le onSuccess de options
var onSuccess = options.onSuccess;
// on défini notre onSuccess
options.onSuccess = function(response, headerJSON) {
// si un stop n'a pas été programmé
if(! this.isStopScheduled ) {
// on en programme un
this.scheduleStop(this.options.stopSecsAfterSuccess);
}
// si le onSuccess d'avant est une fonction
if(Object.isFunction(onSuccess)) {
// on l'execute
onSuccess(response, headerJSON)
}
}.bind(this);
// on fini par appeler le constructeur de la classe mère
$super(container, url, options);
},
scheduleStop: function(delayToStop) {
// si le delayToStop est un nombre
if(! isNaN(delayToStop)) {
// on recupere la fonction stop qu'on se bind et
// qu'on delai du temps demandé.
this.stop.bind(this).delay(delayToStop);
// et on flag le fait que c'est programmé
this.isStopScheduled = true;
}
}
}
}); |
Partager