Bonjour,

Une nouvelle fois je me tourne vers le forum car je suis complètement bloqué ...

J'ai un code existant encapsulé dans une extension google chrome à laquelle je souhaiterais ajouter 2 améliorations, j'espère trouver ici de l'aide et des conseils.

L'extension agit sur l'url suivante http://zezo.org/mc/chart.pl?.

Voici les fichiers sources qui la compose : Route zezo v2.9.1.zip

L'implémentation de la checkbox 'Local Time' et du bouton '.GPX' sur popup.html donne ceci :

Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<div style="float:left;">
   <input type="checkbox" id="localtime">
   <label>Local Time</label>
</div>
<div style="float:right;">
   <label>Version</label>
   <label id="version"></label>
</div>
<div style="margin:0 auto;text-align: center;">
   <input type="button" value=".GPX" onclick="file_gpx()">
</div>

et donne ceci :

Nom : Capture d’e?cran 2018-02-05 a? 09.46.07.png
Affichages : 78
Taille : 20,6 Ko

# Checkbox 'Local Time':
Passe le temps UTC en temps locale, la fonction je l'ai créé et elle est 100% fonctionnelle pour n'importe quel fuseau horaire, la voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var dt_utc = [2018,2,25,0,59]; //CET -> CEST in 1 min
//var dt_utc = [2018,2,25,1,0]; //CEST OK
//var dt_utc = [2018,9,28,0,59]; //CEST -> CET in 1 min
//var dt_utc = [2018,9,28,1,0]; //CET OK
 
function CltDTZ (dt_utc) {
var d = new Date(Date.UTC.apply(null, dt_utc));
var o = -d.getTimezoneOffset(), t = Math.abs(o);
var s = (o < 0) ? "-" : "+";
var h = Math.trunc(t) / 60;
var mh = (h == 0) ? "" : s + h;
var m = t % 60;
var hm = (m == 0) ? mh : s + h + ':' + m;
var Y = d.getFullYear();
var M = ("0"+ (d.getMonth() + 1)).slice(-2);
var D = ("0" + d.getDate()).slice(-2);
var HH = ("0" + d.getHours()).slice(-2);
var MM = ("0" + d.getMinutes()).slice(-2);
return Y + "-" + M + "-" + D + " " + HH + ":" + MM + " " + "UTC" + hm;
};
document.write (CltDTZ(dt_utc)); //2018-03-25 01:59 UTC+1
la variable dt_utc contient les paramètres date et time extrait du code source et alimente la fonction CltDTZ "Client Date Time timeZone", la mise en oeuvre est pour moi le flou artistique complet.

# Bouton '.GPX':
Extrait la latitude et longitude des points listés pour créer une route exploitable dans d'autres logiciels de routage ou viewer style google earth
Le but est de comparer les routes issus de différents algorithmes de routage.

Pour ce faire, il me faut récupérer la valeur de la variable scale dans le code source

Nom : Capture d’e?cran 2018-02-05 a? 10.06.02.png
Affichages : 75
Taille : 73,3 Ko

Via une regex, il me faut extraire les valeurs left et top des points dans le code source :

Nom : Capture d’e?cran 2018-02-05 a? 10.12.25.png
Affichages : 80
Taille : 91,2 Ko

Cette regex doit faire le travail ( elle fonctionne sur regex101 à vérifier si l'extension google chrome la comprend correctement )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
/z-index: 1; left :([0-9]{1,}|[-][0-9]{1,})px; top:([0-9]{1,}|[-][0-9]{1,})px/g
Avec ces 2 formules, je suis en mesure de déterminer la latitude "left" et la longitude "top"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
lat = 90 - ((value_left + 2)/ scale)
lon = if (((value_lon + 2) / scale) <= 180){
     var lon = (value_lon + 2) / scale;
   } else {
     var lon = ((value_lon + 2) / scale) - 360;
}
Ici aussi la mise en œuvre est un grand flou artistique ... reste le formatage spécifique pour la création du fichier .gpx

J'espère que le projet séduira quelques uns d'entre vous et que vous m'aiderez à sortir de cette impasse.

Si vous avez des questions, n'hésitez pas je suis très réactif ( je réponds pas 3 jours après )

Merci d'avance

Cdlt

Romain