Notes de version 4.1
Notes des versions 4.1.x du framework Lagoon, de la plus récente à la plus ancienne. Les versions marquées ⚠ contiennent des changements de rupture. Les autres versions sont listées sur la page Notes de version.
Version 4.1.1
Version corrective : démarrage des applications console (batch) en .NET 10 et mises à jour mineures de dépendances.
Corrections
- Batch : une application console ne s'arrête plus au démarrage sur
AmbiguousMatchException: Multiple properties or methods match the name GetVersion. L'erreur survenait à la construction de l'hôte, avant toute commande (--versioncompris) : en .NET 10 pour toute classeMaindérivant deLgApplicationou deLgApplication<TDbContext>, en .NET 8 seulement si l'application redéfinissaitGetVersion(). Cette méthode reste redéfinissable pour personnaliser le texte affiché par--version.
Sécurité
Aucune vulnérabilité de dépendance n'est corrigée par cette version : les montées de version ci-dessous sont des
correctifs fonctionnels. Le runtime .NET 10.0.13 reste requis sur les serveurs (voir la section Sécurité de la
version 4.1.0). Les applications qui fournissent leur propre Chrome à Lagoon.PDF (Lagoon:Puppeteer:ExecutablePath)
doivent le maintenir à jour (Chrome 155.0.8059.84 ou plus récent).
Dépendances
- Mises à jour : Swashbuckle.AspNetCore 10.3.1 (corrige notamment une
AmbiguousMatchExceptionsur les paramètres[FromQuery]à la génération du document OpenAPI), AWSSDK.S3 4.0.104.5.
Version 4.1.0 ⚠
Version mineure : refonte de LgListView (tri, filtres, pagination, données distantes, glisser-déposer), validation des lignes et sélection de LgGridView, placeholders ${Clé} dans la configuration, utilisateurs sans stockage en base, chargement différé des bibliothèques Razor, .NET 10.0.13 et correctifs de sécurité.
LgListView : tri, filtres, pagination et données distantes ⚠
LgListView est réécrit sur le pipeline de données de LgGridView : la liste est alimentée par Items (local)
ou par un contrôleur [Queryable] via ControllerUri (filtrage, tri et pagination faits par le serveur, argument
métier ControllerQueryArg, annulation par l'utilisateur avec AllowCancellation). Voir la page
LgListView.
- Tri : les champs triables sont déclarés dans
SortOptionspar des composantsLgListViewSortdontSortSelectorest une expression typée (SortSelector="@(x => x.Name)", comme leSortSelectordes colonnes deLgGridView; le type de l'élément est déduit de la liste). La clé du tri est le chemin du membre, ouKeypour une expression calculée ;Textest facultatif (à défaut, le[Display]du membre puis la clé). Le tri initial est la déclaration marquéeIsDefault="true":DefaultSortPropertyest supprimé et, sans déclaration par défaut, la liste n'est pas triée au départ.OnSortChangedsignale chaque changement (Key,SortDirection, etSortssous la même forme queLgGridView). Le tri s'applique désormais aussi sans regroupement (il ne s'appliquait auparavant qu'aux listes groupées). - Filtres : nouvelle section
Filtersavec le composantLgListViewFilter(FilterSelector="@(x => x.Status)",Key,Text,Items), rendu avec la boîte de filtre deLgGridViewcorrespondant au type du membre (texte, numérique, date, heure, booléen, énumération, sélection de valeurs pour les autres types) ; l'onglet « Sélection » propose les valeurs de la source filtrées par les autres filtres. Panneau repliable dont la visibilité est liable en two-way (ShowFilters,DefaultShowFilters) et qui conserve les valeurs quand il est masqué, méthodeClearFiltersAsync. Comme pourLgGridView,OnFilterChangedfournit les filtres actifs par clé (Filters,HasFilters()) et n'est déclenché que lorsqu'ils changent, y compris à leur restauration. - Pagination :
AllowPaging,DefaultPageSize,PaginationSizeSelector(0= « Tout »),CurrentPage/CurrentPageChanged, et comme pourLgGridViewPaginationButtonCount,DisplayInputPageSelector,PagerOnTopet les compteurs liablesListViewDataCounter(ActiveRows,TotalPages,TotalRows). - Compteurs dans le titre : comme pour
LgGridView,{0}est remplacé dansTitlepar le nombre total d'éléments et{1}par le nombre d'éléments de la page affichée (Title="Projets ({0})"), y compris dans un titre traduit (#clé). Un compteur inconnu s'affiche...(avant le premier chargement, et pour{1}quand la page est vide) ; pendant un rechargement, les compteurs du dernier chargement restent affichés. - Virtualisation :
Virtualize/VirtualizeItemSize, combinable avecAllowPaging(les éléments de la page courante sont virtualisés). La liste défile avec le plus proche ancêtre défilant (le document par défaut) ; pour la faire défiler elle-même, donnez une hauteur etoverflow-y: autoà.list-view-virtualized. - Sélection : comme pour
LgGridView, elle est activée parSelectableRows;SelectedItemsest renomméSelection(ICollection<TItem>, créée si elle est omise). AvecKeyField, la sélection est comparée sur une propriété clé et survit au rechargement des éléments ; sansKeyField, une liste distante utilise la propriétéIddu modèle quand il en a une.OnRowSelectionsignale chaque changement. - Persistance :
StateIdmémorise dans le stockage local du navigateur le tri, la taille de page, les valeurs des filtres, l'