Il faut d'abord pouvoir disposer de nos variables en Javascript.
Pour cela on déclare dans WsWin un fichier texte "custom" qui permettra à WsWin de générer sur notre serveur un fichier contenant les variables Javascript.
Je vais prendre un exemple simple pour illustrer ce tuto en déclarant les variables de moyennes de pluies du premier trimestre.
Le fichier texte se nomme (par exemple)
varwswin.txt, sont contenu est :
Code : Tout sélectionner
<!-- %customfile=varwswin.js% -->
%unit_off%
var rain_mpast01 = "%rain_mpast[01~0000]%,%rain_mpast[01~-001]%,%rain_mpast[01~-002]%,%rain_mpast[01~-003]%,%rain_mpast[01~-004]%,%rain_mpast[01~-005]%,%rain_mpast[01~-006]%,"+
"%rain_mpast[01~-007]%,%rain_mpast[01~-008]%,%rain_mpast[01~-009]%,%rain_mpast[01~-010]%,%rain_mpast[01~-011]%,%rain_mpast[01~-012]%,%rain_mpast[01~-013]%,"+
"%rain_mpast[01~-014]%,%rain_mpast[01~-015]%,%rain_mpast[01~-016]%,%rain_mpast[01~-017]%,%rain_mpast[01~-018]%,%rain_mpast[01~-019]%,%rain_mpast[01~-020]%"
var rain_mpast02 = "%rain_mpast[02~0000]%,%rain_mpast[02~-001]%,%rain_mpast[02~-002]%,%rain_mpast[02~-003]%,%rain_mpast[02~-004]%,%rain_mpast[02~-005]%,%rain_mpast[02~-006]%,"+
"%rain_mpast[02~-007]%,%rain_mpast[02~-008]%,%rain_mpast[02~-009]%,%rain_mpast[02~-010]%,%rain_mpast[02~-011]%,%rain_mpast[02~-012]%,%rain_mpast[02~-013]%,"+
"%rain_mpast[02~-014]%,%rain_mpast[02~-015]%,%rain_mpast[02~-016]%,%rain_mpast[02~-017]%,%rain_mpast[02~-018]%,%rain_mpast[02~-019]%,%rain_mpast[02~-020]%"
var rain_mpast03 = "%rain_mpast[03~0000]%,%rain_mpast[03~-001]%,%rain_mpast[03~-002]%,%rain_mpast[03~-003]%,%rain_mpast[03~-004]%,%rain_mpast[03~-005]%,%rain_mpast[03~-006]%,"+
"%rain_mpast[03~-007]%,%rain_mpast[03~-008]%,%rain_mpast[03~-009]%,%rain_mpast[03~-010]%,%rain_mpast[03~-011]%,%rain_mpast[03~-012]%,%rain_mpast[03~-013]%,"+
"%rain_mpast[03~-014]%,%rain_mpast[03~-015]%,%rain_mpast[03~-016]%,%rain_mpast[03~-017]%,%rain_mpast[03~-018]%,%rain_mpast[03~-019]%,%rain_mpast[03~-020]%"
%unit_on%
Il va permettre à WsWin de générer à la fréquence choisie (toutes les minutes, toutes les heures, ...) le fichier
varwswin.js qui va contenir nos variables, ce qui donne ceci :
Code : Tout sélectionner
var rain_mpast01 = "119.2,135.4,46.8,34.4,79.8,84.8,91.6,"+
"29.4,--,--,--,--,--,--,"+
"--,--,--,--,--,--,--"
var rain_mpast02 = "58.2,63.0,14.0,40.6,35.4,11.8,15.6,"+
"110.0,--,--,--,--,--,--,"+
"--,--,--,--,--,--,--"
var rain_mpast03 = "0.0,86.6,42.0,28.0,51.0,26.6,74.6,"+
"64.0,--,--,--,--,--,--,"+
"--,--,--,--,--,--,--"
Quelques explications sont nécessaires :
- WsWin ne peux traiter que 10 tags maximum par ligne.
- Chaque variable contient 21 tags. Le premier est celui de l'année en cours (%rain_mpast[01~0000]%), le suivant celui de l'année précédente (%rain_mpast[01~-001]%) puis celui d'il y a 2 ans (%rain_mpast[01~-002]%) etc, jusqu'à celui d'il y a 20 ans (rain_mpast[01~-020]%)
- Dans ce cas là, 3 lignes sont donc nécessaires pour reconstituer la variable complète ce qui impose de les "assembler" en javascript avec le signe "+" en fin de ligne.
Une petite parenthèse pour dire que
la moyenne est plus précisément calculée sur les 20 dernières années et l'année en cours. Libre à vous d'adapter cette variable à vos besoins.
- La première variable, celle de l'année en cours, retourne "0.0" pour les mois qui ne sont pas encore commencés.
- Les années inexistantes (à partir de la 8éme année dans mon exemple puisque la station a enregistré des relevés depuis 2007) sont représentées par le signe "--".
Pour ne pas surcharger la page html, je crée un autre fichier Javascript qui va contenir mes différentes fonctions (meteo-anglade.js par exemple). Ces 2 fichiers sont déclarés dans ma page html comme ceci :
Code : Tout sélectionner
<!doctype html>
<head>
<script type="text/javascript" src="js/varwswin.js"></script>
<script type="text/javascript" src="js/mto-anglade.js"></script>
</head>
Voici la fonction dans le fichier
meteo-anglade.js :
Code : Tout sélectionner
// Calcul de la moyenne des données mensuelles d'une variable
// m_capteur = données enregistrées par la station pour une valeur mensuelle
// m_analyse = numéro du mois de la valeur mensuelle de 1 à 12
function statpast(m_capteur, m_analyse) {
// dispose-t-on des données du mois
// précédent ?
var d = new Date();
var m_courant = d.getMonth() + 1;
if ( (m_analyse >= m_courant) &&
(! ((m_analyse == 12) && (m_courant == 1)) ) )
{
if (m_analyse != m_courant) {
// le mois analysé n'est pas le mois courant
// le 0.0 éventuel doit être retiré
m_capteur = m_capteur.replace(/^0\.0,/,"");
} else {
// le mois analysé est le mois courant
// la mesure n'étant pas complète, on retire
// la première mesure
m_capteur = m_capteur.replace(/^\d+\.?\d*,/,"");
}
};
// capture des chiffres
var myRe = /(\d+\.?\d*)/g;
var myArray = m_capteur.match(myRe);
// calcul de la moyenne des précipitations
// contenues dans le tableau myArray
var moyenne = 0;
if (myArray.length > 0) {
for (var i=0; i<myArray.length; i++) {
moyenne = moyenne + Number(myArray[i]);
}
moyenne = (moyenne / myArray.length).toFixed(2);
} else {
// erreur, aucune précipitation détectée
moyenne = -1;
};
return moyenne;
};
Pour insérer une variable dans la page html il suffit d'appeler la fonction et la variable comme ceci par exemple :
Code : Tout sélectionner
<script>document.write ("Moyenne de janvier : "+statpast(rain_mpast01, 1)+" mm")</script>
La première variable est celle des valeurs du mois de janvier (rain_mpast01) la seconde est celle du numéro du mois de la variable (1 pour janvier, 2 pour février, etc).
A l'endroit où ce script sera inséré il sera écrit :
Moyenne de janvier : 77.67 mm
C'est cette fonction que j'utilise par exemple dans le tableau à cette adresse :
http://www.meteo-anglade.fr/mto-anglade-analyse.html#G1
J'espère que ce petit tuto est assez clair et qu'il pourra être utile à quelques-uns d'entre vous.
Cordialement
Laurent