Bonjour � tous,
J'ai un exercice un peu p�rilleux car je dois comparer deux, trois ou quatre arrays et faire en sorte qu'elles soient identique. Mais surtout que les changements soient report�s dans une autre array, en respectant l'ordre.
Je m'explique. Je prends des mesures toutes les heures sur un terrain qui sont affich�es sur un graphique � deux axe gr�ce � chartsjs. Mais des fois, un capteur peut �tre en panne, ou ne pas avoir le m�me nombre de valeurs dans un espace de temps.
Par exemple, je prends la temp�rature du sol et de l'air. Mon barom�tre �tait aujourd'hui en panne et je l'ai remplac�. Donc dans la journ�e j'avais six mesures de l'air (dont 3 le matin et trois le soir, et 24 mesure du sol. Dans ce cas, chartjs, m'affiche un peu n'importe comment.
Ceci parce que dans l'array de la temperature de l'air j'ai 6 index de 0 � 5.
Et dans l'array de la temperature du sol, j'ai 24 index de 0 � 23.
Donc si je parcours les deux arrays, depuis l'index 0 � 2, les heures vont correspondre, mais ensuite, il y a une incoh�rence dans l'affichage des valeurs en fonction du temps.
L'id�e est de comparer les arrays et de fusionner les valeurs.
Mais attention, c'est plus compliqu� que cela car il peut avoir 3 voir 4 array.
Mais surtout, si des dates sont ajout�es dans l'array de gauche, il faut aussi que des valeurs de 0 soient ajout� dans une autres tables, au m�me index.
Voici plus de pr�cisions
Si je reprends mon exemple de la temp�rature du sol et de l'air, la temp�rature du sol est affich� dans mon axe Y de gauche, et la temperature de l'air sera affich� dans mon axe Y de droite.
Pour bien suivre mon probl�me, rendez vous sur cette page
http://www.smart-idea.io/perrieres/
S�lectionner les dates de 03-09-2018 � 05-09-2018, et s�lectionner la station 2 et regarder le graph Temp�rature.
(apr�s avoir s�lectionner les dates, faite peut-�tre un ctrl+r, pour avoir un console log un peu plus all�g�
)
J'ai fais un console.log
console.log("Temperature Success:",data);
Je continue mon explication.
Si vous d�veloppez "temp�rature success", il y a deux objets.
Le premier objet correspond � la temp�rature de l'air dont les valeurs seront affich�es sur mon axe Y de gauche car 'y-axis-0'
Le deuxi�me objets correspond � la temp�rature du sol dont les valeurs seront affich�s sur mon axe Y de droite car 'y-axis-1'
Vous pouvez d�j� constater 'labels' o� sont les dates et heures.
Dans le premier objet, il y a 5 index, dans le deuxi�me objet, il y a 36 index (donc pas 24, car j'ai red�marrer ma station 8 fois)
Si vous observer l'index 1 de mon deuxi�me objet, la date est '2018-09-03 19:26:42' mais cette date ne figure pas dans mon premier objet.
Il faudrait qu'elle figure aussi � l'index 1 et d�caler les autres valeurs. Donc index 1 devient index 2 pour donner la place de '2018-09-03 19:26:42' � l'index 1. Mais il faut surtout que dans le premier l'objet , sous datasets->data que l'index 1 devient aussi index 2 pour que l'index 1 prenne la valeur de 0. (0 car aucune valeur est mesur�e � ce moment l�)
C'est tr�s important que la valeur correspondant � une date, ait le m�me index. Voyez-vous le probl�me?
Mais ca se complique car si vous regarder le graphique "humidit� du sol", il y a 3 m�me capteurs d'humidit� du sol (plant�s � des profondeurs diff�rentes) dont les valeurs s'affichent dans l'axes Y de gauche, et dans l'axe Y de droite, il y a un compteur de goutte. Ce qui fait 4 objets dont trois avec 'y-axis-0' et un avec 'y-axis-1'. Et plus tard, il y aura 5 objets car dans l'axes Y de droite, il y aura les valeurs d'un compteur de goutte et un pluviom�tres.
J'esp�re que j'ai �t� bien explicite explicite?
Vous avez compris qu'il aie deux ou 6 objets, il faut toujours que mes array 'labels' et 'data' ont les m�mes tailles.
S'il manque une date � un array/objet , donc aussi une valeur dans 'datasets->data', il faudrait ajouter un index dans 'labels' avec la date correspondante aux autres et ajouter la valeur de 0 dans datasets->data et que l'index de cette valeur correspond � l'index de 'labels'.
Ouha, voyez-vous? ai-je �t� claire? m'avez-vous compris? et derni�re question, comment je peux donc comparer, fusionner et injecter une valeur dans une autre array en gardant une correspondance au niveau des index?
Milles mercis pour vos mumi�res
P.
Partager