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

Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
const rules = new Map([????]);
en fonction des types extraites de la base de donnée.

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