Modele de donnees
GridModel
GridModel contient tout ce qui concerne les donnees et la disposition de la grille :
Creer un modele
Donnees en memoire
Cela encapsule le Vec<RowRecord> dans un VecDataSource en interne.
Source de donnees personnalisee
Couche de patches
Les valeurs de cellules editees sont stockees dans patches -- un HashMap<(u64, String), String>
associant (row_index, col_key) a la nouvelle valeur. Les patches priment sur la
source de donnees sous-jacente, ce qui signifie que l'edition fonctionne meme avec des
sources en lecture seule comme FnDataSource.
DataSourceMode
En mode ServerSide, apply_sort() et apply_filter() deviennent des no-ops --
c'est le serveur qui est responsable de renvoyer les donnees deja triees/filtrees.
Correspondance lignes logiques / lignes physiques
Lorsqu'un tri ou un filtrage est actif, l'ordre d'affichage differe de l'ordre dans la source de donnees :
model.logical_to_physical(logical_row) resout cette correspondance :
- Si
filtered_indicesn'est pas vide → utiliser ces indices (deja tries) - Sinon si
sort_ordern'est pas vide → utiliser cet ordre - Sinon → identite (logique == physique)
Gouttiere des numeros de lignes
La largeur de la gouttiere des numeros de lignes est calculee automatiquement en fonction du nombre de chiffres du plus grand numero de ligne :
Cela garantit que la gouttiere est toujours assez large pour afficher tous les numeros de lignes sans troncature.