Des données complexes à afficher
Dans le cadre de ce projet, Les données multidimensionnelles sont des écritures comptables dont les dimensions sont le plan comptable et les dates. Le plan comptable possède des groupes, chacun d’eux possède des sous-groupes et/ou des comptes. Le calendrier est hiérarchisé en autant d’unité de temps nécessaires: Année – Trimestre – Mois – Semaine – etc. Une écriture comptable contient une date et appartient à un compte. La mesure à représenter est le calcul du montant total des écritures d’un groupe ou d’un compte dans une fourchette de temps donnée. Cette mesure doit pouvoir être calculée puis affichée le plus simplement possible dans une fenêtre permettant la navigation dans le plan comptable et dans les unités de temps. L’outil doit pouvoir interpréter les données sous format JSON. Les données du projet sont rassemblées dans 4 fichiers différents.
Choix de la représentation des dimensions hiérarchiques
Le défi principal de ce projet est d’obtenir une interface dynamique, ergonomie et fluide pour afficher les données évoquées précédemment. Tout d’abord, nous avons cherché un moyen de représenter les dimensions hiérarchiques « plan comptable » et « temps ». Il doit être possible de naviguer dans l’arbre de chacune de ces deux dimensions pour sélectionner l’intervalle de temps (trimestre, année..) et un élément du plan comptable pour filtrer les écritures et calculer les montants totaux de celles-ci. En raison de cette contrainte, il a été choisi d’afficher les dimensions hiérarchiques comme des partitions ouvrables et fermables. En cliquant sur la case représentant une dimension, celle-ci doit pouvoir se partitionner pour laisser apparaître d’éventuels éléments fils. En cliquant à nouveau sur case développée, les éléments fils disparaissent La figure 8 explique l’enchainement de ces actions et leur répercussion sur l’affichage des dimensions. En intégrant dans un tableau croisé les dimensions hiérarchiques, les entêtes des lignes et des colonnes peuvent être partitionnées. Figure 8 : Représentation schématique du tableau croisé avec les entêtes Sur l’axe vertical, les groupes et les comptes sont affichés. Sur l’axe horizontal, les unités de temps. Cette représentation a l’avantage d’être familière et simple d’utilisation, car il suffit de cliquer sur les cases pour descendre ou remonter dans l’arbre et mettre à jour les montants. Cependant, la taille du tableau peut rapidement devenir problématique si les dimensions hiérarchiques ont beaucoup d’éléments fils. Pour éviter ce problème, une solution est de n’afficher qu’une vue partielle du tableau et de laisser l’utilisateur s’y déplacer pour afficher les informations dont il a besoin.
Utilisation de la molette Quand l’utilisateur clique sur l’entête des lignes ou des colonnes pour développer ou réduire les dimensions hiérarchiques, des informations apparaissent ou disparaissent dans le tableau. Là cellule active peut disparaître ou ne plus être au centre. Pour que l’utilisateur ne perde pas sa position dans le tableau, il faut qu’il puisse développer ou réduire les dimensions sans cliquer dessus. Une idée intuitive est d’utiliser la molette de la souris, car celle-ci est souvent utilisée pour « zoomer » ou « dézoomer ». Une rotation de la molette vers le bas développe les dimensions de la cellule active et une rotation vers le haut les réduit. Ci-dessous, un exemple de mouvement dans l’arbre d’une dimension hiérarchique à l’aide de la molette. Lors d’un développement d’une branche, tous les fils de celle-ci sont visibles, mais le premier est sélectionné. Lors d’une fermeture d’une branche, tous les fils de la branche parente sont cachés. Afin de rendre l’action indépendante pour chaque dimension, « Shift + Molette » est utilisé pour naviguer dans la dimension calendrier et la molette seule pour la dimension du plan comptable.
Les cellules du tableau affichent le total des montants des écritures comptables d’un groupe ou d’un compte pour une fourchette de date donnée. Comme les écritures comptables ne sont pas visibles directement, il faut un moyen de les afficher. Le tableau étant de taille fixe, il est difficile de dégager de l’espace pour présenter les écritures comptables. De ce fait, la solution la moins contraignante est de mettre en place une nouvelle fenêtre d’affichage où sont listées les écritures comptables de la cellule active. Cette fenêtre est amovible afin de permettre à l’utilisateur de choisir sa position et ainsi palier au problème d’espace. Lors d’un changement de cellule active, les écritures comptables se mettent à jour dans cette fenêtre. 3.3 Bilan des solutions existantes Les solutions gratuites et les solutions payantes ne proposent pas la gestion de véritable dimensions avec des hiérarchies; les dates et des « sous-dates » (Année – Trimestre – Mois) sont simulées avec plusieurs filtres superposés. Pour gérer nos données hiérarchiques telles que le plan comptable, il faudrait alors ajouter des attributs fixes « groupe niveau1 », « groupe niveau 2 », « groupe niveau 3 », etc, ce qui enlève l’avantage des dimensions hiérarchiques.
La fluidité fait défaut à la plupart des solutions qui ont un délai de chargement à chaque action. Seules RadarCube et Wijmo Olap proposent des interactions avec les données calculées du tableau, pour afficher les détails ou des statistiques. Plusieurs solutions offrent les possibilités d’exporter le tableau en xls ou en PDF mais c’est RadarCube qui est plus complet que les autres en offrant la possibilité de sauvegarder l’état du tableau. Aucunes des solutions ne propose un système ressemblant exactement à nos besoins. Les meilleures solutions adaptables à nos besoins s’avèrent payantes. Leur prix élevé justifie l’élaboration d’une nouvelle solution. S’il fallait retenir des idées d’amélioration pour notre futur prototype, il s’agirait en priorité de pouvoir gérer les dimensions que l’on souhaite avoir en entête des colonnes et lignes et par conséquent de pouvoir en importer plus de 2. Il serait également intéressant de pouvoir gérer des dimensions autres que celle d’un plan comptable et de pouvoir exporter le tableau en xls ou en pdf.
Conclusion
Si les tableaux croisés dynamiques sont dans la plupart des cas adaptés pour traiter des données multidimensionnelles, ils ne conviennent pas à tous les types de dimensions hiérarchiques. Il convient de différencier les dimensions hiérarchiques de longueur définie et celle de longueur indéfinie comme dans notre projet. Si le premier cas est traité soit par une hiérarchisation de plusieurs dimensions différentes (catégorie – sous-catégorie) ou de manière automatisée suivant les solutions (dates affichées de manière hiérarchique), le second cas, avec le nombre de niveau indéfini, crée une problématique qu’aucune des solutions évaluées ne résout. Pourtant, pouvoir afficher notre type de dimension complexe s’avère très utile, notamment pour l’affichage d’un plan comptable comme il est le cas dans ce travail. De ce fait, la création d’un prototype qui répond spécifiquement aux besoins est justifiée.
Si celui-ci n’est pas exempte de défauts, il a le mérite d’apporter une solution à l’affichage de nos dimensions hiérarchiques. Il pourrait être intéressant de terminer complètement le prototype pour pouvoir le mettre à disposition en open-source pour évaluer les besoins de la communauté. La principale difficulté de ce travail a été d’avoir à trouver la manière la plus précise, mais toujours compréhensible, d’expliquer la problématique des données multidimensionnelles à dimensions hiérarchiques. Cette étude m’a permis d’améliorer mes connaissances dans ce domaine. Le développement du prototype m’a été très enrichissant, tout d’abord par l’utilisation du langage Type Script et aussi par l’utilisation de concepts avancés de programmation, tels que la récursivité ou le polymorphisme, étudiés tout au long de mon parcours académique. Pour finir, la réalisation de ce mémoire fut passionnante, il clôt de manière positive mon cursus à la HEG. Ce fût une expérience très enrichissante qui, nulle doute, me servira lors de mon futur parcours professionnel.
|
Table des matières
1. Introduction
2. Besoins et réflexion
2.1 Des données complexes à afficher
2.2 Choix de la représentation des dimensions hiérarchiques
2.3 Affichage partiel du tableau
2.4 Utilisation de la molette
2.5 Affichage des écritures
3. Recherche de solutions existantes
3.1 Solutions gratuites
3.1.1 PivotTable JS
3.1.2 orb.js
3.2 Solutions payantes
3.2.1 Ignite UI – igPivotView
3.2.2 DevExtreme – PivotGrid
3.2.3 Radar Cube
3.2.4 PivotGrid – Kendo UI
3.2.5 Wijmo Olap
3.3 Bilan des solutions existantes
4. Réalisation du prototype
4.1 Choix des technologies
4.1.1 JQuery
4.1.2 TypeScript
4.2 Implémentation
4.2.1 Diagramme UML des classes
4.3 Calcul des montants
4.4 Initialisation des instances à partir des fichiers JSON
4.5 Déplacement du tableau des montants
4.6 Affichage et fermeture des éléments fils
5. Utilisation du prototype
5.1 Pré-requis
5.2 Paramètres Représentation fluide de données multidimensionnelles dans un client riche Dallinge, Adrien
5.3 Exemple d’utilisation
6. Visuels du prototype
7. Conclusion
Bibliographie
Télécharger le rapport complet