-
Notifications
You must be signed in to change notification settings - Fork 10.3k
Productize QuickGrid #46573
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Productize QuickGrid #46573
Conversation
...d/src/Microsoft.AspNetCore.Components.QuickGrid/Infrastructure/AsyncQueryExecutorSupplier.cs
Outdated
Show resolved
Hide resolved
@Nick-Stanton, you might want to instead use the https://github.com/dotnet/aspnetcore-internal/tree/main/scripts/consolidation infrastruture to copy over every relevant file, commit, issue reference, and PR reference from the AspLabs repo. @wtgodbe or I could help you get started on that. Ignore this if the history isn't relevant from the @dotnet/aspnet-blazor-eng perspective. |
Thanks @dougbu, TIL. Unless the Blazor team disagrees, I will keep the PR as-is and include a co-author credit to @SteveSandersonMS in the squashed merge commit. We were already tracking issues here so I don't expect a need for the consolidation infra. |
src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/Infrastructure/Defer.cs
Outdated
Show resolved
Hide resolved
This looks great to me. However since I wrote the QuickGrid implementation I'm not sure we get the most value if I'm the one approving this PR :) @Nick-Stanton, if you feel the implementation is clear to you then we're probably good to go with it. But if there are aspects that seem unclear we might also want to pull in at least one other team member to inspect it, share out an understanding of what's going on internally, and maybe spot any opportunities to improve it further. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me!
Should we consider sealing some (most?) of these public types? I don't see why someone would need to derive from GridSort<TGridItem>
, or Defer
, for example.
Great point. I sealed what I knew for sure would be good, and added |
...d/Microsoft.AspNetCore.Components.QuickGrid/src/Infrastructure/AsyncQueryExecutorSupplier.cs
Outdated
Show resolved
Hide resolved
src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/QuickGrid.razor.cs
Show resolved
Hide resolved
@dotnet/aspnet-blazor-eng @dotnet/aspnet-build This should be ready for final review. Failures are in the quarantined pipeline. The last commit includes everything from API review with the exception of a couple findings in an email thread. I will also include them below:
EDIT: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dotnet/aspnet-build only owns a couple of files in this PR. I made a couple of comments there but am not approving because I ignored almost everything else.
...FrameworkAdapter/src/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter.csproj
Outdated
Show resolved
Hide resolved
...FrameworkAdapter/src/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter.csproj
Show resolved
Hide resolved
/// <returns>A <see cref="ValueTask{GridItemsProviderResult{TResult}}" /> that gives the data to be displayed.</returns> | ||
/// <returns>A <see cref="ValueTask{GridItemsProviderResult}" /> that gives the data to be displayed.</returns> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While technically not correct, the compiler would not eat the original line. This may be due to the existence of a struct with a generic parameter and a static class (that just grabs instances of the struct) with the same name. Regardless, the actual output of this is reduced to ValueTask<TResult>
anyways, so this clarification isn't any more useful.
…Grid/src/Infrastructure/AsyncQueryExecutorSupplier.cs Co-authored-by: Stephen Halter <halter73@gmail.com>
...mponents/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/GridItemsProviderRequest.cs
Outdated
Show resolved
Hide resolved
...mponents/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/GridItemsProviderRequest.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: Stephen Halter <halter73@gmail.com>
src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/Columns/Align.cs
Outdated
Show resolved
Hide resolved
...Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/Columns/SortedProperty.cs
Outdated
Show resolved
Hide resolved
…Grid/src/Columns/SortedProperty.cs Co-authored-by: Mackinnon Buck <mackinnon.buck@gmail.com>
Blocked on timeouts in the Helix pipeline |
@SteveSandersonMS has offered to bring this across the finish line now that I'm in Azure Core. Here's what's remaining:
CC: @mkArtakMSFT |
Thanks very much @Nick-Stanton! It's merged, the backport PR is here, and @mkArtakMSFT has been pinged. |
Because you can't envision a need to derive from it, it shouldn't be open to it? That seems flawed. Why don't we seal things that we don't want inherited for a specific reason? |
Hi @sjd2021. It looks like you just commented on a closed PR. The team will most probably miss it. If you'd like to bring something important up to their attention, consider filing a new issue and add enough details to build context. |
@sjd2021 in general, types that aren't intended to be extensible are sealed to provide potential startup and size optimizations. While this guidance generally applies to private types within .NET, limitations in the Razor compiler prevented some of these types from being non-public. QuickGrid by design has multiple points of extension for developers that want to build on top of it without a custom fork of the runtime, but just not at the layer of types like |
Hi @Nick-Stanton. It looks like you just commented on a closed PR. The team will most probably miss it. If you'd like to bring something important up to their attention, consider filing a new issue and add enough details to build context. |
@Nick-Stanton The more you know.. Thanks for the thoughtful explanation. I've been annoyed at how trivial adjustments or tests I've wanted to make were made difficult because I wanted to extend a sealed class that had no interface. I hadn't thought much about the benefits you've referenced. This helps. |
Hi @sjd2021. It looks like you just commented on a closed PR. The team will most probably miss it. If you'd like to bring something important up to their attention, consider filing a new issue and add enough details to build context. |
Productize QuickGrid
Productizes the experimental QuickGrid package, which aims to provide a simple and performant data grid component for Blazor.
Description
There is a list of issues that we could address either as part of this PR or include small fixes and additions following a merge here. There is already a lot of new code and API being proposed so non-bug fixes may be best for after this PR.
Following initial review here I will open an API proposal for these changes.
Tested:
Fixes #46317