Skip to content

feat(vis): add Profession filter and optimizations

Enzo Doyen requested to merge prof-filter into main

PR pour corriger #1 (closed).

Résumé des modifications

Parmi les changements majeurs :

  • j'ai quelque peu modifié la manière dont les colonnes s'affichent pour les données des personnages. L'ancienne implémentation rendait difficile l'ajout de nouvelles colonnes. Ça devrait être mieux maintenant. J'ai fait un test avec des colonnes supplémentaires factices, voici le résultat :
  • j'ai implémenté les filtres pour Profession. Il a fallu changer un peu l'implémentation puisque l'ancienne reposait en partie sur l'association avec les abréviations (dans filter_map.json), mais pour résumer les changements :
    • ajout d'une entrée "normalizedProfession": $("#filter-profession-values") au dictionnaire global filterEls
    • ajout d'un array vide normalizedProfession: [] à defaultCharFilters (idem dans resetFilers())
    • prise en charge du filtrage en ajoutant la clé à enableFilterBtns. Mais en me repenchant dessus je ne suis pas satisfait de l'implémentation de la fonction, c'est très brouillon et très "bug-prone"... Il faudra que je revienne dessus à l'occasion.
    • dans le HTML : ajout d'une section filter-profession dans vis-container.html (et l'ancien filter-profession, qui contenait en fait les Profession Groups, a été renommé filter-prfgrp ; idem dans le code TypeScript).

Points à discuter

Toutefois, la liste nouvellement implémentée de normalizedProfession ("Profession") pose quelques soucis :

  • il semble y avoir beaucoup d'items, et donc beaucoup de boutons, ce qui ne rend pas la liste très navigable. J'imagine que la meilleure solution serait d'avoir un dropdown à la place des boutons (comme pour les auteurs/éditeurs). Qu'en penses-tu @ruizfabo ?
  • de même, les labels sont très longs, mais ce serait corrigé avec un dropdown.

La PR contient aussi pas mal d'autres changements mais qui ne sont pas directement liés à l'implémentation de normalizedProfession ; notamment, des améliorations au niveau de l'optimisation et de la lisibilité (surtout pour filterCharacters, filterPlays), et une meilleure détection des erreurs.

Question : dans les valeurs possibles pour normalizedProfession, on a « n/a » et « unknown ». Est-ce que ces deux valeurs font référence à la même chose ? J'imagine qu'il n'y a pas forcément besoin de les traiter comme des valeurs invalides (il n'y a p-ê pas de professionalGroup pour chaque normalizedProfession), mais si les deux valeurs signifient la même chose, il pourrait être préférable de joindre les deux (faisable en modifiant le script Python de conversion).

Edited by Enzo Doyen

Merge request reports