From 212ba9d569d0a1da49abad081f39e35e2a626976 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 28 Sep 2026 11:40:22 +0200 Subject: [PATCH] Enhance grid filtering and sorting functionality Updated `DxGrid` components for `_activeEnvelopes` and `_completedEnvelopes`: - Disabled `ShowFilterRow` and added `FilterMenuButtonDisplayMode` to always display filter menu buttons. - Enabled sorting for the `Id` column with descending order and added a display format. - Added `EditSettings` to the `Status` column with a `DxComboBoxSettings` for filtering, using the new `GetStatusFilterItems` method. Introduced `GetStatusFilterItems` to generate distinct status filter items and added a private `StatusFilterItem` record type for encapsulating status values and labels. Made minor adjustments to grid layout auto-saving logic for consistency. --- .../Components/Pages/EnvelopeSenderPage.razor | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor index c0adaed6..1c6133cf 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderPage.razor @@ -219,7 +219,8 @@ @@ -249,6 +251,13 @@ + + + @{ var envelope = cellContext.DataItem as EnvelopeDto; @@ -376,7 +385,8 @@ @@ -403,6 +414,13 @@ + + + @{ var envelope = cellContext.DataItem as EnvelopeDto; @@ -917,6 +935,16 @@ .Take(20); } + IReadOnlyList GetStatusFilterItems(IEnumerable? source) + { + return (source ?? Enumerable.Empty()) + .Select(x => x.Status) + .Distinct() + .OrderBy(x => x) + .Select(x => new StatusFilterItem(x, GetStatusLabel(x))) + .ToList(); + } + DateTime GetHistoryDate(HistoryDto history) { return history.ActionDate ?? history.AddedWhen; @@ -1072,4 +1100,6 @@ var json = JsonSerializer.Serialize(e.Layout); await UserPreferencesService.SaveGridLayoutAsync(GridKeyCompleted, json); } + + private sealed record StatusFilterItem(EnvelopeStatus Value, string Text); }