Organiser les données de manière organisée sur Django

Lou - 23 août 2023 à 20:14
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 - 30 août 2023 à 12:32

Bonjour,

Je développe un projet sur Django qui a pour but d'afficher un tableau de bord contenant différents graphiques de données.

Ces données sont générées par le backend, composées de :

- un dictionnaire

- un second dictionnaire

- des données JSON spécifiques pour réaliser un schéma neuronaux

J'ai réalisé ces graphiques par le biais de Javascript, du type Chart.js, cytoscape.js, tableau simple, etc.

Je souhaite ajouter une autre fonctionnalité qui permet de filtrer les données, c'est à dire cacher ou afficher certaines des données sur les graphes. Ce filtre fonctionne soit avec un mot simple, soit par un type clé:valeur.

J'ai commencé à configurer le filtre sur le tableau, c'est assez simple. S'il y a qu'un seul mot, je garde toutes lignes qui contiennent le mot. Si on donne un clé:valeur, je garde toutes les lignes du tableau qui ont comme nom de colonne la clé et la valeur correspondante. Je réalise tout cela sous Javascript.

Par contre, pour les autres graphiques, cela me semble un peu plus complexe. C'est donc là que je me suis demandé s'il n'y avait pas une méthode plus optimisée pour ranger mes données ? Et ainsi réaliser le filtre. Car par exemple pour le graphique neuronaux, je suis obligé de parcourir l’entièreté du schéma, regarder les liens pour les clés, les valeurs, etc.

Pour l'instant, mon projet reste assez basique alors je voulais être sûr de partir sur des bonnes bases. Je me suis appuyé sur quelques projets sur github, qui réalisent leurs graphiques directement JS également, mais je n'ai pas forcément compris leurs architectures. Exemple : https://github.com/yogeshojha/rengine

J'ai aussi étudié Opensearch/ElasticSearch avec leurs moteurs de recherche, indexation, etc.

Est-ce que quelqu'un a des réponses à mes questionnements ?

1 réponse

mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
25 août 2023 à 15:36

Bonjour,

Je pense que d3js pourrait être ce que tu veux, c'est un module javascript communément utilisé pour visualiser des données. Intuitivement, il permet d'adapter dynamiquement l'arbre DOM en fonction des arrivées / mises à jour / départs d'objets d'une collection (au sens d3js). Mais attention, il n'est pas forcément aisé à prendre en main. De plus il faut être prudent quand tu cherches des exemples à ce qu'ils correspondent à ta version de d3js, car le framework a évolué (typiquement les collections).

Bonne chance

0

Bonjour,

Merci pour votre aide. Je vais regarder cet outil que je ne connais pas.

De mon côté, j'ai continué mes recherches afin de trouver la meilleure solution pour mon projet. Je pense que la façon dont j'envoie les donnés n'est pas la bonne. 

J'ai vu que Django proposé des filtres de recherche au niveau base de données, et également des outils d'indexation.

0
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748 > Lou
30 août 2023 à 12:32

Tout dépend d'où le filtrage doit être fait.

  • Si c'est côté serveur, django (PHP) est le plus indiqué.
  • Si c'est côté client, une solution basée sur javascript est plus indiquée.

Sois conscient que si tu optes pour un filtrage côté serveur, tu envoies une requête à chaque filtrage, ce qui entraîne une charge côté serveur (où tu récupères probablement une grande fraction de données identiques) + le délai de la requête. Si tu fais le filtrage en javascript, alors tu dois récupérer toute la donnée (avec un éventuel overhead), puis filtrer (mais ceci se fait quasiment instantanément puisque c'est local au navigateur). À toi de voir ce que tu veux faire...

0