Dernière ligne droite avant de mettre l'extension* sur le Google Chrome Store.
* Extension créée par Wolan et modifiée - petites modifs - par moi même et un autre gars de Virtual Regatta (VR).
Voici ce que son extension donne :

A partir du site zezo.org :

On ( le gars de VR et moi même ) a tenté d'implémenter une valeur TWA moyenne à chaque ligne, idem pour BTW
Ce qui permet de "lisser" la trajectoire ( utile pour la nuit et surtout pour le taf )
On les a donc appelé TWAm et BTWm puis on a commencé l'intégration
Ça donne ceci :

Les subtilités du calcul de TWAm doit prendre 2 paramètres en compte :
- un est l'amure Bâbord (Valeurs Rouges) ou Tribord (Valeurs Vertes).
En réalité les valeurs bâbord sont négatives et les valeurs tribord sont positives et non colorées mais sont gérées par ce bout de code
function twaStyling(value, cell) {
var rep = value.replace('\u00B0', '');
if (rep >= 0) {
cell.style.color = "green";
} else {
cell.style.color = "red";
}
cell.innerHTML = Math.abs(rep) + '\u00B0';
}
- l'autre est les itérations.
Sur le jeu on avance par de petits Waypoint toutes les 10 min ( 00:10 )
Si je prend cet exemple :

On remarque que les itérations se font à 22:10, 22:20, 22:30 et ... 23:40 ce qu'il veut dire qu'il manque 22:40, 22:50, 23:00, 23:10, 23:20 et 23:30
Comme ceci :

J'en ai donc besoin pour calculer mes moyennes ...
Le gars de VR à écrit un bout de code pour calculer ces valeurs ce qui donne ceci :
C'est tout ce qui est commenté sauf // sails et // pro sails
var background = chrome.extension.getBackgroundPage();
/*
var nb_ite = 0;
var nb_ite_prec = 0;
var nb_ite_deb = 0;
var twam = 0;
var twa_prec = 0;
var tot_twa = 0;
var btwm = 0;
var tot_btw = 0;
var btw_prec = 0;
*/
function createCell(value, row) {
var cell = document.createElement("td");
cell.innerHTML = value;
row.appendChild(cell);
}
function ttwStyling(value, cell) {
cell.align = "left";
cell.innerHTML = value;
}
function dtwStyling(value, cell) {
cell.align = "left";
cell.innerHTML = value;
}
function dtgStyling(value, cell) {
cell.align = "left";
cell.innerHTML = value;
}
function twaStyling(value, cell) {
var rep = value.replace('\u00B0', '');
if (rep >= 0) {
cell.style.color = "green";
} else {
cell.style.color = "red";
}
cell.innerHTML = Math.abs(rep) + '\u00B0';
}
function btwStyling(value, cell) {
cell.style.color = "blue";
cell.innerHTML = value;
}
function sailStyling(value, cell) {
switch (value.trim()) {
// sails
case 'Jib':
cell.style.backgroundColor = "#FCF400";
break;
case 'Spi':
cell.style.backgroundColor = "#3BEA7C";
break;
// pro sails
case 'Jib2':
cell.style.backgroundColor = "#B680FD";
break;
case 'Gen':
cell.style.backgroundColor = "#EB3B3A";
break;
case 'Sol':
cell.style.backgroundColor = "#EB3B3A";
break;
case 'C0':
cell.style.backgroundColor = "#F49800";
break;
case 'HG':
cell.style.backgroundColor = "#ED75EA";
break;
case 'LG':
cell.style.backgroundColor = "#4FA0D1";
break;
}
cell.innerHTML = value;
}
/*
function twamStyling(value, cell) {
if (value >= 0) {
cell.style.color = "green";
} else {
cell.style.color = "red";
}
cell.innerHTML = Math.abs(value) + '\u00B0';
}
function btwmStyling(value, cell) {
cell.style.color = "blue";
cell.innerHTML = value + '\u00B0';
}
*/
function createCellWithCustomStyling(value, row, customStyling) {
var cell = document.createElement("td");
customStyling(value, cell);
row.appendChild(cell);
}
/*
function calc_nb_ite(value) {
var delta_t = value.match(/.*?([0-9]{1,}):([0-9]{2})/);
nb_ite_deb = delta_t[1] * 6 + delta_t[2] / 10;
nb_ite = nb_ite_deb - nb_ite_prec;
nb_ite_prec = nb_ite_deb;
console.log(nb_ite_deb, nb_ite, nb_ite_prec);
}
function calc_twam(value) {
ss_tot = value.replace('\u00B0', '');
if (ss_tot >= 0) {
if (twa_prec < 0) {
nb_ite=0;
twa_prec=0;
}
} else {
if (twa_prec >= 0) {
nb_ite=0;
twa_prec=0;
}
}
tot_twa = (twam * nb_ite_prec) + (twa_prec * (nb_ite_deb - nb_ite_prec));
twam = (tot_twa + parseFloat(ss_tot)) / (nb_ite_prec + 1);
twam = Math.round(twam * 100) / 100;
twa_prec = ss_tot;
console.log(value, ss_tot, tot_twa, nb_ite_prec, twa_prec, nb_ite, twam);
}
function calc_btwm(value) {
ss_tot = value.replace('\u00B0', '');
tot_btw = (btwm * nb_ite_prec) + (btw_prec * (nb_ite_deb - nb_ite_prec));
btwm = (tot_btw + parseFloat(ss_tot)) / (nb_ite_prec + 1);
btwm = Math.round(btwm * 100) / 100;
btw_prec = ss_tot;
console.log(value, ss_tot, btwm);
}
*/
document.getElementById("pointsTable").innerHTML = "";
background.points.forEach(function (element) {
var row = document.createElement("tr");
document.getElementById("pointsTable").appendChild(row);
createCell(element.date, row);
createCell(element.time, row);
createCellWithCustomStyling(element.ttw, row, ttwStyling);
//calc_nb_ite(element.ttw);
createCellWithCustomStyling(element.dtw, row, dtwStyling);
createCellWithCustomStyling(element.dtg, row, dtgStyling);
createCell(element.twd, row);
createCell(element.tws, row);
createCellWithCustomStyling(element.twa, row, twaStyling);
//calc_twam(element.twa);
createCellWithCustomStyling(element.btw, row, btwStyling);
//calc_btwm(element.btw);
createCellWithCustomStyling(element.sail, row, sailStyling);
createCell(element.stw, row);
//createCellWithCustomStyling(twam, row, twamStyling);
//createCellWithCustomStyling(btwm, row, btwmStyling);
console.log(element);
});
Ce code donne ceci :

On voit que les valeurs obtenues sur excel ne sont pas identique à celles du code ...
Quelqu'un voit où se trouve l'erreur ?
Nous on tourne en rond ...
Merci
Les fichiers sont disponibles au DL ici :
https://www.catupload.com/download/9b78 ... 57833.html