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 column resize and auto-resize on browser resize #1312

Open
thadguidry opened this issue Nov 8, 2017 · 13 comments
Open

Allow column resize and auto-resize on browser resize #1312

thadguidry opened this issue Nov 8, 2017 · 13 comments
Labels
columns Module: Frontend These issues involve working on HTML, CSS, and JavaScript code that affects the user interface. Priority: High Denotes issues that require urgent attention and may be blocking progress. Theme: UX/Usability Focuses on issues related to improving the overall user experience and interaction flow. Type: Feature Request Identifies requests for new features or enhancements. These involve proposing new improvements.
Milestone

Comments

@thadguidry
Copy link
Member

thadguidry commented Nov 8, 2017

A community request was mentioned on our mailing list https://groups.google.com/d/topic/openrefine/H3FAf5DSHPk/discussion

This example demonstrates the basic need of having resize-able columns and also auto-resizing the columns if the user changes the size of their browser window.
http://6pac.github.io/SlickGrid/examples/example15-auto-resize.html

@thadguidry thadguidry added Module: Frontend These issues involve working on HTML, CSS, and JavaScript code that affects the user interface. Type: Feature Request Identifies requests for new features or enhancements. These involve proposing new improvements. Priority: Medium Represents important issues that need to be addressed but are not urgent Theme: UX/Usability Focuses on issues related to improving the overall user experience and interaction flow. labels Nov 8, 2017
@jackyq2015
Copy link
Contributor

there is one for AugularJS. just for the records:
https://tympanix.github.io/angular-table-resize/

@thadguidry thadguidry added this to the 2.8.0 milestone Nov 10, 2017
@thadguidry thadguidry added Priority: High Denotes issues that require urgent attention and may be blocking progress. and removed Priority: Medium Represents important issues that need to be addressed but are not urgent labels Nov 19, 2017
@thadguidry thadguidry added this to TODO in UI Improvements Nov 19, 2017
@kushthedude
Copy link
Member

@thadguidry I would like to work on the following

@thadguidry
Copy link
Member Author

thadguidry commented Mar 12, 2020

@kushthedude This is a baby step issue, to the larger goal of having a better grid technology that supports many features we would like such as draggable re-orderable columns, resizable columns, etc. But sure, if you want to isolate on only the "resize columns" feature that's fine. But how you do it and which technology chosen will impact the larger goal later (or you'll have to refactor/redo).

@kushthedude
Copy link
Member

@kushthedude This is a baby step issue, to the larger goal of having a better grid technology that supports many features we would like such as draggable re-orderable columns, resizable columns, etc. But sure, if you want to isolate on only the "resize columns" feature that's fine. But how you do it and which technology choosen will impact the larger goal later (or you'll have to refactor/redo).

@thadguidry Hmm, I was first thinking to introduce table-layout property to our container and then go for column resize property for each column. But I just looked into code and saw the table is bound differently, All the column headers are coming from the DataTableHeader Container and the table data is coming from TableDataContainer which renders the data on row basis by labelling them with odd/even id.

@wetneb
Copy link
Sponsor Member

wetneb commented Mar 12, 2020

Yes, it's a big mess! Resizing is done in JavaScript explicitly, which is massively inefficient since it triggers many DOM reflows. Also the size of the headers often get out of sync with the size of the grid.

@kushthedude
Copy link
Member

kushthedude commented Mar 12, 2020

I was thinking to reimplement the tables and bind the content to a single table container. If this can be done efficiently, then the goal of having a better grid technology will be much more easier as we can directly apply our styling to the container rather worrying about how it would affect other columns and their headers.

@thadguidry
Copy link
Member Author

thadguidry commented Mar 13, 2020

Myself and @wetneb are not exactly front-end wizards. So we are depending on folks like you, maybe your peers or others in your circle that do have that experience to set the right course forward. I think this is going to take a bit of experimentation to see what works best. Have you looked at how agGrid with Vue works? https://www.ag-grid.com/vuejs-grid/ or others? This might serve useful to your experiments. (FYI, we can only use the MIT version and not Enterprise licensed) For features in any framework that does not have a compatible license, we would have to roll our own or find compatible licensed components to fill in the gap, or just code our own missing features eventually.

@kushthedude
Copy link
Member

@thadguidry I will do the experiment to try bind the table to a single container for a staft and see how it goes. Coming to the Vue.js point, since the data-table is one of the biggest component of OpenRefine introducing vue.js directly into it may do more harm than good. I am looking to migrate the dialogues to vue.js for a start and if it looks good, we can look for migration of other components to Vue.js in summer, also once the data-table is converted into any progressive framework, introducing infinityLoader will be much more easier in them.

@thadguidry thadguidry moved this from TODO to IN PROGRESS in UI Improvements Mar 13, 2020
@kushthedude
Copy link
Member

kushthedude commented Mar 16, 2020 via email

@thadguidry
Copy link
Member Author

@kushthedude great! looking forward to seeing your progress!

@kushthedude
Copy link
Member

Since the following was to be solved with the migration to a new data-grid while looking at chances of Vue.js. I think the GSoC candidates may resolve it during the work at infinityScroll.

@lisa761
Copy link
Member

lisa761 commented Jun 4, 2020

I can take this up once infinite scrolling is implemented. However, for the gsoc project, there hasn't been any plans to migrate the table to a new data-grid library, as of now.

@ignaciomartin
Copy link

Can anyone report any progress on this much needed request?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
columns Module: Frontend These issues involve working on HTML, CSS, and JavaScript code that affects the user interface. Priority: High Denotes issues that require urgent attention and may be blocking progress. Theme: UX/Usability Focuses on issues related to improving the overall user experience and interaction flow. Type: Feature Request Identifies requests for new features or enhancements. These involve proposing new improvements.
Projects
No open projects
UI Improvements
  
IN PROGRESS
Development

No branches or pull requests

6 participants