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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
| "use strict";
//cache tous les contenants
function cacheTout() {
'use strict';
$(".contenant").hide();
}
//montre les contenants de la liste
function montre(liste) {
'use strict';
var i;
for (i = 0; i < liste.length; ++i) {
$("#" + liste[i]).show();
}
}
//table d'association pour les unités de mesures
var unitesPossibles = {
temp : ["°C", "°F", "°K"],
vent : ["km/h", "m/s", "kts"],
visibilite : ["km", "m"],
pression : ["hPa", "bar"]
}
//table d'association pour choisir les unités [x] index du tableau des unitesPossibles
var unitesChoisies = {
temp : 0,
vent : 0,
visibilite : 0,
pression : 0
}
//table d'association des valeurs
var valeursCourantes = {
temp : -42,
vent : 10,
visibilite : 5,
pression : 1013,
nuage : "gris"
}
//lecture d'un document xml et affichage dans la console
function litDonnees() {
var donnees, deferred = $.Deferred();
$.get("donnees.xml", function(xmlDocument) {
$(xmlDocument).find("meteo").each (function() {
valeursCourantes.vent = $(this).find("vent").text();
valeursCourantes.pression = $(this).find("pression").text();
valeursCourantes.temp = $(this).find("temp").text();
valeursCourantes.visibilite = $(this).find("visibilite").text();
valeursCourantes.nuage = $(this).find("nuage").text();
donnees = {
vent: valeursCourantes.vent,
pression: valeursCourantes.pression,
temp: valeursCourantes.temp,
visi: valeursCourantes.visibilite,
nuage: valeursCourantes.nuage
};
deferred.resolve(donnees);
});
}, "xml");
return deferred.promise();
}
//Extraction des données avec $.when $.then :
var data=$.when(litDonnees()).then(function(d){
valeursCourantes.vent = d.vent;
valeursCourantes.pression = d.pression;
valeursCourantes.temp = d.temp;
valeursCourantes.visibilite = d.visibilite;
valeursCourantes.nuage = d.nuage;
/*console.log('d.vent :',d.vent
,', d.pression :',d.pression
,', d.temp :',d.temp);*/
});
console.log(valeursCourantes.vent);//affiche 10, devrait afficher 41
console.log(valeursCourantes.pression);//affiche 1013, devrait afficher 1040
console.log(valeursCourantes.temp);//affiche -42, devrait afficher -6
console.log(valeursCourantes.visibilite);//affiche 5, devrait afficher 4.2
console.log(valeursCourantes.nuage);//affiche gris, devrait afficher apocalypse
//calcul et renvoi le vent en fonction de l'unité choisie
function valeurVent() {
'use strict';
if (unitesChoisies.vent === 0) {
console.log(valeursCourantes.vent);
return valeursCourantes.vent;
}
if (unitesChoisies.vent === 1) {
return valeursCourantes.vent / 3.6;
}
return valeursCourantes.vent / 1.852;
}
//calcul et renvoi la pression en fonction de l'unité choisie
function valeurPression() {
'use strict';
if (unitesChoisies.pression === 0) {
console.log(valeursCourantes.pression);
return valeursCourantes.pression;
}
return valeursCourantes.pression / 1000;
}
//calcul et renvoi la température en fonction de l'unité choisie
function valeurTemp() {
'use strict';
if (unitesChoisies.temp === 0) {
console.log(valeursCourantes.temp);
return valeursCourantes.temp;
}
if (unitesChoisies.temp === 1) {
return (valeursCourantes.temp * 9 / 5) + 32;
}
return valeursCourantes.temp + 273.15;
}
//calcul et renvoi la visibilite en fonction de l'unité choisie
function valeurVisibilite() {
'use strict';
if (unitesChoisies.visibilite === 0) {
console.log(valeursCourantes.visibilite);
return valeursCourantes.visibilite;
}
return valeursCourantes.visibilite / 1000;
}
//calcul et renvoi la couverture nuageuse.
function valeurNuage() {
'use strict';
console.log(valeursCourantes.nuage);
return valeursCourantes.nuage;
}
function afficher() {
'use strict';
$("#vent").find(".contenu").text(valeurVent());
$("#vent").find(".unite").text(unitesPossibles.vent[unitesChoisies.vent]);
$("#pression").find(".contenu").text(valeurPression());
$("#pression").find(".unite").text(unitesPossibles.pression[unitesChoisies.pression]);
$("#temp").find(".contenu").text(valeurTemp());
$("#temp").find(".unite").text(unitesPossibles.temp[unitesChoisies.temp]);
$("#visibilite").find(".contenu").text(valeurVisibilite());
$("#visibilite").find(".unite").text(unitesPossibles.visibilite[unitesChoisies.visibilite]);
$("#nuage").find(".contenu").text(valeurNuage());
}
$(document).ready(function() {
cacheTout();
montre(["temp", "vent", "visibilite", "pression", "nuage"]);
//litDonnees();
afficher();
}); |
Partager