4 pièce(s) jointe(s)
Projet collaboratif / Intégration fonction / Extraction données vers fichier avec formatage
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 : Pièce jointe 348564
L'implémentation de la checkbox 'Local Time' et du bouton '.GPX' sur popup.html donne ceci :
Code:
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 :
Pièce jointe 348579
# 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:
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
Pièce jointe 348591
Via une regex, il me faut extraire les valeurs left et top des points dans le code source :
Pièce jointe 348596
Cette regex doit faire le travail ( elle fonctionne sur regex101 à vérifier si l'extension google chrome la comprend correctement )
Code:
/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:
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