Bonjour à tous,
J'ai un bout de code qui marche mais jusqu'à ce des nouvelles variables s'ajoute.
Je vais essayé d'être le plus claire possible.
J'extrais d'un base de donnée, des mesures qui sont classé par type. Voici les types existants
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 const rules = new Map([ ['hu', 0], ['pr', 0], ['wm', 1], ['te', 1], ['ra', 2], ['pl', 2], ['vi', 3], ['di', 3], ['ba', 4], ]);
Ci-dessus, j'utilise cette règle pour afficher
dans le premier graphique, l'humidité et la pression
dans le deuxième, l'irrigation et la pluie
dans le troisième, la radiation solaire et la température
dans le quatrième, la vitesse et la direction du vent
et dans le dernier, le niveau de la batterie.
Mais depuis et selon la saison des mesures ne sont pas prises et surtout selon la station.
Par exemple, une station ne mesure que l'irrigation, la température et la batterie. Dans ce cas, j'aimerais avoir cette ordre
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 const rules = new Map([ ['wm', 1], ['te', 1], ['ba', 2] ]);
En hiver, certaines station, ne mesure que la température et la batterie
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 const rules = new Map([ ['te', 1], ['ba', 1] ]);
A partir de là, je ne sais absoluement pas comment je peux rendre ma règle dynamique mais j'ai compris pour que le reste de mon code fonctionne, il faut éviter d'avoir des sujets qui ne seront pas afficher dans ma page. Par exmple, si ma station qui mesure l'irrigation, ceci bugera
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 const rules = new Map([ ['hu', 0], ['pr', 0], ['wm', 1], ['te', 1], ['ra', 2], ['pl', 2], ['vi', 3], ['di', 3], ['ba', 4], ]);
car les lignes 1,3,4 sont inconnues du resultat de ma requete MySQL
Voici le code qui ext exécuté quand ma requete AJAX/MySQL est réussie
Code javascript : 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
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 success: function (data) { console.log("data:",data); for(const c in data){ console.log(data[c].chartContainer); // Affiche tous les type disponible (te, hu, pr, wm, etc...) } const rules = new Map([ ['hu', 0], ['pr', 0], ['wm', 1], ['te', 1], ['ra', 2], ['pl', 2], ['vi', 3], ['di', 3], ['ba', 4], ]); // on construit à l'avance avec des tableaux // vides les index qui seront remplis. const d_atas = [[], [], [], [], []]; for (const plen in data) { const cc = data[plen].chartContainer; if ( rules.has(cc) ) d_atas[rules.get(cc)].push(data[plen]); } console.log("d_datas", d_atas); // console.log("d_atas: ", d_atas); $('#charts div').remove('.containerChart'); for(var le in Object(d_atas)) { if(d_atas[le].length > 0){ //console.log(le+': ', d_atas[le]); // If does not exist if ($('#charts .containerChart-' + le).length == 0 ) { $('#charts').append('<div id="containerChart-' + le + '" class="containerChart"><canvas id="canvas-' + le + '" class="canvas"></canvas></div>') var ctx = document.getElementById('canvas-' + le).getContext('2d'); if(d_atas[le].length > 1){ var conf = Charts.config_multiAxies(stationID,d_atas[le]); } else { var conf = Charts.config(stationID,d_atas[le]); } mychart = new Chart(ctx, conf); } } } }
J'aimerais avoir votre aide pour me dire comment je pourrais construire
en fonction des types extraites de la base de donnée.
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part const rules = new Map([????]);
Par exemple, pour la station bourgeon, ca sera
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 const rules = new Map([ ['te', 1], ['ba', 1] ]);
Pour la station météo, ca sera
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 const rules = new Map([ ['hu', 0], ['pr', 0], ['pl', 1], ['te', 1], ['ra', 2], ['ba', 2], ['vi', 3], ['di', 3] ]);
Attention, il se peut que des sondes soient inactives pour certaines stations, comme vi, di, pl, ra
Pour mes stations irrigation, ca sera
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 const rules = new Map([ ['wm', 1], ['te', 1], ['ba', 2] ]);
Ceci est important car chaque ligne, correspond à un graphique qui affichera une ou deux type de mesure.
Par exemple:
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 const rules = new Map([ ['hu', 0], ['pr', 0], // Premier graphique: humidité et pression ['pl', 1], ['te', 1], // Deuxième graphique: pluie et température ['ra', 2], ['ba', 2], // Troisième radiation solaire et batterie ['vi', 3], ['di', 3] // direction et vitesse du vent ]);
Que me sggerriez-vous de faire ou de faire autrement?
Milles mercis pour vos lumières
Partager