Fonction qui calcule la durée écoulée dès le début de formatage d'un disque dur
Bonjour à tous ,
je suis en cours de développez une application web qui permet le monitoring temps réel du formatage des disque dur :
je vous explique le principe tout d'abord et ce qu'il faut avoir :
J’insère un disque avec une Date D_T : Date d'insertion
W_D: Durée Estimée pour le formatage: (en minutes )
Timeleft: durée restante
donc dés l'insertion du disque dans la machine : La Durée wd: wiping duration (Ecoulé ) commence de Zero en s'incrémentant jusqu'a W_D se termine.
Sauf que je peux avoir un evenement généré par arduino sur ma BD y'a un cas lorsque Com ( colonne dans ma bd de type Enum ( 0, 1,2 ), Donc si Com=0 : wd s'incremente jusqu'a atteindre la Valeur W_D (estimée)
Sinon ( com= 1 ou 2) Wd doit s'arrêter à la valeur ou elle arrive avant que Com change et Timeleft devient Zéro
Maintenant ce que j'ai fait c'est ceci:
wd ça s'incrémente jusqu'a meme atteindre la valeur W_D et s'incremente toujours
et la condition sur le com n'est pas prise en considération.
Code:
1 2 3 4 5 6 7 8
| function timeleft(date){
date2 = new Date(date);
var tmp=Date.now()-date2;
tmp = Math.floor(tmp/1000);
var sec = tmp % 60; // Extraction du nombre de secondes
tmp = Math.floor((tmp-sec)/60); // Nombre de secondes entre les 2 dates
return tmp;
} |
code en ajax:
Code:
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
| var wd ;
console.log(data);
$.each(data,function(index,val){
html+= '<tr><td>'+val.SN+'</td>';
html+='<td>'+val.Model+'</td>';
html+='<td>'+val.Capacity+'</td>';
html+='<td>'+val.Slot_Pos+'</td>';
html+='<td>'+val.ID_Mach+'</td>';
html+='<td>'+val.ID_op+'</td>';
html+='<td>'+val.W_D+'</td>';
if (val.W_D > timeleft(val.D_T)){
html+='<td>'+Math.floor(val.W_D-timeleft(val.D_T))+'</td>';}
else{
html+='<td> 0 </td>';}
if(val.W_F_S == "Fail"){
color = "red";
message = 'Failed';
}
if (i == 0 && val.W_F_S == "Fail"){
progress = modifValues(val.D_T,val.W_D).toFixed(0);
i++;
}
if ( (val.W_F_S != "Fail") && (modifValues(val.D_T,val.W_D).toFixed(0) < 100)){
color = "orange";
progress = modifValues(val.D_T,val.W_D).toFixed(0);
message = modifValues(val.D_T,val.W_D).toFixed(0)+'%';
}
if (Math.floor((val.W_D-timeleft(val.D_T)) < -2) && (val.W_F_S != "Fail")){
color = "";
progress = '100';
message = "Successfully Completed !";
}
//if(val.com==0 ){ wd=val.W_D-Math.floor(val.W_D-timeleft(val.D_T)) ;} else wd =(timeleft(val.DT_Update)-timeleft(val.D_T)) ;
html+='<td>'+timeleft(val.D_T)+'</td>';
html+='<td colspan="4"><div class="meter '+color+'"><span style="width: '+ progress +'%;">'+message+'</span></div></td>';
//html+='<td><div id="progress"><p><strong>'+ modifValues(val.D_T,val.W_D).toFixed(0) +'%</strong></p><progress value=' + modifValues(val.D_T,val.W_D)+ ' min="0" max="100"></progress></div></td></tr>'
});
$("#keywords tbody").html(html);
}
});
setTimeout(ma_function,3000);
} |
Merci pour vos conseils et propositions d'avance