Subject: Query tool data grid - Infinite scroll vs Pagination

From: Aditya Toshniwal <[email-masked]>
Date: Wed, 19 Jun 2024 18:11:19 +0530

Hi Hackers,

Query tool data grid currently pulls the data on load basis in batches. For
example, it will initially load only 1000 rows and once a user scrolls to
the 1000th row, it will fetch the next batch of 1000.
Many users who want access in between rows or last row struggle to do it as
the user has to scroll and scroll. If someone grabs the scroller and pulls
it down still it will be a good UX and the scrollbar may jump. One reported
here - https://github.com/pgadmin-org/pgadmin4/issues/1780
One more aspect to this is the in memory data of the query tool which keep
on increasing on each scroll, it affects the performance.

I propose we should use pagination instead of infinite scroll with the
following advantages:
1. Users can jump to any page they want.
2. Users can change the page size on the grid directly.
3. Memory will be used only for visible rows so performance improvement.
4. Predictable UI, no jumping scrollbars.

Let me know what you think.

-- 
Thanks,
Aditya Toshniwal
pgAdmin Hacker | Sr. Software Architect | *enterprisedb.com*
<https://www.enterprisedb.com/>
"Don't Complain about Heat, Plant a TREE"

---

From: Dave Page <[email-masked]>
Date: Thu, 20 Jun 2024 09:06:25 +0100

Hi

On Wed, 19 Jun 2024 at 13:42, Aditya Toshniwal <
[email-masked]> wrote:

> Hi Hackers,
>
> Query tool data grid currently pulls the data on load basis in batches.
> For example, it will initially load only 1000 rows and once a user scrolls
> to the 1000th row, it will fetch the next batch of 1000.
> Many users who want access in between rows or last row struggle to do it
> as the user has to scroll and scroll. If someone grabs the scroller and
> pulls it down still it will be a good UX and the scrollbar may jump. One
> reported here - https://github.com/pgadmin-org/pgadmin4/issues/1780

I think there are definite benefits, but there is the downside of having to
scroll and click to browse results. Personally I'm fine with that, but I
think you should probably poll pgadmin-support for opinions from more users.

-- 
Dave Page
pgAdmin: https://www.pgadmin.org
PostgreSQL: https://www.postgresql.org
EDB: https://www.enterprisedb.com

---

From: Aditya Toshniwal <[email-masked]>
Date: Thu, 20 Jun 2024 14:46:34 +0530

Hi Everyone,

Request you to share your opinion on this and respond on:
https://docs.google.com/forms/d/e/1FAIpQLSdfJhNK8qXSe9mKcubZa8jjjYl0hiZVxhv6GGJo8WJcYc27ug/viewform?usp=sharing

On Thu, Jun 20, 2024 at 1:36 PM Dave Page <[email-masked]> wrote:

>> One more aspect to this is the in memory data of the query tool which
>> keep on increasing on each scroll, it affects the performance.
>>
> I think there are definite benefits, but there is the downside of having
> to scroll and click to browse results. Personally I'm fine with that, but I

---

From: Aditya Toshniwal <[email-masked]>
Date: Fri, 28 Jun 2024 14:03:45 +0530

Hi,

Unfortunately, there were only 3 responses to this.
In that case, we will discuss internally and decide what to do.

---

From: Muhammad Ikram <[email-masked]>
Date: Fri, 28 Jun 2024 17:09:33 +0500

Hi Aditya,

Pagination approach has my vote

Muhammad Ikram

On Fri, 28 Jun 2024 at 15:44, Aditya Toshniwal <
[email-masked]> wrote:

>>>> Many users who want access in between rows or last row struggle to do
>>>> it as the user has to scroll and scroll. If someone grabs the scroller and

---

From: Edson Richter <[email-masked]>
Date: Fri, 28 Jun 2024 13:17:57 +0000

Infinite scroll usually consume a lot of memory, and generate additional overhead in case of copy data, export, etc. In my humble opinion, if anything then paginated would work better without additional memory consumption.
In case of implementing infinite scroll, please give users a option to disable it.

Thanks,

Edson

Obter o Outlook para Android<https://aka.ms/AAb9ysg>
________________________________
From: Aditya Toshniwal <[email-masked]>
Sent: Friday, June 28, 2024 5:33:45 AM
To: pgAdmin Support <[email-masked]>
Cc: pgadmin-hackers <[email-masked]>; Dave Page <[email-masked]>
Subject: Re: Query tool data grid - Infinite scroll vs Pagination

Hi,

On Thu, Jun 20, 2024 at 2:46 PM Aditya Toshniwal <[email-masked]<mailto:[email-masked]>> wrote:
Hi Everyone,

On Thu, Jun 20, 2024 at 1:36 PM Dave Page <[email-masked]<mailto:[email-masked]>> wrote:
Hi

On Wed, 19 Jun 2024 at 13:42, Aditya Toshniwal <[email-masked]<mailto:[email-masked]>> wrote:
Hi Hackers,

Query tool data grid currently pulls the data on load basis in batches. For example, it will initially load only 1000 rows and once a user scrolls to the 1000th row, it will fetch the next batch of 1000.
Many users who want access in between rows or last row struggle to do it as the user has to scroll and scroll. If someone grabs the scroller and pulls it down still it will be a good UX and the scrollbar may jump. One reported here - https://github.com/pgadmin-org/pgadmin4/issues/1780
One more aspect to this is the in memory data of the query tool which keep on increasing on each scroll, it affects the performance.

I propose we should use pagination instead of infinite scroll with the following advantages:

I think there are definite benefits, but there is the downside of having to scroll and click to browse results. Personally I'm fine with that, but I think you should probably poll pgadmin-support for opinions from more users.

--
Thanks,
Aditya Toshniwal
pgAdmin Hacker | Sr. Software Architect | enterprisedb.com<https://www.enterprisedb.com/>
"Don't Complain about Heat, Plant a TREE"

--
Thanks,
Aditya Toshniwal
pgAdmin Hacker | Sr. Software Architect | enterprisedb.com<https://www.enterprisedb.com/>
"Don't Complain about Heat, Plant a TREE"

---

From: Aditya Toshniwal <[email-masked]>
Date: Fri, 28 Jun 2024 22:12:16 +0530

Hi Edson,

The current implementation is infinite scroll. We're planning to
replace/improve it.

On Fri, Jun 28, 2024 at 6:48 PM Edson Richter <[email-masked]>
wrote:

> Infinite scroll usually consume a lot of memory, and generate additional
> overhead in case of copy data, export, etc. In my humble opinion, if
> anything then paginated would work better without additional memory
> consumption.
> Obter o Outlook para Android <https://aka.ms/AAb9ysg>
> ------------------------------
> *From:* Aditya Toshniwal <[email-masked]>
> *Sent:* Friday, June 28, 2024 5:33:45 AM
> *To:* pgAdmin Support <[email-masked]>
> *Cc:* pgadmin-hackers <[email-masked]>; Dave Page <
> [email-masked]>
> *Subject:* Re: Query tool data grid - Infinite scroll vs Pagination
>
> Hi,
>

---

From: Edson Richter <[email-masked]>
Date: Fri, 28 Jun 2024 17:30:41 +0000

😊 Sorry – I’ve never used it as infinite scroll, I always use “limit n” in my queries (where n is tipically 10) just to develop and test my queries, and use for larger datasets some scripting tool (like Go or Python).
I’ve tables with 2 bi rows, and forgetting to use “limit” is deadly slow.
I love the way you guys deal with those improvements, they are always welcome.

Kind regards,

Edson

De: Aditya Toshniwal <[email-masked]>
Enviada em: sexta-feira, 28 de junho de 2024 13:42
Para: Edson Richter <[email-masked]>
Cc: pgAdmin Support <[email-masked]>; pgadmin-hackers <[email-masked]>; Dave Page <[email-masked]>
Assunto: Re: Query tool data grid - Infinite scroll vs Pagination

Hi Edson,

The current implementation is infinite scroll. We're planning to replace/improve it.

On Fri, Jun 28, 2024 at 6:48 PM Edson Richter <[email-masked]<mailto:[email-masked]>> wrote:
Infinite scroll usually consume a lot of memory, and generate additional overhead in case of copy data, export, etc. In my humble opinion, if anything then paginated would work better without additional memory consumption.
In case of implementing infinite scroll, please give users a option to disable it.

Thanks,

Edson

Obter o Outlook para Android<https://aka.ms/AAb9ysg>
________________________________
From: Aditya Toshniwal <[email-masked]<mailto:[email-masked]>>
Sent: Friday, June 28, 2024 5:33:45 AM
To: pgAdmin Support <[email-masked]<mailto:[email-masked]>>
Cc: pgadmin-hackers <[email-masked]<mailto:[email-masked]>>; Dave Page <[email-masked]<mailto:[email-masked]>>
Subject: Re: Query tool data grid - Infinite scroll vs Pagination

Hi,

---

From: Usman Khan <[email-masked]>
Date: Sat, 29 Jun 2024 00:53:22 +0500

Hi Aditya
I vote for pagination, it would really be helpful for end users.
In addition to giving the user the ability to set page size, if he can also
select or enter what page he can jump to say 501, 990 etc it would be
helpful.

---

From: Anthony DeBarros <[email-masked]>
Date: Mon, 1 Jul 2024 08:42:14 -0400

If I may add, please have pgAdmin display the total number of rows in the
result set regardless of pagination page size.

On Mon, Jul 1, 2024 at 4:35 AM Usman Khan <[email-masked]> wrote:

> In addition to giving the user the ability to set page size, if he can
> also select or enter what page he can jump to say 501, 990 etc it would be
> helpful.
>
>>>>> Query tool data grid currently pulls the data on load basis in
>>>>> batches. For example, it will initially load only 1000 rows and once a user
>>>>> scrolls to the 1000th row, it will fetch the next batch of 1000.
>>>> I think there are definite benefits, but there is the downside of
>>>> having to scroll and click to browse results. Personally I'm fine with
>>>> that, but I think you should probably poll pgadmin-support for opinions
>>>> from more users.
>>>>
>>>> --
>>>> Dave Page

---

From: Aditya Toshniwal <[email-masked]>
Date: Mon, 1 Jul 2024 18:27:07 +0530

Hi Anthony,

We already do that. It says - 464 fetched out of the total 464 rows.

---

From: Dave Caughey <[email-masked]>
Date: Tue, 2 Jul 2024 08:16:16 -0400

I think there's a nice blend between pagination and infinite scrolling.

