feat(vis): add Profession filter and optimizations
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 dansresetFilers()
) - 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
dansvis-container.html
(et l'ancienfilter-profession
, qui contenait en fait les Profession Groups, a été renomméfilter-prfgrp
; idem dans le code TypeScript).
- ajout d'une entrée
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).