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 43 44 45 46 47 48 49 50 51 52
|
if("undefined" == typeof(Hordodo)) var Hordodo = {};
//FIXME obligé de faire cette bidouille cradingue pour utiliser setTimeout()
//ne fonctionne que si l'on a qu'une instance de Scheduler
Hordodo.schedulerInstance = null;
Hordodo.Scheduler = function(task)
{
Hordodo.schedulerInstance = this;
this.task_ = task; //fonction à exécuter
this.timeout_ = null;
this.enabled = false;
this.process_ = function()
{
if(this.enabled) this.task_();
window.alert("test2");
};
//executionTimeStr : chaine au format HH:MM:SS
this.setExecutionTime = function(executionTimeStr)
{
//découpage du temps donné en heures, minutes et secondes
var executionTimeStrArray = executionTimeStr.split(':');
var executionTimeHours = parseInt(executionTimeStrArray[0]);
var executionTimeMinutes = parseInt(executionTimeStrArray[1]);
var executionTimeSeconds = parseInt(executionTimeStrArray[2]);
var currentTime = new Date();
//calcul de la date/heure où la tâche doit s'exécuter
var executionTime = new Date(currentTime);
executionTime.setHours(executionTimeHours);
executionTime.setMinutes(executionTimeMinutes);
executionTime.setSeconds(executionTimeSeconds);
//reporte l'exécution au lendemain si l'heure définie est dans le passé
if(executionTime.getTime() < currentTime.getTime())
{
executionTime.setDate(executionTime.getDate() + 1);
}
//calcul du temps nous séparant du moment de l'exécution
var executionTimeout = executionTime.getTime() - currentTime.getTime();
//programmation de la tâche
if(this.timeout_ != null) clearTimeout(this.timeout_);
this.timeout_ = setTimeout("Hordodo.schedulerInstance.process_();", executionTimeout);
window.alert("Exécution dans " + executionTimeout / 1000 + " secondes.");
};
}; |