Skip to content
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

Allow swapping handsontable with AG Grid Community in Rule Builder. #19322

Draft
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

jmchilton
Copy link
Member

I think the pros for AG Grid are it is much more performant, very straightforward licensing, and... while we're still pinning an older version - the pinned AG Grid is more recent and we can upgrade to something actively maintained after the Vue 3 migration. handsontable has really smooth row/column/cell selection and copying features, AG Grid wraps this up in an enterprise version that will never work for Galaxy - xref https://www.ag-grid.com/javascript-data-grid/cell-selection/. In practice, it is probably a pretty nice usability thing to be losing. If we do decide to replace handsontable - we could work around this a bit by giving users a button to download a spreadsheet file that they can use more fully or have a button to popout a handsontable for copying out of.

How to test the changes?

(Select all options that apply)

  • This is a refactoring of components with existing test coverage.

License

  • I agree to license these and all my past contributions to the core galaxy codebase under the MIT license.

@ElectronicBlueberry
Copy link
Member

ElectronicBlueberry commented Dec 13, 2024

In practice, it is probably a pretty nice usability thing to be losing.

I saw you mentioned an alternative library for replacing handsontable, tanstack table, which would involve more custom styling / structure in the UI chat. Do you know if this has similar restrictions?

I think you mentioned preferring AG grid for now, due to it not requiring so much custom CSS/code. If you're open to trying out a minimal tanstack table implementation as a comparison, I'd be very happy to collaborate.

@jmchilton
Copy link
Member Author

I reviewed the tanstack docs last night when I realized this copy/paste limitation and I couldn't find any sort of functionality for selections and copying and pasting the way AG Grid Enterprise and handsontable allow. Maybe it would be easier to implement in that framework? I'm not sure though.

My gut says we should just go with AG Grid and focus on delivering features instead of worrying about the styling of these grids - but if you have some vested interest in one grid or the other I'm fine to see this go in whatever direction as long as it has the functionality I want for the features I want to deliver. I would say even replacing the forms and buttons and such around the gird in the rule builder would be more valuable than replacing the grid. But these are my priorities - I don't expect them to be yours.

If you do decide to replace the AG Grid stuff with tanstack - please keep in mind that the rule builder is read-only but I want to use a spreadsheet like grid for data input for the sample sheet work which is pretty different than the rule builder stuff. AG Grid looks really pretty and polished in this context in my hands but is also sort of crappy at rapid data entry... I think. It seems like more clicks and such than should be needed and the data validation stuff isn't very fine grained. The sample sheet branch that is now using AG Grid is here #19305 and the component that is using AG Grid is here https://github.com/galaxyproject/galaxy/blob/8f6154f8437ff490333b805be68feb573283fdd1/client/src/components/Collections/sheet/SampleSheetGrid.vue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants