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

Editing records and advancing forward page by page- how the list refreshes and displays the records #570

Closed
tfmorris opened this issue Oct 15, 2012 · 16 comments · May be fixed by #6546
Closed
Labels
grid pagination / scrolling About scrolling through the rows via pagination or potentially seamless scrolling imported from old code repo Issue imported from Google Code in 2010 Module: Frontend These issues involve working on HTML, CSS, and JavaScript code that affects the user interface. records Theme: UX/Usability Focuses on issues related to improving the overall user experience and interaction flow. Type: Bug Issues related to software defects or unexpected behavior, which require resolution.
Milestone

Comments

@tfmorris
Copy link
Member

tfmorris commented Oct 15, 2012

Original author: ericjarv...@gmail.com (May 05, 2012 17:33:44)

An annoying behavior when editing lots of records, page by ascending page;

  1. Load the attached .tsv file into refine.
  2. For this demonstration, make sure your page view is 10 records per page(default view).
  3. facet > Facet > Text facet.
  4. On the Facet, click 'include' for the 'facetCriteria(30)' item.
  5. Click 'next' to go to second page.
  6. At this point, record # 11 should show 'start of new page' record, and record # 20 should show 'end of page' record, as is seen in the 'notes' column.
  7. in the column names 'facet', remove the 'facetCriteria' text from records 12, 14, 16 and 18.
  8. Click the 'next' link to go to page 3 which should display records 21 to 30.
  9. You will now notice on this page, there is no record that says 'start of new page', and the reason for this is because it is now on the previous page, a result of those 4 records(12, 14, 16, and 18) being edited, and thus no longer being bound to the respective Facet. And herein is the problem.

When editing hundreds of pages of data, this is a real pain, because instead of the user being able to simply click 'next' and have all un-revised/un-edited records be displayed, the user instead must first click the 'back' link to commit the changes, and then click the 'next' link so that those 4 records that took the place of the above modified 4 records, can be reviewed and edited if need-be prior to moving on to the new page. If any of those 4 records are edited, then the problem occurs again, and is further compounded, which is to say, the user has to click the 'back' link again for a measly <4 records.

The correct behavior should allow the user to click the 'next' link without having to worry about un-revised records ending up on the previous page. This should be accomplished by taking the last edited record on the page(e.g.- # 18), and using the next record up(e.g.- # 19) as the record that will display FIRST on the refreshed 'next' page, accounting for any/all records that dropped out of the Facet as a result of the edits.

So, in the above example, when the 4 records(12, 14, 16, and 18) are edited wherein their edits result in their exclusion from/within the Facet, the list, upon clicking the 'next' link, subsequently consolidates downward, wherein # 13 goes down to the # 12 row, # 15 goes down to the # 14 row, # 17 goes down to the # 16 row, and # 19 goes down to the # 18 row. This means that records # 21, 22, 23, and 24 that are on the next/un-seen and un-revised page, end up consolidating down accordingly, ending up on the second page(records 21-30) when the user has clicked through to the 3rd page, hence, the user misses those records as a result. Ideally, Refine should not allow any records that are on the subsequent page to end up on the previous page... the adjustment should be made based on the next page, not based on consolidating downward imo. Or, at minimum, the user should be able to toggle the option, or have a 'next-fixed' link to choose from.

Thanks,

Eric Jarvies

Original issue: http://code.google.com/p/google-refine/issues/detail?id=570

@ChristopherSouth
Copy link

I'm seeing a similar refresh issue when doing reconciliation -- if i choose the "double checkmark" icon - or match to all identical cells, it refreshes the entire page and goes back to the top instead of where you last were. I suspect that could be intended behavior to ensure one doesn't have items to revalidate -- but it's a pain when you're on the bottom third of a large list and it keeps taking you back to the top....

@ettorerizza
Copy link
Member

The "refresh-and-goes-back-to-the-first-page-after-a-match-all-identical-cells" issue is a pain in the ass. It should be considered as a high priority issue for reconciliation.

screencast

@thadguidry thadguidry added the Priority: High Denotes issues that require urgent attention and may be blocking progress. label Mar 2, 2018
@thadguidry thadguidry added this to the 3.5 Cookie Monster milestone Mar 2, 2018
@thadguidry thadguidry added the Theme: UX/Usability Focuses on issues related to improving the overall user experience and interaction flow. label Mar 2, 2018
@thadguidry
Copy link
Member

@wetneb Can you perhaps provide a quick fix for this issue over the next 2 weeks ?

@wetneb
Copy link
Sponsor Member

wetneb commented Mar 2, 2018

@ettorerizza after thinking about @thadguidry's suggestions for reconciliation UI I would actually be in favour of a completely different screen setup for reconciliation.
The task of going through a list of potential matches and choosing the right is extremely different from what OR is designed for (apply operations on many rows and drill down with facets).

During a manual reconciliation session:

  • the facets do not change and we do not look at them -> they should not be visible
  • we look at one row/record at a time -> the other rows should not be visible
  • we want to see as much information as possible about the potential matches -> their previews should be visible without any click

So, I would be interested in adding a button "Start reconciliation session", or something like that, which would take you to a completely different screen, tailored for this task. You would do your matches there, and when you get bored you click "Back" and you are back to the normal OR screen.

@wetneb
Copy link
Sponsor Member

wetneb commented Mar 2, 2018

@thadguidry sure I will look into that

@thadguidry thadguidry added the help wanted An issue that we would love anyone to help us with label Mar 2, 2018
@wetneb wetneb added this to Todo in Wikidata integration via automation Mar 2, 2018
@thadguidry
Copy link
Member

thadguidry commented Mar 2, 2018

@wetneb Thanks, this is Google Sponsored actually via the Wikidata Reconciliation subproject we have for Phase 1, still ongoing (still money left), so track your time.

And yes, a different screen is ideal if not to much trouble. That's what the Freebase Judgement screen did hosted by Freebase Apps back in the day. Its too bad we didn't have the foresight to save that App before it got destroyed by Google, such as what Spencer did with his apps

@thadguidry thadguidry added this to TODO in Google Sponsored Projects via automation Mar 2, 2018
@ettorerizza
Copy link
Member

ettorerizza commented Mar 2, 2018

@wetneb Yeah, you put the right words on something that I felt without formulating it ! When it comes to examine records one by one manually, we move from a logic of columns (a logic of database) to a logic of rows (a logic of spreadsheet) for which the interface is not appropriate.

@ostephens
Copy link
Sponsor Member

Just to check - although you aren't changing the facets while you reconcile, you may want to only deal with a filtered set of rows as you go into the reconcile process - would what you are suggesting only deal with the filtered rows (I guess yes, but just to be clear)

@ettorerizza
Copy link
Member

we look at one row/record at the time -> the other rows should not be visible

Be careful that there are some cases where you have to look at another column to choose the best candidate. For example, to check if a matched place is in the right country, or if it is the right kind of place (some place names refer to both a municipality and a province).

screenshot-localhost-3333-2018 03 02-19-55-33

Another case where it is necessary to look at another column is when the matching is done on a copy of the original column (in order to then visually check the quality of the matching.).

screenshot-localhost-3333-2018 03 02-19-41-05

@wetneb
Copy link
Sponsor Member

wetneb commented Mar 2, 2018

@ettorerizza sure, looking at other columns is super important - I only proposed to hide the other rows.

@ettorerizza
Copy link
Member

Ouch, sorry, I had misread (with the copy-paste of the sentence in front of the eyes, moreover). :/

@thadguidry thadguidry added this to TODO in UI Improvements Mar 22, 2018
@thadguidry thadguidry removed help wanted An issue that we would love anyone to help us with Priority: Medium Represents important issues that need to be addressed but are not urgent labels Nov 8, 2018
@wetneb wetneb removed this from the 3.5 milestone Jul 26, 2019
@wetneb wetneb added the records label Dec 20, 2019
@wetneb wetneb removed this from Todo in Wikidata integration Dec 20, 2019
@wetneb
Copy link
Sponsor Member

wetneb commented Dec 20, 2019

A lot of different issues are mentioned here:

@wetneb wetneb added grid pagination / scrolling About scrolling through the rows via pagination or potentially seamless scrolling Module: Frontend These issues involve working on HTML, CSS, and JavaScript code that affects the user interface. and removed Priority: High Denotes issues that require urgent attention and may be blocking progress. labels Dec 20, 2019
@VojtechDostal
Copy link

VojtechDostal commented Feb 2, 2020

I wanted to report this bug to find out that it has already been reported a long time ago. This is really a pain for manual reconciliation because you always get returned to the beginning after each and every reconciled line. (the bug also seems identical to #33 )

@wetneb
Copy link
Sponsor Member

wetneb commented Feb 2, 2020

@VojtechDostal have you tried the workaround with the facet mentioned in #33 ?

@VojtechDostal
Copy link

@VojtechDostal have you tried the workaround with the facet mentioned in #33 ?

Yep, I do that. But sometimes I don't want to match all lines, just some of them, so I inevitably reach line 50 sooner or later. To prevent this I would have to manually mark all skipped lines as "do not match".

@lisa761 lisa761 mentioned this issue Jun 17, 2020
8 tasks
@wetneb wetneb removed their assignment Feb 26, 2022
wetneb added a commit to wetneb/OpenRefine that referenced this issue Nov 8, 2022
This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570
wetneb added a commit to wetneb/OpenRefine that referenced this issue Nov 8, 2022
…ne#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.
wetneb added a commit to wetneb/OpenRefine that referenced this issue Nov 8, 2022
…eshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.
wetneb added a commit that referenced this issue Dec 5, 2022
…#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and #570

* Revert "(I #2638) Feature to Goto a page directly (#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, #570 and #572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes #570, closes #572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
@wetneb
Copy link
Sponsor Member

wetneb commented Dec 5, 2022

Fixed in 4.0 by #5411.

@wetneb wetneb closed this as completed Dec 5, 2022
@wetneb wetneb added this to the 4.0 milestone Jun 29, 2023
wetneb added a commit that referenced this issue Oct 10, 2023
…#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and #570

* Revert "(I #2638) Feature to Goto a page directly (#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, #570 and #572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes #570, closes #572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit that referenced this issue Nov 12, 2023
…#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and #570

* Revert "(I #2638) Feature to Goto a page directly (#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, #570 and #572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes #570, closes #572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Apr 18, 2024
…f the grid (OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Apr 18, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Apr 18, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Apr 19, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Apr 19, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Apr 24, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue May 16, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Jun 25, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
wetneb added a commit to wetneb/OpenRefine that referenced this issue Jul 3, 2024
…OpenRefine#5411)

* Adapt the GridState interface to separate sorting and pagination.

This adds `getRowsBefore` methods, counterpart to the existing pagination
methods, so that we can do efficient and correct pagination, solving #33 and OpenRefine#570

* Revert "(I OpenRefine#2638) Feature to Goto a page directly (OpenRefine#2639)"

Go back to simply displaying a range of row numbers, because
that will enable a solution for #33, OpenRefine#570 and OpenRefine#572.
This reverts commit d7aaac2.

* Do not move back to the first page when applying an action which refreshes the grid.

Instead, the current page is refreshed.
This closes #33, closes OpenRefine#570, closes OpenRefine#572.

* Specify which actions preserve row and record ids

This lets us preserve pagination only when it is guaranteed to show the same
part of the data after the operation.

* Make paging user-editable like before

* Adapt cypress tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
grid pagination / scrolling About scrolling through the rows via pagination or potentially seamless scrolling imported from old code repo Issue imported from Google Code in 2010 Module: Frontend These issues involve working on HTML, CSS, and JavaScript code that affects the user interface. records Theme: UX/Usability Focuses on issues related to improving the overall user experience and interaction flow. Type: Bug Issues related to software defects or unexpected behavior, which require resolution.
Projects
No open projects
Development

Successfully merging a pull request may close this issue.

7 participants