Subject: Bug in Database Nodes in the Tree

From: Yosry Muhammad <[email-masked]>
Date: Wed, 17 Jul 2019 19:18:50 +0200

Hi Khushboo,

There's a minor bug that I noticed a while back that when you right click a
disconnected database (to drop it for example) it automatically connects to
the database and expands the node. This behaviour is a little annoying to
users (me too), I am trying to fix it.

I looked around the code in the browser module (node.js, database.js,
menu.js) and I couldn't find a way to modify this behaviour. Is this
handled internally by jQuery? Is modifying this behaviour feasible?

I think the problem is that the right click event triggers the left event
click too. Am I correct?

Thanks!

---

From: Khushboo Vashi <[email-masked]>
Date: Thu, 18 Jul 2019 10:57:21 +0530

Hi Yosry,

On Wed, Jul 17, 2019 at 10:49 PM Yosry Muhammad <[email-masked]> wrote:

> Hi Khushboo,
>
> There's a minor bug that I noticed a while back that when you right click
> a disconnected database (to drop it for example) it automatically connects
> to the database and expands the node. This behaviour is a little annoying
> to users (me too), I am trying to fix it.
>
> This behavior is by design as we have considered some of the pgAdmin
III behavior. One behavior we can change is that on the selection of the
database node, we can just connect it and not expand it and when we expand
the database node (by arrow icon or double click), we can connect and
expand both.

We need Dave's approval to change this.

> click too. Am I correct?
>
> Basically, the browser tree is generated through the aciTree library, so
when required, the public APIs (provided by aciTree) of the events are
being called.
In this case, on the selection of the database node, the selected event is
used in the database.js file.

Thanks,
Khushboo

Thanks!

---

From: Yosry Muhammad <[email-masked]>
Date: Thu, 18 Jul 2019 07:40:40 +0200

Hi,

> We need Dave's approval to change this.

I think this makes more sense.

> Thanks for the clarification.

---

From: Dave Page <[email-masked]>
Date: Thu, 18 Jul 2019 09:14:26 +0100

Hi

On Thu, Jul 18, 2019 at 6:40 AM Yosry Muhammad <[email-masked]> wrote:

>>> There's a minor bug that I noticed a while back that when you right
>>> click a disconnected database (to drop it for example) it automatically
>>> connects to the database and expands the node. This behaviour is a little
>>> annoying to users (me too), I am trying to fix it.
>>>

pgAdmin 3 automatically connects databases on select but not servers. I'd
be fine with only connecting databases and servers on expand, and not on
select. That should not affect auto-expand and treeview state restore at
all, but will mean you can right-click a database or server without it
connecting. FYI, I've found this behaviour annoying too.

I can't imagine it would require hacking aciTree to make that happen - we'd
basically just move the connect function call from the onSelect handler (or
whatever it's called) to onExpand wouldn't we?

>> In this case, on the selection of the database node, the selected event
>> is used in the database.js file.
>>

-- 
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

---

From: Khushboo Vashi <[email-masked]>
Date: Fri, 19 Jul 2019 10:30:55 +0530

On Thu, Jul 18, 2019 at 1:44 PM Dave Page <[email-masked]> wrote:

> This change will definitely affect the auto-expand and tree-view state
restore, but that can be handled by some code changes.

> I can't imagine it would require hacking aciTree to make that happen -
> we'd basically just move the connect function call from the onSelect
> handler (or whatever it's called) to onExpand wouldn't we?
>
Right, as we have implemented both expand and select calls, we just need to
remove the select handler.

>>> I think the problem is that the right click event triggers the left
>>>> event click too. Am I correct?
>>>>
>>>> Basically, the browser tree is generated through the aciTree library,
>>> so when required, the public APIs (provided by aciTree) of the events are
>>> being called.

---

From: Yosry Muhammad <[email-masked]>
Date: Mon, 22 Jul 2019 22:47:34 +0200

Hi,

I tried just removing the lines responsible for connecting to the database
on selecting a database node and it seem to work fine. Specifically the
lines 254-257 in database.js (callbacks.selected function).

Are there any specific scenarios I need to test to make sure everything is
okay? Anywhere else in the code where I need to make changes?

I also checked the tree state restore and it seems to work fine.

Thanks.

On Fri, Jul 19, 2019 at 7:01 AM Khushboo Vashi <
[email-masked]> wrote:

> Right, as we have implemented both expand and select calls, we just need
> to remove the select handler.
>
>>
>>
>>>
>>>

-- 
*Yosry Muhammad Yosry*

Computer Engineering student,
The Faculty of Engineering,
Cairo University (2021).
Class representative of CMP 2021.
https://www.linkedin.com/in/yosrym93/

---

From: Khushboo Vashi <[email-masked]>
Date: Tue, 23 Jul 2019 08:45:45 +0530

On Tue, Jul 23, 2019 at 2:17 AM Yosry Muhammad <[email-masked]> wrote:

> I think all the right side panels (i.e. Properties, SQL, etc...) will be
affected.

>>> pgAdmin 3 automatically connects databases on select but not servers.
>>> I'd be fine with only connecting databases and servers on expand, and not
>>> on select. That should not affect auto-expand and treeview state restore at
>>>>> In this case, on the selection of the database node, the selected
>>>>> event is used in the database.js file.
>>>>>

---

From: Dave Page <[email-masked]>
Date: Tue, 23 Jul 2019 09:01:13 +0100

On Tue, Jul 23, 2019 at 4:15 AM Khushboo Vashi <
[email-masked]> wrote:

>> I tried just removing the lines responsible for connecting to the
>> database on selecting a database node and it seem to work fine.
>> Specifically the lines 254-257 in database.js (callbacks.selected function).
>>
>> Are there any specific scenarios I need to test to make sure everything
>> is okay? Anywhere else in the code where I need to make changes?
>>

They're populated on select. It may mean that we have to show a "Please
connect to the server" message in them, if a database or server is selected
but not connected.

---

From: Yosry Muhammad <[email-masked]>
Date: Tue, 23 Jul 2019 10:56:54 +0200

Thanks for making things clear.