The problem with the *current *infinite scrolling implementation is that
the scroll baris scaled to the number of *rendered* rows, so as you scroll
down (which renders another bunch of records), it keeps rescaling the
scrollbar, so to get the next "page", you have to continually move to the
scrollbar (as Aditya says, "*Many users who want access in between rows or
last row struggle to do it as the user has to scroll and scroll.*")

If instead the scrollbar were scaled to the total number of rows, (e.g.,
1000 rather than the initial 25 rows that were rendered), then clicking
(say) in the lower third of the scrollbar would would do enough
fetching/rendering to display rows 601-625 (or such).  Problem solved.

Alternatively (or additionally), provide a "jump to row..." button (similar
to what Usman is suggesting re pagination) that gives the user control to
see a specific bunch of records quickly.

But if the issue is that people don't like infinite scrolling because "the
user has to scroll and scroll", then fix that specific UE issue, and people
will be happy.

The concern I have with a paginated solution is if the page represents the
maximum number of rows rendered in the results pane, at any one time.
Assume I can see 25 rows in the result pane.  I.e., you show rows 1-25 for
the first page, then you *only *show rows 26-50 for the second page, then *only
*show rows 27-50, etc. But when there is a cluster of records of interest
between rows 640 and 655, then those records of interest are going to be
spread between pages 25 and 26, and will constantly require flipping back
and forth between pages.  This would be possibly worse UE than the current
"user has to scroll and scroll" issue.  On the other hand, if
your pagination solution includes letting someone nudge the rendered rows
up or down a bit so that I can see rows 640-655 all at once (e.g., there's
a field where I can type in that the current page should start at row 635,
so I can see rows 640-655 all together), then I'm fine with that.

However, if ultimately you decide to toss out infinite scrolling for
pagination, then please make the (default?) page size be the number of rows
you can actually see in the result pane, rather than some arbitrary number
(e.g., 50).  Having the page size equal to the number of rendered rows
means I can quickly step through the pages and hopefully notice a record of
interest.... If the page size is larger than the number of rendered rows,
then as I step to the next page I *still *have to scroll down to see the
last few rows, then step to the next page, then scroll down again,  I.e.,
that would be hideous UE!

So my vote preferences are:

First choice: keep infinite scrolling, but simply fix the scrollbar scaling
and/or give the user the means to quickly jump down by a page or to a
specific page
Second choice: use pagination, but *only *if there's the ability to see a
specific chunk of records on a single page (rather than spread across two),
and make the pagination size default to the number of records visible given
the height of the result pane

Cheers,
Dave

---

From: Aditya Toshniwal <[email-masked]>
Date: Tue, 2 Jul 2024 18:16:09 +0530

Thank you Dave and others for your valuable feedback.
We'll try to achieve what is best for the users.

On Tue, Jul 2, 2024 at 5:46 PM Dave Caughey <[email-masked]> wrote:

> scrollbar (as Aditya says, "*Many users who want access in between rows
> or last row struggle to do it as the user has to scroll and scroll.*")
>
> Alternatively (or additionally), provide a "jump to row..." button
> (similar to what Usman is suggesting re pagination) that gives the user
> control to see a specific bunch of records quickly.
>
> First choice: keep infinite scrolling, but simply fix the scrollbar
> scaling and/or give the user the means to quickly jump down by a page or to
> a specific page

---

From: Aditya Toshniwal <[email-masked]>
Date: Fri, 2 Aug 2024 12:23:33 +0530

Hi Hackers,

I have come up with the following design, which allows:

1. Adjust the range of rows visible, aka Window.

2. Jump to a page number directly based on rows window size.

3. Pagination buttons to move forward and backward.

My question is, how should "select all" behave now? Previously we used to
fetch all the rows when select all was clicked which actually slowed down
as it took time for large data.

Maybe add a new button to virtually "Select All Rows".

On Tue, Jul 2, 2024 at 6:16 PM Aditya Toshniwal <
[email-masked]> wrote:

>> But if the issue is that people don't like infinite scrolling because
>> "the user has to scroll and scroll", then fix that specific UE issue, and
>> people will be happy.
>>
>> The concern I have with a paginated solution is if the page represents
>> the maximum number of rows rendered in the results pane, at any one time.
>> the first page, then you *only *show rows 26-50 for the second page,
>> then *only *show rows 27-50, etc. But when there is a cluster of records
>> of interest between rows 640 and 655, then those records of interest are
>> going to be spread between pages 25 and 26, and will constantly require
>> flipping back and forth between pages.  This would be possibly worse UE
>> than the current "user has to scroll and scroll" issue.  On the other hand,
>> if your pagination solution includes letting someone nudge the rendered
>> rows up or down a bit so that I can see rows 640-655 all at once (e.g.,
>> there's a field where I can type in that the current page should start at
>> row 635, so I can see rows 640-655 all together), then I'm fine with that.
>>
>> Second choice: use pagination, but *only *if there's the ability to see
>> a specific chunk of records on a single page (rather than spread across
>> two), and make the pagination size default to the number of records visible
>> given the height of the result pane
>>
>> Cheers,
>> Dave
>>
>>
>>>>>>> Many users who want access in between rows or last row struggle to
>>>>>>> do it as the user has to scroll and scroll. If someone grabs the scroller
>>>>>>> and pulls it down still it will be a good UX and the scrollbar may jump.
>>>>>>> One reported here -
>>>>>>> https://github.com/pgadmin-org/pgadmin4/issues/1780
>>>>>>> One more aspect to this is the in memory data of the query tool
>>>>>>> which keep on increasing on each scroll, it affects the performance.
>>>>>>>

---

From: Dave Page <[email-masked]>
Date: Fri, 2 Aug 2024 10:05:56 +0100

> Maybe add a new button to virtually "Select All Rows".

I'm reminded of how Gmail handles that. Maybe do something similar to that
- Select All selects all the current page's rows, but then offers the
option to select all rows from every page.

>>> The problem with the *current *infinite scrolling implementation is
>>> that the scroll baris scaled to the number of *rendered* rows, so as you
>>> scroll down (which renders another bunch of records), it keeps
>>> rescaling the scrollbar, so to get the next "page", you have to continually
>>> move to the scrollbar (as Aditya says, "*Many users who want access in
>>> between rows or last row struggle to do it as the user has to scroll and
>>> scroll.*")
>>>
>>> then *only *show rows 27-50, etc. But when there is a cluster of
>>> records of interest between rows 640 and 655, then those records of
>>> interest are going to be spread between pages 25 and 26, and will
>>> constantly require flipping back and forth between pages.  This would be
>>> possibly worse UE than the current "user has to scroll and scroll" issue.
>>> On the other hand, if your pagination solution includes letting someone
>>> nudge the rendered rows up or down a bit so that I can see rows 640-655 all
>>> at once (e.g., there's a field where I can type in that the current page
>>> should start at row 635, so I can see rows 640-655 all together), then I'm
>>> fine with that.
>>>
>>> then as I step to the next page I *still *have to scroll down to see
>>> the last few rows, then step to the next page, then scroll down again,
>>> I.e., that would be hideous UE!
>>>

PGDay UK 2024, 11th September, London: https://2024.pgday.uk/

---

From: Aditya Toshniwal <[email-masked]>
Date: Fri, 2 Aug 2024 15:34:57 +0530

Hi Dave,

> option to select all rows from every page.
Yeah, I was thinking on similar lines. Thanks.

>>>> If instead the scrollbar were scaled to the total number of rows,
>>>> (e.g., 1000 rather than the initial 25 rows that were rendered), then
>>>> clicking (say) in the lower third of the scrollbar would would do enough
>>>> Second choice: use pagination, but *only *if there's the ability to
>>>> see a specific chunk of records on a single page (rather than spread across

---

From: Edson Richter <[email-masked]>
Date: Fri, 2 Aug 2024 18:41:10 +0000

Love it!
I believe the Gmail behavior is a good approach.

Regards,

ER

Obter o Outlook para Android<https://aka.ms/AAb9ysg>
________________________________
From: Aditya Toshniwal <[email-masked]>
Sent: Friday, August 2, 2024 3:53:33 AM
To: pgadmin-hackers <[email-masked]>
Cc: Usman Khan <[email-masked]>; pgAdmin Support <[email-masked]>; Dave Page <[email-masked]>; Dave Caughey <[email-masked]>
Subject: Re: Query tool data grid - Infinite scroll vs Pagination

Hi Hackers,

My question is, how should "select all" behave now? Previously we used to fetch all the rows when select all was clicked which actually slowed down as it took time for large data.

[image (15).png]

On Tue, Jul 2, 2024 at 6:16 PM Aditya Toshniwal <[email-masked]<mailto:[email-masked]>> wrote:
Thank you Dave and others for your valuable feedback.
We'll try to achieve what is best for the users.

On Tue, Jul 2, 2024 at 5:46 PM Dave Caughey <[email-masked]<mailto:[email-masked]>> wrote:
I think there's a nice blend between pagination and infinite scrolling.

The problem with the current infinite scrolling implementation is that the scroll baris scaled to the number of *rendered* rows, so as you scroll down (which renders another bunch of records), it keeps rescaling the scrollbar, so to get the next "page", you have to continually move to the scrollbar (as Aditya says, "Many users who want access in between rows or last row struggle to do it as the user has to scroll and scroll.")

If instead the scrollbar were scaled to the total number of rows, (e.g., 1000 rather than the initial 25 rows that were rendered), then clicking (say) in the lower third of the scrollbar would would do enough fetching/rendering to display rows 601-625 (or such).  Problem solved.

Alternatively (or additionally), provide a "jump to row..." button (similar to what Usman is suggesting re pagination) that gives the user control to see a specific bunch of records quickly.

But if the issue is that people don't like infinite scrolling because "the user has to scroll and scroll", then fix that specific UE issue, and people will be happy.

The concern I have with a paginated solution is if the page represents the maximum number of rows rendered in the results pane, at any one time.  Assume I can see 25 rows in the result pane.  I.e., you show rows 1-25 for the first page, then you only show rows 26-50 for the second page, then only show rows 27-50, etc. But when there is a cluster of records of interest between rows 640 and 655, then those records of interest are going to be spread between pages 25 and 26, and will constantly require flipping back and forth between pages.  This would be possibly worse UE than the current "user has to scroll and scroll" issue.  On the other hand, if your pagination solution includes letting someone nudge the rendered rows up or down a bit so that I can see rows 640-655 all at once (e.g., there's a field where I can type in that the current page should start at row 635, so I can see rows 640-655 all together), then I'm fine with that.

However, if ultimately you decide to toss out infinite scrolling for pagination, then please make the (default?) page size be the number of rows you can actually see in the result pane, rather than some arbitrary number (e.g., 50).  Having the page size equal to the number of rendered rows means I can quickly step through the pages and hopefully notice a record of interest.... If the page size is larger than the number of rendered rows, then as I step to the next page I still have to scroll down to see the last few rows, then step to the next page, then scroll down again,  I.e., that would be hideous UE!

First choice: keep infinite scrolling, but simply fix the scrollbar scaling and/or give the user the means to quickly jump down by a page or to a specific page
Second choice: use pagination, but only if there's the ability to see a specific chunk of records on a single page (rather than spread across two), and make the pagination size default to the number of records visible given the height of the result pane

Cheers,
Dave

On Mon, 1 Jul 2024 at 04:35, Usman Khan <[email-masked]<mailto:[email-masked]>> wrote:
Hi Aditya
I vote for pagination, it would really be helpful for end users.
In addition to giving the user the ability to set page size, if he can also select or enter what page he can jump to say 501, 990 etc it would be helpful.

On Fri, Jun 28, 2024 at 3:44 PM Aditya Toshniwal <[email-masked]<mailto:[email-masked]>> wrote:
Hi,

---

From: Gus Spier <[email-masked]>
Date: Sat, 3 Aug 2024 08:32:33 -0400

I like the idea of gmail behavior.

Regards,

Gus Spier

On Sat, Aug 3, 2024 at 5:45 AM Edson Richter <[email-masked]>
wrote:

> *Sent:* Friday, August 2, 2024 3:53:33 AM
> *To:* pgadmin-hackers <[email-masked]>
> *Cc:* Usman Khan <[email-masked]>; pgAdmin Support <
> [email-masked]>; Dave Page <[email-masked]>; Dave
> Caughey <[email-masked]>

---

From: Aditya Toshniwal <[email-masked]>
Date: Thu, 8 Aug 2024 18:16:20 +0530

Hello Everyone,

Just want to share the progress on this. Attached is a quick demo. It is
not complete yet, but I just want to make sure I'm in the right direction.
https://drive.google.com/file/d/1B7DuD2Wx2SABGPEEjc8o4RwYcNgu1t_s/view?usp=sharing

---

From: Akshay Joshi <[email-masked]>
Date: Thu, 8 Aug 2024 18:22:49 +0530

On Thu, Aug 8, 2024 at 6:17 PM Aditya Toshniwal <
[email-masked]> wrote:

>     Excellent, I like the new design.

>>> My question is, how should "select all" behave now? Previously we used
>>> to fetch all the rows when select all was clicked which actually slowed
>>> down as it took time for large data.
>>>

---

From: Dave Page <[email-masked]>
Date: Thu, 8 Aug 2024 14:00:40 +0100

>>     Excellent, I like the new design.

As do I. I do wonder if the ability to enter numbers for the page and the
from/to rows is necessary. I guess it doesn't hurt.

---

From: Khushboo Vashi <[email-masked]>
Date: Thu, 8 Aug 2024 18:37:48 +0530

> from/to rows is necessary. I guess it doesn't hurt.
It is not necessary but nice to have it.

>>>>> move to the scrollbar (as Aditya says, "*Many users who want access
>>>>> in between rows or last row struggle to do it as the user has to scroll and
>>>>> scroll.*")
>>>>>

---

From: Aditya Toshniwal <[email-masked]>
Date: Thu, 8 Aug 2024 18:39:51 +0530

Hi Dave,

> from/to rows is necessary. I guess it doesn't hurt.
There was a suggestion from @Dave Caughey <[email-masked]> to consider
if a user wants to view rows from different pages together.  So I thought
of giving some flexibility. Since it will not be used by most of the users,
it is collapsed under an edit button to save space.

---

From: Aditya Toshniwal <[email-masked]>
Date: Thu, 22 Aug 2024 15:41:33 +0530

Hi All,

I'm facing a problem here so request for suggestions.
When I select rows, delete them and save the results - the rows are removed
from the UI and from the DB. But, the cursor of the select query still has
the result.
When the page is changed, the rows come back again as they're still in the
cursor memory. Same issue when a new row is added or any update is done.
One way to tackle this problem is to execute the query again to refresh the
data.

What do you suggest?

On Thu, Aug 8, 2024 at 6:39 PM Aditya Toshniwal <
[email-masked]> wrote:

>>>> Just want to share the progress on this. Attached is a quick demo. It
>>>> is not complete yet, but I just want to make sure I'm in the right
>>>> direction.
>>>>
> There was a suggestion from @Dave Caughey <[email-masked]> to
> consider if a user wants to view rows from different pages together.  So
> I thought of giving some flexibility. Since it will not be used by most of
> the users, it is collapsed under an edit button to save space.
>
>>
>>
>>>
>>>
>>>>>> My question is, how should "select all" behave now? Previously we
>>>>>> used to fetch all the rows when select all was clicked which actually
>>>>>> slowed down as it took time for large data.
>>>>>>
>>>>>> The concern I have with a paginated solution is if the page
>>>>>> represents the maximum number of rows rendered in the results pane, at any
>>>>>> one time.  Assume I can see 25 rows in the result pane.  I.e., you show
>>>>>> rows 1-25 for the first page, then you *only *show rows 26-50 for
>>>>>> the second page, then *only *show rows 27-50, etc. But when there is
>>>>>> a cluster of records of interest between rows 640 and 655, then those
>>>>>> records of interest are going to be spread between pages 25 and 26, and
>>>>>> will constantly require flipping back and forth between pages.  This would
>>>>>> be possibly worse UE than the current "user has to scroll and scroll"
>>>>>> issue.  On the other hand, if your pagination solution includes letting
>>>>>> someone nudge the rendered rows up or down a bit so that I can see rows
>>>>>> 640-655 all at once (e.g., there's a field where I can type in that the
>>>>>> current page should start at row 635, so I can see rows 640-655 all
>>>>>> together), then I'm fine with that.
>>>>>>
>>>>>> In addition to giving the user the ability to set page size, if he
>>>>>> can also select or enter what page he can jump to say 501, 990 etc it would
>>>>>> be helpful.
>>>>>>

---

From: Dave Page <[email-masked]>
Date: Thu, 22 Aug 2024 11:18:19 +0100

On Thu, 22 Aug 2024 at 11:12, Aditya Toshniwal <
[email-masked]> wrote:

> When I select rows, delete them and save the results - the rows are
> removed from the UI and from the DB. But, the cursor of the select query
> still has the result.
> One way to tackle this problem is to execute the query again to refresh
> the data.
>
> What do you suggest?
>

That's really all you can do I think.

>>> As do I. I do wonder if the ability to enter numbers for the page and
>>> the from/to rows is necessary. I guess it doesn't hurt.
>>>
>>>>>> On Sat, Aug 3, 2024 at 5:45 AM Edson Richter <
>>>>>> [email-masked]> wrote:
>>>>>>
>>>>>>> Love it!
>>>>>>> [email-masked]>; Dave Page <[email-masked]>;
>>>>>>> Dave Caughey <[email-masked]>
>>>>>>> But if the issue is that people don't like infinite scrolling
>>>>>>> because "the user has to scroll and scroll", then fix that specific UE
>>>>>>> issue, and people will be happy.
>>>>>>>
>>>>>>> the second page, then *only *show rows 27-50, etc. But when there
>>>>>>> is a cluster of records of interest between rows 640 and 655, then those
>>>>>>> then as I step to the next page I *still *have to scroll down to
>>>>>>> see the last few rows, then step to the next page, then scroll down again,

---

From: Khushboo Vashi <[email-masked]>
Date: Thu, 22 Aug 2024 15:56:06 +0530

> One way to tackle this problem is to execute the query again to refresh
For delete, you can use scroll
<https://www.psycopg.org/psycopg3/docs/api/cursors.html#psycopg.ServerCursor.scroll>
method
of the cursor as it takes relative and absolute both the positions but for
add and update, executing a query is the option.

---

From: Aditya Toshniwal <[email-masked]>
Date: Thu, 22 Aug 2024 16:00:05 +0530

Hi Khushboo,

On Thu, Aug 22, 2024 at 3:56 PM Khushboo Vashi <
[email-masked]> wrote:

>> When the page is changed, the rows come back again as they're still in
>> the cursor memory. Same issue when a new row is added or any update is done.
> <https://www.psycopg.org/psycopg3/docs/api/cursors.html#psycopg.ServerCursor.scroll> method
User may decide to delete in between rows. We'll have to keep track of
those rows and skip them manually. It will make things odd and complex.

>>>> On Thu, 8 Aug 2024 at 13:53, Akshay Joshi <
>>>> [email-masked]> wrote:
>>>>
>>>>>
>>>>>
>>>>>>>> The problem with the *current *infinite scrolling implementation
>>>>>>>> is that the scroll baris scaled to the number of *rendered* rows, so as you
>>>>>>>> move to the scrollbar (as Aditya says, "*Many users who want
>>>>>>>> access in between rows or last row struggle to do it as the user has to
>>>>>>>> scroll and scroll.*")
>>>>>>>>
>>>>>>>> However, if ultimately you decide to toss out infinite scrolling
>>>>>>>> for pagination, then please make the (default?) page size be the number of
>>>>>>>> rows you can actually see in the result pane, rather than some arbitrary
>>>>>>>> number (e.g., 50).  Having the page size equal to the number of rendered
>>>>>>>> rows means I can quickly step through the pages and hopefully notice a
>>>>>>>> record of interest.... If the page size is larger than the number of
>>>>>>>> rendered rows, then as I step to the next page I *still *have to
>>>>>>>> scroll down to see the last few rows, then step to the next page, then
>>>>>>>> scroll down again,  I.e., that would be hideous UE!
>>>>>>>>
>>>>>>>> Second choice: use pagination, but *only *if there's the ability
>>>>>>>> to see a specific chunk of records on a single page (rather than spread
>>>>>>>> across two), and make the pagination size default to the number of records
>>>>>>>> visible given the height of the result pane
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Dave
>>>>>>>>
>>>>>>>>

---

From: Khushboo Vashi <[email-masked]>
Date: Thu, 22 Aug 2024 16:05:46 +0530

> those rows and skip them manually. It will make things odd and complex.
Yes, manual tracking will be required.

>>>>>>> Just want to share the progress on this. Attached is a quick demo.
>>>>>>> It is not complete yet, but I just want to make sure I'm in the right
>>>>>>> direction.
>>>>>>>
>>>>>>>>> First choice: keep infinite scrolling, but simply fix the
>>>>>>>>> scrollbar scaling and/or give the user the means to quickly jump down by a
>>>>>>>>> page or to a specific page