Narrow the class-level trim suppressions on the grid components

This commit is contained in:
Atanas Korchev
2026-06-25 14:44:46 +03:00
parent d607434cda
commit 48244faaea
3 changed files with 29 additions and 10 deletions

View File

@@ -85,16 +85,13 @@ namespace Radzen.Blazor
/// </code>
/// </example>
[CascadingTypeParameter(nameof(TItem))]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2046, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2055, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2060, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2067, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2070, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2072, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2075, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2080, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2087, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2091, Justification = TrimMessages.DataTypePreserved)]
public partial class RadzenDataGrid<
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicFields)] TItem> : PagedDataBoundComponent<TItem> where TItem : notnull
@@ -210,6 +207,7 @@ namespace Radzen.Blazor
string? lastLoadDataArgs;
Task lastLoadDataTask = Task.CompletedTask;
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private async ValueTask<Microsoft.AspNetCore.Components.Web.Virtualization.ItemsProviderResult<TItem>> LoadItems(Microsoft.AspNetCore.Components.Web.Virtualization.ItemsProviderRequest request)
{
var view = AllowPaging ? PagedView : View;
@@ -238,6 +236,7 @@ namespace Radzen.Blazor
return new Microsoft.AspNetCore.Components.Web.Virtualization.ItemsProviderResult<TItem>(virtualDataItems, totalItemsCount);
}
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private async ValueTask<Microsoft.AspNetCore.Components.Web.Virtualization.ItemsProviderResult<GroupResult>> LoadGroups(Microsoft.AspNetCore.Components.Web.Virtualization.ItemsProviderRequest request)
{
var top = request.Count;
@@ -456,6 +455,7 @@ namespace Radzen.Blazor
/// Gets the view grouped and paged.
/// </summary>
/// <value>The grouped paged view.</value>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
public IEnumerable<GroupResult> GroupedPagedView
{
get
@@ -2063,6 +2063,7 @@ namespace Radzen.Blazor
[Parameter]
public EventCallback<DataGridColumnReorderedEventArgs<TItem>> ColumnReordered { get; set; }
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
internal IQueryable<TItem> GetSelfRefView(IQueryable<TItem> view, string orderBy)
{
if (!string.IsNullOrEmpty(orderBy))
@@ -2124,6 +2125,7 @@ namespace Radzen.Blazor
/// Gets the view - Data with sorting, filtering and paging applied.
/// </summary>
/// <value>The view.</value>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
public override IQueryable<TItem> View
{
get
@@ -2213,6 +2215,7 @@ namespace Radzen.Blazor
static IComparer<object?> ToObjectComparer(IComparer? comparer) =>
comparer == null ? Comparer<object?>.Default : Comparer<object?>.Create((a, b) => comparer.Compare(a, b));
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
IQueryable<TItem> OrderByComparers(IQueryable<TItem> source)
{
IOrderedEnumerable<TItem>? ordered = null;
@@ -2429,6 +2432,7 @@ namespace Radzen.Blazor
/// <summary>
/// Called when data is changed.
/// </summary>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
protected override void OnDataChanged()
{
if (!string.IsNullOrEmpty(KeyProperty) && keyPropertyGetter == null)
@@ -2568,6 +2572,7 @@ namespace Radzen.Blazor
IEnumerable<FilterDescriptor> filters = Enumerable.Empty<FilterDescriptor>();
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
internal async Task InvokeLoadData(int start, int top)
{
var orderBy = GetOrderBy();
@@ -3396,6 +3401,7 @@ namespace Radzen.Blazor
/// Cancels the edited row.
/// </summary>
/// <param name="item">The item.</param>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
public void CancelEditRow(TItem item)
{
if (itemsToInsert.Contains(item))
@@ -3488,6 +3494,7 @@ namespace Radzen.Blazor
await InsertRowAtIndex(itemToInsert, index + 1);
}
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private async System.Threading.Tasks.Task InsertRowAtIndex(TItem item, int insertIndex = 0)
{
itemsToInsert.Add(item);

View File

@@ -66,11 +66,12 @@
TValue="IEnumerable<string>" Style="width: 100%;" Value="@(selectedAggregates.Select(a => a.Property).Distinct())"
AllowFiltering="true" FilterCaseSensitivity="FilterCaseSensitivity.CaseInsensitive" >
<Template>
<RadzenLabel Component="Aggregate" Text="@context.Title" />
<RadzenSelectBar Name="Aggregate" TValue="AggregateFunction?" Data="@GetAggregates(context.Property)"
@{ var aggregateField = (RadzenPivotField<TItem>)context; }
<RadzenLabel Component="Aggregate" Text="@aggregateField.Title" />
<RadzenSelectBar Name="Aggregate" TValue="AggregateFunction?" Data="@GetAggregates(aggregateField.Property!)"
Size="ButtonSize.ExtraSmall" @onclick:stopPropagation="true" Style="width: 100%;"
Value="@(selectedAggregates.FirstOrDefault(a => a.Property == context.Property)?.Aggregate)"
Change="@(args => UpdateAggregate((string)context.Property, args))" />
Value="@(selectedAggregates.FirstOrDefault(a => a.Property == aggregateField.Property)?.Aggregate)"
Change="@(args => UpdateAggregate(aggregateField.Property!, args))" />
</Template>
<ValueTemplate>
@string.Join(",", selectedAggregates.Select(a => $"{a.Property} ({Enum.GetName(a.Aggregate)})"))

View File

@@ -40,16 +40,13 @@ namespace Radzen.Blazor
/// </code>
/// </example>
[CascadingTypeParameter(nameof(TItem))]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2046, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2055, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2060, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2067, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2070, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2072, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2075, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2080, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2087, Justification = TrimMessages.DataTypePreserved)]
[UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2091, Justification = TrimMessages.DataTypePreserved)]
public partial class RadzenPivotDataGrid<
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.PublicFields)] TItem> : PagedDataBoundComponent<TItem>
@@ -637,6 +634,7 @@ namespace Radzen.Blazor
return root;
}
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
void BuildColumnHeaderTreeRecursive(ColumnHeaderNode node, IQueryable<TItem> items, int level, List<object> path)
{
if (level >= pivotColumns.Count)
@@ -785,6 +783,7 @@ namespace Radzen.Blazor
return isOData != null ? isOData.Value : false;
}
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
internal async Task InvokeLoadData(int start, int top)
{
if (LoadData.HasDelegate)
@@ -950,6 +949,7 @@ namespace Radzen.Blazor
/// <summary>
/// Renders pivot rows with real data aggregation and grouping.
/// </summary>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
protected virtual RenderFragment RenderPivotRows()
{
return new RenderFragment(builder =>
@@ -1108,6 +1108,7 @@ namespace Radzen.Blazor
/// <summary>
/// Renders footer with grand totals for each value column.
/// </summary>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
protected RenderFragment RenderFooter()
{
return new RenderFragment(builder =>
@@ -1197,6 +1198,7 @@ namespace Radzen.Blazor
/// </summary>
/// <param name="pivotRow">The pivot row data.</param>
/// <returns>The items for this row.</returns>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private IQueryable<TItem> GetRowItems(PivotBodyRow pivotRow)
{
if (Data == null || pivotRows.Count == 0)
@@ -1308,6 +1310,7 @@ namespace Radzen.Blazor
// Resolves and caches the aggregate property's type and whether it is numeric,
// avoiding repeated reflection for every aggregated cell.
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private (Type? Type, bool IsNumeric) GetAggregatePropertyInfo(RadzenPivotAggregate<TItem> aggregate)
{
var key = aggregate.Property ?? string.Empty;
@@ -1326,6 +1329,7 @@ namespace Radzen.Blazor
/// <param name="items">The items to aggregate.</param>
/// <param name="aggregate">The aggregate configuration.</param>
/// <returns>The aggregated value.</returns>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
public object? GetAggregateValue(IQueryable<TItem> items, RadzenPivotAggregate<TItem> aggregate)
{
ArgumentNullException.ThrowIfNull(aggregate);
@@ -1416,6 +1420,7 @@ namespace Radzen.Blazor
return root;
}
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private void BuildRowHeaderTreeRecursive(RowHeaderNode node, IQueryable<TItem> items, int level, List<object> path)
{
if (level >= pivotRows.Count)
@@ -1545,6 +1550,7 @@ namespace Radzen.Blazor
// Computes the value cells for a row by bucketing its items by column leaf in a single pass,
// then aggregating each bucket - instead of re-filtering the items per cell.
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private void PopulateValueCells(PivotBodyRow row, IList<TItem> rowItems)
{
var colLeaves = CachedColumnLeaves;
@@ -1571,6 +1577,7 @@ namespace Radzen.Blazor
// Buckets items by the column leaf they belong to. Each item is assigned to the shortest
// column-value prefix that is an actual leaf, which handles collapsed (shorter) column paths.
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private Dictionary<string, List<TItem>> GroupItemsByColumnLeaf(IList<TItem> items, List<List<object>> colLeaves)
{
var buckets = new Dictionary<string, List<TItem>>();
@@ -1765,6 +1772,7 @@ namespace Radzen.Blazor
public object? Value { get; set; }
public string? Title { get; set; }
public List<RowHeaderNode> Children { get; set; } = new List<RowHeaderNode>();
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
public IQueryable<TItem> Items { get; set; } = Enumerable.Empty<TItem>().AsQueryable();
public int Level { get; set; }
public bool IsCollapsed { get; set; }
@@ -1939,6 +1947,7 @@ namespace Radzen.Blazor
/// <summary>
/// Gets the filter property type for a field.
/// </summary>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
private static Type GetFilterPropertyType(RadzenPivotField<TItem> field)
{
if (field == null || string.IsNullOrEmpty(field.Property))
@@ -2388,6 +2397,7 @@ namespace Radzen.Blazor
/// <summary>
/// Override the View property to apply sorting and filtering.
/// </summary>
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
public override IQueryable<TItem> View
{
get
@@ -2426,6 +2436,7 @@ namespace Radzen.Blazor
AggregateFunction.Max
};
[System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage(TrimMessages.Trimming, TrimMessages.IL2026, Justification = TrimMessages.DataTypePreserved)]
IEnumerable<AggregateFunction> GetAggregates(string propertyName)
{
var propertyType = propertyName != null ? PropertyAccess.GetPropertyType(typeof(TItem), propertyName) : null;