Row to Tree

Logo row-to-tree

Constat

Comme tous ceux qui utilisent des bases de données, je suis souvent confronté à devoir gérer dans une même table des objets liés entre eux par des relations de hiérarchie. Chaque élément de la table dispose d’un champ “identifiant du parent” permettant de savoir qui est son père.

Dans la partie “traitement de la donnée”, je dois traiter ces éléments au sein d’un arbre hiérarchique, et je dois donc opérer une transformation d’une structure en une autre.

Problématique

J’ai tout d’abord cherché une bibliothèque qui me permettait d’effectuer cette transformation, en Javascript, naturellement. Je n’en ai trouvé aucune qui produise exactement le résultat attendu et qui permettait de paramétrer des options comme je l’attendais. Il me fallait également quelque chose qui fonctionne côté client et côté serveur, avec un code simple sans aucune dépendance.

Solution

J’ai développé ma propre fonction Javascript et l’ai mise en source ouverte sur npm afin que quiconque fait face au même problème puisse disposer d’une fonction prête à l’emploi. Une démonstration est possible en ligne afin de tester le produit.

Enrichissements

Après avoir mis en place ma solution, j’ai réalisé des tests de comparaison (“benchmarks”) entre différents modules npm qui pouvaient réaliser une partie de que j’avais codé. J’ai décelé des axes d’amélioration et ai fini par minimiser la complexité pour obtenir un algorithme en O(n), donc linéaire, et ainsi offrir un code avec une performance optimisée.

Ce projet m’a permis de mettre à disposition pour la première fois une fonction à disposition du public en source ouverte, apportant ma modeste contribution à l’édifice de l’open source. J’en ai profité pour prendre la résolution de davantage contribuer à différents codes.

DEMO SOURCE