public inbox for [email protected]  
help / color / mirror / Atom feed
[pgAdmin4][RM#3155] Allow user to lock the Layout
33+ messages / 8 participants
[nested] [flat]

* [pgAdmin4][RM#3155] Allow user to lock the Layout
@ 2018-03-29 13:15 Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-03-29 13:15 UTC (permalink / raw)
  To: pgadmin-hackers

Hi,

PFA patch which will allow user to lock the panels and it will not allow
user to drag & drop them.

--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Attachments:

  [application/octet-stream] RM_3155.diff (113.1K, 3-RM_3155.diff)
  download | inline diff:
diff --git a/docs/en_US/images/preferences_misc_layout.png b/docs/en_US/images/preferences_misc_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..d04d3c85b07c9809cbabdc01f152c4273ab59139
GIT binary patch
literal 89671
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%0A)&6`eCIk5-*Kscgn@xFKKkM
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%0AEaxiY@ZQT3dfn3N
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
HCc*y?1dlk4

literal 0
HcmV?d00001

diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index 1f27961..241f24c 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -91,6 +91,11 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
 
 * Use the *User language* drop-down listbox to select the display language for the client.
 
+.. image:: images/preferences_misc_layout.png
+    :alt: Preferences dialog user layout section
+
+* When the *Lock layout?* switch is set to *True*, user will not be able to drag and drop panels.
+
 **The Paths Node**
 
 Expand the *Paths* node to specify the locations of supporting utility and help files.
diff --git a/web/pgadmin/browser/__init__.py b/web/pgadmin/browser/__init__.py
index 724e677..0adaf21 100644
--- a/web/pgadmin/browser/__init__.py
+++ b/web/pgadmin/browser/__init__.py
@@ -854,6 +854,9 @@ def utils():
     except Exception as e:
         pg_libpq_version = 0
 
+    misc_preference = Preferences.module('miscellaneous')
+    panel_setting = misc_preference.preference('docker_panel_layout').get()
+
     for submodule in current_blueprint.submodules:
         snippets.extend(submodule.jssnippets)
     return make_response(
@@ -870,7 +873,8 @@ def utils():
             editor_insert_pair_brackets=insert_pair_brackets,
             editor_indent_with_tabs=editor_indent_with_tabs,
             app_name=config.APP_NAME,
-            pg_libpq_version=pg_libpq_version
+            pg_libpq_version=pg_libpq_version,
+            panel_setting=panel_setting
         ),
         200, {'Content-Type': 'application/x-javascript'})
 
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index ab0681a..7327687 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -9,7 +9,7 @@ define(
       var defaults = [
         'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
         'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
-        'canHide', 'limit',
+        'canHide', 'limit', 'isMoveable',
       ];
       _.extend(this, _.pick(options, defaults));
     };
@@ -22,6 +22,7 @@ define(
       showTitle: true,
       isCloseable: true,
       isPrivate: false,
+      isMoveable: pgBrowser.utils ? pgBrowser.utils.is_panel_moveable : true,
       content: '',
       icon: '',
       panel: null,
@@ -53,6 +54,7 @@ define(
               }).append($(that.content));
 
               myPanel.closeable(!!that.isCloseable);
+              myPanel.moveable(!!that.isMoveable);
               myPanel.layout().addItem($container);
               that.panel = myPanel;
               if (that.events && _.isObject(that.events)) {
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index be3b712..e021a06 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -26,6 +26,7 @@ define('pgadmin.browser.utils',
     is_indent_with_tabs: '{{ editor_indent_with_tabs }}' == 'True',
     app_name: '{{ app_name }}',
     pg_libpq_version: {{pg_libpq_version|e}},
+    is_panel_moveable: '{{ panel_setting }}' == 'False',
 
     counter: {total: 0, loaded: 0},
     registerScripts: function (ctx) {
diff --git a/web/pgadmin/misc/__init__.py b/web/pgadmin/misc/__init__.py
index 19e1828..923e224 100644
--- a/web/pgadmin/misc/__init__.py
+++ b/web/pgadmin/misc/__init__.py
@@ -68,6 +68,12 @@ class MiscModule(PgAdminModule):
             category_label=gettext('User language'),
             options=lang_options
         )
+        self.misc_preference.register(
+            'layout', 'docker_panel_layout',
+            gettext("Lock layout?"), 'boolean', False,
+            category_label=gettext('Layout')
+        )
+
 
     def get_exposed_url_endpoints(self):
         """
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index 473f20a..d8edc8f 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -525,6 +525,7 @@ define('pgadmin.datagrid', [
           // Set panel title and icon
           queryToolPanel.title('<span title="'+panel_title+'">'+panel_title+'</span>');
           queryToolPanel.icon('fa fa-bolt');
+          queryToolPanel.moveable(pgBrowser.utils.is_panel_moveable);
           queryToolPanel.focus();
 
           // Listen on the panel closed event.
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index f9049d8..3710024 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -725,6 +725,7 @@ define([
                         );
 
                       panel.focus();
+                      panel.moveable(pgBrowser.utils.is_panel_moveable);
 
                       // Panel Closed event
                       panel.on(wcDocker.EVENT.CLOSED, function() {
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index 923ccea..ab96aac 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -176,6 +176,7 @@ define('tools.querytool', [
         height: '20%',
         isCloseable: false,
         isPrivate: true,
+        isMoveable: true,
       });
 
       sql_panel.load(main_docker);
diff --git a/web/regression/javascript/browser/panel_spec.js b/web/regression/javascript/browser/panel_spec.js
new file mode 100644
index 0000000..2ad5dd5
--- /dev/null
+++ b/web/regression/javascript/browser/panel_spec.js
@@ -0,0 +1,59 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2018, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+define([
+  'pgadmin',
+  'browser/panel',
+], function (pgAdmin) {
+  describe('Panel', function () {
+    let Panel = pgAdmin.Browser.Panel;
+    let testPanel_1, testPanel_2, testPanel_3;
+
+    describe('when we create a panel', function () {
+      describe('and it is moveable panel', function () {
+        beforeEach(function () {
+          testPanel_1 = new Panel({
+            name: 'test',
+            title: 'Test',
+            isMoveable: true,
+          });
+        });
+        it('it should call moveable method with true as argument', function () {
+          expect(testPanel_1.isMoveable).toBe(true);
+        });
+      });
+
+      describe('and it is non-moveable panel', function () {
+        beforeEach(function () {
+          testPanel_2 = new Panel({
+            name: 'test',
+            title: 'Test',
+            isMoveable: false,
+          });
+        });
+        it('it should call moveable method with false as argument', function () {
+          expect(testPanel_2.isMoveable).toBe(false);
+        });
+      });
+
+      describe('and user created panel without defining isMoveable then it should be moveable', function () {
+        beforeEach(function () {
+          testPanel_3 = new Panel({
+            name: 'test',
+            title: 'Test',
+          });
+        });
+        it('it should call moveable method with true as argument', function () {
+          expect(testPanel_3.isMoveable).toBe(true);
+        });
+      });
+
+    });
+  });
+});
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index 306a030..9932907 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -80,6 +80,7 @@ module.exports = {
       'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults',
       'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin',
       'pgadmin.backform': sourcesDir + '/js/backform.pgadmin',
+      'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'),
     },
   },
 };


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-03-29 13:47 ` Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Dave Page @ 2018-03-29 13:47 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: pgadmin-hackers

Hi

On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <
[email protected]> wrote:

> Hi,
>
> PFA patch which will allow user to lock the panels and it will not allow
> user to drag & drop them.
>

Tests pass, but when I lock the layout, I can still drag panels and adjust
the splitters etc. After doing so,  reset the layout and now have the
broken layout seen in the attached screenshot. I have rebuilt the bundle,
reloaded etc.

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

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


Attachments:

  [image/png] Screen Shot 2018-03-29 at 15.46.29.png (451.0K, 3-Screen%20Shot%202018-03-29%20at%2015.46.29.png)
  download | view image

^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-03-29 15:27   ` Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Joao De Almeida Pereira @ 2018-03-29 15:27 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; pgadmin-hackers

Hi Murtuza,

After changing the setting in the preferences nothing happened, we had to
reset the layout or refresh the app to see it working. It only looks the
right side. Was this the intended behavior?

Not sure if this is the expected behavior or not. I would expect that any
change I do in the preferences would start working after I press the Save
button. This also happens with other preferences that only take effect
after refresh on the browser.
This being said, not sure if having the templated variable in the
javascript file is the best approach in this case.

Do you think you can remove the requirejs tags on the tests?

At the testing file you do not need to create 3 different variables for the
panels, you can reuse it, because the beforeEach will run for every test

Thanks
Joao

On Thu, Mar 29, 2018 at 9:48 AM Dave Page <[email protected]> wrote:

> Hi
>
> On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <
> [email protected]> wrote:
>
>> Hi,
>>
>> PFA patch which will allow user to lock the panels and it will not allow
>> user to drag & drop them.
>>
>
> Tests pass, but when I lock the layout, I can still drag panels and adjust
> the splitters etc. After doing so,  reset the layout and now have the
> broken layout seen in the attached screenshot. I have rebuilt the bundle,
> reloaded etc.
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
@ 2018-04-02 14:07     ` Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-02 14:07 UTC (permalink / raw)
  To: Joao De Almeida Pereira <[email protected]>; +Cc: Dave Page <[email protected]>; pgadmin-hackers

​Hello,

Please find updated patch,

Now layout will be locked after user updates its preferences, w
e have used ​
templated variable in the javascript file
​ because we do not have preference module or preference cache available
when the page loads and panels gets rendered,
​I
​ also
made changes in JS tests as per Joao's review comments.

@Dave/Pivotal team,
The given patch is working fine for all the Tabs/Panels (all the panels
from main window as well as from Query tool and Debugger) but I'm facing an
issue while handling the Browser tree section, It is a wcDocer frame
<http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like wcDocker
panel, wcDocker frame do not provide any API so that a developer can
prevent drag-drop functionality on it.

By visiting wcDocker github page <https://github.com/WebCabin/wcDocker; It
looks like it not actively maintained.
What do you suggest how should we tackle this issue?

For time being, I've created subtask for this issue
https://redmine.postgresql.org/issues/3243

Thanks,
Murtuza
 ​
On Thu, Mar 29, 2018 at 8:57 PM, Joao De Almeida Pereira <
[email protected]> wrote:

> Hi Murtuza,
>
> After changing the setting in the preferences nothing happened, we had to
> reset the layout or refresh the app to see it working. It only looks the
> right side. Was this the intended behavior?
>
> Not sure if this is the expected behavior or not. I would expect that any
> change I do in the preferences would start working after I press the Save
> button. This also happens with other preferences that only take effect
> after refresh on the browser.
> This being said, not sure if having the templated variable in the
> javascript file is the best approach in this case.
>
> Do you think you can remove the requirejs tags on the tests?
>
> At the testing file you do not need to create 3 different variables for
> the panels, you can reuse it, because the beforeEach will run for every test
>
> Thanks
> Joao
>
> On Thu, Mar 29, 2018 at 9:48 AM Dave Page <[email protected]> wrote:
>
>> Hi
>>
>> On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> PFA patch which will allow user to lock the panels and it will not allow
>>> user to drag & drop them.
>>>
>>
>> Tests pass, but when I lock the layout, I can still drag panels and
>> adjust the splitters etc. After doing so,  reset the layout and now have
>> the broken layout seen in the attached screenshot. I have rebuilt the
>> bundle, reloaded etc.
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>


Attachments:

  [application/octet-stream] RM_3155.diff (116.0K, 3-RM_3155.diff)
  download | inline diff:
diff --git a/docs/en_US/images/preferences_misc_layout.png b/docs/en_US/images/preferences_misc_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..d04d3c85b07c9809cbabdc01f152c4273ab59139
GIT binary patch
literal 89671
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%0A)&6`eCIk5-*Kscgn@xFKKkM
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%0AEaxiY@ZQT3dfn3N
z7ya8g!T6`AyCYpW0r$I?HJ&Cd?)T@a21_a_EqUyl`8HehO6Q4xAaDHBy#8(wLf^>u
z3w(V_J5(8QQ<mA6NzFA=i?apCVp$pINsOupeUhGfh0LlEsdo7<`eWB@Qpfu1ZUQFT
z=aCd+q8$7mkVTJrOP}_peyrm?gRAYvpT|03|M|Eye&AJA+67f|20pAne3>sNGVuln
zE$#iwJE>o|n~|{Qs4WNTf^in_A68#RjB#06HqwTa^EkmGKazNoq@#{Xf`2PdUqnZ;
zJbPt5vvX4}@`=Vr_Is}_jO%-(jO&-BjCxTyI$6<=AL$#5I?VDP=+sDyspmf!t?*Qz
zl<2CcRd&W@s}7~h&?X*lkkWq0GyQ%rPrE$&v5ofha@LpcY=$EI67T%!GTvuy-icZ2
zyr#uOOU+NA>X{#Yob?Lh+&$sXUHc4viydvmXZx<|Et9_iSfPqi&s+~!v-f1PXX_ys
za$k8k-XLc<A(qEgZbTOnF&6qYI(lWj>Hy_tyHxjvy*K_z5&gakbAxuChRKf)Qt@Tk
z$<p8HHukk5S5F2i)L(tl4*h!GU*Ue(x$dBYe^%`^&R1Aa*jRPzYf0a$H*CRe`Ijiz
za`c%?b$4Qjj_&sn)(n5G-k{w#Kpy<(BPCF3qSG9g>{w2x4z1M#TB`><;<AN&b#sE#
zFVOy425qRE#AIZ9SxC$+Dwq2#X@nn~Sy>L!Sle_X*R@@YR(T3t>|YvaAqC7-Q1x5|
zCMCJ?R+IL+efmLM?VpvSOItiPnE0z*($%RfGOZq{`ef}7)R@N_9ZCX*gyZ|d_;SM|
z)c{&&iGVk^xUJvu@b3X)lg`3ZX7$MbRW);*ObB~Z>WVPhJh71XI!o~3`JwAsw_+96
z`@WIn7|NI+9}NubJzg^+3Dl3HU`yP_LiuNUsy}}q(G}*Hom^*jXv8pqJ92tAb%WHx
z`r`bWqM+}=m&>)uiq*%-6BY08g;yfoM7bYz7HX+K<Fn2Bg}e0qpFdKkFy<sWxUQqS
zTWys#jzvJh;q{%*Wo5!Dw{Q291}W)J)>$;F85Dhf!4!gREpjAh6?d%_uK+=f5PkSU
zfnl4MF#y?@O8D{ULq&nign_r?)41SsXC2O7{RpnMpMhyz7R>+Yr2Sx;ela&gESeXh
zXA=_<wdfmP!GQZG<!eE~k_S6zA}Y?J>DOUg98@XZdetuGc4huSTv`%F^Y_!cYy|ud
z4S(2}vJZp~U89R9f^F|mFC_iF&PaPe?quH3^5zl`U(o`k#Btm6Lv}gB@K+Se@Y`y~
z$=MH<r`>i^W%dVu;+H(V@Ixi)D$X%5>LtMr^5u;3Q<sk?;Wjj5cZw<`++6Z*c^`dH
zO`@<=vwSI^a8dud80Z}Sx|<j910S64I&9BZSQZ#Z>0QY~9qR{fns(W-fBxdk$K(3&
zVMQ)~iQTAr_4m5e=n}`mswV4da<~RIO$bu7qRvD!M56ttKgHZ-yOuCj&AwC%BTC^i
zv}K2hZD@&gyy?typ9(L|>&8Y*1r4Vw+(3X5|EXF?tmeYaGy$tKp_2hKwfU-d<5k^%
z9;F(R_#SSd`AAmuB9-ur_eLh?XkOm0e0uRgf6B$)(oePh-D5@yipc)v7aULe$PBB`
zwd<1&+^Bm^ITsrl`CYC0w6B%UDm^u<v3@ao0>>=rdy%0;NL`D8rLQim^re%E+j6tg
z!m=|n$5vZ`VWjrqu<dw_XYS0+YWJ(##`0a~dhe;zu@6={uZ&(Ot@I_bsZtk2@>or~
z(5gv_<+8gOX~0=2Y)+c^|NU%7ham9Y-&P<OpZOY)!|Lc+bp+hwK(40`7P)z#a|Jsc
zQfTK5GAr*v(Zyjj{82q`M!Mo>&)5g!wj-@M1k#)YB8G;rs)MeZsJ-l1<8O>q?fu3#
z_~943%pK_)vR*rnR8&=CV`|IdvchO;B$t!r$&U{|FfLcn73!#VCww(kt^9G@vaRgP
zexV=f7deMUl)L@xHy&x`Rug*8#xp?_@6BtyUS(dx1m7-x$_<BpZyj@7mN%$*d0FOG
z1LHw?Lm6evt&mr;ln;=jJjcIBj(=S!Mvxk)`JR?0d$6mZlV+H6C+k|d!b_>Lw~KA=
zND-FVcLJ3}M-9oYd{xRT`D0vnWDf#gz7;k+m-2XaPbH7*&Y4vt1+%Fwqm7OJ{<&1)
zmyA2-hVD{NDmMz&SY~f0^F_#>W&U#fbm>W(Ri%%}z7U6>;=<x$N|EGu!2!+>;byTa
zk9|#iw_Xht-_<>C$BO8<ax}HrV$x0^JT~-s^1;?hy(G19(*D`_En_BLm#l4$#lU}_
z58=$PVD~L1K3Ys1W}DBbr@%-S4}2J_QUMlHx^c5{o1IdAv86LjcZnS=bGDb?QM5-4
zx?X!D_9${>Ya-WMzfY(y>TYdC)Z})}9rvxNd84tmj@+GJcXW76*^O&ckXw@UixV~R
zK|1-Yl~bN?DXz0jt18cvtQswnFnAr2jO<uOCPp#giU?rF&G{2m?O@sTY7;lus#%6(
zVB000s#GKYcQv5}6_NIYBs{$0MvOUu4V(3nCi9UjND}-PwlAob14Tt#P0GGe1~T;Q
z;Stw)<19QJ?gajM8(#e?vjX8qBSy4hHt+AVw!Vmb*kgF>XwbXMzq-_NCVAXt>s6&n
z&%_J$PnkK-aqT*LdtDfxthDQgZ$5utL^MA`{BGOXwx=1Z?TJ2K$}8>(n=4Nkw`N8I
zG)B}cBQSWyEqBD0L;pEBJ4w(*yy6G~c4cNXrmy}}lOwT<`a3L0#m89$sZXVz96L$n
z>J_I`upp?nyH(koQCKUTiL2kE+E3-KYEMbL+3`!_!ZqTw(KEYmk+Jk%YCF!HzaDwH
zSNH(XM_u{1C{+q{jM-nFs#n<0u;v?xMLu4|7jyn~q*Z_8HVx{wQNO=$iR-HRsO-(A
zJcH_PC2iNW<Xtr4jf6!~XhWcQ)U^IG8#w-;8p4)+2@mBE!m=0NBKyzlhrUQNgEU-t
z1f}+rQ@+h2{ea2u$%cm)l0s~F^rejIG*fqVLfx{-z(s>y{SrrEowPD`rvr!l1W^4F
z(~7zTpEX8TntB_a)^EhwWw}j~^giEAD?JZ!Rg%)&ZaDO^8A*=?NXe~?xD<{H8I76>
z8%{>Qy?mYoF+&rd`B_1mA6hbZT$4&qejN_DPU|PbpR{oppZgum4w1i3Ok@H>g}6m^
zaeWhp@5$dceJdVIY<sBO`p8vGHB~c3C?|5v=b0aMoE7%$=EL}c7p@h5?o=mA1P~O`
zJFOZr@2B5kG|~$kaPH4~21muLP!fD1VOCvyc7gjg!rkhjR?3V7=Wy<5B$%Gr3>F0V
zNSTLrC&+4VsHL6-+s`%(*K>cUBb?{a0t2t=-2v`Q<5P<%{WowLV_sEk!`aDg7yl12
zJjNv&KugLdM4can^NLn{qX+fv>xSCp<7q_>pB3@FXdXHBRPNKeKdLXsyIQn;=?D3x
z#pRxZH>gZQ%0!)iJp9&=G%*m#PS;^*RQmYLtt8=p6~+GzyVG`|2TyVD9qwpq`oI??
zmIo0BJYTo#!Ux6FvmdA~f8ug6d3*3(ApEj&GEQ{aP{6>}r^RKDqpPdZpQfT{ZS)JO
zOY1^httj-1?Ozc+wMa0qa*D)#G|x=4<@41mWqeTI+-v3K{DkF$2OCpP>T6{TAHLx(
zPD;?N2@csz)a3{}y5;_OE{z9*JOZ{mkyy_!26?J^zq#nSJf-V>`RBE^P>8F`Z@ThV
zs{x_SrRsY}eo2py7!vEEUoh4QA5hZxUtTqgjNkf%l?N;y_gQ&G+6Q7NvXQG<X@->!
zQGK#rcT)W}F+KNZ1Ck952*nC01PWxyd)Mfl$cFkWt3QvAao!<bqwu^$=!SG*m9gT(
zofhgPRI1Lclvx*wB?h28Zn{Pm-G8<x8lw1t98SrHumzk|C+66N`-@Zhv2{R34aN}(
z*>fiSHuwun{Fs>Y=)isY;sxfEYCL$4VMW|mIkjkY<A?)8bN@q{JX6QFBW(o+v#*{9
z?mXsbQMc8-`|<PfzK^8=+B7Q_JQlLfIhOuxPdf$B{cw_(6b^+X#YNsn4l*0$SJ{DI
z^f<NonjL{ZQMXA9^R(1R^gTT_AAItbz?b8$u!CLMq)zRR9mg~&J5yhiF;u#o8HJdz
z;)PCikDDqkt!S7uA5J|G1_21myI%vjCC#}g;G2$FYCJ(<e@OxbZvdIi;$-r5#64$)
zcM3{0@e&F-Cet;&Tiq$=eJqK5A-R;iZ;mp*$gXlxn-<r(lDZNbG4<9ykPK6K>5Us6
z#*&7=>M)R!y|?mi27RWVq?@A<eu%3%Ecolt<%UB2bx(=2<(KAX%clHYDfMWx6U+05
z5*fbH_uL)aB9-omOYj`u{;L_3hkaK0{es@MCV}FqAjH5)>+T?HPrWq-{)HgJ+PQ^J
zoPkPgrfWuLuU8CP&NuxMKf_R3rRdyy(FQ8TB{o(c?I+#jPjiwqG}rHi#k`s%?WmB+
zIrl1$v9MeWKP&OAr0e_kn)XFOe%IvYgagX3vUiEAp+btJ$}6OQg}Ly!O|S7$<L1;G
zp;6m{M?D|c_&+e<sDCulw5@f1no_C%v0X{!%Ba|<@O%_U`+rNB`z(m0rZ3kF)^1!e
zk0Vpz)w(+I`QD8{;Y@jF3h}l*-Wd3d4Y%lfuwJ3R7DI1plFvH%<Y5g4o`k11mr}KK
z6z@2n;|`|BD;4r}?Z@}qK8McK_SOGt%SwvPD4zjC_f->|_5J8%0cT02jdyZ*ua~Nl
zuZcdi{MnwJIyX_{Wq2*faq44%Nu8AXV}%1Qtz6rs-mBjp9RFL*!Kwj-pz!dN0F<ND
zG@;1i!U8k33h~Y`Dq%(A?n~F(cG`XQrft4;IgbM1&8r%coL7=R<G#KAWm%*kozc<c
z&B^we#I`FZwjK9Cj!L>;-63f6cz$}^RXC)_#B2Wa6J{b<_iy#=0vp)BUZdgG(_^*-
z*E4bN_dph>XIMJ1$*#OrD^<_1`vyZLVp|GUA8kC`$dgA~cnJDhRNWG|@h;u&nc@4A
zo6j2U$4_rpGyikems|&BZbpNlLuKmL3{@%M7ZOttLju0lN4q8|PT1<<+N_m6c&YKV
zBr9}Y_5BkklHISEts<v9eYk|+mz46mf4w%s``<)P{xU20-1fE(&A$M@U|dZ$RqS*9
z=j7z%$<3{Hy!iE2g&WD`B@KB`yCR0lt4<?^q{r{<k#QC@<}bXt=FR?3hl9=tmhYvz
z)~dJjV`~z7^<ij|8fTL~7>TDA)s#L(kxp4B&7m3&8Fkv3?%kM`beI>`$73nFrNW_M
z^wf~ecRHEzf3FCrYH@&LlHPvPZYZ0Kj4=F)22j72G#GN+)8o2tv<N!1@e<Fl+4`PO
z#3qWN8Y5f^MjtvV@625~_leL$F+?|Zk9O<>9HH1{pxI9?FP3!I)|GYi9gU6E_cnDd
z@W~Aj+^MfDnD*WXocK_2*!_8uX6K)x@Ao0kLxy*I?k60hw-W?p&OBF|(S3~5AZuQa
z=0uhB_?qbE25f+Y)g{KG^XmZrvX}kH`HG0`YajrlujKOUUbyd%d(2LhM|8jI4eq-I
z{_9wG462;oshvEEUP*g3Ja~?E>fATuLdQ~+GK~5#<4vb?`a=d@L7a6be=(7;ro>$o
zr|{3o3`%MZYP>)<91bq7TkFHQ9D94!*M(^a0w<kV*x1=`-K(ZgS)T4#eZ6u)%&k6m
z;|ep;v2p@G9Kj<Q%cZ?<7;2w<MatdUTM<|!h6**_`9FB@pd+>3o3;2>y5dd7mOwu)
z-7olrug;?ol5_{k>gpqYP7y!WaJPLB&H&GO@=}lva!O5zc|5eV{6_Dr6#BxMf5;hs
zqqw1;gz-Cm)C+l10Q4Cuj*4jb%F*_@Hng958SrmM8|F+xyk<NX60b@FWj!?m|Hxlg
zORLIUf3M72%|~~`Ic@309EN(HXl7*VKM)NG00U|jphI;F2)`{Mx&&6tk|d%>h)W3G
za=X!95!J%oBAETyqe0oH=RU`yjptd+xO5j#z=K20H}<WKe6iW+(OD1UH`5-AufQU#
zGP~&#*lms6ocx`pd-9DV2OOPzWM~N{rt~R_JJRo9xJHnd9&#jW8~Oa459SgDj2vXq
z$xxpDT__R}*oL*khUZWLmeVJ0TrEYSujPKu1+1UrQ~;kwLwK>*p)J^)={}~1Kllk`
z&BF@MpODQzLA?cgGnx<xVbBR?_^%mHK<e>3fK!&y0vg}Tf)7F<pSyuOFgtJ(hH#!f
zaue|TdkqjNe-#Mao31rusHy@c0rUOlVp+p-TQ;EJgE3(=!w3oTNOEws*hKkse(cN^
zTKORZVb~;}G|XCprg^A=e>etm+Z8mN*n+*mtJ#u+&orhTYmPT^6XeezHURHk1Sf(E
zxO3jdO@sNk?N-yJnWyEI)fUN(XIqW~@2=yPlZ$}e7eu0mGKnp}M6>OKm;bFC$kMsW
zfWM6g{6$NAz)ui#o49wp6mthy1eBEeZZi62uD${Kb5_tW9q|(?ECWs3Zw%rAG7`k2
zaDiyCcwJLp?dM%@92;^9JiFrg;~``cFln$SbOFt2p)W{C-4L`J;epn(22Twt9e9ap
zh5Oy^&i&N<*LE<C2!W?Emr#!F4;!JzBZK3HDEjMJ&lc1-a!)$pngqPK>`HbZ_G3DY
zR|_bK9{_s{lvRl*dZ=8~0P!STfWmj<A)_0UJy;SK>b|}%pX}Ur*?`fMw!CNYizN)V
z1v`#I&!vBx|LJj<L25tF0Yr{~Oz#mc5ZMYq&OaVyKb`Sh%?Z1lCsM?ds7m`OWjaG}
zWQ|H%k0MXFNEx-8uUD;bYE<i<Pe5H&JMRjVUZ(*ld3x}Uls{7%%|QWJ$AD^4-jJ^(
zHLt4-=Lt1cj@AErwlh~m4n2@WkH+j<T@X=1;uUHil)!UFzqz1!UH)D|LNT}KZpY0U
zz<$8yvjQuD81T33g!Ix>lHxZ5h|fU??eP7;+p>9l%GMFe&dN?PtyP>y4z`bY6z>MO
z;oZ*xZnfVWeJoPxv`1e_KZUZDHCJEC1m3d_5cim|8Zl>p(`-qdWR^~B<$&aJez*pZ
zPg=SCVClw7NX@frSZ?-Q5=hU7dr0oDg7s%CxHU`w<V_oS25t%4&zN+1tKf?d-brWT
zb^kb0AP2=|*gJgsONwB=Pe>wqrX(9+fhQA3_5g*KowjS7pR_zFq}T~`0G6ZM#<n>E
zn8HBh(x}%=Z~mnUBrs$1nTgH%l>QPp$EA{Y;tk-$iv#ODq^JOmV~aF$7fBCk1l&&j
z%~1Yf2`{+Ilz_iM=sMnz6GYLULl^lg;h^v$o5r|Z`WayaX}m_gb02Yw{SVc_>KsrZ
zWFFz7hfA&Qq)dWM8W&_jBjBw1iBdcS%Uo#rpKoW1J}C7uIpCOc)9r3#SN;1KArV6-
z3z%WQS}&fPo2yYG<IdJM@4T%sHhfZKRofE%7|0sGOh1|CRi)<tS}Ign|0AjH`+(|w
z|3$Dap-Q%CmY|{U5B3O&2pe@TdZv~lscl>jNpw*fn5-fA6yl;4N1;LrMcML!Kw_mh
z$<i$X9|DPJ^H2B*H*qamOZ?$cFlQ|ZruH7vxJ!Cgkxp$mC=8tfqpN@<g@l2$P_5#?
zHEZ!)_)!_Kr{<cW8kG~U@<b7)MGQ<unCb0+fEIH{HpeR9VQ+HIBM$ZCY#n4#W{0Ma
zxvyuwr@6=j%l}m*pawwS=RhQ3w~G<mzb_tdYnu^W{Vd!14AcH@xGUG#uj}`weEX(r
zif^(C;?dHl1utVUWBTL9(d+p*VKCw^;Gl7!L~Y_EjCu4k3}xVh+^zLZOc;R8#y|fO
zH1_Op2`p-(=66WqUHc?-fywqgQ<5eX8n>G(zzQ!9l3!zg21<6gPMk^%$2TD!LGe2Q
z9d;1=*Rm@v2QMJk2!KC^QiwL4`K-a#!KFuJG&}c7dOGSQsvnZ)1HfTAGp?KS54_a?
zgv?ebcR{~1B8&JSSe{nE4C8&)aq~#d^IrtF0QV$KFG1x`#m?q0FLBh;9pL1+U!$}v
zBJ|5n&gA=xC!@#?jMRvsl`$#NJg%{!>z|OGT}X^wd_XIICMd<d_$Zzxpy^kWEUXLb
z?L1%592`#=0~G{UCH#cQ6AIA^4qUTwQWYAN+L@YT2$rDpRt#x%3~AU4r(+FCFetZO
zrp2|x<_HmDb$pxDTquoyi5u@`h)UJ3`6p$+r0GijuL1u5+u$*LGvJH9_M?VL-^rdL
z7^f(-=@plj<`6-xf&KP1e%8sNMTVXAVw&J|dgkWdhB3*!E1#|lV50pLRMy&0iezs;
zhF4S;n|ro++uev@;Ds1+z@qk%4R1BDdm*3(o!&JPmiwX{m_M#EYMb=!vwq^}05@bt
zfwj|<082tXA9j!L?e080<35{-x_@0SKvqTw1mzwF`mY{Mm@lKN(AXbXS>MF#8YNUU
z|5Bq|lbLz2NO;Li*Urk#nV4gFeRlMT$yPoeXy;&>ijS|0+lCZEx{c`-q>-A(+OUw-
zcRF#$5W1lN?#Y*lLf`8p#jUW&u%C#+QSukr0kb5!8|^0pME^NpFEfDycCP`qy?1U-
z4b(cvk46X$sn;j=H{^;)hn{y>kK`rF@sw4Pbmqy`dUXM@<HIA5S(08#?Dra{ME33f
z-qdlvf*a8<A>MDjNDspL#ilY9C~!)yjqMM2c>M5o^U~({r(5RiL^Neaz9*?+16JlM
z&cbEpk?4$h-4)t@o*TEgF;^=oTZVkyieB7UyPr&F&Lxdm_0{wF%{f<duOLE$0$Hq7
z!a<HnI7gGf*XC-0_&>vhTQGFdOh5p!aJt)-Zx~o?nDndvoyYD&(!%aT{C8n{T55qp
z51G*!vA`!7K4O}>@lSQeNel-g>6Mc}r*2Sq3>-au9rW2boK=G!THny$8|U~_sVfG_
zqhYusbft4pRXJ7ddiXs0(u^T>;<qB2e|_Ab>*kb3!@$=65a;^batt`54h)@~iq4!k
zD70_h-)ybd3D*_G_qce&nJBcB_h;rdx5gIP*yKF&=6koA$`dQcq8!!Rw_|~ejVu4>
zPY<*bE`My`hC!7-7TI{e73UkJ5Za;A-16epjHA`X&ImlT1~Vx`)C*^gzg`X62V4E2
zP8<Pk-IP!l{uMmHC)5KTAs)jDwYM?RF<FDx+LcRcgIL7X5YGqNxE-{#v>q&X#zO3N
zD&2Qwt9@#)DApz+@u<u%4S!xJvIOo=Ku<xOs6LcuTzVr(*oL{>b~u`c!=qE8vMgY{
zC_CiA!-rq;0P+b`w_Hy4wj&IE9xvEt4)#x9&MwzKnT;76(~|%)q+|ePav9OLQqj_i
zCSb9{y0%!pZAMZ=571CKR8~Of1QlnH(6grV-4$8C=B1UO`1mBw7J6_?0x>Qp7v>F3
zZZ1^CpGFkDz!JH`M2m+Tk_28-Rt1Il;rd8yO}SmI-IW}}58(jRp_-nNp>1Xs%Fep^
zaqvg=L7r))3A<VXlE&C4DjD!GL8NP82XJcfpC0Xux+6G8dOs0N@S9c`L9pw_XDEH}
zjJ>y;M&GAns-!i<R4Mj7m~=l;8L0(<BPdmXDf6F}CW-?w<WC{4cEjua=53Xjp|Zz~
zX3w%i!aK=GoD8qGl=~d-bA>uR|5+S(0zJej?ucua0zy6)(96CCsz7DnEwb!<eO1u+
z<ncJrKhk?|7P|nIdj}x3SoY7M3~(XUnnyWhGfdcdK@qZnH(3&&0nwl4D$bLd-|<m7
z6%-ag5>(KTeD8Avg%sIsJ-@)(mutUnsah@R8TjS2^u#ne&Q}#v;d|ikHnQ*&&&1z=
z{i5T0)o75D;94Ye&V(J^PM)5u^q_BsGEv;3q1&{=_&&En6aDM8g#CdJ-q&Be2#*H5
z1r-2&ZSp0uaz+}gOWNJZxbf=O2nEr0d1ezau>!UNo(({+4b*wMz8b(G>;XkF+lLhQ
zq|i*z=SgvEi9mY8k+;G&(L{8jYTNZkCi)FN)%1(K82Ny4u>mE{FnBJJeFL=I&@=!@
zI9WBPPM41BwEyd3hYn{g^)z`jmL|D2pJDhTU1I~$Tao+fyVj|t*{p1B9c|^82g+=O
za`a2zhXVU~u0i?7P_m+HnwU&N-aqUUMeO1XY#bWCJ%m6s*gDjifI4ba_>&gM`)~xS
zK*AIxj?%?+17-&6W1yA#elmM;uFESAS)&q#tUhuZf_q2gCkogem#Y@TV?a@%zcJx+
z$P{f_HlrBy@akfRkhuBzX4d8rv8!92IxILC<3dVOI$7e@9@*Ti(_XPmr?+VS{O8~5
zx8NU4i1p#n_=#ce<H<Nz0RJBtWRsC;z4D{4xS*-UA8toNKB4d51e}{MYZ9|+-T527
zr#DUb3k*65(SbhD2WVrt3`{%^sXXV8Y09p`h!P0t1rcQ!aVcEdAN5AH3Qc6j<4f*f
zQ8(>lZS;7qzU4TY_I?XUXxIDJ%=nryeoD;~|9SpF;$rz64)D^@oX<MON;y7PzqhQx
zzV3gWNAa7GQO_=FpMbWkwS6CHdk%;iw;KJ<$_kDMQSckDXxXj@5k=t;(<%c3^dS-P
zdKzh++0dKa^DA(<q6dqMmvtDcvYKBJ7dWiZSUpaF?j%4j*J2$f{qyS;Q{@|AVA@Wu
zQGbKjcZaCA3fWA)NF@UL@o0~?pK+EEtj*;6SW5W&yWpb;H}aT&K9H_NSU!SOZUU8i
z{<K+Lwd<;_;S>wgocx?Pp7k@&M^jarypni)0zef9_<CH};aZFTmT$fG1={WK7r~b}
zXeDc&^a{H-!y?VT90QMJCV-#NA~1HcU%2gj$Vp1bULH|rgf(pXigu7Zrl|#wkl`&N
z1>9}hkj#g1jEXmF*FWYi0hygHA)<E__@G)$!_UF==tDa0&LU*QoN^mA-o7G}xDPBp
z0R86U&!zUyL*)OyxQU5&QRksoEECdGBDjUPf=7uVCa5S%$d;G@VGE=RWB5dpl{obb
zK=;*9N5N02#41|Hh#NH+iHLm!?8n>nQf|VI;L@Ckc>b<URc^j5$W?+))V|-ZpTx>l
zA%$aIC`#T0zPaN8T1P>vAN1A5JFm`ZdR90#57s08CEbr=!MIZl%zW85bswX4oUf@8
zh&qdJMjUk`4K4>_8MQ>doy8%w6fccjE8SlzCkkQr;rZOwHj#hB8qm5_5t1`YRJZZ&
zyoz9(OqdWVWYu^8Ypxdvo8p!FGq46{s3h9@gUtSIE)Acr{btwD+Mm)hsaPHIECPoQ
z3D~-hOf(rdZ>Whc>jufz`5GE81xv~eSu&#|@hNv_)jH0KnEzZmk@BDL;W7a+qnrX~
z_7i0)A9V?PWO^neUQjuv9?8mGi#EM{virkW!+0m5jsx9-FrzGQ(XgQV^Jo#5h8u~O
z_~ZIx<KSy{&oNNbFzPz7j3Cj1x0<-KyVl67dH#GeXE~f8oab5Au_6LS1}FS#^m^Fa
zxHEKsbTYchoJF3dyfr8Z>(BT@z6wqt9Y8V0#2l-gt-&Nv+u!$VbXOt6qLoDv=s0fT
zNeBP2DWDN}fe)Ma9tZCBc(ki!4&><z9a<(wtw)?ex94B~=<DGv1cDf9dwYB2S18;|
z<;a5UfbfKh`<}~ak=w}I6APSweLwiWf$#4*tu#F$Sp^2==-5Q6Yc4r9IVZ6G5Vwx-
zKWG2%YCGHj>SXU^iqsKuM6W({O67<?i~VdmkY{Y^{K$ynUq4wf`q^FXdAInKlq)6y
zb+)H%JslmKW!M}}e281@aY%y5O^HIA*FnEZih>53B!(mm#=dK8l>W`XXqsn1xKoPg
z86mi8I=-y_&?&zExkw2wUC%rwaa8(N>1P(FZM?O}xHxuaXJ>O)u6@T(B>v>!L;QbQ
z7;8S;)SQ+Da%+h_%3$9&si_Qc*zNEpfLDJ2)a(<YfNm7P2$1GCY)A5P6wH7Qq2&H&
zf@;vKe$JCfNS?+m{jsFGA{=``Pkypzpk0<ys_c1TIeVgDJmuY9DxGU#sYAM~M`4mz
zV>`^{3Ao;nX(Bo@GHo-z;m|_&O^k6=AEhU3W>#XqzVzmwO9qKfN8n9Tx(ZC5otF2V
z<#J*f8hU$X%g{V7FMhH;brm{bAiFGR{g%LN>osVNzJP4M_r~_qHQIo3ng(Lfoyzx|
z9DVgY{VbQ$rz%EPVZpg#HVrXiGf&5lMwA*oD)#!R`)2l#v{987?IeKZ<alo?je$oT
zqQePFd!H&i6%AirO#FKm^9&xY12Z>t>bx1>Hz<-PfGAdJUy+^)d?gL<wTO^m2N;V9
zA3$G$a*ZUwRBRcHJ>tPQ#`YYDP1!_5v=K;iz}2zcvYBnDzxVN;N|$-80hrL`0e((&
zbWG->Hx&j@9w}I2GXr~8OqOc=$8yfAS5?+W3;CV$uPaPK$v^d8hpeKaBaZpwMdktF
zrOt~t^c&6V%WS4^00z$n|7^Kke4bIY)(?PZfVe`EZtK=hXP;iwLx^}<QTy!0rckV0
z%0N;$U7!Yl{SR9b6BqF<WxNI2eN|9joox(|98)>NOql5QddHdmx_0HG@B%Y=>f&&#
z)IHyZ3D?*WeJ%FbyYKedUqcUs)r7u+fD9u5BT%K_lOWP2#h{?$%}b5ILLil$Oix$k
zE^>~Fo|zrYRyvwOM+TG{Gbot+2z3H%znP$5g2IM6uU(0V0=!bx!JyXQ68Nq-Lx*Z5
zhsHB^=vX%b6w`e$QnZt3Sm{p5fML59!~ZYTG2cMj#OoW|@z1A>xfn?R4%<t^uUfy?
zMu+VWjMTDs=do}QO2CjD3kH*2K+Owxa0h;reISkQ#HKMqX55U3gTRP<z^IQ7V_3Op
z!XoVe|1WpLKWql{Hg2?0k6Fsx_Wo^2V|yWA^wfjoi$4V?b6sDQ9#WCy6FzxC(V9nL
z)y*r8E%eCy5DSc&zUuvLFjYFxAYFcFS=_*6gnY1FbpS+e9}1@2Cm+Ey`!jBmx?x|h
zhhl*YD(tU9Q2L5?iBwS5LW9z)cty{CF#3Lv`o2D_x_Z1NHv19jPleyoHr7<W3B0hn
zduTs%?HX_mL$Ox2-#{Yf6IKvR5D(wzt8!jk0yx=ds}nhvjK<5nfS=oc9?x%D;5Os6
z!TW8ZJQwo7KrKs0uqD1fo(?l!6%d2B@XJ18m`M0H9!UcSA1+0gVki<=WDUoDM#Z6p
ze+G^{HCkb7gnPUbRRA4r?@W^jp@UIT0puv*67C*=7h}%Doc-_R-r)T<_#wgowfpiA
z7;FKe*U9|@_(0BoI9b$!ah~>6+BVQ;^MOLRoZ(k+c{UKmuKx%UENlXeUK}%pE(DmU
zXr{krs%K*sg_7Wr0#^xBO{D#=K8jE}SKv#jCAjulH%Ck9Ir&MmG#G$3sva>+TQ<33
z-OEM^d#<8I)uPxCn{t^Q;Y~AtKfei7k*qW#j;lqXWACTmn2vcDTH?^TQn0y~`(gFm
z;S3&zF~iaq)5G|pp?SWxt}z?fP}};V#f#ufmMu&|+;@@kNE0VnTpfBixBOFaj({4`
zh9`d35t2?6Zvd38rY8l2i>;>zIm7bVXRN+sIm0$6r<TAoD~s<T!u{t@rHrtVAn<<<
z!%Ai2G-w#VAA+*Fi@Vi?OfPVbyb_4Q8pTUb{xv#{Z2GDI$$ol$e~K-VrNPPWD}3U{
zt2?^HKGv9|TVOQKZ=iv@ZKyo<Go!vbd%XVe1$S>n8htYsFzjX)I9P|33W%RtxbY$|
zJJlW=xsO}!gM`qW+{?YIO>V>sxKSfKs7xr0BA>sbRVKaOT&=3=)un3+eFteoR!@1%
ziS(k>6z?<OnV21*WV)w2ugSp;n{ekd8-MMqUW~JB#Eb%R5andlR!aS!gB=5(@;RUw
z;l6oPsGY$Xkijdu@mvK#>BQY??x%>nE&xkLd4i3CHlj(e^uZqa7A^JV<k4a{89Lw;
z`ZR}`1AM+?9Tofz^oC=cWz1x2X8c0osy#r$=$PL$+xqVg#i<3pyOJjY(Q*lrKqHk)
zI05eJwBrze_rcp@Hm^nC<V|&^Aj@kDhdO<pkDNZeDaC6&M-mq<CjT}LP%vx;S8nfr
zTD)UDo3I0-1$cmQ<DK^6Urrow;e<>6UQw3JpIZhmvY-g5neYIE>jhDj1<EJk5+KJZ
zB3i2{GXbQnYw+yth&O#_ySa}Q&H#J^*JuE#g$xHPq4$^sb2vdr3~@%Rd2A+JXLRc?
z<x6x5Fy=x4>!Y2*;CrNlBbyySy7IgU!#b?PX|X+GR7fy84A0hD40LAS0C^yF{u(!R
zFC~*%3qXzxM+aDS58J8uJK1jb(z9vbCQsf%HDSJdwL5_Ku<0MI<nNi#O>VSHFRfD%
znES7fXd~eE+r^1NN-*5bN7qd?YR#5MsOR4@@f3X}6#+8Xb?>hFqvmy*dk&B44iV|q
zfDi)<Bg*5MgH?(<rU2ZwA_OXxSblvskFefrV~NX&^f(rKWcgs8&8(656MNuQh495j
ztS-5_(s}E@D|i!_xI%z#*IL7rVdQFkpA^9xiDXy&_JwGxw+%4*AHmw3$#6pa6@P5F
zUw=g9l=sdRtSx(2+oPG>;d1Hk0p+c{#7yacyW-=<Qo5JdU|eZGp3Xn}N$8pPX>s+W
z$m!g>>a>PorRrf+1KZQ;C4r9I)Zx|te2~<zch%X)Mzuv>f|uJ!c5cET1C<=yRs77H
z@8?o%-SUigE@@a8TW#g}W~fUkD0Cg{oNP8`8yjo<nW`{8Js+;*USBZ%x#vg6`hA|a
zwO(dYoBO1}UN(+KuibE)*dC$RH}M}+_Dw>xwNyNLr$3pD?P_m|m$>ZfljD&+n;0-$
zy)nf6dMDvIkMR7nQZcKyz7>r$g;jf2Cl2b;dy4g4h3aN>vhgsW{~bAJxYcYgq4cL>
z5?}va2%Do`3j{t4T2Al4cW`tl4Qc%`^Q4ZldiMS{#<scg*wRYn*XKpWUS6$*B`6HJ
z+&;@vd!CToKWzrOM5!s|C8;^8L2|5&<(DAyTP3b{{K>6XdGWW+(R^0TD<+W`1S3J7
ze}9zVYbBrn!ERqw54tVIe6v}bTMK^#>1|_~dGbJxRU;V=cxDTkT@C+?I+fF`;Up<#
zeT9q>*jAthiB3vNGTkcb+-<nz^DntQ^qfx1hPRZ=HHqYc#+eK(RHR9@z;;`hTwjx>
z<;Q<s2P+~D8y9y|%wg&hSy)*0@myA-M<Wph{%Zo5?2{g?Yr5*ue}<;v3Q#d;J6gaC
z>SU!GmSi1>*dFGX=aV)?i0*kse!>yiDT$)<uRt>xadWn_`u?9kH|H^2p>*!&2qvls
zG`=B<GD1wSjoaqD;_T5xrTElKh8H?3^#=N8-i}vhV&pYo+tNw;i~(^%F@Ju$@?6Mo
zx*7ta%coP*CpQE56A>M3CZ*JELkIAs1}fMcka6x?GqD?2L^u!piozj(H1Ma+GmieY
z-gkrnL6v8e`CpD_de7gOuHDvHdoX78cNJ2)J;E`QTMD#~TYMT1;IbLf)uj-w3X1-H
zYS_gHv<r1ozow1OQ2k@=>k!BhEHtk)X0>;2*&Ymr10o6otZdH1Y&Y)DE5CIK9oai)
zHW(4eX$viM0|Nt@`CCuaJ|?j)r@Nd~)@exHY{DwU#@#X--wP_f@fMty>pJnt$(v7C
zNoE@FRyr6{$*y4?7Bzr1xhim5vXr!Gj5d4y=d+B0M)c0XByi0X^Ruxk^NdfQKH>Re
zQL;5Fz%+|}+ufo17Z4}4^RHgQ;y>^1?tZ<tW_=;T%X@ozvCaZGLbbtMCsRK=EYOPL
zR+Tzn$3wfOty6%Mio|8`kVkN0rnk*BmYOxgps4KfY0yHj1E*^=z)vYd!1z1=UK)Un
z<!``2)zaJ)CJ(*a#&9gah=t@A0NDa;4;Ftd<n{OOkEyQWlF;{;$`&;sZ6|@j+6A9J
zgr=(N4EzR27x^gI3&h0L3S0Nfuj0-RfDI#*dn)WWV+7_wtkCWrGL?<q-?l9}kp{c>
zeXt(x0%a=S-S=uyP*^31so?^3y@vCH^sA#SzAgN^42&%t^5OGB+_!mup2od54Rhtq
zf&ZM<R5`O0FVw)_brip+l}E#lDU{^#<~gfV9wxjQfUh#07u%F7<`T@B%Aqo>RNxY!
zr>K5y(xu|+IRdnh%aXFMJ|~YX*sLlaL$&)b`|TuF=%IA4(8QRf{0cOB1$hWvzzVOe
z_Rf*@JJ=98R)ZY*$D07VeiNcKfslKza~MZ^sru=hE*V~=1=(Dz|NCFQs?8CfuEu!)
zP(t>n3&mtJO!!YRBMc-pP24jZ0>@LJ(h>>8#vO@DuleA~ff0onU*@l6cBL%942snO
z)z_EVIsh6f@jLVKZS#ThwIR<bK{A-3djbu|#bXCt7_NgILgf;;0;|!MFaF)bDW`ph
zlmi}pb4|7|GQ`y=3hR7K$*R^I!{pK>JwerQnMGTx$4(JKA_=-bn(e7LI|4SwL8<^N
zK$XK7T-ib{!)fLH)1Z7#14pL_VPM>|nJCMdIruN!^f3bOs#@6~T~g7pBLJ7y1S+|B
zK4faq-kJ7@vs#49Uf-R2Nn9}VI?9hTbmE(g`ft4mNZ%BeoB-Hg%Y{!b46gWhwA{VU
z**tIn`4+Qq-@TVRUZQ}ez9Yo+lTr*j5wbAE+`mR+Y%%i6)bypPO|f>MhXjDAm<7^|
z<aTpm3c8Rbcc6-~RuoGs_o)k^v~rF#D0g5Re1AIzinZime40)+388Io0kq#R%ndBc
zZDjPkya4tcg$)H15nJy<j3P-aUX_WahW&&LssmbPOcx@udsp+@W-DKxJ0-inU~aky
zzctj?{DsmV<06O<^VMwv)wC&~nIdW7vMA6$c7wkQIN*Kp;sqB%?dQ_yd)C+Hsp5CA
zREcHd?9W4zf;w!$ZCK%I*Y%jEbNQpyp{I-&u*!Ch6<b*T*c=}K%_Fgi`SDHu%LU1Q
z9!cTSm>yP4muQIu!HJG?s}02A*3G*oR*;+=eesA+qmHqi+d;tfHIuoqxZ!J8K8_n3
z`iVNgo9Y4h*gaSQm46;R8ZCJAf>ujn*ZM9eKkRv<^ovN{?>bGnn(=6II6C)obajd6
zsZvuQ(DIBreiqbR%5U}lb1XmyDLVQNP;z2Dnp5O!S0DZ#3n1LUNvA+s+RBOfOK*?N
zSYyo_Lx!2wfQT$J=8jIl-Js}V{YQ!m$-cn0ZY6yMoOUwe`1ts2j%>+f`1I_s=1=?P
zv`MXhPqrxKfhN#mRnx2)MOhAt2<m>`us;Xw|1E>(b}1mOOc!;*ZKIGi<@%+AUH*8M
zX!)=B01v)KG>-MB%crD)RFe8m2;0j$!Qcsd-MJ_D>~GZu^t<KX;VUwE$fLgSh*NRh
zi?j%rxG{U7sX_N|oF(|irg?V6a#(8eYE{up0yYN=%k`DMxBP(PJbE%yA}wWx`R5n^
z-+Kb@5xXWEfHbL-!6kDG5YMteqa-O4s9#aiDm)uP5|D<^KC?;t6?05K@i)$R-)cGi
zpLVVj4-K0Qz{<Vt<yF%F7Xl*}AV$hO!V`X0l8|ueY)r~>f8jo?1+F>g3T|y*-P<P1
zo`;67eclMI++R#@Y^q+C2--Q5_lzq=3d5Ez(S8^(2y1k-Ia?OriB^1eaV0j>G{E&L
z5g@zJ1kp}XMuQnV2cU6MOQHh$`}MaO=q|8MkGkqS50=0ls(&?e>48jqO!Di@K9hH5
zt^|~bj!G|f_VmtWQFc$TQ$7hBavLwPq$Mi=hgEcJY*q`g#dB#Byw!MSkx{{EQi-^4
zZ^d4_`dQLp=-z~pA)79wE@OslE`*TJ&F+$Yep*J%aK-+>+#e3J>RBI#eDyi{6wJuG
zO7h{HS3mSY$;-x4PYB@QY<3Y=wX<L<?gO%9_NSlBssLL)L``w1UZ$>3XHXo1rVJn}
zN3%-<-22NDc7=zvttgE%={>9J^Pr6^u$Mdc`#M5y)Z6fLfiMxQrJ(WEh8Z!GQ#O>V
zd#9u{IhJ!h@)_84oU_mvKaMhTYQ~1La#R4z?mGiDx88?^g@rOZywqfoRXm{`8LqkU
zkr%6x*yLP7v63(%3gdM@LG^#6{BxYlh!oREO#2D*@oYf#7|OqUdPh$%*&|^mPXbNn
zH#s-?o^cdPqlTgg!LxDXr0V9FO(s}re5As&1ji^vNHhc#Gt<`x^MCM7H{B)44!05<
zmnSv~w9$(xFJA@JnLa(!R?>{vmU(c2J~QBzl{G2UTy`~l0j8Z-zb?DJ)YCO`ejXkW
z3cOd;c))j5t3HVmPn4n)gpCGUbq(VD`j5*`oEg6FrdfKqIjPw3X;S8U%b%kAxY&G_
znwsMV*wmz~Qn?oXNJ+^Lr)RzS#0!>Cq#?j?<a__xYu}){zXG@#vCxPCvaEal^a9L3
z5OJvlEm^BC&QGy@**x<U&qJ&B5@nbKk&1lc7qD+rS*`_K9^ly+>~n2_P`}=`99mbs
z&F9U#C9Yd$H_CTe+M_6x|NHYa0*LL|;S2^{I-_-<H_gq$eI#%Jz%e<O-UwQT5)=ag
zk!HS}$^7AmF9I1u<Ytj*t<yp0g@2xmVBa#u{t8JL?!ss6{Ufu3#)7)z*(gVsYU_v2
zxytt)VLR$Eays^L32U5I=tK^HvDd^5*Z?s{(5Ep$CwlC3=rxDNebDp_vjmhLMj7&t
z<;9`3R1#?znJj|aiOw6uK8Y|o*dPp06eI=5<ceR~Zqs37l7R{8dw*;tgg(TUQ%e=r
z@0Hx(`8`1dOKBR#pzHpht--k3i}WibujCClv;stJ7XX}IKY_rX1ujodCuhs<bQ8J)
z%t*Dtn>nxcdlk@=&;Fvp=*s_|K=R+%HPWzgVQe3bDjqw;@bs*=pY+YWexi_WyL@T9
ziv2p6k!|*_4c%kHYSzfQMJ0oUB|I@R{JhC?v$#DIWchfJa^vza6%CZx4&TDYUca7}
zMobR4hXnAOoP1{1xZK@fEXM(^$t)lSMS-a-D^#^WA|x=g%ear7o(06IP#%%Z>?Ohj
zK&Z1=Fd~^aU*>;`ih>vnU2na&C0<>^-MC9?g?R!hLbyM!>u-EN0E^a+R2FKi*t>cD
zS&jUbXM?2?3|rmZy%+Q3q@04a_C_8Z*|`~CUI_)WjSUD$<Gl{7IPd&%a8IL<f{|)d
zbD@%el6v<^=^fc)#fdVT3`}e!C!(j@F69~;%N(mxjDnz}QgCCobN8jUp5cw~OIKyo
zpIA91599db<12i-IN!N|FW@NPC~U6h7XBcl*L%g2^*-yQ50}Ytdcut>2|-Th+9C-d
z6U)ca=v}2jzMxa?2#20qLMI>Q&aBb6F`Mp<KXQSr7)WFCMgopCRx73?I4`+k$g$5v
zfD|wBU1;K#)d(lucT#F;gUGA4Ur^_Ocb|!S{FPKu9W+1X4ft?9<2m&ptD$BIdhSwL
z-@!do<m>g3+}yZJAsmhqrB)HLNo#wdw2m^##R8)uOE=pUYY%sNhN%?@nrR{hXz&<o
zN9p`x^<guO2ZFWAe1DmDZe2yESvjdmzkcGMo;3NXP_I~vbfC}0$_~MaLDuGXarUJC
zhE(p2y1x5ZIM#MsTbHRxl6#t|@D;Fd4=BjV?<v=Tk*5pb^ndKQwue3t5Swxem;wvx
z2^<|7JaRotrv@C|jXT^w8<2oW8mR%TpuA=QE!=bQmDrSl&f39*h@B;fi11@tOc7dn
zrfeGrp;aB+^sqYn+ac<E)NEdOW&QG=fhfK_hS1+bxYug1V-O^mtS3KI+O{nNFm-l#
zVSwEVLg-0`TW!f!jT)kT;-Z^w%T6Fk{jqiiniJyyx2FpfrkTM~t*{Lu@|h=C++=xD
zAd{go93VSbZie5R50Hd-uZfqxW0RFS%`3dB!6AEqzleGUjjTUMy+Gn6g7xl(KB%dZ
zzO<6cC3n>mZ8=kSOf5kf!@9<9vCtCa<i}R-PCJByeM}4v(5mk{v!)q!sGss4s3J>C
zMi=MO<6ZEM1Ulr$e;HSE{jcysm!Q&;OK;Ez{uJm^@$2$`_UsTRs-;_oyYWOP$Q|SX
z$3YQJAx)Q4Ko7Hq_QiwKd6#?VaGKzqfbJ?cWURrr7Nic@i6OYHBN`&jdQfs6y5VfE
z-;sO@6`PllEG{nQx-mx(-0|pAqr!6nuBN%ppyOuVo~a4M1B|G-{t7?`mE7h!64Xjw
zZl3tcfN$XdwyId%b3UZ0SkF_R@YV6Bz&D=&Eq)$O-m~4$v*_jcUTx=*f1a(Z8lrge
zbWM{46U?TBBynNH^yH#jMJ02e--JX5^<0sZ_e0Tny<YSomYoS~U~;gJ!F%@{gdR&#
zF@X|)uxP+KSYz;2${~k<zTuJuec{~RNO>{XBYf)_@qVo@wLz*myo)N44xyzGo$(1l
z?v%>@2Met{S44s5h0`uYSm@D=`80%Bk1JARh4-j}uug6*y%>cUZ&wUB4B*~RYY-rr
zNenoUrM`z@IWkf(BWqvxYu&TU$&oRy+1t^zS-hjtg^os-M!C1qJ+EhdT-t-T7CvR_
zJ8n$>uNymA9u0uICq>1xK+F{6^J690#k99xpe*ebQy?5p{0YV*Dt;00V1bG9+H*<I
zVeahi+VG|tbYJy)P5J)=*Y|{defP_v44<MZX8w7qc%N1>{(V?FJH7ec<OB0r);YE&
zB$f&7U+x@qv=WlGKnI)sEgCjLr6^FEhJjr{_ztE>M6UQsY}xAC-pHcN{|<)#ZILgb
zi;RZ)@pcMcIPWyPxCiL&QS0$%k@C)D0$~rG5BvQ7uDS{Cq=8?GHeNIq$Acqsgu&3Z
zSyd)cIjsyz2DLfP62J4$)teC|KL+MMjp#Q9nlUMbDASeqIzzJKsejrVsJ@+BV@FhA
zbI8cZq*Euqd`X0QtH!Ef0Ok9X{nASQN0`_2RT*i2S1ptDV$k1J_<THeTVzlv|M7)i
z@;`4#ejNOyrWeBDfPT>Yp$LEbkqM1hA;ut$i<jh$#OgL|95H!gN5eZpk77nI&3OIw
zcl&*&h?hVH%P0~G<97<r<(`L-P^p;Q$KKMU=1DHcr?a!O&^LCJ-H!6dXLOX=SadRq
z7^(`kc$8&HRFfSWXBv9I`unGVR!N)|AEbXEP`v$uT9i&jGjsI47o|@a%(STV>0|}a
zOsmOJtjY+*dz54>*?Io@FU{`vpo?lA`eCiFCm9ch+Np=+E_~!<=E9MWUP>N}G&f6V
zY!GstNK)-nJ5sx|HqX7)aHJ!yeN->gcbD<Q`jmCd?eBN*-d%<OjKEL=pctVLISzpI
za?yx~eW|=)#G?6bFjIxXX0#v$WO-cQn0ub}5X<)tSl-c!*s^8^`>;}62SMMlv;QAi
z-yKeM|NqZ%!bvzN+i`4_5lUo_P$X?7d+$S$&9RlOjL3?jRCbhgkXfN*r(;DTqmYo_
z^L>AQcjNwE*L~gB{fE1b^B%9~^D#5-D7ic_02xWXb{y_B5by@R9~g!%`qpT^6K+bT
zN%wToHdS5scA%5o=e|8`xVf4f;q%v;4$nUSDH@J}^t!_b)g*TX$&#L0Rw)~Vw{HR8
zo(DdQWk`1Fgoydc!0nB!&3V^Ame5kLMm#y!4dWtj>D5oCKfQncl)QQ8+Gqky;U{0+
zHZTH-*!5%p@f_*~TVFsgjfC@1dBUgq?Z+gn*)~$YEu@=l#lkbx?Qb4P-Exmt#1*l-
zWcjaN6lGi~;x-ZRBRH=)S{K}}#3x*?&PRp-(9R`1in+C9co1DhbKg#`><@8g8zZqm
zNv{1^yLn2$)cq^vq{;V;3eHL13e@wrzYkQo-9<7SA!*RQ8e+dREY&q-Bg2snMwAo*
zIr^fI<{TwOs7dep0oSD3<nH4AtboM&%_+&*^`#AspGVn@1(AF|Zl9T)OIJZ<)~2*J
zB7kV|Yk=9kO+)O>R-@{f^3;znx>%+K#<e`yqmW+D&hJYT`49|`%!6C1-^gKwunWB@
z@to=AJIFfl04!yFA#1j<T$b9u6$Tw%iO*dG_jsTa@)R-zeTL#xY%>39W@sSl;rSV3
zz1b)n7BXw4jB}}_g7d8wBf-pk7HL%lmsHaF*J(Q84Y_enk9a3B!{olgGa^I-BK_AE
zRV(td<G1z=>2p;}ikWHzrv{1G!tC!8Bjk>ZfT~rhHw}v^cL#tcXqG3qO0C{7lSWF`
zstt?KVb&m_E4A)qwTIEw$DucS!)Lyte-hTU9^YqBkJKCT4Kn`PV9b6IItWR91*lJm
zCXZAB-auz%&>`%(Y(u9zi}NB=I<JAo;lU$hD}tS($$&s@Y2iHnCAFIWz?bk>l-fE$
zU5C{TinLJGSn`Kc5(LBDZ0PS?u{T<G$A#=V%owXf{yuuMIZtyBwgg2Xg)-0aH|sjy
z=PtG#dF6R!z}S`?G{2v#BDa{)U{E`z0mXcT)ZD*;Htcm62CYD8b;$(EH>zQengkfB
z|1&6gXT4$FT;Vif`RoWd@H11I9Ra+H&4>!tfyKW9$^eFkE`StPBFPaDHlM^|+v)1*
z%p|x(pS~BH&cN@J3|zH367;qX_1NO3eoJAplE8n?n8Z`c8oEcgX&CZ&PbNqMnpvw7
zDKE(N#H4wmKWqQuxZ5}GD<<ggeqZ^U-I?3cDYj#mZJIfS(kTL)gf`Zjmu4DYh1@mC
z4R4oK<S02_+z;Bh_anSfC!S+iv`DgT5$weKHgNdvbJ3R@L(9(=-0l4gcLXTaN=-DZ
z^q?IO38XZ(xK~-DqROI6Qa%tq>7F)@vi_*Fv#+TlrnRGiL46t?@qV#LAuk(pp*)lb
zz0;W7e=1}6kW-FQtlkUFhAm}$@LyT%kUmsk+W`){xKDMAUVP;IVk>ysE(I*o=14=U
zMR%gK-sU5EH0|pW?H#(L;=SAP8Vs2EG~#!)@(K)#@Qm^u#Qybaqw{S%QO9v{+)&z_
z#<g3-QiZ8lwXr9Z?Qw{t<jO*q<YDvBNGDH*rSbkX=dn!kSjk4YfRpqdCdz3G+jt_s
z#VeOzh>H%M7oE#0r*Q2{bRi9m8s%b%l{zUl*;PBe_ZndHqk-H0>rnGnL7Us)I+3Lj
zl&viLS-?DG8yegn_?i|++ylb%wyU$A)3*&>72}WLqE1*G>n_R-)8agOu5Bq#G~a=x
zkR|gcG4tyr9Pf?S;reDYmMzkUzBc=To`^GmbBbL6MQ3=a+%Dld=jEnV7)nJ9Q4yi5
zEgCZa$#bWXBNn6-kcNZ&<w}l|ltjD-51k5%*}`%fx`Zno8ki1N-GMz487XVgOlwRX
zzBbhGR_5xA!5)5_ZHP8ZMoK3THAl~D{BAw+K*_X}5|W^}doJG_HuV)HdCQjQ1i1dE
z@14wg?9Z1<LUbjx!a+LD9|AU<?ds`&s1Jkf>?G22Y%Cj5+^1v68X;xjG>{cywo?bu
z{>Jk9hT=W3p=RU;;y$Yf=N{hk$n=@rOMfngO!ITYt33X1H3or#C2}Z)%C$MOe8%);
z8jGb@XmO~R%BN_V*9NYb<ixEnqi3j$Xn3y1hhM}UFbf(ws=Qi_ces62L&Fs2;oh~e
zf#rksfwbJTI4>uBG*YM$V-eow9Kqw6T6C%QcuEcFE!D|ah_DIKVn?xvJUC1%N&g~I
zPOz63?6qX;9B8w<@ce#;`*lR5EYL*a3Mnxk(HV#cS?t3qFEVVwtH}M`xeJ96v?v;1
zk8bMKnc7oUf1@TuEKyqGx*>JVu8$m;TcPr#(15Yvu+wGdPxzDWEv(R<QR)|SykTeO
zyE@ks-&HM3d&W+-ad+6Oj>3TQ^#d->bL@|s2-dXz^iP;Z<19~gzr@9URJz`4Ql;Ej
zVQoU9Ww(ty7uf|!(fsuKenUp5KVA3nrl<jlU}vH3{ihxsY7&(6xbooa<J0o>{tNvK
zT&qjVuQmlEDMv!1P|=JS3;K0h&#=e~vho!^eJK_6AC2Ufd-{e1KD>T(qL`s0A$}o+
zk8uL!r<XY99Nd73<+~i%*Ecsd#Jv1pLQ@(esE*dWeIV^IxHIjj{PX4;-<3sq!+W02
zs%uR#?Zmf~Gj%Gg^|4tCSxxs``&FL$1l%#JzLmB}l9ri!ve%SP29<s*qAaY2uv#P$
z_d*SST_ts#9k=mou)-6mGJ@!u_D~Xwj-=+f0^DG#$f5S|^2349K=2SGKHGb!|5<(x
zR(;1>^p+}ZbbQ9y<0fw|a^m#Qu3_7G_0CdXO#5T_#D}B#jdGJ$;`&naEQ7x+@a&y2
zM1*9%gq;o|xS{kmVs})t?{3DmW~sk`V%1~(*o(Ulb%lg<zgT}S!}6uY9HI@3FIj<A
zedV|=PLtuq348C`HH`mG!Y~*T6SeTtP+3I4CUQu=7PD*A<i#vJDq*{D$wbY$?AHkU
zznQ#&cnp5na+qO+X~A78PFF2H?WqlXkHOvTdV*L+G`?|f^TgOOx9DGs7R^3lTW&!b
z&3z{h@B%+R3j$M{8Zy%mP**SKda#(?!j!aESf;}U8J+(;|0m;At#BD)!(O&@iV`q3
zbeg)F?BBS6<kz-?%%qk%Gf}l&IOy8`zg832w4<29qF!?<XdVL$EZ^eA^&NFwoBQSF
z;NaN*0hdA8PIPI+P?fu@NDdK)<?cGS{`mDt|Mwq9PvZA6GKAB_bwV+_rR?dN3y8&Y
zy_9B*c{8;@%KS9eEkrGBXjnPVFXm><@0apFu>bX7)w3v?q%9aGUtDEGFp+mQ<%e(h
zE6{pTxRu+y;`FE7>tq%!>>}$jA_}iz`ZTRNe=*2)(Y`4Vx&nA$&X(D^(^W?bA~wx-
zrmz(?ef};;4mi3bPl&z!`}Sa<KqX)@iq^ST$*KoHe|gBpu6Vm8w_wK(%|*^T7Q1w?
zvPh{LA~JG+@6mrO4yR-VD$r89p4|BUDHs8hbtURFKR2;9$N9%|yeyNR6qpA^8sZj)
z&Asolng7EGPttA)NyCW#|9m?oLh<Yg@;7on3NJ(dM`FjV{o1`^iN_;5lG6<qoeh;H
z)n@RQS3o9|2hTss^%XJ^Ba%p%)H;#kb5K$yB5gky+E|3R-4FWB(}kyn_9!f(g@m6y
z($ViF3*8$qJ^T1_wLv-{d|@Upqu8#hf5W$-_}g=EEtFivpYB5@K}BbZ&yTZSe}qQD
z2MyDOdy^_ctB+Y+^Hc~v@>Uxu6X!*k?R`AK`qQewtf5ndPm6GnGO<$OghPKJ53@!?
z@RU3DFtX8i!BD>!SdtW&hc6*5J2Br^5pg6^>IjzG_z2zr!!;~`9w013JdJIW?MYJ`
z$3D=_#X;x!j@N+ji$~ym3Rc6c9fXSjy%9lbmUrHLZ~uIXxb3S7%|QE_A{bK;ZRLwS
zEjx%S;O=e*^TxG8uz*zF*QT*Lu5Gcq;>{AbH`}i-9nd%{-QH3~xkW96JE-L?X{00u
zV<xWO+HbY;;N_HqVP$weVZf-&X;4~8;&M5mUV=}VyjLw4s}2Iztj*P7SD#o4YB(o*
zz9PyY5S)r2!b@a?Bd4h~x<Ai(N`DK$q05LgQ65rw-+e|h=fR$r=2@1UeGZ7{FI5u^
zh~qwQJ8jGQd*s;ZIzR8JCD4gJQ1bH!c6eVo-X&htWw%D*`ZzA*^jA@Df#07$UiB=F
zdpP7RYzwL01iab4bB_gKLppVmrbY;hCf%K{UCN@IP4g<wH#4*dze0-><7;A;LzG-}
zHS*A?^ne?D`+PEsyGa}F<540GxYch+_aov~-=j2J+dh;;#T2?F7s=lbJLIvwDY^di
z5G#Geb50ZixUT1(ii=J}icIItM`SAv?kh$)qP~%vS0*ONzo3KT^29cD>@<ngtbD%n
zZ38Qg+bEV*+%b}I5B_lu2IJ*lTu$FPW5(ud6ORld6E5!_-12eF4E*VB93JjobAzV6
zg*au8R2(i@`P!4kVRMQ&_+TiAlIma^WhloGG@PA(c5OidGSGXK->lu!-SC`$cMo%*
zmVBWQuga)j=oMXq`S*QHJbfHrD&!Exe$*MJ^HR|IzPJ%(d9PJ)|F_c5{hHAjj%|4}
z?^Ne65!s}lT#@mh8+SMqiQ69`8q!8Is~!vIy2`=nbT2P2RQ;F+d(I}@&2MVuhVHXm
zD_(+Uu_J_0xxgeFTv;734elGRbUAY>G~em)`>RQaL4O(ekaobiaSkVm6Dm@FFJ!7?
z%rN|fOxZ)OdDLJ52zOSyX5M6pxh9BHm0A{SM8?6qi?|XG4K&nLf3=z^&Use2jg+X*
z7T=h%!XEkHzjnvx2IpayBJHyWh#^Auh`!XveAMsji8Lw8@Gt#p8x@Xy;We7YJD4gg
zrx_q6U9(LAZG=eANg>pomGi>~+kyt~H&9~!Q-Z<y&-+l+0lU+yOAn4)OIAAyUqbOF
zoo*}tF=2M{IYd7{1zT#rO=L94f1ldNQ_MA~J-D1-dUd8-E#<aaIr)w(ZDO(Gv;@L(
zTy@=*oO{P}$bK25?giq}hyiZj&7xiY(Cc-MYL}Ter~0Y2Pj5xi8~!oQEUhVAU4Vh4
zYE4V(<^#!1R(Iz2`LkNyGQXY!LF|2W2dFy_Q02r5q(wJP5D)Y$lFi!L9-km+`fm5J
z24gZ4b#}ylV01EEZZ)qw^)XAMCR<X>xoiW0FcHe)1tXds#bQ=?Tj+DsTvG^@TbQ*y
z=_*qF2K(8=;PzGYj?arnlraMfv^kCUPuvksVSILZ&E;Z%-{>CgKSr?p5Q^0|0z1oI
zlLV@T(kJgyj*66lb6e;3(X%vEZv6XmpOKFLc=E|a@KCgj+}J_$;7Y6{t2I3~o-k5n
ze>Zbt>JIj>XMJ0_vKZq$pGyM@)7gi0qhA<Z@A|x*fY8!kw*n4@nC6F5gzUO`Tf3c$
z?_cmqGz`suDc2^+!%GQ}QjWJua*-W27I(A#oHOJHr4oYOAKpj_#f`|yIF;WrN^@;p
z4)(wkiX&(`lRv&r?_~4+(fyzI{ZT*&h#|+6gugFdYW87#ohYPxm60LzjJXKQ-kH|d
zaZ0NL22YdOI%uyj7oCAU*c)18H4ep`6AcmheP#X;XdcyqKglx5$BTdsgMz~2Qe61e
zQ8QCLHxMEkeuG|Ey6feCiUm|r>mt}5UxL#`Rz<lRY~rz>aNKj#gH=*j7^7E`wuhtY
zti^tmD{++U*6sO#G1|T7ACu@CDDnI?Fu04DeI?YN@5N<=T*BpT==llkkbeRIiXEfA
z8*QlJw|0!HS^(uzzw8L_>CN{$wDo>-G)pJ(BZ`U+j0~$Uo29Q0A%q_gM@uJDuKn}N
z{Qlhx=FqvTWU^3}7o&a=bm_iQ$7L7}=J7C#>Y>Jd=4T(+xa<7yn+KT$+c27wB&jQ`
zN1fpzO1`yinfCJD4sS;Np9;3R%xx-^5~n&<6e|B1dK-nY2{f(L=BIl1U3lztab3lx
z>Yo1OL14HH?-r~d4ho|BPFB96TflOoR-t-@RGO$8gv&_WaFUb${nxhn3-gkx7+=Ho
zg&-Eh#7$E;{Z9jdkQ_)Q<zSz?1M<<Tg|4TM%oP8@2f-J4Jx;YwQLe;~Q6CsIp;~s3
zA$$V?UnPE=e6F;H5J&B?yu2Lh*jn>OEl9Wbc<Yr(<6kn4oBIE}Gp4Lk2L!HP0zr=D
zYH1fZ`P#l1KhMwi9TQ2!&?#_wKChgB2!u%hFcFY%*1ZI@hsU6qa<a5jf=--Q<|JK9
z%oV@xQ76Mdxm?8d@RrsM-lk^;e6WW;efs1M<WUDapZg)ErF<v9qw8vs<mJD(A^1SM
zdEfxjKd(xmw+I!Ac=!;}gS4NaqCxyRXES9Y&m)27vTmi|nBh2bwE(F<KuSDF9?<Sk
z=6(L<+i_o`;Bl({f(RIz<hRHpt|5+}dDo$G<{U%yyE3<2hBKe|8<gboKYK6##t@FP
z{qN92(rSQ*X%##B4Q7LL84$K2o!;M!4(8!g?|vdg8;kfMIBYW#P7w0%-RnT=KfsY%
zg9y@IbRtFvXf03tDABxv1j(q+07#Yq*4PgF`*-eT@(vs|74{@E0cengUidWlIl23e
z*LW1-r`~e}=6HHcPFCR0i-_SHEIP{@3-vG&8&4uyK`7m{{knUw$~!s`bvc)HyDR?p
zt!?0g(PXu1_)0c&Hw8F6m5Hcr2PPV65QXi*AieickWo-<SWZa5u}NGO1%!F<Nf)FF
zVbE;BxCUx8-71Y*%?L35mjXAxFU`6^x9{z_(OM&@`jV>#kL1-Xdc{*9lT0Z*bKk*O
zOhtxBHHOrmJrr&94TQ;}U_$)`T+XvEcD)82?L%vJZ3w%`1MkE#U~ajQ|5d(4Vg&im
zUdh8GZ5w(MoZ9<gd3m=Vl@k)G4CraEV<L!Tj;LpU$LPMm`ydk0m0neLdMG!14MJ<A
zZL|0JS7cJum8=y+sw^ceL$2L-c=urWrA(I&sF~k!H}}A|Uf4gw#+wJq8#|?1f+>rz
zUN^1#BKjS4YD|(ya)<~M0fZ}NA^B%NQlNQOGv}qEflWlKoCx`+NtLGf>ny&AU-hj9
z4={qqzc3|~y;syc2Bj`n*Uwc3`&}Mrt_MNzK7(MCuw)WeeenT8k{8F>!iE{V_O(GG
z`5x&8iis-WEoh?R<;D0yR7<Y*p3-jDU{uOW!3usPsmaYDRcH8&11&vwwL8IZdVhud
zNlit^u&!^FT<H@l*&Aj{>uDBOc$0|`cL$!?L7A!f-_Ptm6w^FON-8+&efSF3S#kpl
z^NmnDJHsP=pzn{jYiob(?O(***#lC`WM`FlOdQx>94o-ZG=t+6d)V}Stfb^f0fjmG
zBop&;Qext_O~CfSOAWP{4++6!Vk#zO^~<`<hvt)nqOl<<$s4MDxF=O)HAek!aeFf}
zUB6vxWfe3yi2i=<?7@sd-7zMzYt`bwo8<sBzq{0c6_4%}hrS0KER3-+=!7op4tmVi
z<Z6j*&fN`5wNyJVUHn=6&F+BZ$@YKxT9NdIA6eU*_hpZXre|9x)n(=N+uPeOL$K3v
z5W;@r97m&QDv?widb6PT0b035PzZ&E#xJCis+WjN85>g$sixH|krruIU&60v_ilZh
zAw?x#QB?XM>KgOzSauuj;zB{2LD^k({)P_(K4ShL0nNWmHq`KvD^BAbjfb1jj8R=c
z#r_Rrk`>U}r=NQ|Bl=1$O$C^*J&tjX+Q03nHL``hk<)+zBtUb;O?hYT>n{f~Zf0$6
zc6L46bb<{Vi2|@&!|E(9;`a?91wtVqtHm*B%Fs|Ub>&TG0O<!66$;8c=Q$t!pA5rX
zA%m8qqMbo0{D+@Vh0-gsr1nZ)D%WWev+RnVnzn80W9@kh`a^*TZg(9`n<5^~9#}Uk
z#5n=L+X%LH#GZgRAl-YG<P`Hw+V_4SqPE9U&@y>BK!DXF-EK1~3mQ-Iso()34Q((D
zUy(QkCI5r5sl0)OkSo!Y!CkA^9A&ft92{ldo@QBl17L7s;A>^_a0NHvGu~Ir6Kk*K
z+<%`^k)|kFwx*GQPjB*%q{P7-tYd{`0+gCYipf6MfW*vK!$QL^d|A4L$fZ@9jhdmu
zv7u4L)^4IteQ2}I`n^7hjQX<Z70@kNtcd+cA0m9Y5GnS5g!emBD9Y6i90kEJU+m(g
z?~)_CIHOlNb>EXoQNkBfO^k$XoSieUTyjqxdqX02t}hN57E_2S1v185-)*~Vp76zV
z!@nVOkg>1Cv)a4)C2QR8N#LKs0G9VX%3^Otg{OsgZn|u4!e|+a4mK63pQdGwuT%*1
zCAc#)k$j7N49_F=ho3TeqWjqnSFH}G1*rubNK=~JaGpDo%I4JN`1^bLM}Ha2vgmRB
zV&`tTi<x(Hgg@?`I;}3*bPxs_^{aEoFcYM`p@d*sn)h&CbQ1)sKNw6AM8XcV5Z>SX
zq3AC5J}$NE=~WfeQR5zj1?eH!NQOZU<5;7mZs!J5<UYNFms~%TD9s94Z>-E(n^mW8
z<8B-D{OtUsesqU?kG1o6fg4Bn<w><z*tuDUa8Jy-9aS<^{!oxmLW!Bv4hq!X;4|0C
zfM-?iHO_Ez*WrvN{#+%wpW+r&wY9t6c6BYtt4j;0bDXZC{MhfJKfgI;E&mSm{gYY^
zt3gxeBdq`Y4qs>>l$6TBP+JC<FKe9wN{6LjsNy6=M4`vSC``X`NS?et@oPMi!(ue&
zNowD%zE<r<r#jPK&p%v%pD;IKj*O<*Jp8RpyXAVtuW?W(d*+{?j+`>|BFvpPmmE6K
z)0eExEb4<={Lt*ca-k<KQ|UL>r)n=^AUhNo9X>6@+MZlseo{|NQN4uyOwku{70al~
z1-sAFwt7x~#DKuBv82^dyCwaMuhk)`?nL((ea91R(E$e85bvImJ5i7AhMFI^l>2KN
zshpos?4A!&NGaf%sYi{f{7cHK9uvl{Fdw4LFw}p{#6Q%islBtKIYF{AKEmx{=DVm~
z;n{gOMIoW_u03<vvl*_=75)=FeO;X{0bXHc9Qzf<oKiv+M|e{TZiR}Fq<+2B<5j&-
zr|2>aPnwOnMQNSQ4x~+k8LJ)O6>B(Gd~Dl{Kuzek{w@Vt^gJI?4X>8CeMY|<ES@y|
z0E*y$tf@>bR?bBdv1-2OZ9EOWJT3F%4zd2Zf&e<;j=OPNqb_UJdM=O`k+%Q~$9PG6
z#PE?yJ!2V%i=ObMt-7Yc;>s~6K1R>YBV$g6Mz~+d0CI8geF)b=%fb_bZ+C1+H5kr2
zA}6&voV%+%7J?LSg3DOf!QsKji62mkbL-RFd%8%u8?HuvwFILWD~st5|I*pP3S$Vc
zHN8%AbjzPF*4HU@YEYHka4(B+?`-YqD7s^OcPn@Yow@~mzfO*i^=f?_0&>RkD3qI2
zm0Sw!qj5^BC0PCdEC*pG2NliKxMp4sIkb)*S|&l+^_FV^!w)*!rlI9On_*N@CBj&b
zRJ)o~nIR$TYI@G3ualEjkAmBag|@l9b3PaCv+I9kbeQCYe+EK60i^YH<m%TGHtKjE
zsD&0ly30U4<oI*^#f^Nx;rN(BUry~$)?IOUmk%?*C0lq8mV(0^X$eA-8^b7nw1)Dm
z_B}C`1iNnv%*+n{etgU$Fvz{TaTexPac!<htRHL%Vn`Pp2#k*<37;r`4^CK*Xt>_*
zHoKLcoo1ntd!2sxBrxRJmTE>LGO21cMUcJn;uJW<^FZ;F<2lpNG6b&?gDmWQtTreL
zSZR+GH~D{XYvplAj&ZM}96y50kQ9~D2>NKA%MUI*dA!-(3iZ(yz+kTQZotTK?byS<
zM|r1T9Df5;HWKXf@{YoVqfQVOgLYb+8<%%u)K^qdiv3l&mtD>x>dDAJVVTQ#ipVJZ
z9=mhV4yh52tNIB5p>)>KzFBE6f4njtcc4%iN~W!5x^r@-4_UVC5)TB<J@4AW=rVYl
z3nI|Eq!t($SMZ|HoXsD@b?AH#YAocL;e%C3<@g*L0N3FNsr9tnWEL1Cmx1V_75)r8
zZf*tjh(84{Jqo0jQXSCnm%>X-<rdYer;?5G0N&3LBE%^!M}qcL-}y2i0?WVw-PqR0
zN7JuGE|~%dJY)+N8!O1Zad--VxI35(+84)~rc}1q<E}>m$uw)ocZpDs)kpl!2c3t`
zwuXgcEzAhW?t(CCU5a0$Yrc=)2(Dz`0BY)9E{!_17~b!3{ZAi+0)FIs)8+ZRETr4#
z#8R4?`mfxofi`o5Kqo1gyLJoQ#U(&=<>{;sAjZ7Ewg^iS63lWoK8GjNs7Ck;DXL$j
z)$JGb&y7WAWVaEvA1r)K_ZI2BVnW<C&C%20g37#hm)pV6XqvCh>+_?h(lF}Y9IM&S
z@pZbZi;yeO<Sj0pLB{ahS<?_7G)#fr(XC_eeX9)c#c;Twvc`l5azGN#H&Jjmw&Oc|
z-G>;hznI(TrOS#>z&`VmFq*PU#IXD&CMg;r9lM@XjbD#Ok~ul_@iP@HJRGlO@}^xr
z-5Mf{GS+%-SbyW(jL*0r(iBCb1Ulgb8H8a}YE{Zv02{eT^WZ$s8^sYB<}dUfpnl8i
zmlz1b^%q^dyRJ_$d+1B&yyTlJB8t+FpUpnlC9?SKM}CS)M-_Z!E1Qt6*X?N+H`$zN
zGBL=<1EyMz3&!5Jq?@h;y@ym5<Inax)(*k67R@A}HKQcolk3qi1<S#!^9umszGRnm
zN|oJMd1@*{&A`oWu>r%Q^|!gfw|X{JQ=uH5t~oE|<V!w$hOEfUrS1?$>w$%a<%vmI
zIlbSfx#%tQf!5|4?o0fDE+`6@_(_Q*tC?3{fK#sbEumYD=9BwAF~+7+QH93gF%hvY
z_oNfX!r?;a2Q(}|*L-5UIoKx<;h!HxNP7`MA1S797^<kgXjpaZxoj94%7p1_9(fZ9
z2UuuEROGN$pMS!zuZas(3;i?8QkN|i!FGG$<P8=%B>&6G(W)FC+rl-J2lSOI@>SUi
zj-<0V@I9_POOJa1`=Til3%Sx9bS`Y?o^tw35@4?Cx-UT9$b6|K!rFRK)m)yPIeFTA
z9hdx!kJRb@?%jn?rSjiyrN$SG@^kSf-$Lp|kvLl8SX!K6=||zOK3QL$sLv0i7>nFI
z(S4*clqve2-ksdhTtv6N(X@Q<q3gW&uLJ&{*~gG6@)FrB*cpXq4G{$$gsiXZdWEIF
zzga20ROr<CE~T{$IYv#La{P#UTB-HfU1nXFWG8vX>)h^be8E3){@+d^K^V<@6^R6*
zoT_@-iDkE#s3WV%*^+{K%L!(@g|O^BW25dF#y1!H?V@BT{y@ETsnK1UUSbYI#ln03
z<Y%v`s=!D}+MJ#zF?~~(Soiv^AL+M`R(H{Q>amZ}`s&D@|7N=~uPjYp-A0f&o*u<K
zNn-s1LP2(OwyaW2;7_MbPgxsoQc)TU;p@lONpSFVm`CskBXW{2gG73+8?k(^>yQ-@
z#~z{kFA7CaW%_>Q-tA#$-)%EqM}VR#4GU~{Q6`yg7qH3unY&_y7lAUV+WeZeeG^_9
z=WFr6vLr?ObBrfP71}n7zfXkQz(`5xfX9&i{X()DS0qobcB2)~Mu3=kAcO3ZhL~9(
zLyfvl0gY=H0$Qi9jNOrgh87RToxwc#+gx%N-{5z~=Dat8{-Q}JDLuzT!9*3;0ezF1
zC#+IwRfjWMS8qZ%;+eIMn$3<*2Ud%hb9_{dFGEE_u{B0I?E4i}K;`v8V=byO=Vp{q
z2z%;G!*}c{`i;1Fz2<CgzN%|Z+h0dnpJ&sP+%Kmapr3*_{c@Jn>h}hjP%HmWJL-Q=
zZpf6Nh33DJn|uhPm9?mE*jr{8O^IVn$7@?MnuI}X`;o~U!iMeD(}7za{hcyh$^tH?
zaT2eB4>X*X6f=L082CQ12UAwn^6fLgMpIyLG_)}w*D)2Dj@%tC<S@{{IMxj&EW}vg
z^6{Flp;d3esqxkH0=wW;M6YznjH2ZoXnsER+>ID|Q2~ig)2lni!mO>}f9zsGQK|~2
zJ$)g(y|~M~kYhIF`S9D^&NpT>lpKEMw34^p-xy98OnEkC4e(aqjC<E}JOw*Tjpz(j
z=a(;a8!kKyq4-P@MFXrats(^}GKjJ&(5r54{T~)=l1ba)+cN<D?Nn*S{GUUj^E=ku
zB0dVLU<Phb0C9?;aMHzE-6+ip4XZ={LF~m)3EqU7Q6^S)b^Lh@j<Tj)=8csJomfsV
zp`n=<(^+WZ_vz>-AHxePT4tv7n)IO*icFEB;ft+0sl^&WRjTNHsDp3))dWdR6bsRG
zTG_g<iw{#{_)?9{sP^baVyWY>{PE_Bivv|LTjRm(cCde2Lgb0^%ISu5X`7d+@j5|X
zYPgm#9VaXoR?tv7!cp+KcIeZVWqH~Zz+Ci^AZOy?otT7v!pUSjH~x|tuR7JJ$Uu`}
z+_j$W%h=%VL>bM%GHie4$ZWvVewsBR+nw>W3_!PLOB&_)TJX#XkLx}<sD;W!vo$hi
z{8-tzk!;?zdzF{80j?#iA@(}E!kp?Hp3(nygf>^pAX}4W>mbzx;n(QNAd0faI#cM@
z@~06RJI7`}qc5cptJ}*@wA{@PkCGeW*E}fu(lSdcuYKspO4HQ(6zMCXGYX+oEg;t|
zKikfjo4(0A*H!--goJ}VuC~(w9Iq2Lr^zWsT-+h+p3bc!v*C_e7yRoLN4sK}Rxhd*
zAOXqS3}Pyy3vm-7|3db7qL*;cxijBsJYIelFv<;=FE_du-p<W`(>zYAh?(E>=x3%z
zE1YFXyU^pNsWEEj@i>7W#KSvGSiCsM`KqNy3KmSKZJ;2oHF&j3E7-17+EjJWu;O%I
ziYw#ApQ&>rPb}9yrsQyMrTRZ~)qcq3<hZi6gzuWYSocoGx9#bbvKU8|i`DN|<iD@{
z2l_9;W78ViVGTbfmaJm_L9d88*?e#`$<E0_Ot!GnlcbogH=M`C^@HzqaTc|&U9gGh
z!-e6pE8PAY0UrYD-j#Whq*Xq=4sqV}3)Bn93aG1C>)Z<1^6RCqtXP%%vG=}Dozgb9
z^Offe$?N_v-pZ#Gym<R|-0=71ISA-6cUQ=SiCrP+Y|JbYM!?t|eMQV^%Bo4YZ@`zz
z&9Z$>!VniH7|%vI{PgAprN4}NyOsV2zmo1PIhlvk$=NuCcE!<%)W28nO)ZuhOENWb
zx@N|lO*7r#_oe37woUww$0jsLsRbdJw7O(M^b2td)985;sXm%*b&@GJyiu6-<d=pD
zHOAM(jXCe>U#qK7mZ~PI6-^ntGW+gERD)Eyp{&hxn7GUFpA%%-2_i+{{iVg5a$5h+
z0Ys`>s#Xi6_MOo?7#U2Iqu7jC50Y5lT;J2Vaz}heMeC}d!CCYSY45(j2#s73-~wp)
zaucxU=p<`kLbkBc+Ew?tx6mlhmtb+g>Nav*{_&4!4mx+4Os*A063Jl&crgc9F)Rk>
z{wE8Op!_nn?{Z!F9~A!%0c-`$eGnFuERn6e!=RoTDh%h^*Ng{FAC@uO@SZy|Brvz9
zSF7B=G(eH5ExM8Iq`=4D7fpw(%8yN>5xLP;7w!Ly#um`i9kw?sp4ft>xD-qheuFYn
zC^ZXS_MO)=N1|yypB|aiy7AZkFKAGT(fmkie-=?{ZBb8i-{t)#;E`@20%&IS6BApC
zk;~Kx<0-=xN;^%PzfS|4SL!}>+#Z7HA*<cq!<1s(!&uXCEin0br*y`nk*TSHKI%q+
zfA{PE32apL5DumUCIGV7#Zt{m2tO}VQ#C+3$>wviMwI*Z&Z_D)Y+QkD$B`U@bdJZZ
zja-Ry8mW>hYE$F#n+qUh$k^(O0`+_vNSyc21Ns~<RGB(j&KEt}VM3dHmv5HL^7!Q!
z;-A@Ha8-x{ERi~7v)oun7=YxY1c2IFodhF0`oIEHF-;dtm@cqtr0krOsGej-aKZpc
zD1OumP<tDK;^KG)2A*GgvXg%9EA;u%S42F5l!DGf{g(wmQqh`krqT@pfIO|3+deTH
zN7WU2OQiTDm6VL1JmSU)-W>i;sDq6+p1oYU*Y>(AN?*8jjh^uB*WD{<a2=yrp-GR6
z+0%JJM_pb0r6xm-@Zz{xA<!c~g8XS|mA-hiHls<)C2;$Mp_^gd;0J|unvWy0|HXkC
zMQgbkf=!91HISv{69gC4fPVXu?b7%Q#G2V&(u&)^xC+uFH6$LMLnWXFr{FmwO7)r(
z|H1ET%+5Q2D0cvGk8~I(Ahf_XVpBxI>yJE!{i);Ir?-c4N5J=ec9WFe3v2Zr*(Y^B
z9z=5;)?eg*3kvD>Mf0Y7n@6{EmQuz)>~@X$O#>n{RtzE<!o_ICa2<nb#zNK%Vk)>p
zv%*uT)P=#0NX{YB5~tCvz+n_Nl*GbqyC1RFp~qX26LWU;BdQW`V-+?)mw6?mw$$!B
z{kV4Zl6Xil!guB)!~|rVx06XB`9NRqdl0^hBbT4L5}!ym_W2n$ZN2i~9R$|1Az@#Y
zP0Mm#*YTy@KOt&A5y=h>IiLq24v5$RQ55$kg_hiWVt^A)J5EU?k3Kw2(5>0=`=J&+
zgyv_KtDM`Zj>^Q&or!uUeQ53z>4pZl>>iEM$5%{U{>kKT#1V^C#HuGFQPT@_q0G!J
z3`;#A+^z*R<i-?2Cn2d|Lr-0w;8?l&MvHgPBT`Vn5gw}gAmZ$a@EE8V^C&cZQs)Q1
z-!fq6+B+Dc-y;wJtb7IUAxfgH*u1INC^X*%(OhgDM|_yp{smUt6_kIEZ9!-Yef+GF
z+@f9c@e#5MwxkG{@O=ld)w_7bKJUaOB_$yYNa%LsDHhcNv}=46?;J@gj%C(teF!Gx
zdpQ0`{7s_)N7{J!8|+m?Kf?efn4){0kx3e`p`y;WgxF{Bn-;gid?1iq=nq5~(qk}N
z8_lC2J87-1@b^%JCpPlI`@Q5bAC~M!`nZm|U*tcu|9p|bllVayO0(9C<zbNTFsf`8
zOSp!tQRCRTOGfB72xO+xa*&=Y9p&)~C=R6I%Xd?eyX~d!8@c~m%qG&muB2uc5nA#?
zedk7~SdRGWu8ZDa5WaeG1o7_Sc)hO12d`Prdq?x4c1dGZx~>cSGBnC9(rOA34)nAx
zmqV<_?u@g^0#v>PcotYoX>x+BwD%V~DtLn5012Luf86i(jC)tk!xCsNgbY5|P<4PF
ztFVVyW^`vOc+j8db|aejYCsb5VW*iDQYTZ+y(O~IjB?Mdt7#sL{shoKGHm0Q1#<X~
z7=fV_jF{^;hQjXCjB@H?C1AfilRks2ujgH{xy^j@Cq6iy`+FIK$WB3oBI;SYc;tOp
z;gKExW&uzxG()~aK0GEl)}}jn*cufz#PDwn1u-ZZ3sfd+<SnGZ0nt&+j~T0nmLpvr
zN=H_4uYq+ti-i9APtzwSkiLfW=Gn7&uMXPo*swwhP_~eXkI!w#$!>)D7)83vK`)jd
z)1`Q3m_L=WIZepR6?XB0Ox^?P<p=^**!sDm-z144;%fH;;qD@y|AWvA7_^*dktu%C
zl59R@!`X<^Z6K3K%G{TyuQj?jGnwzoOahfiOxMr^CkkW2Hus$LMp|&cc5^ur&#tn#
zY&IgC=rlLbnRGKla4JzI<q<KgB0~J8M#DfR*G;}LyAgtmvl-hck5^dn=Brhzi`B9p
zFI;9SwvFiiK+C0U*PZQT-Z?RABWL)>Lv4*N_OJrDZ#F)vEyOZO!HZCQmhM!W#U48f
zs;HI_%dSSvosaqOeoRC~7Rl$H3yDB0;P;o8zy8u1%Nk1Ip;w&h&;5vdCE;Zyk9b#o
zWe`S`u2KW{cSL8r>KsN>kl-{P+pd!A^}>o#zpoZ)TKJ%nlx0-rmKGF5-znoOe*0;6
zn|)QdYLk*7kHRJ2=arS7ch1N!KZ>m=xm!W<(Dwj!?$XhqE}6PaHtpZLsu>fUZ3CJ(
z6s2y*?dPggAK!_JO3bB`mZfR$Z{8ab&Y*qgH1+WgX4P_v<oEn_q2hhN^3F#u=a$*C
z(0)stS=Sm){Q{`sRX+(KPigxRG-`AQ%YHYiq5<C!CAqL$?#ze6-to>S2O!@1A6Zfh
zzlwM90T|8Q!b3k_aN;tc{=soz((t{s>`zxXw9kLE`$H6hER|#mVHk60D5))~Y3{?>
z5jIPb56TjEt&OLx^70O|O0)SjhQg2UJdRKjucqNP$xMSCj<x)Q!3IbO>}Eb0P@nv3
zNk#V5EQAD%^lcYmUM<5nsEVm;4%gvo#NH-1Sg$s^{=Vw}8`Ro(5w}rfZn(e9juXNT
zNYLcN3r{2p<o`%J|Nj$R)KCb^Ls5s1Bsd;p>$2|UsnD@l$$lB<mTU=TY&p%`awbD;
z;P79w&UZwdf)uZU;c0BRt-l&W?L}B@KUo^3EbBkP?HjsNVBMmz#ksX{M)GjFEUOq>
zXw}}wZj-WF$$z?Q5j!9vOjD9s#bpG0F%~(4?DnhDvBO+DyXILsJb46ig+=jm@gRtN
zqW#U<`t~WbY2OEk39^D92*~0-b4*`fA~<s}>}1daX~}-^kBpP!ti(uk?1`c=K2q~D
z0Ic`9i>atQwQ}wUm>bj`!TAnt8aqXBMRhz&UosFlVfMrjL_Q$t3<xr%#_lNCTlVbs
zSe+ilnDU(B{Ud5zNW7h@A!0l(we7-f-IO#{K4=3i2TiqRy$k&<le|3)7-u9eulDJ~
zCv``zN{TjB0d^<=s*1jA%xS9S8)`g%9~*K87|n9cSHfL#>N;nO45e&p7IEB>T!I5@
z8_NnMek`zlxLzpf89C~q0O&Ltmki394xpbkUO9233|3SI)CJ<^sQN{<gYP$Yuz|D6
zwQk+UuI4<WwnD!au|FTZQToGEvwEe!@`RE6WV}Z2uDVTW+WoZL<(B(=P=?Iye`eho
zY@(e47UBfqo_sw$a+#AFl$;_EMkVDtC;}?h2GyAX9H-t$PfDOBBK)wM6GenB-=N_I
z<Uhh7OU?B$41n4w`}fZ(`qClv!Vd=Bec3<mjGhF=?xS@8A`@Y>I<BM*<Zlw-?<N}>
z!<kCH$E)3^%17aB#4pCH%8@$J=9K0uz@<N6+p$#%X}T~^NCLE&0>+RNpRay;a};cT
z!jOoQvk^o>R08#Tr_SVEd}}kCBmb<mC-Is5xeY41=xe|QzbQVYF<9eW_Hn`l4mL)l
zc?kwtP75NgQOUshKOMtz6trfU+<HvjggGU-13?%S;U6W(VY7~hH2pT<I;=tHf?A?v
zY)3R(V~t_bz!KDEN?UgX7^|}no-i+ERKS|*z@c4-gi3%-a=%yFOi69*JGPsRvgl*A
z&sMG$z7NH)oMm?&s8Z8E@=0)yQC|=6U?OljzSX4_^E!n!GY6Jv_Qg>36)5=-Y)h50
zoCN42nStj>LBTp`AkPhC=R{#6(*fsuVCc|WoB-3S_C5VO`}XWVch(%8^R3Uwwa_r+
zK(Jhs^r1Y6u{CB;{%&T>N_)x!Y7*?tsGnbZ)ck~B05nBM!*BEaeiT)Ekp~(-&Y{SS
zNJO8>)Kdyir*2+=R4^zMcz|Q3rKQD0hJ!fdfgzGGf;-i9(vFexpy!-nAvgo{GUQG{
z($<4fcCU-Cl{cKyAjs3_w7$~H*_8lQ(VHjRciYy+Er>(<=}pK^dU&yBm`3-#Ur$i}
zm5;AT17>Wf1>ikWz;4+F*8Pfkn0b)~m3}4FpX^&#ydu6-Pvhk0%ikW{0A}TENyt=y
z@11M3<FnALv@=TkK+pxcPe`sYl2TU8OH*jx6z<;4q;19Zkah8)4lN<-Qi7SyAF{!C
zNz^G{0)FR9-NYxjS}kFB@~t4_NDgkdnD*Mh&`6B1Q>Auy$dkIC$B`xhB#7Aq(+@J0
z@_mX2kWh_XJV(w3{9LzPnY=pJdkSd0fQmrKkVW#9)osQSq~hqL`6@RZSyUFe`MQJh
zJ0+g$0gENFsHGNdxE)}GwrP;AgrlT0c%9Db`{I~SU~x$k=04mB7hceZ@+4Ni8kz;I
znym4W`#ZkSCCo9XY%X>uDtAsN{Iz;8Tt#p=#p97Cteto&VfPvdcf~_Q;!Z5Zz_dHK
z9*@JVWDWJjhz@opll>u09E~PTXs7ej_xE&biZ?$4CwW2gCCqF^x&vg4I+oJQK9PBQ
zWIAa=^)fNcHk?+y>LVh*PDxZ+={+MoHjG(*S=JTG|BA$*s0jNps*4_V2-(GErPR~B
ziwG{3t<~c6<ps{SBb=sdgRvdw`*;35;t{D*!5G5LXz+@&<SRM#qF%4Sx}m><x|P`=
z`x_YhClO80$(?Al?6_q+XYv(39SYg$i7h4ALEfDN8ga6P%k^vm<pSO69`j?v58kCM
zJSQoqx8i)o1g)I>`qp64SlOLROJp;M&G+113)~jDYs&j*gJ?jik;7h`nRxd3aT1?K
zxK37`f9YU2j|vIb%)-1nZN`x?7<_mqCA|S?0scC5$tO`g-h`3F!V`t*S1mWQgs)HU
zO4^1;TzU6-B->Nkp;z=hTL}G+?X87Ck2Blgz|A9}Gr=INmW>KcYWaB!>Cm8PbXN$q
zY)Py_m>=J(#i8^hhIprTcJxkV9YdVw(hIiFr^^wq+uB4!NQnQz$k(1Aw=SHf^*9mg
zH2myDC;3?8Pa&}jP3(w<ok(BATdo%Tlt%Y$d@-6q4bv?W%7u=dH+r-4Z>tz3vjNI_
zWVvXUSjkQwY~vEKput^YSduC(_yoD>on*A)=PS?@R_gQ4VWr#fyPek+tQ0*z#VB*A
zaf??%asB<HUs+u=woPI>!u_QeDJq=aoqllP;bV{Dr_{dgSONtOCuZA3Gs-)+rdC?3
zy2!xSO)<bnfyyo8Yvg=A=0=?FHhfQ~&Uad(W>MYvLAYNueb0y)mG0b|H=YW^E9%a0
zjqCwv=nnvo`JuB1y_%GNG+rsj(_V@)4by7KoC2oUYN*%VeLcJL+-{?Q91p#w->8Br
z%A2`izwrT;2$QJe<h%vl{&t>ZfAd_^%Sq1(Thw0(R}vy+yVZ^IGMaC@4y*KQ$@{I#
zmbhXp(B?S`9<zDk*dF?6tkr->s8!{BL7GXO@kXneaeef3iGW!KA7PPu=`p|8mY9mC
zQV;VVbB}5{+K<Tcj`>gx1Xme4h4`2Av_7cAFrBk|eV6FycVMs_BhnmWY*atCTqHjG
zedQ73WV*9LE0h05znx?I(<nu+phXk--oOZ$C85+5kOhgXmtVvL@)iKz`}h&#bB5KB
zO1-d?6oE8<x!)nA&I(0yWvxj5y~NXzeO0D;RW9N)IT-!#A^q&ORf=4JCJ-IpO7P#9
z@?<!LdhYc>zbjMe5S}u*mPB_xM}5a5*77jD@})BbCz5-;L>FBO#fOkHReturh;kT4
z)e$GztBSE&HABmLZL|egHxyHng_wO~D|9SB|M>UI2kO1i{48=Nype+EPb<oe79U?N
zWQjEFL#s_l%G_nUXQd(=8~ew@g#SqkD}vuis@x>=s6A)Cp@TbL=00s;{qvH-e``@Z
z%nRPQTUKxU#^EDD^D3%Flx6J3U#4E<0nL`fpkL6pFvBRHe|BJ3+_lQx*LGKohql!n
z!;kPX7ycHgKnUe76lB2-9}X6%In2smZ8d_@Rzn@t4La3(J^8S&z%NjfX!p-23<3Mh
zMwrfOr}rP=<^MkAi=+5lJIbHThXU``Olcqao;}_AbWb6D-|s);e}5P;gBF5)@jB;=
zF7JIfLX(rjWMu~P0;19byZkeWa}Q1Kh97hsI{58PN5&ELfGW02{2$`pggZhbQ9BYF
zAgICvI>i6~CL*hfV9%3N$qfPNAo#^7il4hopuENpb8^Zz|4;i|MmF{%Nq?uS!HFf;
z_c~&B`c;~Y_PlwTQ3y5tBsqkUHS~_`Ni6zYT4}2C$IaL517%i~J-F%ftlxI+=<FW-
zu`Bsv-3mzngT@dT_2X%u{N7Nqy=cuOcr)rF_Q=U9(#GCV@YLyVVn}L<;cOrM=6~@h
z$7~Fd;s@B35w%ZW^U+*SRPz?^oE<cPyaDwp2XNY|<dMMbE%=do9r&3QLx70w!GklT
zR=>FVUDj{O;?DY%+}e|QoB5fPiyIj~Fc<oV7Inbqvv~LqJ-kqeYL&O|V^nK6Jzvn-
zdwTcOJKBO$8{U-q&mKCaqtmwUTAI#98WuJX>fA(5+qxgK`;oYZ^BmB<lb4q_<LiM7
z_-@Vtw%+h;E%sT+%5x~MMDq7vu!Nojl%t%dxtBrY*@Lr%{G!@h_gtd5mqE__V3lC}
z@Vqz=mx~VqGehuc;aKw9bMB+UVox0b88#a+s&r!VN{;_f>1?#;n5@hEe>}&kC^rp!
zm#Blwi&W@)KU25mmQ(Y!{pvcojAQwy?c1rQF58YbQ(QuObBbPqcBapDAiEVh3m%#o
z!oAXV7v-uq95UQNeW8_Ea~HY=+|v9&a6R4x;l?fBFV)(zuA@c#Q;l?zHxXwV0`$FK
z_zJU={aZu~53&7|Fb>{=;js+@9?tE``C_{L<HA4bq`sj@s`l14s3{OZ`Z^4mNbLP-
z^N^o-KO}Q-ky}Y|*8J(W$9E7^(t*wzEC1IU37&|hqp-c|U%GVLX|&V`Jdv}>DMB+p
z(?grlgC%7(bDe|@w>L5)B1*d>DR9hRe~=A9;?A+MD2llMCy}EV!rP7mAi5HkvpA9g
z^QrrbJs1Az(EO$q%Uy`OjVNbo6_LF{!g?51vo9;&uux2a<bwI~@M+md0WW8yt|2cN
z(~6X&BHD#d5H{`Ojs!|6X+H<DA*_SE=g3TU$RyII1gl1Pjfw+YBQg^i#t`b0f86S!
zOl@b#b5~-cLrXc{+;yZH94>tP)z8eHlRx*?Dc9D<YWscX$wDL=OlQ5AnhqX`N#G>T
zgRtWk$jCk?Rv@bKTA9V<0qMh$cVP?DTAMM$aGeIUu6KV(zD+@Yt~cGDy<nNV6e~GL
z6YM;2TjAPcA1kpBP7|DJEb&kPYTX!$`KO%=rvBc?-dT9Uf348tajKcRy?FLj`CCa}
zP`mJY2V)mItZ*^{DQQoIpIRG>IzsA&gn&_fK&_ZbjiK`P<`tojt_;EAVx}SeG?;m2
z7M7_4Y%>(o-+PPB$xQO8^N6WvoUH`(*v_~-jI729BsBtzyZ<wO%p_>zdfd!R4Zzq@
zkp=L?&X#X5pgqKDC<N+N+59KW4<er3SI7+;D9N3&3kW!J=B!mU0Z)O~BD*aq?UjFD
zD#?xn1&Z9cn)v0Zn*Ts0+9<M=x+K`z$?oZ!+K6e86ugapV<=&p$>T`H2$QDrex%&M
zX3SX0NY=IIN_qWE?u~y+Fsuncg}wC)y`KqDz}#-lOrXYyNZqTXuDL$(>U<mB-$)3N
zSr=afkdKn0i1YjB4(Ff6Y%NBThlID~EIzS~TAyjcunIcbUUT%|GedeaVzQ};OF-Zw
z0bb}0^LU2Oo~dTloXxrbh)#jcz`!l!XYmNVZi@kfIeG~d7vmk%jq|ldxCi<p6g|Os
z^gwF}y6fdk&s~p;+%>Y1$<%QSEkr-`KGkl@xeuho3Iw1;JXFt49%}q=HGCBw-t_}*
zd}g-~I|{$LEqi7B#S}H_hIyHXL9e0FcBGK4NCqKTOI$<8MpL4x1eljg^B>b)`d<As
z4P2?%$%&>>?L8QJtL28~5(5w9?y7suAYnHl^mgGJ!J=xsi_5CTh;sf}1_NI<y#Fk{
z!I*jQ=0VLK7`MLFDoFnPd{iy35(zK^M&zm!_6+va|9S3@Wk-LFv?A9^vF^$)aBZql
z41jsZ04JexIdf1w(yqppCMQq)1Y~+3S@-nz^o*yfZl=E?tfXD|ff;Z`p}c|o<0N(k
z_MiSF(xC8LkwZ+>r6@raKcZ%cS(MpSXID5v=i^I=VHA!FP&X-1&aJG*(*zjz9#&(0
zTzjiY0rAcH*S`YG-($%QBp_}Iv?jFTPs^hA|9E<3z=|Kv;VM&S{i82`Q{n(J+n|mL
z6ZGOkpMM|(H$E|?cIA3?T=?o7XRDd-WsM?y=@9e-cwjhDd(1x2uPz?E)-xhz{W+qs
zrFb!wj<SwMgiTKD_pMK~5Qh4x`vnVcH5oPOO_n(%F5V$nzx>Zc5UGNCAweM9s|}rW
z!f%{xjp=LeVw-d11uo9JCtz!;)61zPHS4kNxpa1=&!=DH9elql%hlfJc1_ASe?$G<
zasI9V%cG#GHcZI7LqYlSYsl9h7Ho1P%CHu0DmN;l;w($voY%|V%y*?emaV;cEB0FM
zwvL1nV|M(4;Ok6RzPH)l%x%1sKY6C&xQuRbqc-VNGHg$EXfeBFnpRdVFfFwG6I{y}
zvX!LT4D*MG#o3}i<fupWvj-IAKI#KMcdM=}d?9P^vTYZ`?^h=>kM%N%$`UOF9s3`M
zZ%D5W3jG%w7mRmBy{OZ4J~Jy!lKzjL1mH?hQR4VlvX!$el<f`$NdAcac<-S4?SA}-
zmcSFa{xfCguw2!i4UMPOg4C#wzp$J<@oT`lc^dU%nxs~xnj-7mQBTvlx}+LEKqGsi
zfUNjrvVX;S@?Go{jRYk%ha4eGY2g<<m_5lNDhmNc$H48zbPF$)C+tF~^_;(SOjkDv
zq_zkSdYxzgT3lb>kCuu+1}=!_WUApl2;D*tX?Da9Vnw=xS&Toh&Q1-;T7~|BEc{QZ
zFKFO|<4)fc(EJ8S)wj&}l;KtvZV$XLqOe6$0D)z^fRLF=%8LzDvwPIR>Lsu&##<S$
z;yS802wd##@GAQ^c~L`0Tfie+UiX2)`JlCUNm*(3`-~qionHP2>m@eg4V+Lk!4%+z
zx-=_As+MGJymL1e69F44LLFLzC>U`gBWZ}=<UD52RwGGBcd59rlAa@_)^vI^hhni8
zkfbSVc*#|rUFeGDkZD#wpCX<fMKcd15eFyl?7jQ<Bj&QXM|r<lPBg89yx1Co9SU&!
z-qQUy^?mnFqJ>eejXK3BmzO?+!rXy9G>f+Z%_<05jKgBFxV|q)qL`FrOMwna`fwf$
zA|3Fuf4BnNCO;xOL(1MuffTz~MaV%q)7?khS_>)mnby_#1VXXNcDwPl_d+~JuErxN
z-0+q{#Kov|!yl^vA<_K^&aNK6zJId(t^V63e@IA0+~$Z-7(u8Iw;Bk1-&8nW*mDT6
z(swCu=%qZX0E`imeUqIgByZk7cK4_{+-29%G77)UuXv&#a(`1X(lCP*E4G0yDK)hq
zGv0lw!`=j(-tXv6!-{3>X_L99JYB)|aWquFghfgSvDkKPF`7#|4IJ2W5G%L1h)hz;
zh>;t~B|u`iK>n$;92dB$fvC8XL{26nlob>#JmRPJK(Mo`e1}K9?)rFSdVk~~(H(mZ
zuqOn$pG%-x`bTrQB9wADSA7;{xD=p1+W}gfj1tL=2hG|g&xKKOIyUjMlzCd~NB@=m
z{coT)utQ%zK_1{C>Ar>AygPvHYd1O$E2SeGE$cEQy4Yx#DbCn*D7iL&{@7dTfpyT_
zL$8*E&lYIpkAWq~da^BHwnFUyF_!1ZaS%lcLTGfX@((*=b}-ooDkC*;xgc=qKwu^B
z#c}-mfQ|Wmo`e8E@H#-ZymCi*CJ@5BN_|!w<iB-m<U@~D0rRplX!6FBRS#5Yj*QaM
z{IPiD$E%irN+TJIUmU@sIGeTfwY@wx(Q$OERffSlx<IhT-*n&W6Qv|~YyXA5E0Ka;
z#A0rS4VU6MXIOwsEp0#IxCa_WabCe>Z$x63ZCVy1M5vUc@dj?Uo3Z9pF{X>Dxf`^n
z<;uwqa_XXF9Gfitn90l)-~C*;5B<CPHxSjb2X@4In=C#V$5L+i*Z3(i-xT11I~C=+
zt46TcocA&urW1(n^-+W*odks&N|JuHR~0Jl&7f;C0sKt+EltBenrG3YvC9d?dao3Z
zRkhS{tB~q$SypqdZZ&8DW$IDLJ$tG8L+muLV7QF$J|^7a|9$}At;~iR>YL!T&mMi9
zWm;A$A#r|Y%E*|z<Qtu@S+VIyFi3RAY=MQcPskE{dJiRhHEMyWwO<SZ;?!O>=%4Nx
zuqD1ad0g*J0~Mt5or|LfKP45(H^kc7Hp4Ak5m3I_y_ZV8qB4MtM~wxC9$_`%><_vT
z|8`Mb+^|^no?cq+cmXV-qJ3AC#{RClj91m8O%-T7e4Za2tCC&w+KmOvf@KC>KC{!J
zc5%=RiDx=U!F+XNSge)-rPmp~9%INdel|_*Yl}TK4~C_8F1HUl^FxGQ9wM%FhYXaN
z<x*r~52tV|gH9*;>5MCr-vaJ;f<7tR0<#BJwcLgGB^?90=#52c(%TRv6)GBrn`bsM
z_ko0@^vjysdjccL33kc<E${#T-v$Q&6O(?hE70{A>E#|{$4E97x`C5aaXXXKFOn(u
z*8>cff8mMA8%Ve@&ZIWC7;hc2#BhaThMI1KxC_>Eqo_~4k2f1uZhNW-v$IiolL>b;
zov&B0<s0hF>-$lwz7Ua+K{nQf-TRFhYclVJ!%d_=oIiU7g5)<rvEiYhQ=)yUQ_?7s
zR!<_Kc<_Vlrcq`T3oWmhf<~kJA;I*ULrl4?i5S-U%v&3kuj(qADn776PQdE-`6A`G
zC0%$!jjs*5P5%1b^0QP&c5*9nvTz9FHx+%aA~GO{cQRr0iej`h&hvA2^KLO$I{O{j
zCMmWf%I5oz%FAXAPxd>7J4Ptp`;H`jE^W;H_RJCAoWwug5vzn_5%iqreFAEC5KS8S
zd`y`bab3uAOiL2`u5x*&(cy;{#bTFzKmO(s{t-eoC#x1><*NDA2L4}HUl|uww|Gq|
zsI*FVcQ*(~r-XD%NypIL2-4jp2*?o9-BLqHGjw+k3_0+Q@BQEVcrTyk19N_}&z{+P
zowZk3{r7PfJZULJd`VhOn1k%)>0i|{f2a-$F%$-;3&|M!|6*VRQ50wpUu5In>Ig9W
z53YZ}&hHw+;%yMjN7pH8LncCU{3`-ff#J`)?o0%LaND|Rq2fvH`ruy|MvCY}#Ql<p
zAS$4SWajqIg&E!>y%vy0%Q8&CgmVzdvAct<|B<~h<iJ0m!Y*Lj@V|!Jg(x40v>WJq
z)Mow9b^c(Q|NQ$KD#Vj+MyV#AzmgnKX~csx!~^a8|2&FjBcEnKV*i7vHX;yERUSl`
zW9ve(^PiW5ilAYJ{F@C5MCpMK8yz`J_diqruNUX=PeK1Kk66|)8l_39f?&P&Khi@)
z+`$m|70Cj1{>mZv^DgW^w|rw)*SUx`R6K*rLSax&;MHG)2%>=BL<$_EBylnnE-tQ%
z((b=HeJFx9sNiET*aEZvdzJb>72F8A>RKNOBSxwXl7kyjT4~Aw{Ych-An_Lf{1!Vu
zA_zXfJ){jvx{UCs06uBOzpKy0w@?H$zGlC%O$<C*sn`GWYz$u>i~bIAP(?zg`J~if
zy$~xHgXicpeoRW?m9lHjFLo<<m7>vcWxDNN_aGNL(GdCFzo}*Yq9=yC(Ob(>w(fd-
zl<Xqj#k*sDL1%G|Gqa_;;kG@tZd~qgn<v&G!XwH3cu^i+nDk!rp)*VF_#R#^7eB#4
zpD_D!if043bT?SWQu6RcI7aQ4PAoOOez&gy_4cI)T<Gu;nvfI&zsfY(tpsuR;nG5X
z4NIawbs3(6(&vcRAgk9$^qD`UHTdU0oC$qq_9O*5&iRXGQ@^1jKWxmG4Op^dHpor+
zb)fUwZ_5f8CR*8cw5#cGy)_3JuUHZ*Bw;LBH8VOM)hfCI`qvHUEQ}Amy-4tVD>#D@
zD>msp%T{&gm6DYs7yGkr`x<}gT|UwP*YO@dTCSN%b8*`+z?RrvSH*8T*%4Z?6q`yu
z#JRvXF^#3oZ(!8qyrVTfeDnqS*zCw&^02gUb9^kqFRVpBJ0N!-4Y#qK&%i}-`tD7g
z8UMN+cBCk5R2BH2-_BS#_-%bm)$spFI*{+eGLVo|;dHxx@xnzoVc~0?k%Jlf0-Dk8
zEMKZc!X>eMPImvt_y$4nCFI*ra%IELIHz3+{q932`*?gHe%n}?q4RD8u~k!>PFyX+
z-QaloOCJL-@Ob&s$xzj9p1#*vx_-{mu&;2!EM!p%K&E)#41SS{S_L2i!0(8k(G`S=
zUpRrp%o=n$o|jbC1%{uXo-m(1(JnZ40pJQrB_t^S#uHA$-;LDb=Qv$$EbxS2o<J!B
zxU5TSa&nS@lqodqe*yiuIKmTxA)LPY)Bh-B|8Y$O9=62gywT@LAU5zn8;m#-80}Bp
zcrHAC-fccPgWu7p|IdLj9F7!N*f>Gv)wAtbz5f0xiz5kQcRg_SGWU+zKP@o7@X6GN
z!AEM=pf8f>AHo+h*I_7(HQVhbr8q~Lr9`kYxRkx9+`_GVAD$35%upjV`2GUI1*rbX
z#!XId(Nhn&oyA&6SAG&P$n$T`ZDl_eJ8Uv;p8HT5_j`?NAd(O65pF4s^6ApK5-E4k
zg63K1hE<ZzQ@7Z=xYYcyp<O9uz?GrqNAUAkF$uhhkoQ*7@eB=72weZHgm65J+vUqc
zSrAP_N7E$ud1s4z>ESg*k0yDaM7s+5G+dUO7pL`DA8?X}T5-Qw<D4Ix=V<@nA~rr&
z|G@*|1O47A?;gI~^2UnD?bczI)gm#`mFv-pa{NNMixch$qw5v?{7R@!@l#<qe!SF|
zKhH5`UEP8&ezMbN?+sm3y!egHuGwdD>+%ap++5?I1q&`9OBbV~r5nt=TC_OXNJ(tq
z1{gKxeL9<Y-vrPgASfw&LtLAp+p$XK_HbxoSi4SM(Lq|lQe`{MeJ|j~j!>mqR#<1h
zBF?1Evb!_B50;KL+oY?haRj{ub9z)BfjdOAG$`i{ReGx(j-eGsO=c>5uoi#PC%6=T
zcOv=T4F;$UGi!Qq^779zX+;^}DORIqoC9VEtQTq)m@;VrOCPv<rPACimwjHU#W&E8
z!sL>Q;Ihudtz=7Q`Y%;6#QZ<@xHQ9^x&Gc@Ub6@J!Ci3K$qbNGV5-mRorJ$)6@y#3
zmK$JrL{sLMa7)iI>C`UIuJnAhb#t~B1grV{h)liHo%d=d*$rXMlwmVfxwyiBkr<vE
zmRJI#+s@)is6mgUOb8*g7ns0>(>6v;!qG)WG;TfMG3N2c!#vq3wyG9YIUhd9gz5Uj
zqKE2r_2Zk(6gS;#aV6^H46y)zxEE6RH4k(h&aKPA9}0MJC2~n$tA+h(i-l|T>KjpZ
z@9Mho)vk}i|Jk_YD8vzRiIte<N*vPkAFonq=IkkB4rY@?Z)73j%ah*d&WRtjwyveW
z7D;Z%5DHZ{CbOp{Gn!-%f_Hc3ZOO@Kc^m8!59}8dWbTZ{%wFD^1!|8}oGC1}>ua@L
zMtvj@)noG5ryBF4gKHtw4>MlQEHU!!npo?>q1eYIlSn;zIZr}W&1-hVGlmM+7X(NH
zsgo(8=gzPG*+`uzaJxjfyOnuL#tpycW@(hqBuXDPyl4}0s7a0Nd$RI<S_-`N>R=kS
zahR!Lq+^CGhBLL`)h20(c8YwauCl!}b6diJO!tM>O#bkf^a{8WBCK|;C-HXT2Db|<
z4-1uaLvJCp`z7Q>aPceXB!!u#m(>(>3GR~P00$<Vy5R!9&#fQmN!t>)K_SN^114OH
z-9qaZFp=7jHYfKA64~<2#zv7&Bh1|~-^8isym!z9jLiYXUznt>!e6aJ<GUoD^&yK0
z+!bcSSI~mPbn{b?(@DFZMG?G@#%BB(8Qvz(`@i6D{0F2AoGEuf_Analcvj(M;WxC)
zUOd@~)Z^$5?^;=cMxlaLBeRAM{l^4H3(Xp`Uv8NujT&dDnth{=7CV%4&@FJg`#;c8
zJ&0sSfUwf=?RFbSD>{r*r<%b~5bL<u-L_zkzF#tRM)gqJuzzO<1~V3kAw+bsAxi&<
zegn#T3{W8o==6sZN6P1_m-NI(i%hTAC;Tb))Cacv`)O^YZxH6+{DUn*Y1ilq9V$x!
z^`Z`d_SWBMzfQ<YAPO0aW%e~$+V=d+taXCcPF$pIWA=6#ZdYs^9d)kDFB2<Jcc!!W
z5Y*|Ir9OgEgXc2BOqv6R9tFWlVQj!$Qc2W;q$4QI`>|OQE6vIxo-QDkw**jroThKI
zGjZB0Hg3f1y8R>BIhR{X4X~ci9T1Ws##DieD=^z770S*6WSOK+ZIuXJGlL!psS|6B
zFW{StSbqImpdX}zb4FLV&t_hg^|YRp26+Z*IWt~(_odKen2qDNWKGr}U2FTh)|x^K
zRQ=cY^~5wg9VZ|Rizne>CnJ*3_}OM)1WTiHL`5p8vco8Z<)y9IxYj!JO@oV2W2%4i
z_CBZB^|SLme~)!_B~(l@l29eMoa&PD6FF9DJLMfA5`oD+@$ff!I;TSG-j;v9>+ljv
z`7UL{^=7qG<uQP0@{u#-*RL|-Vy!zB@H&cwMJP2$A-&SUIce6_sxni5Eak}Hy@q@1
zNb(OC*9xYZsZmzSSOu+~I@0Uh-qP%N<g{1Uk?u!3#1rm__uyfdJ@{`1`8sv3sa^<0
z1@reco`7op{B<HCK9RpzHG*0qt<gt6OGDe;6NB<*7ocBA;2+;N+|sN3$6o!%Z3t(W
z{!s44iC^vFQ+N0bo4qsKYr^9y4TMKQ!(5Ad_-5~Q>%?BHz8?P%ZieIgPs-x-Q9>X3
z4D36b4N6<ZcAbfrTpGq51tb<4OPPIg62axU8A=nur!@3-9PCPfE9_!>5H#oFt|VzY
z)=^u2T!z=;o(!dD7)Z`V4n;AmeJ$@-PJBFZLX5WnTcoNEbV1Df9lBKYc~i>h?FW)&
zVRu|maZ`iJS@RdujG={QFAo<%d>0`JXyL0@q_uX(+*W(K$4=E3PP>DUyM7CX+vE2c
zD?@o^!_8RbCv){}YZC_)tMhA17qu5lWH6;F!r__{7)tD;K!^j+wRrq{u?65EQ0bT`
zm&nuZkA<9&=X3nq`p*;Z;hJYUxP5%4tw1v3#f5w8bG2tS%Mhk8J6jNty~>!i@&4lQ
zZ#AS`ema`D@)(B|0PlQBL?HdH`1^6nSUt0RNrN)&1T4hk0BWdS?rr(mxHX8kOgMWF
zOpjsnaYE4N>PL!2-*$;Y*p{;kq~z=N{7$_^R&A2@MM+G+i?3~Z+a*gUqP82PJnK@~
zV^wZOw%=Z8^D|@Rk~Q9;o5pFkKLye71DR)9-O^keiI|eAz8dZJji%~yo8M>Os^9nF
z(R8D3E<{|!4|Y=o`w2t@fkq9KE&K||=(cd8UuyQ!b>?M{RTLOMS{Vhu5Zs-X<EFH-
zc${!N93vgCzU$^i4|h>zhGIj7g;?&lEh4d5Bz)i`l;+?c2$uGJeVG@VU)1|DKF!Em
z{t-?d9`dFFk9+k-fkFG6&llla_uKzE=2u-psiDi^D*?H^dybe)*}6=E{mJTN((Pg=
zZR+ZoE7n(G#pMot2Y=Hxo|auazfR1RpWJr=Q!`0`-mawWiH^~&#V}i1T14gmB!IjX
zae2H!Lh^W&R`|qv(gyT=&5yT5fzcLNnuaD3?-o-d<q-*c*FyM?c{T6rjw>ed-9#(8
zuY_2aRw^<gAMk^4_|YfwH~>*mi9_O5tB3rk$7;$}=PLCfz5gLWlXh`aLW;6Ns&W!t
zl!0^o^y8T%ShXOysKV&jq5s!w$@{J*?tAw_^hKF$j-F*o0+e?a%ZhrG-(BqRtKSe=
zVcz<$K6>4_d-^-Hoe&nO+^IA?+|}k<y_*}kKeL~2CLOg5Y%mJHUNgrKninT;WPVA<
zBDlEUvjO`P!f^?2k^;eH^V?sjW8?pDkDZTK?1J$6&Fw$+3V(Q6xY=gEKXq9}rNNX#
zhkst|FI55DG?NsVHD_8A6_+J`n#XY(l0FCw@gkQ}!L<a-9e54eW$e-IGYXx%Z95?O
zpQrC1<TMpI;y0VF$vY%I6))Y5x(NP|xdnD1XTVH5(i77u4n2y8+Gf~XG6WnEpq))#
zKaLbrf7F+QC^d&cn1**+T69&bMMjBZ^){cc8C4K~^FK9GD~;%fX0p?U>}%%_`-6V&
z<Wd+N!T9dy`bfirUzIMo5Y+qttFb!={S-2-{gu<;e@Q-B3b10$G-^!+k~*bM6aO}z
z6|Pd*PBThoOEauonr*3|sCDR&|It!Cq}~y{=oz<dv!K*T0UU0Dowv?aq$rE2q%OPt
zXf;`>WNt)ZvmSj`Hv7FeS*)~Ji2Ttmg;!=g7L#c1F(2l_Jj{fp2{{bqGPD@=FlHM8
zgbANaTDTLE`!NtQdh$k_WmbF>Yt_WNVcJB&ZI}*~S3@VM!-~QXab;2NeawVArsNN2
zD|k!0;C6-b?q|O(yMs|L;PmbO1<w%(oU~)`na!ehyFY@syL~}b^OA!9d3UkQe}%uR
zwxQJQ*kk~NbNpJ)=W!$f5JCPS5MK#k?oR#p$fumMo}}7OFg-A@WBa1kMrwgz5WrxD
zrukB=vjs+Hu~nFal>!<U(R-H%iDX%A(`OQFRBFMa+$+n5Og?m2M7T0GDv}XTO15}7
z&<?4bt*uV)vKTRr`*O$|>DTGTR%%GoIVdNMR~|9){?Ljq__kcM8s_<EI_2Kn=H*4m
zcZsB%)1t`czb#u<RvA0uY&A9r^Qj54BArO6Vu>eJ$bjgM007D=Ye$A{stX-Z^0LD|
z3=w7v1EYvXWb>T}^1)#4d&MMeqtvl9qwkhyk7+^`dh(MYSVKJ^HfMJHQD4WRmAZ1o
z6`ipLz{Gp7w+_Fx?{&L+rv|;e>uLMa?#^iz-1azX9Gz4bHz1esV}``6@d=#@v>e42
zIR#T2iwA`?KDQsH6RyH)lXtMYhZe0<dVkJ#QdSwOSr@VK!RZGdOSsUP@D~`=2s=M=
zTJZzqbEeWkX$k``+2Z|9woAG5?n;vFm;2pf-`;G+*UkGeLSTnS^iFn?0XtYcK5%=O
zZVt7lIO;A{D?B!qM~~>J===8{+E(yTJQsLp;Y$(WKN4${YqQ1HMd|KA^}{{X4LV3^
z1Q0S3bc+0i#9?iGLF7M_%pbPuEmC?(_u<A)K*mb?h?il5{13K?;OF$VW4p1~6msxj
z{*M*vQ6fI}<lya{6t{A1cXq60YV=B=ZH#&IO}%lEZMpYkrL^DvboCG4W}9XbwTkQ_
z;npFC%BD}Unc3j{Y!RL<_Q`w|W!+lmEEYXD!@`u3c9OFoH^4Vq1P0}SBsJES8L5x4
zY#4YA$?KVw60WuE6Yy*;2Ycso*?7w}Q$MU`GJux9DjsSoxvT@1(|N<1>9;ohRp}2q
zxDG8>usS9bL@_Ew^ixKnRvODOWX5n*3lwHXeC;<$5KbN!p0;0=Jv<#7qB~{(O7REC
z5iO^(7$>rWFHqlo>Z0t%na8H!oCoWnQFhV2MobhBG!WN83nEc`qZ<{^ipvK|*#1E)
zjf8>>MqxKmdJE7niN-pk9ZF@VR7{m2im~iGg$2avbv`D%$&zN9G#qh#TCOto2<QyF
z9zFDjO)9D*2lq%V&d*Oq)^JUC8Sz2Ro=2Go>tElW%I{oSs0S=#(W*rS8jp@9_N6um
z96`}3)V$zHN)3w+DL3@7iBMig#RC|t!c^3u7`3wihg_kzbB66M^f)n{M}A>dm)cOD
zm<DS;g#-X}DBCpTSvu&yYG|(`GCS&_&7LQ^8A8QnXMZj@j2yI|m?{Qq^p3;Tur2=F
zuhb>8)MZs|iOaOyFWb|1dv6<<c~%sUw;W`R(7jH9a%6&r+F16hYfsKZPfu^F<Nh>>
z+yI8W{G$P$A0&7Pti2S$6n!T-Q^kHtvCHk$T-i^#hV6tVfI@<Vi5L+mxh5$a*v}BH
zY1UZgUw?jX@k%q1fL8E9SD4z_^Ccfo{a{Bd+fa!Ig1s8SMLk}5y>N)Rz4Zb!@tST%
z7c$QceKF2-{<B@rk5!JZzGd;yXk6s5vue52`pyW~T&~Peon4%%j#YqS;~n!1*;nr_
zKIz^*nq3@?(G=DdyW&rdLD@10!0esv2O_lmVgV+_23PY$w;$aibMc4ARs;LHo9L3h
z867Y9H@L4NE81xjexv4zplN84wxJtLUG%4P6Kj#cotXi5&~W47v;5AL!EdKxoL|bK
zTz%<_&PkA0k^|{2fL#tU32t0~QkHnuM#f?ft5R|s=M?M~J~Havq3*9VNl<AVnEOC5
z8AVRZ2>{u+v4-#riS5tKB)kgV0|gEfRN&?f_QacoFm)YnBXu9B9E7?P|LlEa3@~|m
z<t?}#5b@gBAN4LemCR1`@EPH7?@5KZS;!G9Ysw^C+~vEKlf^H8?|7P!Kp{vth6mR|
zAXnu?&?aYgW~l;o_Vd=!t;xlmE<ZTPv76@esj$T0Ph}mX{81|njlwf`w}$BRrnv?2
z4V;3KgG}k1*VXtwUW)U=Y(~gKy%JzV%OR3oe@|)G8MTR>tONeH?qMm=%KayaV@=VI
zDujbc(@PIF$ReyC6fERBF5`g|6V#IH0%LtZdxs>hy?p$L7P-JSDZ=rt?TLGPQtR8{
zI)w~=Gpe!Qb%T?_#_?cj&azU*9@D#M-`$Qmi<4<imyO_km;Rsi7c9AE6wgV@8(Wnh
zU0@mNq7884`_CDdnG26C?!CF#3e5uaJ07rLyY{SJ2u#E$l}jXWoz~`DYg^QoP``zW
z0)dn{F9~DLka_B9n~sq{SnIqn*&b`^<fPl741@ncZsGB)y3cAn?7C!;`o%OxmAuUr
zQ(4<N9b;8lLMq(v_bfXsj`~3Fu}E(yaLrAm7Rl%S1x>()xvnQ<R2>s5M*bKc5ligv
zT<!|nD&e||6*ix|-Bmmc!<XN_IaiQlm}|4ku<H@|w%DM6KXyLSdFW8~ZUgPx`vrIc
zna78xHdj_)ni;%IR3<hr-hR<@(#qmqb2SZxgq$v6?QGfS)Scp;uHdH%)53&^q9By#
z3himwE0j{Q4N<TQgdMo{Y<p6Xea1U6>yHGG4c-*lew1XCTaZZnZQeiQ``GsX{~7)>
zg}sr1jz5xI&12MaOU5iD)yJ;e(ygzdg8`ME8Yub`uBVA*Rw_9bULpn|Xr@l9MPGqh
zb<RF`{XNG~lcCiUc(N%>IC`z<IKQgffw=1>`fA2K9ox=c0LdiW>>;yi*h^Vj*VG%+
zN2p^i(^N@x+VebbT{izcUO@-f_X{{*Oa{@TrnR<xYljA&jRQ3oGy7t&%`Mu3y~cLh
zxNF>_Xq-#7%8fg9c2?Zdl0U|%lhW`;y}WSnlrwsIyrv1JrugY4Yf23EkMlGko0bL}
z*-bI$YLy@#dp&wZPAgA*wr#H-n6c&Zj!rDhU2dfrt+1(TqY}>ZR$x*wV9^*8)TU#(
z4+bK4ucvcj7rgKU@GS%4>N?NEr+v4Xx!?|~qC-V1(A%TQO#k~Ti&ulAY)1<={twQK
zIsEtn9*VdHz+IN-k*LjHrz<|i+s#(R&?rYmQjzx=js{e%p6##Ze)U0w`fzldF`nVs
zzkCPCNyd;TXX-9^<bm$fIyvpb-7CqMM{}DiEgC9<(x)90tac`w&2)HNVil8OQ6w)1
zX9i}3|GjqpYtkM9s7wgc`sa(ZrD3?p1DYY4+iip9q8ygvIeL_HMt~p5Z_nQ=DjMet
zpZ>bN4S>B_9DXpqXFT+An&x>%NhsPwEiRfI<eQ0t=CZt06LvGc=-i2^p@ukOJS$mQ
z2-Fb+esHflOs)Kk;xX)0p3d0<7SOraom?e3?R;wny0i4v(hp#)%5+oPdswTVD}LCh
zGP5Ndp9@4j`)YO@8H9ve{nMk%Ry~Zu_&~7stOR51-L3Smg%C30;j^~rgP_V+W51-F
z-RWi)n8s)36rat%&hv|{YriR+&USBk{ZY$X3K=S@F_rhk5<@|gA3cfSmqH=X7E)pY
zP2jRQG1y0t_m1=K|0plq#@XH~7VjeESq{vi8?~Jsyc-}(d6i9R9bcLdUv<+bVy!j0
zqTR`Aqb2&)kNMg{FyJMY{(~f~fF<^$L~>7ie>V9uiZxL|7Ggpl+>jK;01nu*sr`lj
z+o%5h19_)}B1d;~cyD5wV*T8^Nb*<`JNhnThO68mu?U-&8Qt+^2nIpc8_RDCF-xg3
z>K9n_BmG$Wd*emkr7siOL}Vy@^hA+*YY9IhJ)ve!wY-VR4N8#C1urg#xDz~Cwl4NE
zuf!+49f^lLIVZF=|CIN?)%xoDg0hrQB@-fIvJnb%yGpB9a#6u`v9yP6--$^>AX~^J
z{p3NmTCvS%@9jVOq|=%yN~*n93GuS>L%&|^v$)T&8Xg?a4K1};S<w85)74Dt>7Cvp
zVaHGoQ2nhcKOm`}<r+)Q4sf_Ho`#15qEb*qVSQ1w(nx~xE@CDLl;9Do(fw@xa`x;~
zUmpbu4mPFChi@X<q{e5Aj_m@yN!o(y-@eD>@+zwM?Rn%j_CKfUZ0e(S*h6;Z=?Zp1
zZO}h+&NhkS=*iKQ&F4&Bi$4#;!I9)qQZdx)f7SHucYFdLLOtBGcccn;tk*^NuG2`m
zDD@(U>O>!$Ynv~O7At+v1Cjm<Ec|;C!if<<HxU?Cuci##%ZREekQ7{|-OYa^jB}q&
zzjOpO23#kOly?=UR7+-Dh`aMOx((s)#-`b_3xKI<9^-|=#pnb-FuMQbJ?R$ZkgK0b
znJ1b-#8UbBn(|Cjjf^M@D!(i+j#p!E#r#T#eGn0u#P>WGf2$-bYkQ$8he<o{Nzm&g
z0&6hW9Ls%R9YL)3jXr1^G1wSf|D1Rp2g=#eUhh+!p9}-;TFzFa{Or7qA?dErm($H!
zGV>+dzZfX05V?-#ra6Z*d-tu{a=tqW0{S7pM;CCmu)MBU+V6A%zgR2J0h5NyG++Sr
zbSyNLx#2W(C}|alp{@}gJi!C>CTm5dR`)pnWpv36g+>~UKVlBmohGfQB+^yF^~ckD
z_6$(*ShIr!#tzwM7!-&-0;BV@4bQVF)YJ-!z8oId%<pu6<(jc*5v~o8Wl;4w32oY3
zS)CM5Pz~-yyrul?&V`VbZU5cQh$Qc}tlRW^e}BK7hlb-Jk6(!QrLOk={#?9scHDCb
ztrF({0J(q7%`1GQR73^gQBO^m1>5Q^3Ry)hpPmt(^@7{YJGxMt%20`=eIM%=I2OmF
zqB%8o-YIPHme#Xeyk?YE`GMA9oXwDBQkU)792co&l-n6Wz;@!IR#Y@<8F-2kKS!Ne
zQ6-)IxCzDe7DRldggLM!Dq=OA3L1E8l7)bP6)7(z@zD*dof7h08?=7~*ji;1Qj2|>
zFmt&qVv3e+g(BP>Bz~T~#^<p$cQgal*v)pirz*2Udi^bJzbU~Tz4g6br?04s&!@t;
zPqLi5cTuuq7&8NV@6tP0l8`Srye80V8fz3zi`8<nc^dM5#b&azet1WThht!JAx|%l
zjD%~~zAhtgVz8nh&&1>2?^;$`k-`@mWE93~C6Gg%0xw^jT2Gizlsvbyb8iQIX+<em
zi6^S0g3V?TDYO(-s_4ZE>J`SZYs2zW)!Qs;$9Th+4Nnccio3+NaM-uZZ2Q;MXVmwe
z`=<lKL(>3O8G?!3gYZW0vz3_WclyR5xY_UeCPK`_Yt_s}Si`GL&{EdP72hHJi3Y!V
zh1t%R;-sJP`}cye^k@-mU$5mjMRg^*>}qz)aN=+L28ZMv;$4k%(K+}+-x%zL;$P%-
z6*+|#xRJLp%E^;?2UMsT<%A$0bZE=&d4cEYDrCJ-BDf+MB2ko79F#A_Ua{vysQ#W0
zq3!f1SV>n@Npj4sm3j*gAV1{e9ZLV<qU(8?;H1^J6&sP4Cg$MK-JQ&UWcJGm>w`h!
zmq%e#wW-vV+iYMNA>-9cOOW5HT|z+1(;MBu3LE)$SM`X|^DwuojgL`8TOEewi9DV&
z@3r)`c9nei^J(u#9+PF$clzN1H|y1#@Z7ipfp(5Vhb9R<hfYJG6<ua-#}@e)IPVvV
z`b)Ish)@``G>a!DN;OWu2Q`{MA!7}vj<YA|NlEL6{+`lLWlMqyd;Fj;b~UKyS-z;6
z4DxXvwj7DKM$?I3nxmU~%Rb5KWRg#Yir}u~-A(VZd>qF2{d1vsV#RTd*|tL2<I?U{
zlPp<^y+E%9W(}Ss+94}_E`xBVcSrQQM^8Z<{I7iNk1gR*JIw{6olos{vJ_lKGCyqR
zHYLa~b&p(MWATSnev$#+@M9-FqZfeH<u?}h`WR+^)kMd^&DhxZ)C`Z6yTpn#yXYA=
zn3#$t)8_}tumd0kY-#_qUtw~ie8wWGQm8a8I){j1J<>a^<!x*Zd>ov-qjsYl7|Ug0
zJ`t0Zl(kY;oG*AKrK)CB$OR~wkt3rjoVZ|FYZvf7TPDUA9yXV-?s(Yvr93(LSnYd#
z<eg!}uY2%aWp>a8W7KE+WI!7f_hi*hqOV3#uHRbxvspUv%lFwJMY^w?C7!Zz1_9SE
zny)5lFNOrC%+;>E!Qovf#kZVSxEN7Qr$Kx0sLi|9g6Y&>BVKlWD$sAKgc2B1W&@2K
z#fvRA<H8@*@1a9?c`zj?>_9tF0LBB3YyCWH1g7Rz)efbm$RfWDu|xG55?e=!`7--K
ztkN<v$El4+9E<&i<mnf;#pDq<igZA+zEP3-y@uoCwQ$ji&uZHK0BOWR^pXFe{XW92
z;x{pk7Y)8Hb8HxjF{Q6s*xDcPgj(Ib)4UymJid^XIDdUB|I4~$|5sk?<DIsY+hE%D
z(=E|{GgOFB!<apVK0qr{{)MbwL&#^&;{h<K5ek#$o6pFRnj4?KefxBG(w;c}=8KP9
z)Sn!u-p^K-b=VI-&H4|db6Cg~YVL{I$GZ>Abgah`)=LP(Gsh!-KumTw?galE=6QB*
z?5;<HF071_%Ae|_-wB!)k&TRpVPIWd|Mm=9Z-bMwa9KWN<m@r4iELqTCP`vq#87~$
z6-Q~UwNaEQz@Sm```g{kkyxwRi&iw0y=^~^<m>CfA#NFYX;U&09&7jtZTNX~kds<8
z?v>X-%NW_Qk2wy%auAOxrcdjXz;y`rRB6^nf;o4HPv?v68zvM?cE?3V4?nL;5|2xz
zrQ0ui<^n}e-7neYUIZaUt>f%VFRN;x1U>V1di#BEq?V@LBhIz`zOru}XUNr6p@@Uh
z+VlMdHbH*ALuTEwS4p2ZiRVf&Idb(g4Zrb<WI5-8*Ho7Pnqc8TagIc^U6NmX4X@aa
z&3WqkO2ja5r<jJeK`Gy5tj6Ne*j|j%IP*O-li{!|3M5_%<U_MO-5JFt<d&hbxNKYB
zn4T%8eY)`;%Hz@X7XQ*>q|5qKR{$U7BGG@}f)N27R8^6}BjS-0;3-A*n_L?0$SC{Q
z`l|G6)AAIU9$;KE+T^7f5#Shs64<gsG$cuINM)iD%keuT1f3ZqA{A`*p`T9J9i|E*
zhx&#KRVD%c;Wqwki3CVUb;P6e5d!0_TOm?*i+RcA4#sSdlC=gOf}w}?%*7EG@K+k@
z9rZDR=mpkR=n&qa$DnyUJ_h1(oGew(pp|UemOM(HN2Xp8sW)VTgWQNXu~bEdP;%p=
z6<wRXb~e5SenVkQpw(XKaHwm6F@D3OS5|eM*BQH^k9gml;xP&J+#OQ;C1=RJ*{8g+
zwAjYgM6@1>0r3|j%e;i1nuYUv{d=F6$Ja1P>|m2!NGn`D(?KTU<YW8h*v*y5`hCf0
zK~mEAY&04vdwudP#r9%yXzY*ClJpWAeEgyjA)E9#23zv%hR`DnQcMcN%Lel`)E>n|
zfi`~8Gl62QPBbblG{<R{WiI-25qrg;dDoC8bUAfb%64hh$c}^qqSQNATM%N$vu;<4
z?(?vx)HJ8Sb*$!Fr%Vtfdq3k}L{S&znX{z$u`C`X>-EMOMZ!77+i^!QD^_P1cAunk
zocW9d!Dg2-HALa%8b)wUeBZInN8uNn(a(enNi%|31{&~=T;3EZBz48PYG<gtywXa-
zK_BJzzVpYnKDc<!rTCo(^nEUnt6d!Kz|P!9EZ|`X<oEZ$ZwL$;H2s=6H)|Y6Kiyf`
z$X&J)!yv+yDM0Q3k<9I$6<`yI`YLjju?fbT844y*f16Vui5g&=I}0zsc2Z$N3YKz_
z)D7RYq>`WHi?5f%Ibojsd3)WH``c=z_`1|>N6{_oxtKO5^y>b3rlg1f_Lhldmr2CB
z=ewmHZW4kf&i?|wBpqls{g#*^QzKd7oRaKu%6%4}I2*#tif!~F;w2GtI2v~8fcP^u
zUv{fyI#nVt37-%Y(dJ5XkcRiXxy&XYL0GnSWyq;G2nFm{^0txslSoA|HGb;IJ_kG)
z8GE)+g`>}nsBd(~!JisTVn7tQl#mSy!qt!+jQMLnijfM_njEfn3g4v*0=X>=n1}#S
z?!L08H)<{L6Tm29DjP|sMHWuz{Tri`AO%>V5g?NZ+Q|`}5uJFTG5pr(86Th{#EK2-
zGft=EvFXMA7B?D<6%pnc003to80SKwHrxDD*UrQ-B|FYJ0(5o3rjm35Rb(8~v16ES
z<retsFaDRT_!4MQ+1s?Gi@98ryu8R0t#SV)0{SH<?D;?=TFgqwH=m7n8<Bp|5nnlI
zNI6lpDU2!ZI8m4w7#a6JIL*ri_a=9d36k9rok)#i>`uq@s<C-5ICWz1cl<RB%%DfK
zK4%@nP4c9zGsyK`$(jn|(l5N;W&+27gx%rDjYk6MP;=Rz`*ArwLMSMKRz!JdNE94j
zkR@e)>rO2!Eaa{A6>`c`CQ1<Z^dHNbhxZ1pITb!Qv9;w#(nOR0?}i<YgE()-!$Kch
z{(5NBIXJlw$A4ammbgE|uSk+xNdGzJKDi*(hyEC*xmJIw(#`HWk!OhM+|RFvToqpH
zmy8tLADNQWMz9KO8eB;<SMP@G`*8S;%)74|SWss%H{KIwbRP_&zPO;RcmDR;=)sLK
zc#bZ{LwpQ70-wHBI;Q2*m-W%*pf+GqE}nn5aKcFZl2eUDkA*u|@Wo!6pmwXsd@ZY0
zT8Q6#f8Wnwmta_G-&}4)g2g-W+!VQnv1+T<*lpx}{!J9XH+q3<1DEcfNB-YGsM6<U
zVDiX*uvuGxjoJO~b54(b=XcgQLZU=A+uvf+3L{}5Chb0F7%)Ewf$2Dc(%m)ir)?K>
z9nFJ<l(Gn?_Bi}{@6`JD&=0K^V%T;XI;!8f=dhNyoQZLfX95+d%?|lu7T!({407>r
zg1wajlCWmqCKmv6dM=3xTVwo=b`7@kvtc7H^9H>KJ?6(=U<+!H$XuHaISGAf?;iS;
z=|Zp>O5U;ah$kJ^0a`3M)b27Y#_ST+!et+QIO57IhqVOj1|EYoKbOjFp^tw!!VNOL
z3%>GgNYYI!;|6ee$EfI!In>_&wA+e~HXNv#a2y^vHt#pfVO$gnvEYtPz<|~+f-S|e
zxDJ)Myn_W7kA>bvT=BcOx9;QHnZZn48Xoh3?w6e|^%>5+3(8p)1IZ!wJK$Nf10`}{
ztcDD$q{SMR#j9?v#Sj7PdLGQ=58ZxzbL>Bo$i+Ieev~UXEs7p<HC(LnLsrdOqYsej
z^jFxhW}Qo2LiSDc*+kvjwRaR+u^H{IJ5+AB)8Z0;YHnA5yX_UxGx?CT_8KlP9%HVI
zZyQRYl}YTa6dW*FG#Sc8-W~x|E~RpM#{jL(au5AbEqYf<Sk3wg6y7EKOAw0m-i)nH
zL598ee}xsk`HDYOs-`(v?Up4Z;W;hCes?4#$G^#E<`CfO{g^4w_i@a`WOUh6Gn$N;
z9+nm=gQ+2BT!A@-p$jc`fS3l%HgElXCeTI6;fof3wg<*V!QVSj7<%fcmp9Ux3It3&
z&@MOL-zl?4;H0MrPD6oIuQ7{2gU_~u$7ROG7<)q{k8f}~3Rx(>?kFeTa?_hMCOn0-
zRfUs<y^hmgJISa_VWtf^)-VZ6&m|n#%I)ts?clsS(BZo1UXlY}0l81Rr)$}C_*{UE
zpd(_fUHL1&=T~7dVESeL$L>qWRUkt@JfNr$-kAXWE`#e7$^(C*5x`XlFY`ZbzwVMB
zk$O;pdLP}+TTJ}|E;<kc?Od}&(tyhjX@H?t@BdmFF@xer5El}7wz$zavr#7Gxu-eo
z8{>Q~?AHY3lqC>Pin^g9xMYxTVrh=m`-n2uORQ6%uiRoMO};3Hn?F;KmP&e$<DCOa
zv~ltCcQ!>Z7hS(*!l+zTBq>=X6VUbZ_pL5C2xq~^?t*D;<sScoNZz7+o(C+dno`Dj
zKf!1hCU+R5e^>4hUNf{Aw4<$A_}B8&M9@_-E|!MPM9hHwl)M;RBol7+FT;kyV{o(v
zI+_n+jHr9Fi@syyN2b2USJW{3MpI2&(FPPDh8sKD3?8u@EpDX3>cA`r@IQHJ6{*Vi
HCc*y?1dlk4

literal 0
HcmV?d00001

diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index 1f27961..241f24c 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -91,6 +91,11 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
 
 * Use the *User language* drop-down listbox to select the display language for the client.
 
+.. image:: images/preferences_misc_layout.png
+    :alt: Preferences dialog user layout section
+
+* When the *Lock layout?* switch is set to *True*, user will not be able to drag and drop panels.
+
 **The Paths Node**
 
 Expand the *Paths* node to specify the locations of supporting utility and help files.
diff --git a/web/pgadmin/browser/__init__.py b/web/pgadmin/browser/__init__.py
index 724e677..e14be9a 100644
--- a/web/pgadmin/browser/__init__.py
+++ b/web/pgadmin/browser/__init__.py
@@ -845,6 +845,8 @@ def utils():
     # This will be opposite of use_space option
     editor_indent_with_tabs = False if editor_use_spaces else True
 
+    prefs = Preferences.module('miscellaneous')
+    panel_setting = prefs.preference('lock_panel_layout').get()
     # Try to fetch current libpq version from the driver
     try:
         from config import PG_DEFAULT_DRIVER
@@ -870,7 +872,8 @@ def utils():
             editor_insert_pair_brackets=insert_pair_brackets,
             editor_indent_with_tabs=editor_indent_with_tabs,
             app_name=config.APP_NAME,
-            pg_libpq_version=pg_libpq_version
+            pg_libpq_version=pg_libpq_version,
+            panel_setting=panel_setting
         ),
         200, {'Content-Type': 'application/x-javascript'})
 
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 46b6033..a75f49f 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -111,6 +111,7 @@ define('pgadmin.browser', [
         showTitle: true,
         isCloseable: false,
         isPrivate: true,
+        isFramePanel: true,
         icon: 'fa fa-binoculars',
         content: '<div id="tree" class="aciTree"></div>',
       }),
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index ab0681a..9a7dc7c 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -9,7 +9,7 @@ define(
       var defaults = [
         'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
         'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
-        'canHide', 'limit',
+        'canHide', 'limit', 'isMoveable', 'isFramePanel',
       ];
       _.extend(this, _.pick(options, defaults));
     };
@@ -22,6 +22,8 @@ define(
       showTitle: true,
       isCloseable: true,
       isPrivate: false,
+      isMoveable: pgBrowser.utils ? pgBrowser.utils.isPanelMoveable : true,
+      isFramePanel: false,
       content: '',
       icon: '',
       panel: null,
@@ -99,10 +101,33 @@ define(
                     myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
                   });
               }
+
+              if (!that.isFramePanel) {
+                pgBrowser.Events.on(
+                  'pgadmin-browser:preferences-updated',
+                  that.update_panel, myPanel
+                );
+                // If we set moveable directly then it doesn't take width properly
+                setTimeout(() => { myPanel.moveable(!!that.isMoveable); }, 10);
+              }
+
             },
           });
         }
       },
+
+      // We'll execute this function after preferences update
+      update_panel: function() {
+        let panel = this;
+        let preference = pgBrowser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+        if (preference && preference.value !== panel.moveable()) {
+          pgBrowser.utils.isPanelMoveable = preference.value;
+          panel.moveable(preference.value);
+        }
+      },
+
       eventFunc: function(eventName) {
         var name = $(this).data('pgAdminName');
 
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index be3b712..df57fa2 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -26,6 +26,7 @@ define('pgadmin.browser.utils',
     is_indent_with_tabs: '{{ editor_indent_with_tabs }}' == 'True',
     app_name: '{{ app_name }}',
     pg_libpq_version: {{pg_libpq_version|e}},
+    isPanelMoveable: '{{ panel_setting }}' == 'False',
 
     counter: {total: 0, loaded: 0},
     registerScripts: function (ctx) {
diff --git a/web/pgadmin/misc/__init__.py b/web/pgadmin/misc/__init__.py
index 19e1828..998f06d 100644
--- a/web/pgadmin/misc/__init__.py
+++ b/web/pgadmin/misc/__init__.py
@@ -68,6 +68,12 @@ class MiscModule(PgAdminModule):
             category_label=gettext('User language'),
             options=lang_options
         )
+        self.misc_preference.register(
+            'layout', 'lock_panel_layout',
+            gettext("Lock layout?"), 'boolean', False,
+            category_label=gettext('Layout')
+        )
+
 
     def get_exposed_url_endpoints(self):
         """
diff --git a/web/pgadmin/preferences/static/js/preferences.js b/web/pgadmin/preferences/static/js/preferences.js
index 7014d62..769df7c 100644
--- a/web/pgadmin/preferences/static/js/preferences.js
+++ b/web/pgadmin/preferences/static/js/preferences.js
@@ -431,6 +431,9 @@ define('pgadmin.preferences', [
 
             if (e.button.text == gettext('OK')) {
               preferences.updateAll();
+              pgBrowser.Events.trigger(
+                'pgadmin-browser:preferences-updated', this, arguments
+              );
               // Refresh preferences cache
               setTimeout(pgBrowser.cache_preferences(), 2000);
             }
diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py
index a2a84c6..de41212 100644
--- a/web/pgadmin/settings/__init__.py
+++ b/web/pgadmin/settings/__init__.py
@@ -115,7 +115,7 @@ def store(setting=None, value=None):
             store_setting(setting, value)
     except Exception as e:
         success = 0
-        errormsg = e.message
+        errormsg = str(e)
 
     try:
         info = traceback.format_exc()
diff --git a/web/pgadmin/static/css/webcabin.overrides.css b/web/pgadmin/static/css/webcabin.overrides.css
index 18d89f8..93a7f6b 100644
--- a/web/pgadmin/static/css/webcabin.overrides.css
+++ b/web/pgadmin/static/css/webcabin.overrides.css
@@ -399,3 +399,7 @@ i.wcTabIcon {
   background-size: 18px !important;
   height: 18px;
 }
+
+.wcTabScroller {
+  position: initial;
+}
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index 473f20a..13df8c5 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -525,6 +525,12 @@ define('pgadmin.datagrid', [
           // Set panel title and icon
           queryToolPanel.title('<span title="'+panel_title+'">'+panel_title+'</span>');
           queryToolPanel.icon('fa fa-bolt');
+          queryToolPanel.moveable(pgBrowser.utils.isPanelMoveable);
+          pgBrowser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            pgAdmin.Browser.Panel.prototype.update_panel, queryToolPanel
+          );
+
           queryToolPanel.focus();
 
           // Listen on the panel closed event.
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index f9049d8..0f8e55e 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -725,6 +725,11 @@ define([
                         );
 
                       panel.focus();
+                      panel.moveable(pgBrowser.utils.isPanelMoveable);
+                      pgBrowser.Events.on(
+                        'pgadmin-browser:preferences-updated',
+                        pgAdmin.Browser.Panel.prototype.update_panel, panel
+                      );
 
                       // Panel Closed event
                       panel.on(wcDocker.EVENT.CLOSED, function() {
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index 923ccea..ab96aac 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -176,6 +176,7 @@ define('tools.querytool', [
         height: '20%',
         isCloseable: false,
         isPrivate: true,
+        isMoveable: true,
       });
 
       sql_panel.load(main_docker);
diff --git a/web/regression/javascript/browser/panel_spec.js b/web/regression/javascript/browser/panel_spec.js
new file mode 100644
index 0000000..3f0184c
--- /dev/null
+++ b/web/regression/javascript/browser/panel_spec.js
@@ -0,0 +1,52 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2018, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import pgAdmin from 'pgadmin';
+import Panel from 'browser/panel';
+
+describe('Panel', function () {
+  let pgBrowser = pgAdmin.Browser;
+  let Panel = pgAdmin.Browser.Panel;
+  let testPanel;
+  beforeEach(function () {
+    testPanel = new Panel({
+      name: 'test',
+      title: 'Test',
+      isMoveable: true,
+    });
+  });
+
+  describe('when we create a panel', function () {
+    describe('and it is moveable panel', function () {
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+
+    describe('and it is non-moveable panel', function () {
+      beforeEach(function () {
+        testPanel.isMoveable = false;
+      });
+      it('it should call moveable method with false as argument', function () {
+        expect(testPanel.isMoveable).toBe(false);
+      });
+    });
+
+    describe('and user created panel without defining isMoveable then it should be moveable', function () {
+      beforeEach(function () {
+        testPanel = new Panel({
+          name: 'test',
+          title: 'Test',
+        });
+      });
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+  });
+});
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index 306a030..9932907 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -80,6 +80,7 @@ module.exports = {
       'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults',
       'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin',
       'pgadmin.backform': sourcesDir + '/js/backform.pgadmin',
+      'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'),
     },
   },
 };


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-02 19:41       ` Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Joao De Almeida Pereira @ 2018-04-02 19:41 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Dave Page <[email protected]>; pgadmin-hackers

Hello,

On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
[email protected]> wrote:

>
> ​Hello,
>
> Please find updated patch,
>
> Now layout will be locked after user updates its preferences, w
> e have used ​
> templated variable in the javascript file
> ​ because we do not have preference module or preference cache available
> when the page loads and panels gets rendered,
> ​I
> ​ also
> made changes in JS tests as per Joao's review comments.
>
Looks like everything is working when we change the lock.
As a personal preferences I would prefer to see this in at least 2 commits,
one that is related to the preference issue and another one that is related
to this story.


All the tests are working, but he linter is failing:

/tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
 <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
 <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
1       E303 too many blank lines (2)
 <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;

1


> @Dave/Pivotal team,
> The given patch is working fine for all the Tabs/Panels (all the panels
> from main window as well as from Query tool and Debugger) but I'm facing an
> issue while handling the Browser tree section, It is a wcDocer frame
> <http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
> panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like wcDocker
> panel, wcDocker frame do not provide any API so that a developer can
> prevent drag-drop functionality on it.
>
> By visiting wcDocker github page <https://github.com/WebCabin/wcDocker; It
> looks like it not actively maintained.
> What do you suggest how should we tackle this issue?
>
>
I think this should be moved to a different thread, because at this point
in time we have 3 of our core libraries that are no longer
maintained/supported/under active development that I know out of my head.
(ACITree, Backbone and wcDocker). I might even add to the mix jquery 1.11.2
because it stopped being actively developed and supported after May 20 of
2016.


> For time being, I've created subtask for this issue
> https://redmine.postgresql.org/issues/3243
>
> Thanks,
> Murtuza
>  ​
> On Thu, Mar 29, 2018 at 8:57 PM, Joao De Almeida Pereira <
> [email protected]> wrote:
>
>> Hi Murtuza,
>>
>> After changing the setting in the preferences nothing happened, we had to
>> reset the layout or refresh the app to see it working. It only looks the
>> right side. Was this the intended behavior?
>>
>> Not sure if this is the expected behavior or not. I would expect that any
>> change I do in the preferences would start working after I press the Save
>> button. This also happens with other preferences that only take effect
>> after refresh on the browser.
>> This being said, not sure if having the templated variable in the
>> javascript file is the best approach in this case.
>>
>> Do you think you can remove the requirejs tags on the tests?
>>
>> At the testing file you do not need to create 3 different variables for
>> the panels, you can reuse it, because the beforeEach will run for every test
>>
>> Thanks
>> Joao
>>
>> On Thu, Mar 29, 2018 at 9:48 AM Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> PFA patch which will allow user to lock the panels and it will not
>>>> allow user to drag & drop them.
>>>>
>>>
>>> Tests pass, but when I lock the layout, I can still drag panels and
>>> adjust the splitters etc. After doing so,  reset the layout and now have
>>> the broken layout seen in the attached screenshot. I have rebuilt the
>>> bundle, reloaded etc.
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
@ 2018-04-03 11:56         ` Murtuza Zabuawala <[email protected]>
  2018-04-03 15:24           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 2 replies; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-03 11:56 UTC (permalink / raw)
  To: Joao De Almeida Pereira <[email protected]>; +Cc: Dave Page <[email protected]>; pgadmin-hackers

Hi,

Thanks Joao for reviewing.

PFA updated patch.

On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
[email protected]> wrote:

> Hello,
>
> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>>
>> ​Hello,
>>
>> Please find updated patch,
>>
>> Now layout will be locked after user updates its preferences, w
>> e have used ​
>> templated variable in the javascript file
>> ​ because we do not have preference module or preference cache available
>> when the page loads and panels gets rendered,
>> ​I
>> ​ also
>> made changes in JS tests as per Joao's review comments.
>>
> Looks like everything is working when we change the lock.
> As a personal preferences I would prefer to see this in at least 2
> commits, one that is related to the preference issue and another one that
> is related to this story.
>
>
> All the tests are working, but he linter is failing:
>
> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
> 1       E303 too many blank lines (2)
>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>
> 1
>
​Fixed​


>
>
>> @Dave/Pivotal team,
>> The given patch is working fine for all the Tabs/Panels (all the panels
>> from main window as well as from Query tool and Debugger) but I'm facing an
>> issue while handling the Browser tree section, It is a wcDocer frame
>> <http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
>> panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>> can prevent drag-drop functionality on it.
>>
>> By visiting wcDocker github page <https://github.com/WebCabin/wcDocker; It
>> looks like it not actively maintained.
>> What do you suggest how should we tackle this issue?
>>
>>
> I think this should be moved to a different thread, because at this point
> in time we have 3 of our core libraries that are no longer
> maintained/supported/under active development that I know out of my head.
> (ACITree, Backbone and wcDocker). I might even add to the mix jquery 1.11.2
> because it stopped being actively developed and supported after May 20 of
> 2016.
>
​Sure, I'll send separate email.​


>
>
>> For time being, I've created subtask for this issue https://redmine.
>> postgresql.org/issues/3243
>>
>> Thanks,
>> Murtuza
>>  ​
>> On Thu, Mar 29, 2018 at 8:57 PM, Joao De Almeida Pereira <
>> [email protected]> wrote:
>>
>>> Hi Murtuza,
>>>
>>> After changing the setting in the preferences nothing happened, we had
>>> to reset the layout or refresh the app to see it working. It only looks the
>>> right side. Was this the intended behavior?
>>>
>>> Not sure if this is the expected behavior or not. I would expect that
>>> any change I do in the preferences would start working after I press the
>>> Save button. This also happens with other preferences that only take effect
>>> after refresh on the browser.
>>> This being said, not sure if having the templated variable in the
>>> javascript file is the best approach in this case.
>>>
>>> Do you think you can remove the requirejs tags on the tests?
>>>
>>> At the testing file you do not need to create 3 different variables for
>>> the panels, you can reuse it, because the beforeEach will run for every test
>>>
>>> Thanks
>>> Joao
>>>
>>> On Thu, Mar 29, 2018 at 9:48 AM Dave Page <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <murtuza.zabuawala@
>>>> enterprisedb.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> PFA patch which will allow user to lock the panels and it will not
>>>>> allow user to drag & drop them.
>>>>>
>>>>
>>>> Tests pass, but when I lock the layout, I can still drag panels and
>>>> adjust the splitters etc. After doing so,  reset the layout and now have
>>>> the broken layout seen in the attached screenshot. I have rebuilt the
>>>> bundle, reloaded etc.
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>


Attachments:

  [application/octet-stream] RM_3155_v2.diff (116.0K, 3-RM_3155_v2.diff)
  download | inline diff:
diff --git a/docs/en_US/images/preferences_misc_layout.png b/docs/en_US/images/preferences_misc_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..d04d3c85b07c9809cbabdc01f152c4273ab59139
GIT binary patch
literal 89671
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%0A)&6`eCIk5-*Kscgn@xFKKkM
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%0AEaxiY@ZQT3dfn3N
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
HCc*y?1dlk4

literal 0
HcmV?d00001

diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index 1f27961..241f24c 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -91,6 +91,11 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
 
 * Use the *User language* drop-down listbox to select the display language for the client.
 
+.. image:: images/preferences_misc_layout.png
+    :alt: Preferences dialog user layout section
+
+* When the *Lock layout?* switch is set to *True*, user will not be able to drag and drop panels.
+
 **The Paths Node**
 
 Expand the *Paths* node to specify the locations of supporting utility and help files.
diff --git a/web/pgadmin/browser/__init__.py b/web/pgadmin/browser/__init__.py
index 724e677..e14be9a 100644
--- a/web/pgadmin/browser/__init__.py
+++ b/web/pgadmin/browser/__init__.py
@@ -845,6 +845,8 @@ def utils():
     # This will be opposite of use_space option
     editor_indent_with_tabs = False if editor_use_spaces else True
 
+    prefs = Preferences.module('miscellaneous')
+    panel_setting = prefs.preference('lock_panel_layout').get()
     # Try to fetch current libpq version from the driver
     try:
         from config import PG_DEFAULT_DRIVER
@@ -870,7 +872,8 @@ def utils():
             editor_insert_pair_brackets=insert_pair_brackets,
             editor_indent_with_tabs=editor_indent_with_tabs,
             app_name=config.APP_NAME,
-            pg_libpq_version=pg_libpq_version
+            pg_libpq_version=pg_libpq_version,
+            panel_setting=panel_setting
         ),
         200, {'Content-Type': 'application/x-javascript'})
 
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 46b6033..a75f49f 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -111,6 +111,7 @@ define('pgadmin.browser', [
         showTitle: true,
         isCloseable: false,
         isPrivate: true,
+        isFramePanel: true,
         icon: 'fa fa-binoculars',
         content: '<div id="tree" class="aciTree"></div>',
       }),
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index ab0681a..9a7dc7c 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -9,7 +9,7 @@ define(
       var defaults = [
         'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
         'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
-        'canHide', 'limit',
+        'canHide', 'limit', 'isMoveable', 'isFramePanel',
       ];
       _.extend(this, _.pick(options, defaults));
     };
@@ -22,6 +22,8 @@ define(
       showTitle: true,
       isCloseable: true,
       isPrivate: false,
+      isMoveable: pgBrowser.utils ? pgBrowser.utils.isPanelMoveable : true,
+      isFramePanel: false,
       content: '',
       icon: '',
       panel: null,
@@ -99,10 +101,33 @@ define(
                     myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
                   });
               }
+
+              if (!that.isFramePanel) {
+                pgBrowser.Events.on(
+                  'pgadmin-browser:preferences-updated',
+                  that.update_panel, myPanel
+                );
+                // If we set moveable directly then it doesn't take width properly
+                setTimeout(() => { myPanel.moveable(!!that.isMoveable); }, 10);
+              }
+
             },
           });
         }
       },
+
+      // We'll execute this function after preferences update
+      update_panel: function() {
+        let panel = this;
+        let preference = pgBrowser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+        if (preference && preference.value !== panel.moveable()) {
+          pgBrowser.utils.isPanelMoveable = preference.value;
+          panel.moveable(preference.value);
+        }
+      },
+
       eventFunc: function(eventName) {
         var name = $(this).data('pgAdminName');
 
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index be3b712..df57fa2 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -26,6 +26,7 @@ define('pgadmin.browser.utils',
     is_indent_with_tabs: '{{ editor_indent_with_tabs }}' == 'True',
     app_name: '{{ app_name }}',
     pg_libpq_version: {{pg_libpq_version|e}},
+    isPanelMoveable: '{{ panel_setting }}' == 'False',
 
     counter: {total: 0, loaded: 0},
     registerScripts: function (ctx) {
diff --git a/web/pgadmin/misc/__init__.py b/web/pgadmin/misc/__init__.py
index 19e1828..050bc91 100644
--- a/web/pgadmin/misc/__init__.py
+++ b/web/pgadmin/misc/__init__.py
@@ -68,6 +68,11 @@ class MiscModule(PgAdminModule):
             category_label=gettext('User language'),
             options=lang_options
         )
+        self.misc_preference.register(
+            'layout', 'lock_panel_layout',
+            gettext("Lock layout?"), 'boolean', False,
+            category_label=gettext('Layout')
+        )
 
     def get_exposed_url_endpoints(self):
         """
diff --git a/web/pgadmin/preferences/static/js/preferences.js b/web/pgadmin/preferences/static/js/preferences.js
index 7014d62..769df7c 100644
--- a/web/pgadmin/preferences/static/js/preferences.js
+++ b/web/pgadmin/preferences/static/js/preferences.js
@@ -431,6 +431,9 @@ define('pgadmin.preferences', [
 
             if (e.button.text == gettext('OK')) {
               preferences.updateAll();
+              pgBrowser.Events.trigger(
+                'pgadmin-browser:preferences-updated', this, arguments
+              );
               // Refresh preferences cache
               setTimeout(pgBrowser.cache_preferences(), 2000);
             }
diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py
index a2a84c6..de41212 100644
--- a/web/pgadmin/settings/__init__.py
+++ b/web/pgadmin/settings/__init__.py
@@ -115,7 +115,7 @@ def store(setting=None, value=None):
             store_setting(setting, value)
     except Exception as e:
         success = 0
-        errormsg = e.message
+        errormsg = str(e)
 
     try:
         info = traceback.format_exc()
diff --git a/web/pgadmin/static/css/webcabin.overrides.css b/web/pgadmin/static/css/webcabin.overrides.css
index 18d89f8..93a7f6b 100644
--- a/web/pgadmin/static/css/webcabin.overrides.css
+++ b/web/pgadmin/static/css/webcabin.overrides.css
@@ -399,3 +399,7 @@ i.wcTabIcon {
   background-size: 18px !important;
   height: 18px;
 }
+
+.wcTabScroller {
+  position: initial;
+}
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index 473f20a..13df8c5 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -525,6 +525,12 @@ define('pgadmin.datagrid', [
           // Set panel title and icon
           queryToolPanel.title('<span title="'+panel_title+'">'+panel_title+'</span>');
           queryToolPanel.icon('fa fa-bolt');
+          queryToolPanel.moveable(pgBrowser.utils.isPanelMoveable);
+          pgBrowser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            pgAdmin.Browser.Panel.prototype.update_panel, queryToolPanel
+          );
+
           queryToolPanel.focus();
 
           // Listen on the panel closed event.
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index f9049d8..0f8e55e 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -725,6 +725,11 @@ define([
                         );
 
                       panel.focus();
+                      panel.moveable(pgBrowser.utils.isPanelMoveable);
+                      pgBrowser.Events.on(
+                        'pgadmin-browser:preferences-updated',
+                        pgAdmin.Browser.Panel.prototype.update_panel, panel
+                      );
 
                       // Panel Closed event
                       panel.on(wcDocker.EVENT.CLOSED, function() {
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index 923ccea..ab96aac 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -176,6 +176,7 @@ define('tools.querytool', [
         height: '20%',
         isCloseable: false,
         isPrivate: true,
+        isMoveable: true,
       });
 
       sql_panel.load(main_docker);
diff --git a/web/regression/javascript/browser/panel_spec.js b/web/regression/javascript/browser/panel_spec.js
new file mode 100644
index 0000000..3f0184c
--- /dev/null
+++ b/web/regression/javascript/browser/panel_spec.js
@@ -0,0 +1,52 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2018, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import pgAdmin from 'pgadmin';
+import Panel from 'browser/panel';
+
+describe('Panel', function () {
+  let pgBrowser = pgAdmin.Browser;
+  let Panel = pgAdmin.Browser.Panel;
+  let testPanel;
+  beforeEach(function () {
+    testPanel = new Panel({
+      name: 'test',
+      title: 'Test',
+      isMoveable: true,
+    });
+  });
+
+  describe('when we create a panel', function () {
+    describe('and it is moveable panel', function () {
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+
+    describe('and it is non-moveable panel', function () {
+      beforeEach(function () {
+        testPanel.isMoveable = false;
+      });
+      it('it should call moveable method with false as argument', function () {
+        expect(testPanel.isMoveable).toBe(false);
+      });
+    });
+
+    describe('and user created panel without defining isMoveable then it should be moveable', function () {
+      beforeEach(function () {
+        testPanel = new Panel({
+          name: 'test',
+          title: 'Test',
+        });
+      });
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+  });
+});
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index 306a030..9932907 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -80,6 +80,7 @@ module.exports = {
       'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults',
       'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin',
       'pgadmin.backform': sourcesDir + '/js/backform.pgadmin',
+      'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'),
     },
   },
 };


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-03 15:24           ` Joao De Almeida Pereira <[email protected]>
  1 sibling, 0 replies; 33+ messages in thread

From: Joao De Almeida Pereira @ 2018-04-03 15:24 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Dave Page <[email protected]>; pgadmin-hackers

Hi Murtuza,

Everything seems to work, the tests are all green and the linter is fixed.

As we stated in an previous email, the direction we would love the
application to go is a more robust Javascript Front-End that would rely in
the Backend to provide data. Adding more things to templated Javascript
files feels like a step back and something that we will in the future have
to convert into AJAX calls and JSON responses.
As discussed before our idea is to remove all the javascript templated
files.

How hard do you think it would be to do this implementation without using
templates?

Thanks
Victoria & Joao

On Tue, Apr 3, 2018 at 7:57 AM Murtuza Zabuawala <
[email protected]> wrote:

> Hi,
>
> Thanks Joao for reviewing.
>
> PFA updated patch.
>
> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
> [email protected]> wrote:
>
>> Hello,
>>
>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>>
>>> ​Hello,
>>>
>>> Please find updated patch,
>>>
>>> Now layout will be locked after user updates its preferences, w
>>> e have used ​
>>> templated variable in the javascript file
>>> ​ because we do not have preference module or preference cache available
>>> when the page loads and panels gets rendered,
>>> ​I
>>> ​ also
>>> made changes in JS tests as per Joao's review comments.
>>>
>> Looks like everything is working when we change the lock.
>> As a personal preferences I would prefer to see this in at least 2
>> commits, one that is related to the preference issue and another one that
>> is related to this story.
>>
>>
>> All the tests are working, but he linter is failing:
>>
>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>> 1       E303 too many blank lines (2)
>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>
>> 1
>>
> ​Fixed​
>
>
>>
>>
>>> @Dave/Pivotal team,
>>> The given patch is working fine for all the Tabs/Panels (all the panels
>>> from main window as well as from Query tool and Debugger) but I'm facing an
>>> issue while handling the Browser tree section, It is a wcDocer frame
>>> <http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
>>> panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>> can prevent drag-drop functionality on it.
>>>
>>> By visiting wcDocker github page <https://github.com/WebCabin/wcDocker; It
>>> looks like it not actively maintained.
>>> What do you suggest how should we tackle this issue?
>>>
>>>
>> I think this should be moved to a different thread, because at this point
>> in time we have 3 of our core libraries that are no longer
>> maintained/supported/under active development that I know out of my head.
>> (ACITree, Backbone and wcDocker). I might even add to the mix jquery 1.11.2
>> because it stopped being actively developed and supported after May 20 of
>> 2016.
>>
> ​Sure, I'll send separate email.​
>
>
>>
>>
>>> For time being, I've created subtask for this issue
>>> https://redmine.postgresql.org/issues/3243
>>>
>>> Thanks,
>>> Murtuza
>>>  ​
>>> On Thu, Mar 29, 2018 at 8:57 PM, Joao De Almeida Pereira <
>>> [email protected]> wrote:
>>>
>>>> Hi Murtuza,
>>>>
>>>> After changing the setting in the preferences nothing happened, we had
>>>> to reset the layout or refresh the app to see it working. It only looks the
>>>> right side. Was this the intended behavior?
>>>>
>>>> Not sure if this is the expected behavior or not. I would expect that
>>>> any change I do in the preferences would start working after I press the
>>>> Save button. This also happens with other preferences that only take effect
>>>> after refresh on the browser.
>>>> This being said, not sure if having the templated variable in the
>>>> javascript file is the best approach in this case.
>>>>
>>>> Do you think you can remove the requirejs tags on the tests?
>>>>
>>>> At the testing file you do not need to create 3 different variables for
>>>> the panels, you can reuse it, because the beforeEach will run for every test
>>>>
>>>> Thanks
>>>> Joao
>>>>
>>>> On Thu, Mar 29, 2018 at 9:48 AM Dave Page <[email protected]> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> PFA patch which will allow user to lock the panels and it will not
>>>>>> allow user to drag & drop them.
>>>>>>
>>>>>
>>>>> Tests pass, but when I lock the layout, I can still drag panels and
>>>>> adjust the splitters etc. After doing so,  reset the layout and now have
>>>>> the broken layout seen in the attached screenshot. I have rebuilt the
>>>>> bundle, reloaded etc.
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-03 15:33           ` Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  1 sibling, 1 reply; 33+ messages in thread

From: Dave Page @ 2018-04-03 15:33 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

Hi

On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
[email protected]> wrote:

> Hi,
>
> Thanks Joao for reviewing.
>
> PFA updated patch.
>
> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
> [email protected]> wrote:
>
>> Hello,
>>
>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>>
>>> ​Hello,
>>>
>>> Please find updated patch,
>>>
>>> Now layout will be locked after user updates its preferences, w
>>> e have used ​
>>> templated variable in the javascript file
>>> ​ because we do not have preference module or preference cache available
>>> when the page loads and panels gets rendered,
>>> ​I
>>> ​ also
>>> made changes in JS tests as per Joao's review comments.
>>>
>> Looks like everything is working when we change the lock.
>> As a personal preferences I would prefer to see this in at least 2
>> commits, one that is related to the preference issue and another one that
>> is related to this story.
>>
>>
>> All the tests are working, but he linter is failing:
>>
>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>> 1       E303 too many blank lines (2)
>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>
>> 1
>>
> ​Fixed​
>
>
>>
>>
>>> @Dave/Pivotal team,
>>> The given patch is working fine for all the Tabs/Panels (all the panels
>>> from main window as well as from Query tool and Debugger) but I'm facing an
>>> issue while handling the Browser tree section, It is a wcDocer frame
>>> <http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
>>> panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>> can prevent drag-drop functionality on it.
>>>
>>
It's not working fine for me. For example, if I put the SQL Panel on it's
own below the properties/stats panels (so it looks like pgAdmin 3 used to
by default), and then lock the layout, I can un-dock the SQL panel into a
dialogue, but then cannot re-dock it. I can do weird things with the
browser tree as well, probably because it's a frame as you say.


>
>>> By visiting wcDocker github page <https://github.com/WebCabin/wcDocker; It
>>> looks like it not actively maintained.
>>> What do you suggest how should we tackle this issue?
>>>
>>
It may not have been updated recently, but the lead developer answered your
questions pretty quickly. Maybe he'll be open to a pull request if we can
figure out how to lock the layout of the frame as well.


>
>>>
>> I think this should be moved to a different thread, because at this point
>> in time we have 3 of our core libraries that are no longer
>> maintained/supported/under active development that I know out of my head.
>> (ACITree, Backbone and wcDocker). I might even add to the mix jquery 1.11.2
>> because it stopped being actively developed and supported after May 20 of
>> 2016.
>>
> ​Sure, I'll send separate email.​
>
>
>>
>>
>>> For time being, I've created subtask for this issue
>>> https://redmine.postgresql.org/issues/3243
>>>
>>> Thanks,
>>> Murtuza
>>>  ​
>>> On Thu, Mar 29, 2018 at 8:57 PM, Joao De Almeida Pereira <
>>> [email protected]> wrote:
>>>
>>>> Hi Murtuza,
>>>>
>>>> After changing the setting in the preferences nothing happened, we had
>>>> to reset the layout or refresh the app to see it working. It only looks the
>>>> right side. Was this the intended behavior?
>>>>
>>>> Not sure if this is the expected behavior or not. I would expect that
>>>> any change I do in the preferences would start working after I press the
>>>> Save button. This also happens with other preferences that only take effect
>>>> after refresh on the browser.
>>>> This being said, not sure if having the templated variable in the
>>>> javascript file is the best approach in this case.
>>>>
>>>> Do you think you can remove the requirejs tags on the tests?
>>>>
>>>> At the testing file you do not need to create 3 different variables for
>>>> the panels, you can reuse it, because the beforeEach will run for every test
>>>>
>>>> Thanks
>>>> Joao
>>>>
>>>> On Thu, Mar 29, 2018 at 9:48 AM Dave Page <[email protected]> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> PFA patch which will allow user to lock the panels and it will not
>>>>>> allow user to drag & drop them.
>>>>>>
>>>>>
>>>>> Tests pass, but when I lock the layout, I can still drag panels and
>>>>> adjust the splitters etc. After doing so,  reset the layout and now have
>>>>> the broken layout seen in the attached screenshot. I have rebuilt the
>>>>> bundle, reloaded etc.
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>
>


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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-04 06:20             ` Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-04 06:20 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

Hi Dave,

On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:

> Hi
>
> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>> Hi,
>>
>> Thanks Joao for reviewing.
>>
>> PFA updated patch.
>>
>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>> [email protected]> wrote:
>>
>>> Hello,
>>>
>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>>
>>>> ​Hello,
>>>>
>>>> Please find updated patch,
>>>>
>>>> Now layout will be locked after user updates its preferences, w
>>>> e have used ​
>>>> templated variable in the javascript file
>>>> ​ because we do not have preference module or preference cache
>>>> available when the page loads and panels gets rendered,
>>>> ​I
>>>> ​ also
>>>> made changes in JS tests as per Joao's review comments.
>>>>
>>> Looks like everything is working when we change the lock.
>>> As a personal preferences I would prefer to see this in at least 2
>>> commits, one that is related to the preference issue and another one that
>>> is related to this story.
>>>
>>>
>>> All the tests are working, but he linter is failing:
>>>
>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>> 1       E303 too many blank lines (2)
>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>
>>> 1
>>>
>> ​Fixed​
>>
>>
>>>
>>>
>>>> @Dave/Pivotal team,
>>>> The given patch is working fine for all the Tabs/Panels (all the panels
>>>> from main window as well as from Query tool and Debugger) but I'm facing an
>>>> issue while handling the Browser tree section, It is a wcDocer frame
>>>> <http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
>>>> panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>> can prevent drag-drop functionality on it.
>>>>
>>>
> It's not working fine for me. For example, if I put the SQL Panel on it's
> own below the properties/stats panels (so it looks like pgAdmin 3 used to
> by default), and then lock the layout, I can un-dock the SQL panel into a
> dialogue, but then cannot re-dock it. I can do weird things with the
> browser tree as well, probably because it's a frame as you say.
>

​That is expected behaviour ​because once you drag the panel out of the
group of Panels then it becomes individual Frame, That is what the author
of the wcDocker replied on my question,
*"A panel must either be initialized as movable or non-movable from the
beginning and never changed because it generates a different arrangement of
elements depending. This feature should only ever be used within the
onCreate method of the panel. I should probably have been more clear about
this limitation in the documentation."*



>
>>
>>>> By visiting wcDocker github page <https://github.com/WebCabin/wcDocker; It
>>>> looks like it not actively maintained.
>>>> What do you suggest how should we tackle this issue?
>>>>
>>>
> It may not have been updated recently, but the lead developer answered
> your questions pretty quickly. Maybe he'll be open to a pull request if we
> can figure out how to lock the layout of the frame as well.
>
>
>>
>>>>
>>> I think this should be moved to a different thread, because at this
>>> point in time we have 3 of our core libraries that are no longer
>>> maintained/supported/under active development that I know out of my head.
>>> (ACITree, Backbone and wcDocker). I might even add to the mix jquery 1.11.2
>>> because it stopped being actively developed and supported after May 20 of
>>> 2016.
>>>
>> ​Sure, I'll send separate email.​
>>
>>
>>>
>>>
>>>> For time being, I've created subtask for this issue
>>>> https://redmine.postgresql.org/issues/3243
>>>>
>>>> Thanks,
>>>> Murtuza
>>>>  ​
>>>> On Thu, Mar 29, 2018 at 8:57 PM, Joao De Almeida Pereira <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Murtuza,
>>>>>
>>>>> After changing the setting in the preferences nothing happened, we had
>>>>> to reset the layout or refresh the app to see it working. It only looks the
>>>>> right side. Was this the intended behavior?
>>>>>
>>>>> Not sure if this is the expected behavior or not. I would expect that
>>>>> any change I do in the preferences would start working after I press the
>>>>> Save button. This also happens with other preferences that only take effect
>>>>> after refresh on the browser.
>>>>> This being said, not sure if having the templated variable in the
>>>>> javascript file is the best approach in this case.
>>>>>
>>>>> Do you think you can remove the requirejs tags on the tests?
>>>>>
>>>>> At the testing file you do not need to create 3 different variables
>>>>> for the panels, you can reuse it, because the beforeEach will run for every
>>>>> test
>>>>>
>>>>> Thanks
>>>>> Joao
>>>>>
>>>>> On Thu, Mar 29, 2018 at 9:48 AM Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> On Thu, Mar 29, 2018 at 2:15 PM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> PFA patch which will allow user to lock the panels and it will not
>>>>>>> allow user to drag & drop them.
>>>>>>>
>>>>>>
>>>>>> Tests pass, but when I lock the layout, I can still drag panels and
>>>>>> adjust the splitters etc. After doing so,  reset the layout and now have
>>>>>> the broken layout seen in the attached screenshot. I have rebuilt the
>>>>>> bundle, reloaded etc.
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


Attachments:

  [image/png] Screen Shot 2018-04-04 at 11.40.23 am.png (421.3K, 3-Screen%20Shot%202018-04-04%20at%2011.40.23%20am.png)
  download | view image

^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-04 09:17               ` Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Dave Page @ 2018-04-04 09:17 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
[email protected]> wrote:

> Hi Dave,
>
> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>
>> Hi
>>
>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> Thanks Joao for reviewing.
>>>
>>> PFA updated patch.
>>>
>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>> [email protected]> wrote:
>>>
>>>> Hello,
>>>>
>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>>
>>>>> ​Hello,
>>>>>
>>>>> Please find updated patch,
>>>>>
>>>>> Now layout will be locked after user updates its preferences, w
>>>>> e have used ​
>>>>> templated variable in the javascript file
>>>>> ​ because we do not have preference module or preference cache
>>>>> available when the page loads and panels gets rendered,
>>>>> ​I
>>>>> ​ also
>>>>> made changes in JS tests as per Joao's review comments.
>>>>>
>>>> Looks like everything is working when we change the lock.
>>>> As a personal preferences I would prefer to see this in at least 2
>>>> commits, one that is related to the preference issue and another one that
>>>> is related to this story.
>>>>
>>>>
>>>> All the tests are working, but he linter is failing:
>>>>
>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>> 1       E303 too many blank lines (2)
>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>
>>>> 1
>>>>
>>> ​Fixed​
>>>
>>>
>>>>
>>>>
>>>>> @Dave/Pivotal team,
>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
>>>>> panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>> can prevent drag-drop functionality on it.
>>>>>
>>>>
>> It's not working fine for me. For example, if I put the SQL Panel on it's
>> own below the properties/stats panels (so it looks like pgAdmin 3 used to
>> by default), and then lock the layout, I can un-dock the SQL panel into a
>> dialogue, but then cannot re-dock it. I can do weird things with the
>> browser tree as well, probably because it's a frame as you say.
>>
>
> ​That is expected behaviour ​because once you drag the panel out of the
> group of Panels then it becomes individual Frame, That is what the author
> of the wcDocker replied on my question,
> *"A panel must either be initialized as movable or non-movable from the
> beginning and never changed because it generates a different arrangement of
> elements depending. This feature should only ever be used within the
> onCreate method of the panel. I should probably have been more clear about
> this limitation in the documentation."*
>
>
So does it become a panel again if a second panel is added to the new tab
group?

There must be some way we can lock a tab that's not part of a group.

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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-04 09:45                 ` Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-04 09:45 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:

>
>
> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>> Hi Dave,
>>
>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>
>>> Hi
>>>
>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>> Thanks Joao for reviewing.
>>>>
>>>> PFA updated patch.
>>>>
>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>> [email protected]> wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>>
>>>>>> ​Hello,
>>>>>>
>>>>>> Please find updated patch,
>>>>>>
>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>> e have used ​
>>>>>> templated variable in the javascript file
>>>>>> ​ because we do not have preference module or preference cache
>>>>>> available when the page loads and panels gets rendered,
>>>>>> ​I
>>>>>> ​ also
>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>
>>>>> Looks like everything is working when we change the lock.
>>>>> As a personal preferences I would prefer to see this in at least 2
>>>>> commits, one that is related to the preference issue and another one that
>>>>> is related to this story.
>>>>>
>>>>>
>>>>> All the tests are working, but he linter is failing:
>>>>>
>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>> 1       E303 too many blank lines (2)
>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>
>>>>> 1
>>>>>
>>>> ​Fixed​
>>>>
>>>>
>>>>>
>>>>>
>>>>>> @Dave/Pivotal team,
>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and not a wcDocker
>>>>>> panel <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>> can prevent drag-drop functionality on it.
>>>>>>
>>>>>
>>> It's not working fine for me. For example, if I put the SQL Panel on
>>> it's own below the properties/stats panels (so it looks like pgAdmin 3 used
>>> to by default), and then lock the layout, I can un-dock the SQL panel into
>>> a dialogue, but then cannot re-dock it. I can do weird things with the
>>> browser tree as well, probably because it's a frame as you say.
>>>
>>
>> ​That is expected behaviour ​because once you drag the panel out of the
>> group of Panels then it becomes individual Frame, That is what the author
>> of the wcDocker replied on my question,
>> *"A panel must either be initialized as movable or non-movable from the
>> beginning and never changed because it generates a different arrangement of
>> elements depending. This feature should only ever be used within the
>> onCreate method of the panel. I should probably have been more clear about
>> this limitation in the documentation."*
>>
>>
> So does it become a panel again if a second panel is added to the new tab
> group?
>
​No, it stays Frame.​

As far as I understand Panel needs a Frame to render itself if it is not
attached to the main docker instance.​

>
> There must be some way we can lock a tab that's not part of a group.
>
At a moment there is no way of ​
locking frames out of the box :(
​

>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-04 11:30                   ` Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Dave Page @ 2018-04-04 11:30 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
[email protected]> wrote:

> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>
>>
>>
>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi Dave,
>>>
>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>>
>>>> Hi
>>>>
>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Thanks Joao for reviewing.
>>>>>
>>>>> PFA updated patch.
>>>>>
>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>> ​Hello,
>>>>>>>
>>>>>>> Please find updated patch,
>>>>>>>
>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>> e have used ​
>>>>>>> templated variable in the javascript file
>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>> available when the page loads and panels gets rendered,
>>>>>>> ​I
>>>>>>> ​ also
>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>
>>>>>> Looks like everything is working when we change the lock.
>>>>>> As a personal preferences I would prefer to see this in at least 2
>>>>>> commits, one that is related to the preference issue and another one that
>>>>>> is related to this story.
>>>>>>
>>>>>>
>>>>>> All the tests are working, but he linter is failing:
>>>>>>
>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>> 1       E303 too many blank lines (2)
>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>
>>>>>> 1
>>>>>>
>>>>> ​Fixed​
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>> @Dave/Pivotal team,
>>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and not
>>>>>>> a wcDocker panel
>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like wcDocker
>>>>>>> panel, wcDocker frame do not provide any API so that a developer can
>>>>>>> prevent drag-drop functionality on it.
>>>>>>>
>>>>>>
>>>> It's not working fine for me. For example, if I put the SQL Panel on
>>>> it's own below the properties/stats panels (so it looks like pgAdmin 3 used
>>>> to by default), and then lock the layout, I can un-dock the SQL panel into
>>>> a dialogue, but then cannot re-dock it. I can do weird things with the
>>>> browser tree as well, probably because it's a frame as you say.
>>>>
>>>
>>> ​That is expected behaviour ​because once you drag the panel out of the
>>> group of Panels then it becomes individual Frame, That is what the author
>>> of the wcDocker replied on my question,
>>> *"A panel must either be initialized as movable or non-movable from the
>>> beginning and never changed because it generates a different arrangement of
>>> elements depending. This feature should only ever be used within the
>>> onCreate method of the panel. I should probably have been more clear about
>>> this limitation in the documentation."*
>>>
>>>
>> So does it become a panel again if a second panel is added to the new tab
>> group?
>>
> ​No, it stays Frame.​
>
> As far as I understand Panel needs a Frame to render itself if it is not
> attached to the main docker instance.​
>
>>
>> There must be some way we can lock a tab that's not part of a group.
>>
> At a moment there is no way of ​
> locking frames out of the box :(
> ​
>

Hmm, so the question becomes: do we include the lock feature, but rename it
to "Lock Tabs" or something similar, or leave it out altogether? It clearly
doesn't do everything we want right now.

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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-04 11:54                     ` Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-04 11:54 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:

>
>
> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
> [email protected]> wrote:
>
>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> Hi Dave,
>>>>
>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Thanks Joao for reviewing.
>>>>>>
>>>>>> PFA updated patch.
>>>>>>
>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hello,
>>>>>>>
>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>> ​Hello,
>>>>>>>>
>>>>>>>> Please find updated patch,
>>>>>>>>
>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>> e have used ​
>>>>>>>> templated variable in the javascript file
>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>> ​I
>>>>>>>> ​ also
>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>
>>>>>>> Looks like everything is working when we change the lock.
>>>>>>> As a personal preferences I would prefer to see this in at least 2
>>>>>>> commits, one that is related to the preference issue and another one that
>>>>>>> is related to this story.
>>>>>>>
>>>>>>>
>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>
>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>
>>>>>>> 1
>>>>>>>
>>>>>> ​Fixed​
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> @Dave/Pivotal team,
>>>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and not
>>>>>>>> a wcDocker panel
>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>
>>>>>>>
>>>>> It's not working fine for me. For example, if I put the SQL Panel on
>>>>> it's own below the properties/stats panels (so it looks like pgAdmin 3 used
>>>>> to by default), and then lock the layout, I can un-dock the SQL panel into
>>>>> a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>
>>>>
>>>> ​That is expected behaviour ​because once you drag the panel out of the
>>>> group of Panels then it becomes individual Frame, That is what the author
>>>> of the wcDocker replied on my question,
>>>> *"A panel must either be initialized as movable or non-movable from the
>>>> beginning and never changed because it generates a different arrangement of
>>>> elements depending. This feature should only ever be used within the
>>>> onCreate method of the panel. I should probably have been more clear about
>>>> this limitation in the documentation."*
>>>>
>>>>
>>> So does it become a panel again if a second panel is added to the new
>>> tab group?
>>>
>> ​No, it stays Frame.​
>>
>> As far as I understand Panel needs a Frame to render itself if it is not
>> attached to the main docker instance.​
>>
>>>
>>> There must be some way we can lock a tab that's not part of a group.
>>>
>> At a moment there is no way of ​
>> locking frames out of the box :(
>> ​
>>
>
> Hmm, so the question becomes: do we include the lock feature, but rename
> it to "Lock Tabs" or something similar, or leave it out altogether? It
> clearly doesn't do everything we want right now.
>
​I would say lets include the feature by adding warning note that this
feature works with default layout only, And I don't think most user will
try to drag drop Browser panel ​
anyway, meanwhile I'll check what changes are required in main source code
to make the Frame lock.

>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-04 14:39                       ` Dave Page <[email protected]>
  2018-04-04 14:41                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Ashesh Vashi <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  0 siblings, 2 replies; 33+ messages in thread

From: Dave Page @ 2018-04-04 14:39 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
[email protected]> wrote:

> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>
>>
>>
>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave,
>>>>>
>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Thanks Joao for reviewing.
>>>>>>>
>>>>>>> PFA updated patch.
>>>>>>>
>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> ​Hello,
>>>>>>>>>
>>>>>>>>> Please find updated patch,
>>>>>>>>>
>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>> e have used ​
>>>>>>>>> templated variable in the javascript file
>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>> ​I
>>>>>>>>> ​ also
>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>
>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>> As a personal preferences I would prefer to see this in at least 2
>>>>>>>> commits, one that is related to the preference issue and another one that
>>>>>>>> is related to this story.
>>>>>>>>
>>>>>>>>
>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>
>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>
>>>>>>>> 1
>>>>>>>>
>>>>>>> ​Fixed​
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>> not a wcDocker panel
>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>
>>>>>>>>
>>>>>> It's not working fine for me. For example, if I put the SQL Panel on
>>>>>> it's own below the properties/stats panels (so it looks like pgAdmin 3 used
>>>>>> to by default), and then lock the layout, I can un-dock the SQL panel into
>>>>>> a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>
>>>>>
>>>>> ​That is expected behaviour ​because once you drag the panel out of
>>>>> the group of Panels then it becomes individual Frame, That is what the
>>>>> author of the wcDocker replied on my question,
>>>>> *"A panel must either be initialized as movable or non-movable from
>>>>> the beginning and never changed because it generates a different
>>>>> arrangement of elements depending. This feature should only ever be used
>>>>> within the onCreate method of the panel. I should probably have been more
>>>>> clear about this limitation in the documentation."*
>>>>>
>>>>>
>>>> So does it become a panel again if a second panel is added to the new
>>>> tab group?
>>>>
>>> ​No, it stays Frame.​
>>>
>>> As far as I understand Panel needs a Frame to render itself if it is not
>>> attached to the main docker instance.​
>>>
>>>>
>>>> There must be some way we can lock a tab that's not part of a group.
>>>>
>>> At a moment there is no way of ​
>>> locking frames out of the box :(
>>> ​
>>>
>>
>> Hmm, so the question becomes: do we include the lock feature, but rename
>> it to "Lock Tabs" or something similar, or leave it out altogether? It
>> clearly doesn't do everything we want right now.
>>
> ​I would say lets include the feature by adding warning note that this
> feature works with default layout only, And I don't think most user will
> try to drag drop Browser panel ​
> anyway, meanwhile I'll check what changes are required in main source code
> to make the Frame lock.
>

Anyone else have any thoughts on this? Personally I don't like including
half-baked features.

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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-04 14:41                         ` Ashesh Vashi <[email protected]>
  2018-04-04 15:46                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Victoria Henry <[email protected]>
  1 sibling, 1 reply; 33+ messages in thread

From: Ashesh Vashi @ 2018-04-04 14:41 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:

>
>
> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave,
>>>>>>
>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>
>>>>>>>> PFA updated patch.
>>>>>>>>
>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ​Hello,
>>>>>>>>>>
>>>>>>>>>> Please find updated patch,
>>>>>>>>>>
>>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>>> e have used ​
>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>>> ​I
>>>>>>>>>> ​ also
>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>
>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>> As a personal preferences I would prefer to see this in at least 2
>>>>>>>>> commits, one that is related to the preference issue and another one that
>>>>>>>>> is related to this story.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>
>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>
>>>>>>>>> 1
>>>>>>>>>
>>>>>>>> ​Fixed​
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>> not a wcDocker panel
>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>
>>>>>>>>>
>>>>>>> It's not working fine for me. For example, if I put the SQL Panel on
>>>>>>> it's own below the properties/stats panels (so it looks like pgAdmin 3 used
>>>>>>> to by default), and then lock the layout, I can un-dock the SQL panel into
>>>>>>> a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>>
>>>>>>
>>>>>> ​That is expected behaviour ​because once you drag the panel out of
>>>>>> the group of Panels then it becomes individual Frame, That is what the
>>>>>> author of the wcDocker replied on my question,
>>>>>> *"A panel must either be initialized as movable or non-movable from
>>>>>> the beginning and never changed because it generates a different
>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>> clear about this limitation in the documentation."*
>>>>>>
>>>>>>
>>>>> So does it become a panel again if a second panel is added to the new
>>>>> tab group?
>>>>>
>>>> ​No, it stays Frame.​
>>>>
>>>> As far as I understand Panel needs a Frame to render itself if it is
>>>> not attached to the main docker instance.​
>>>>
>>>>>
>>>>> There must be some way we can lock a tab that's not part of a group.
>>>>>
>>>> At a moment there is no way of ​
>>>> locking frames out of the box :(
>>>> ​
>>>>
>>>
>>> Hmm, so the question becomes: do we include the lock feature, but rename
>>> it to "Lock Tabs" or something similar, or leave it out altogether? It
>>> clearly doesn't do everything we want right now.
>>>
>> ​I would say lets include the feature by adding warning note that this
>> feature works with default layout only, And I don't think most user will
>> try to drag drop Browser panel ​
>> anyway, meanwhile I'll check what changes are required in main source
>> code to make the Frame lock.
>>
>
> Anyone else have any thoughts on this? Personally I don't like including
> half-baked features.
>
+1

-- Thanks, Ashesh

>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 14:41                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Ashesh Vashi <[email protected]>
@ 2018-04-04 15:46                           ` Victoria Henry <[email protected]>
  2018-04-04 15:51                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Victoria Henry @ 2018-04-04 15:46 UTC (permalink / raw)
  To: Ashesh Vashi <[email protected]>; +Cc: Dave Page <[email protected]>; Murtuza Zabuawala <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

Hi Hackers,

We just reread the issue in Redmine, and our take is a little bit
different. Looks like the problem the person is complaining the tabs
sticking to the mouse when clicked. We also experience that problem while
developing.

How hard would it be to eliminate the Drag and Drop of tabs in the current
implementation?
Do we think this might be a problem for the majority of the users?

Thanks
Victoria & Joao

On Wed, Apr 4, 2018 at 10:41 AM, Ashesh Vashi <[email protected]
> wrote:

> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>
>>
>>
>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave,
>>>>>>>
>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>
>>>>>>>>> PFA updated patch.
>>>>>>>>>
>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ​Hello,
>>>>>>>>>>>
>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>
>>>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>>>> e have used ​
>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>>>> ​I
>>>>>>>>>>> ​ also
>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>
>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>> As a personal preferences I would prefer to see this in at least
>>>>>>>>>> 2 commits, one that is related to the preference issue and another one that
>>>>>>>>>> is related to this story.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>
>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>
>>>>>>>>>> 1
>>>>>>>>>>
>>>>>>>>> ​Fixed​
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>>> not a wcDocker panel
>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>> It's not working fine for me. For example, if I put the SQL Panel
>>>>>>>> on it's own below the properties/stats panels (so it looks like pgAdmin 3
>>>>>>>> used to by default), and then lock the layout, I can un-dock the SQL panel
>>>>>>>> into a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>>>
>>>>>>>
>>>>>>> ​That is expected behaviour ​because once you drag the panel out of
>>>>>>> the group of Panels then it becomes individual Frame, That is what the
>>>>>>> author of the wcDocker replied on my question,
>>>>>>> *"A panel must either be initialized as movable or non-movable from
>>>>>>> the beginning and never changed because it generates a different
>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>> clear about this limitation in the documentation."*
>>>>>>>
>>>>>>>
>>>>>> So does it become a panel again if a second panel is added to the new
>>>>>> tab group?
>>>>>>
>>>>> ​No, it stays Frame.​
>>>>>
>>>>> As far as I understand Panel needs a Frame to render itself if it is
>>>>> not attached to the main docker instance.​
>>>>>
>>>>>>
>>>>>> There must be some way we can lock a tab that's not part of a group.
>>>>>>
>>>>> At a moment there is no way of ​
>>>>> locking frames out of the box :(
>>>>> ​
>>>>>
>>>>
>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>> It clearly doesn't do everything we want right now.
>>>>
>>> ​I would say lets include the feature by adding warning note that this
>>> feature works with default layout only, And I don't think most user will
>>> try to drag drop Browser panel ​
>>> anyway, meanwhile I'll check what changes are required in main source
>>> code to make the Frame lock.
>>>
>>
>> Anyone else have any thoughts on this? Personally I don't like including
>> half-baked features.
>>
> +1
>
> -- Thanks, Ashesh
>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 14:41                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Ashesh Vashi <[email protected]>
  2018-04-04 15:46                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Victoria Henry <[email protected]>
@ 2018-04-04 15:51                             ` Dave Page <[email protected]>
  0 siblings, 0 replies; 33+ messages in thread

From: Dave Page @ 2018-04-04 15:51 UTC (permalink / raw)
  To: Victoria Henry <[email protected]>; +Cc: Ashesh Vashi <[email protected]>; Murtuza Zabuawala <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 4:46 PM, Victoria Henry <[email protected]> wrote:

> Hi Hackers,
>
> We just reread the issue in Redmine, and our take is a little bit
> different. Looks like the problem the person is complaining the tabs
> sticking to the mouse when clicked. We also experience that problem while
> developing.
>

There isn't just one issue. Various people have asked for the ability to
lock the view in the configuration they like.


>
> How hard would it be to eliminate the Drag and Drop of tabs in the current
> implementation?
> Do we think this might be a problem for the majority of the users?
>

When it comes to removing features, I don't really care about the majority.
Creating annoyance or inconvenience by removing working, useful features
for even a small percentage of users is not something I consider an option
unless absolutely essential.


>
> Thanks
> Victoria & Joao
>
> On Wed, Apr 4, 2018 at 10:41 AM, Ashesh Vashi <
> [email protected]> wrote:
>
>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Dave,
>>>>>>>>
>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>
>>>>>>>>>> PFA updated patch.
>>>>>>>>>>
>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hello,
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>
>>>>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>>>>> e have used ​
>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>>>>> ​I
>>>>>>>>>>>> ​ also
>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>
>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>> As a personal preferences I would prefer to see this in at least
>>>>>>>>>>> 2 commits, one that is related to the preference issue and another one that
>>>>>>>>>>> is related to this story.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>
>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>
>>>>>>>>>>> 1
>>>>>>>>>>>
>>>>>>>>>> ​Fixed​
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all
>>>>>>>>>>>> the panels from main window as well as from Query tool and Debugger) but
>>>>>>>>>>>> I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>>>> not a wcDocker panel
>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>> It's not working fine for me. For example, if I put the SQL Panel
>>>>>>>>> on it's own below the properties/stats panels (so it looks like pgAdmin 3
>>>>>>>>> used to by default), and then lock the layout, I can un-dock the SQL panel
>>>>>>>>> into a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>>>>
>>>>>>>>
>>>>>>>> ​That is expected behaviour ​because once you drag the panel out of
>>>>>>>> the group of Panels then it becomes individual Frame, That is what the
>>>>>>>> author of the wcDocker replied on my question,
>>>>>>>> *"A panel must either be initialized as movable or non-movable from
>>>>>>>> the beginning and never changed because it generates a different
>>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>>> clear about this limitation in the documentation."*
>>>>>>>>
>>>>>>>>
>>>>>>> So does it become a panel again if a second panel is added to the
>>>>>>> new tab group?
>>>>>>>
>>>>>> ​No, it stays Frame.​
>>>>>>
>>>>>> As far as I understand Panel needs a Frame to render itself if it is
>>>>>> not attached to the main docker instance.​
>>>>>>
>>>>>>>
>>>>>>> There must be some way we can lock a tab that's not part of a group.
>>>>>>>
>>>>>> At a moment there is no way of ​
>>>>>> locking frames out of the box :(
>>>>>> ​
>>>>>>
>>>>>
>>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>>> It clearly doesn't do everything we want right now.
>>>>>
>>>> ​I would say lets include the feature by adding warning note that this
>>>> feature works with default layout only, And I don't think most user will
>>>> try to drag drop Browser panel ​
>>>> anyway, meanwhile I'll check what changes are required in main source
>>>> code to make the Frame lock.
>>>>
>>>
>>> Anyone else have any thoughts on this? Personally I don't like including
>>> half-baked features.
>>>
>> +1
>>
>> -- Thanks, Ashesh
>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>


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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-05 03:31                         ` Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  1 sibling, 1 reply; 33+ messages in thread

From: Khushboo Vashi @ 2018-04-05 03:31 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:

>
>
> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave,
>>>>>>
>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>
>>>>>>>> PFA updated patch.
>>>>>>>>
>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ​Hello,
>>>>>>>>>>
>>>>>>>>>> Please find updated patch,
>>>>>>>>>>
>>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>>> e have used ​
>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>>> ​I
>>>>>>>>>> ​ also
>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>
>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>> As a personal preferences I would prefer to see this in at least 2
>>>>>>>>> commits, one that is related to the preference issue and another one that
>>>>>>>>> is related to this story.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>
>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>
>>>>>>>>> 1
>>>>>>>>>
>>>>>>>> ​Fixed​
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>> not a wcDocker panel
>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>
>>>>>>>>>
>>>>>>> It's not working fine for me. For example, if I put the SQL Panel on
>>>>>>> it's own below the properties/stats panels (so it looks like pgAdmin 3 used
>>>>>>> to by default), and then lock the layout, I can un-dock the SQL panel into
>>>>>>> a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>>
>>>>>>
>>>>>> ​That is expected behaviour ​because once you drag the panel out of
>>>>>> the group of Panels then it becomes individual Frame, That is what the
>>>>>> author of the wcDocker replied on my question,
>>>>>> *"A panel must either be initialized as movable or non-movable from
>>>>>> the beginning and never changed because it generates a different
>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>> clear about this limitation in the documentation."*
>>>>>>
>>>>>>
>>>>> So does it become a panel again if a second panel is added to the new
>>>>> tab group?
>>>>>
>>>> ​No, it stays Frame.​
>>>>
>>>> As far as I understand Panel needs a Frame to render itself if it is
>>>> not attached to the main docker instance.​
>>>>
>>>>>
>>>>> There must be some way we can lock a tab that's not part of a group.
>>>>>
>>>> At a moment there is no way of ​
>>>> locking frames out of the box :(
>>>> ​
>>>>
>>>
>>> Hmm, so the question becomes: do we include the lock feature, but rename
>>> it to "Lock Tabs" or something similar, or leave it out altogether? It
>>> clearly doesn't do everything we want right now.
>>>
>> ​I would say lets include the feature by adding warning note that this
>> feature works with default layout only, And I don't think most user will
>> try to drag drop Browser panel ​
>> anyway, meanwhile I'll check what changes are required in main source
>> code to make the Frame lock.
>>
>
> Anyone else have any thoughts on this? Personally I don't like including
> half-baked features.
>
> +1, but we need to find out the way as this feature is requested by many
users.

> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
@ 2018-04-05 13:02                           ` Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Robert Eckhardt @ 2018-04-05 13:02 UTC (permalink / raw)
  To: Khushboo Vashi <[email protected]>; +Cc: Dave Page <[email protected]>; Murtuza Zabuawala <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
[email protected]> wrote:

>
>
> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>
>>
>>
>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave,
>>>>>>>
>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>
>>>>>>>>> PFA updated patch.
>>>>>>>>>
>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ​Hello,
>>>>>>>>>>>
>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>
>>>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>>>> e have used ​
>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>>>> ​I
>>>>>>>>>>> ​ also
>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>
>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>> As a personal preferences I would prefer to see this in at least
>>>>>>>>>> 2 commits, one that is related to the preference issue and another one that
>>>>>>>>>> is related to this story.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>
>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>
>>>>>>>>>> 1
>>>>>>>>>>
>>>>>>>>> ​Fixed​
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all the
>>>>>>>>>>> panels from main window as well as from Query tool and Debugger) but I'm
>>>>>>>>>>> facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>>> not a wcDocker panel
>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>> It's not working fine for me. For example, if I put the SQL Panel
>>>>>>>> on it's own below the properties/stats panels (so it looks like pgAdmin 3
>>>>>>>> used to by default), and then lock the layout, I can un-dock the SQL panel
>>>>>>>> into a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>>>
>>>>>>>
>>>>>>> ​That is expected behaviour ​because once you drag the panel out of
>>>>>>> the group of Panels then it becomes individual Frame, That is what the
>>>>>>> author of the wcDocker replied on my question,
>>>>>>> *"A panel must either be initialized as movable or non-movable from
>>>>>>> the beginning and never changed because it generates a different
>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>> clear about this limitation in the documentation."*
>>>>>>>
>>>>>>>
>>>>>> So does it become a panel again if a second panel is added to the new
>>>>>> tab group?
>>>>>>
>>>>> ​No, it stays Frame.​
>>>>>
>>>>> As far as I understand Panel needs a Frame to render itself if it is
>>>>> not attached to the main docker instance.​
>>>>>
>>>>>>
>>>>>> There must be some way we can lock a tab that's not part of a group.
>>>>>>
>>>>> At a moment there is no way of ​
>>>>> locking frames out of the box :(
>>>>> ​
>>>>>
>>>>
>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>> It clearly doesn't do everything we want right now.
>>>>
>>> ​I would say lets include the feature by adding warning note that this
>>> feature works with default layout only, And I don't think most user will
>>> try to drag drop Browser panel ​
>>> anyway, meanwhile I'll check what changes are required in main source
>>> code to make the Frame lock.
>>>
>>
>> Anyone else have any thoughts on this? Personally I don't like including
>> half-baked features.
>>
>> +1, but we need to find out the way as this feature is requested by many
> users.
>

100% agree. I can convince my self that this feature request has to do with
locking panels into a certain layout. I can also convince myself that the
same request is simple because users are frustrated with the fact that the
tabs and panes move around and they find that behavior annoying.

-- Rob


> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
@ 2018-04-24 07:45                             ` Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-24 07:45 UTC (permalink / raw)
  To: Dave Page <[email protected]>; pgadmin-hackers

Hi Dave,

Please find the updated patch, Now we are able to lock wcFrame and wcPanel
both.

--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]>
wrote:

>
>
> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
> [email protected]> wrote:
>
>>
>>
>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Dave,
>>>>>>>>
>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi
>>>>>>>>>
>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>
>>>>>>>>>> PFA updated patch.
>>>>>>>>>>
>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hello,
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>
>>>>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>>>>> e have used ​
>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>>>>> ​I
>>>>>>>>>>>> ​ also
>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>
>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>> As a personal preferences I would prefer to see this in at least
>>>>>>>>>>> 2 commits, one that is related to the preference issue and another one that
>>>>>>>>>>> is related to this story.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>
>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>
>>>>>>>>>>> 1
>>>>>>>>>>>
>>>>>>>>>> ​Fixed​
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all
>>>>>>>>>>>> the panels from main window as well as from Query tool and Debugger) but
>>>>>>>>>>>> I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>>>> not a wcDocker panel
>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>> It's not working fine for me. For example, if I put the SQL Panel
>>>>>>>>> on it's own below the properties/stats panels (so it looks like pgAdmin 3
>>>>>>>>> used to by default), and then lock the layout, I can un-dock the SQL panel
>>>>>>>>> into a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>>>>
>>>>>>>>
>>>>>>>> ​That is expected behaviour ​because once you drag the panel out of
>>>>>>>> the group of Panels then it becomes individual Frame, That is what the
>>>>>>>> author of the wcDocker replied on my question,
>>>>>>>> *"A panel must either be initialized as movable or non-movable from
>>>>>>>> the beginning and never changed because it generates a different
>>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>>> clear about this limitation in the documentation."*
>>>>>>>>
>>>>>>>>
>>>>>>> So does it become a panel again if a second panel is added to the
>>>>>>> new tab group?
>>>>>>>
>>>>>> ​No, it stays Frame.​
>>>>>>
>>>>>> As far as I understand Panel needs a Frame to render itself if it is
>>>>>> not attached to the main docker instance.​
>>>>>>
>>>>>>>
>>>>>>> There must be some way we can lock a tab that's not part of a group.
>>>>>>>
>>>>>> At a moment there is no way of ​
>>>>>> locking frames out of the box :(
>>>>>> ​
>>>>>>
>>>>>
>>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>>> It clearly doesn't do everything we want right now.
>>>>>
>>>> ​I would say lets include the feature by adding warning note that this
>>>> feature works with default layout only, And I don't think most user will
>>>> try to drag drop Browser panel ​
>>>> anyway, meanwhile I'll check what changes are required in main source
>>>> code to make the Frame lock.
>>>>
>>>
>>> Anyone else have any thoughts on this? Personally I don't like including
>>> half-baked features.
>>>
>>> +1, but we need to find out the way as this feature is requested by many
>> users.
>>
>
> 100% agree. I can convince my self that this feature request has to do
> with locking panels into a certain layout. I can also convince myself that
> the same request is simple because users are frustrated with the fact that
> the tabs and panes move around and they find that behavior annoying.
>
> -- Rob
>
>
>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>


Attachments:

  [application/octet-stream] RM_3155_v5.diff (128.9K, 3-RM_3155_v5.diff)
  download | inline diff:
diff --git a/docs/en_US/images/preferences_misc_layout.png b/docs/en_US/images/preferences_misc_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..d04d3c85b07c9809cbabdc01f152c4273ab59139
GIT binary patch
literal 89671
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%0A)&6`eCIk5-*Kscgn@xFKKkM
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%0AEaxiY@ZQT3dfn3N
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
HCc*y?1dlk4

literal 0
HcmV?d00001

diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index e1ddc9b..c631ce2 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -97,6 +97,11 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
 
 * Use the *User language* drop-down listbox to select the display language for the client.
 
+.. image:: images/preferences_misc_layout.png
+    :alt: Preferences dialog user layout section
+
+* When the *Lock layout?* switch is set to *True*, user will not be able to drag and drop panels.
+
 **The Paths Node**
 
 Expand the *Paths* node to specify the locations of supporting utility and help files.
diff --git a/web/pgadmin/browser/static/css/browser.css b/web/pgadmin/browser/static/css/browser.css
index 3ba330d..7d6e782 100644
--- a/web/pgadmin/browser/static/css/browser.css
+++ b/web/pgadmin/browser/static/css/browser.css
@@ -66,3 +66,7 @@ samp,
 .pg-login-icon {
   font-size: 16px;
 }
+
+.no-mouse-event {
+  pointer-events: none;
+}
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 897d270..b3b3dc3 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -115,6 +115,7 @@ define('pgadmin.browser', [
         isPrivate: true,
         icon: 'fa fa-binoculars',
         content: '<div id="tree" class="aciTree"></div>',
+        isMoveable: true,
       }),
       // Properties of the object node
       'properties': new pgAdmin.Browser.Panel({
@@ -690,6 +691,9 @@ define('pgadmin.browser', [
           pgBrowser.keyboardNavigation.init();
           modifyAnimation.modifyAcitreeAnimation(self);
           modifyAnimation.modifyAlertifyAnimation(self);
+          pgBrowser.Events.trigger(
+            'pgadmin-browser:preferences-updated', this, arguments
+          );
         },
         error: function(xhr) {
           try {
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index ab0681a..ec54030 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -1,187 +1,269 @@
-define(
-  ['underscore', 'sources/pgadmin', 'jquery', 'wcdocker'],
-  function(_, pgAdmin, $) {
-
-    var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {},
-      wcDocker = window.wcDocker;
-
-    pgAdmin.Browser.Panel = function(options) {
-      var defaults = [
-        'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
-        'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
-        'canHide', 'limit',
-      ];
-      _.extend(this, _.pick(options, defaults));
-    };
-
-    _.extend(pgAdmin.Browser.Panel.prototype, {
-      name: '',
-      title: '',
-      width: 300,
-      height: 600,
-      showTitle: true,
-      isCloseable: true,
-      isPrivate: false,
-      content: '',
-      icon: '',
-      panel: null,
-      onCreate: null,
-      elContainer: false,
-      limit: null,
-      load: function(docker, title) {
-        var that = this;
-        if (!that.panel) {
-          docker.registerPanelType(that.name, {
-            title: that.title,
-            isPrivate: that.isPrivate,
-            limit: that.limit,
-            onCreate: function(myPanel) {
-              $(myPanel).data('pgAdminName', that.name);
-              myPanel.initSize(that.width, that.height);
-
-              if (!that.showTitle)
-                myPanel.title(false);
-              else {
-                var title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
-                myPanel.title(title_elem);
-                if (that.icon != '')
-                  myPanel.icon(that.icon);
-              }
+import $ from 'jquery';
+import _ from 'underscore';
+import pgAdmin from 'sources/pgadmin';
+import 'wcdocker';
 
-              var $container = $('<div>', {
-                'class': 'pg-panel-content',
-              }).append($(that.content));
-
-              myPanel.closeable(!!that.isCloseable);
-              myPanel.layout().addItem($container);
-              that.panel = myPanel;
-              if (that.events && _.isObject(that.events)) {
-                _.each(that.events, function(v, k) {
-                  if (v && _.isFunction(v)) {
-                    myPanel.on(k, v);
-                  }
-                });
-              }
-              _.each([
-                wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
-                wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
-                wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
-                wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
-                wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
-                wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
-                wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
-                wcDocker.EVENT.SCROLLED,
-              ], function(ev) {
-                myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
-              });
+let pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {};
+let wcDocker = window.wcDocker;
 
-              if (that.onCreate && _.isFunction(that.onCreate)) {
-                that.onCreate.apply(that, [myPanel, $container]);
-              }
+pgAdmin.Browser.Panel = function(options) {
+  var defaults = [
+    'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
+    'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
+    'canHide', 'limit', 'isMoveable',
+  ];
+  _.extend(this, _.pick(options, defaults));
+};
 
-              if (that.elContainer) {
-                myPanel.pgElContainer = $container;
-                $container.addClass('pg-el-container');
-                _.each([
-                  wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
-                  wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                ], function(ev) {
-                  myPanel.on(ev, that.resizedContainer.bind(myPanel));
-                });
-                that.resizedContainer.apply(myPanel);
-              }
+_.extend(pgAdmin.Browser.Panel.prototype, {
+  name: '',
+  title: '',
+  width: 300,
+  height: 600,
+  showTitle: true,
+  isCloseable: true,
+  isPrivate: false,
+  isMoveable: false,
+  content: '',
+  icon: '',
+  panel: null,
+  onCreate: null,
+  elContainer: false,
+  limit: null,
+  load: function(docker, title) {
+    var that = this;
+    if (!that.panel) {
+      docker.registerPanelType(that.name, {
+        title: that.title,
+        isPrivate: that.isPrivate,
+        limit: that.limit,
+        onCreate: function(myPanel) {
+          $(myPanel).data('pgAdminName', that.name);
+          myPanel.initSize(that.width, that.height);
 
-              // Bind events only if they are configurable
-              if (that.canHide) {
-                _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
-                  function(ev) {
-                    myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
-                  });
+          if (!that.showTitle)
+            myPanel.title(false);
+          else {
+            var title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
+            myPanel.title(title_elem);
+            if (that.icon != '')
+              myPanel.icon(that.icon);
+          }
+
+          var $container = $('<div>', {
+            'class': 'pg-panel-content',
+          }).append($(that.content));
+
+          myPanel.closeable(!!that.isCloseable);
+          myPanel.layout().addItem($container);
+          that.panel = myPanel;
+          if (that.events && _.isObject(that.events)) {
+            _.each(that.events, function(v, k) {
+              if (v && _.isFunction(v)) {
+                myPanel.on(k, v);
               }
-            },
+            });
+          }
+          _.each([
+            wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
+            wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
+            wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
+            wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
+            wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
+            wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
+            wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
+            wcDocker.EVENT.SCROLLED,
+          ], function(ev) {
+            myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
           });
-        }
-      },
-      eventFunc: function(eventName) {
-        var name = $(this).data('pgAdminName');
-
-        try {
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel', eventName, this, arguments
-          );
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel:' + eventName, this, arguments
-          );
 
-          if (name) {
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name, eventName, this, arguments
-            );
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
-            );
+          if (that.onCreate && _.isFunction(that.onCreate)) {
+            that.onCreate.apply(that, [myPanel, $container]);
           }
-        } catch (e) {
-          console.warn(e.stack || e);
-        }
-      },
-      resizedContainer: function() {
-        var p = this;
-
-        if (p.pgElContainer && !p.pgResizeTimeout) {
-          if (!p.isVisible()) {
-            clearTimeout(p.pgResizeTimeout);
-            p.pgResizeTimeout = null;
-
-            return;
+
+          if (that.elContainer) {
+            myPanel.pgElContainer = $container;
+            $container.addClass('pg-el-container');
+            _.each([
+              wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
+              wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            ], function(ev) {
+              myPanel.on(ev, that.resizedContainer.bind(myPanel));
+            });
+            that.resizedContainer.apply(myPanel);
           }
-          p.pgResizeTimeout = setTimeout(
-            function() {
-              var w = p.width();
-              p.pgResizeTimeout = null;
-
-              if (w <= 480) {
-                w = 'xs';
-              } else if (w < 600) {
-                w = 'sm';
-              } else if (w < 768) {
-                w = 'md';
-              } else {
-                w = 'lg';
-              }
 
-              p.pgElContainer.attr('el', w);
-            },
-            100
+          // Bind events only if they are configurable
+          if (that.canHide) {
+            _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
+              function(ev) {
+                myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
+              });
+          }
+
+          // Update panels as per new preference value
+          window.top.pgAdmin.Browser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            that.updatePanel, myPanel
           );
-        }
-      },
-      handleVisibility: function(eventName) {
-        // Currently this function only works with dashboard panel but
-        // as per need it can be extended
-        if (this._type != 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
-          return;
-
-        if (eventName == 'panelClosed') {
-          pgBrowser.save_current_layout(pgBrowser);
-          pgAdmin.Dashboard.toggleVisibility(false);
-        } else if (eventName == 'panelVisibilityChanged') {
-          if (pgBrowser.tree) {
-            pgBrowser.save_current_layout(pgBrowser);
-            var selectedNode = pgBrowser.tree.selected();
-            // Discontinue this event after first time visible
-            this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
-            if (!_.isUndefined(pgAdmin.Dashboard))
-              pgAdmin.Dashboard.toggleVisibility(true);
-            // Explicitly trigger tree selected event when we add the tab.
-            pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
-              pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+
+          myPanel.moveable(that.isMoveable);
+          // If not frame then update it
+          if(!that.isMoveable) {
+            that.updatePanel.call(myPanel);
           }
-        }
-      },
+        },
+      });
+    }
+  },
+
+  // This method will allow us to lock the individual Frame panel
+  lockFramePanel: function() {
+    // Find each wcFrame
+    $('.wcFrameTitleBar').each(function() {
+      // If it's not locked
+      if(!$(this).hasClass('no-mouse-event')) {
+        $(this).addClass('no-mouse-event');
+      }
+    });
+  },
 
+  // This method will allow us to unlock the individual Frame panel
+  unlockFramePanel: function() {
+    $('.wcFrameTitleBar').each(function() {
+      // If it's locked
+      if($(this).hasClass('no-mouse-event')) {
+        $(this).removeClass('no-mouse-event');
+      }
     });
+  },
+
+  // We'll execute this function after preferences update
+  updatePanel: function() {
+    let panel = this;
+    let preference = pgBrowser.get_preference(
+      'miscellaneous', 'lock_panel_layout'
+    );
+
+    // If the Panel opens in iframe
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      if(window.opener && window.opener.pgAdmin.Browser){
+        preference = window.opener.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      } else if(window.top && window.top.pgAdmin.Browser) {
+        preference = window.top.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      }
+    }
+
+    // If still preference is missing then don't do anything
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      return;
+    }
+
+    /*
+     preference.value == true then Lock
+     preference.value == false then UnLock
+     panel.moveable() returns True if panel is moveable
+    */
+    let isMoveable = !preference.value;
+
+    // If not moveable then lock it
+    if (isMoveable) {
+      pgAdmin.Browser.Panel.prototype.unlockFramePanel();
+    } else {
+      pgAdmin.Browser.Panel.prototype.lockFramePanel();
+    }
+
+    // If no change in settings then return from here
+    if(panel.moveable() == isMoveable)
+      return;
+
+    pgBrowser.utils.isPanelMoveable = isMoveable;
+    panel.moveable(isMoveable);
+  },
+
+  eventFunc: function(eventName) {
+    var name = $(this).data('pgAdminName');
+
+    try {
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel', eventName, this, arguments
+      );
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel:' + eventName, this, arguments
+      );
+
+      if (name) {
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name, eventName, this, arguments
+        );
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
+        );
+      }
+    } catch (e) {
+      console.warn(e.stack || e);
+    }
+  },
+  resizedContainer: function() {
+    var p = this;
+
+    if (p.pgElContainer && !p.pgResizeTimeout) {
+      if (!p.isVisible()) {
+        clearTimeout(p.pgResizeTimeout);
+        p.pgResizeTimeout = null;
+
+        return;
+      }
+      p.pgResizeTimeout = setTimeout(
+        function() {
+          var w = p.width();
+          p.pgResizeTimeout = null;
+
+          if (w <= 480) {
+            w = 'xs';
+          } else if (w < 600) {
+            w = 'sm';
+          } else if (w < 768) {
+            w = 'md';
+          } else {
+            w = 'lg';
+          }
+
+          p.pgElContainer.attr('el', w);
+        },
+        100
+      );
+    }
+  },
+  handleVisibility: function(eventName) {
+    // Currently this function only works with dashboard panel but
+    // as per need it can be extended
+    if (this._type != 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
+      return;
+
+    if (eventName == 'panelClosed') {
+      pgBrowser.save_current_layout(pgBrowser);
+      pgAdmin.Dashboard.toggleVisibility(false);
+    } else if (eventName == 'panelVisibilityChanged') {
+      if (pgBrowser.tree) {
+        pgBrowser.save_current_layout(pgBrowser);
+        var selectedNode = pgBrowser.tree.selected();
+        // Discontinue this event after first time visible
+        this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
+        if (!_.isUndefined(pgAdmin.Dashboard))
+          pgAdmin.Dashboard.toggleVisibility(true);
+        // Explicitly trigger tree selected event when we add the tab.
+        pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
+          pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+      }
+    }
+  },
+
+});
 
-    return pgAdmin.Browser.Panel;
-  });
+module.export = pgAdmin.Browser.Panel;
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index be3b712..aa37925 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -26,6 +26,7 @@ define('pgadmin.browser.utils',
     is_indent_with_tabs: '{{ editor_indent_with_tabs }}' == 'True',
     app_name: '{{ app_name }}',
     pg_libpq_version: {{pg_libpq_version|e}},
+    isPanelMoveable: true,
 
     counter: {total: 0, loaded: 0},
     registerScripts: function (ctx) {
diff --git a/web/pgadmin/misc/__init__.py b/web/pgadmin/misc/__init__.py
index da28413..7b9521c 100644
--- a/web/pgadmin/misc/__init__.py
+++ b/web/pgadmin/misc/__init__.py
@@ -68,6 +68,11 @@ class MiscModule(PgAdminModule):
             category_label=gettext('User language'),
             options=lang_options
         )
+        self.misc_preference.register(
+            'layout', 'lock_panel_layout',
+            gettext("Lock layout?"), 'boolean', False,
+            category_label=gettext('Layout')
+        )
 
     def get_exposed_url_endpoints(self):
         """
diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py
index 269bfdf..2b8eb2e 100644
--- a/web/pgadmin/settings/__init__.py
+++ b/web/pgadmin/settings/__init__.py
@@ -115,7 +115,7 @@ def store(setting=None, value=None):
             store_setting(setting, value)
     except Exception as e:
         success = 0
-        errormsg = e.message
+        errormsg = str(e)
 
     try:
         info = traceback.format_exc()
diff --git a/web/pgadmin/static/css/webcabin.overrides.css b/web/pgadmin/static/css/webcabin.overrides.css
index 18d89f8..102b345 100644
--- a/web/pgadmin/static/css/webcabin.overrides.css
+++ b/web/pgadmin/static/css/webcabin.overrides.css
@@ -399,3 +399,11 @@ i.wcTabIcon {
   background-size: 18px !important;
   height: 18px;
 }
+
+.wcTabScroller {
+  position: initial;
+}
+
+.wcPanelTab {
+  pointer-events: auto;
+}
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index 473f20a..a0e38c6 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -525,10 +525,21 @@ define('pgadmin.datagrid', [
           // Set panel title and icon
           queryToolPanel.title('<span title="'+panel_title+'">'+panel_title+'</span>');
           queryToolPanel.icon('fa fa-bolt');
+          queryToolPanel.moveable(pgBrowser.utils.isPanelMoveable);
+          pgBrowser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+          );
+
           queryToolPanel.focus();
 
           // Listen on the panel closed event.
           queryToolPanel.on(wcDocker.EVENT.CLOSED, function() {
+            pgBrowser.Events.off(
+              'pgadmin-browser:preferences-updated',
+              pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+            );
+
             $.ajax({
               url: url_for('datagrid.close', {'trans_id': trans_obj.gridTransId}),
               method: 'GET',
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index f9049d8..3a96fd8 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -725,9 +725,19 @@ define([
                         );
 
                       panel.focus();
+                      panel.moveable(pgBrowser.utils.isPanelMoveable);
+                      pgBrowser.Events.on(
+                        'pgadmin-browser:preferences-updated',
+                        pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                      );
 
                       // Panel Closed event
                       panel.on(wcDocker.EVENT.CLOSED, function() {
+                        pgBrowser.Events.off(
+                          'pgadmin-browser:preferences-updated',
+                          pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                        );
+
                         var closeUrl = url_for('debugger.close', {
                           'trans_id': res.data.debuggerTransId,
                         });
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index 49e41b3..13ce62b 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -155,6 +155,7 @@ define('tools.querytool', [
         height: '20%',
         isCloseable: false,
         isPrivate: true,
+        isMoveable: true,
       });
 
       sql_panel.load(main_docker);
diff --git a/web/regression/javascript/browser/panel_spec.js b/web/regression/javascript/browser/panel_spec.js
new file mode 100644
index 0000000..3f0184c
--- /dev/null
+++ b/web/regression/javascript/browser/panel_spec.js
@@ -0,0 +1,52 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2018, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import pgAdmin from 'pgadmin';
+import Panel from 'browser/panel';
+
+describe('Panel', function () {
+  let pgBrowser = pgAdmin.Browser;
+  let Panel = pgAdmin.Browser.Panel;
+  let testPanel;
+  beforeEach(function () {
+    testPanel = new Panel({
+      name: 'test',
+      title: 'Test',
+      isMoveable: true,
+    });
+  });
+
+  describe('when we create a panel', function () {
+    describe('and it is moveable panel', function () {
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+
+    describe('and it is non-moveable panel', function () {
+      beforeEach(function () {
+        testPanel.isMoveable = false;
+      });
+      it('it should call moveable method with false as argument', function () {
+        expect(testPanel.isMoveable).toBe(false);
+      });
+    });
+
+    describe('and user created panel without defining isMoveable then it should be moveable', function () {
+      beforeEach(function () {
+        testPanel = new Panel({
+          name: 'test',
+          title: 'Test',
+        });
+      });
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+  });
+});
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index 306a030..9932907 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -80,6 +80,7 @@ module.exports = {
       'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults',
       'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin',
       'pgadmin.backform': sourcesDir + '/js/backform.pgadmin',
+      'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'),
     },
   },
 };


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-24 07:47                               ` Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Dave Page @ 2018-04-24 07:47 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: pgadmin-hackers; Akshay Joshi <[email protected]>

Akshay, could you review/commit this please?

Please also update the release_notes_3_1.rst file when you commit
user-visible changes, to make it easier to build the release notes.

Thanks.

On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
[email protected]> wrote:

> Hi Dave,
>
> Please find the updated patch, Now we are able to lock wcFrame and wcPanel
> both.
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]>
> wrote:
>
>>
>>
>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>> [email protected]> wrote:
>>
>>>
>>>
>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave,
>>>>>>>>>
>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi
>>>>>>>>>>
>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>
>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hello,
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Now layout will be locked after user updates its preferences, w
>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>> ​ because we do not have preference module or preference cache
>>>>>>>>>>>>> available when the page loads and panels gets rendered,
>>>>>>>>>>>>> ​I
>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>
>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>> As a personal preferences I would prefer to see this in at
>>>>>>>>>>>> least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>
>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>
>>>>>>>>>>>> 1
>>>>>>>>>>>>
>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all
>>>>>>>>>>>>> the panels from main window as well as from Query tool and Debugger) but
>>>>>>>>>>>>> I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>> It's not working fine for me. For example, if I put the SQL Panel
>>>>>>>>>> on it's own below the properties/stats panels (so it looks like pgAdmin 3
>>>>>>>>>> used to by default), and then lock the layout, I can un-dock the SQL panel
>>>>>>>>>> into a dialogue, but then cannot re-dock it. I can do weird things with the
>>>>>>>>>> browser tree as well, probably because it's a frame as you say.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ​That is expected behaviour ​because once you drag the panel out
>>>>>>>>> of the group of Panels then it becomes individual Frame, That is what the
>>>>>>>>> author of the wcDocker replied on my question,
>>>>>>>>> *"A panel must either be initialized as movable or non-movable
>>>>>>>>> from the beginning and never changed because it generates a different
>>>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>>>> clear about this limitation in the documentation."*
>>>>>>>>>
>>>>>>>>>
>>>>>>>> So does it become a panel again if a second panel is added to the
>>>>>>>> new tab group?
>>>>>>>>
>>>>>>> ​No, it stays Frame.​
>>>>>>>
>>>>>>> As far as I understand Panel needs a Frame to render itself if it is
>>>>>>> not attached to the main docker instance.​
>>>>>>>
>>>>>>>>
>>>>>>>> There must be some way we can lock a tab that's not part of a group.
>>>>>>>>
>>>>>>> At a moment there is no way of ​
>>>>>>> locking frames out of the box :(
>>>>>>> ​
>>>>>>>
>>>>>>
>>>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>>>> It clearly doesn't do everything we want right now.
>>>>>>
>>>>> ​I would say lets include the feature by adding warning note that this
>>>>> feature works with default layout only, And I don't think most user will
>>>>> try to drag drop Browser panel ​
>>>>> anyway, meanwhile I'll check what changes are required in main source
>>>>> code to make the Frame lock.
>>>>>
>>>>
>>>> Anyone else have any thoughts on this? Personally I don't like
>>>> including half-baked features.
>>>>
>>>> +1, but we need to find out the way as this feature is requested by
>>> many users.
>>>
>>
>> 100% agree. I can convince my self that this feature request has to do
>> with locking panels into a certain layout. I can also convince myself that
>> the same request is simple because users are frustrated with the fact that
>> the tabs and panes move around and they find that behavior annoying.
>>
>> -- Rob
>>
>>
>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>
>


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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-24 08:58                                 ` Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Akshay Joshi @ 2018-04-24 08:58 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; pgadmin-hackers

On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:

> Akshay, could you review/commit this please?
>
> Please also update the release_notes_3_1.rst file when you commit
> user-visible changes, to make it easier to build the release notes.
>

   Sure

>
> Thanks.
>
> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <murtuza.zabuawala@
> enterprisedb.com> wrote:
>
>> Hi Dave,
>>
>> Please find the updated patch, Now we are able to lock wcFrame and
>> wcPanel both.
>>
>> --
>> Regards,
>> Murtuza Zabuawala
>> EnterpriseDB: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>>
>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]>
>> wrote:
>>
>>>
>>>
>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>> [email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave,
>>>>>>>>>>
>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>
>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Now layout will be locked after user updates its preferences,
>>>>>>>>>>>>>> w
>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>> ​ because we do not have preference module or preference
>>>>>>>>>>>>>> cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>
>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>> As a personal preferences I would prefer to see this in at
>>>>>>>>>>>>> least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>
>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>
>>>>>>>>>>>>> 1
>>>>>>>>>>>>>
>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all
>>>>>>>>>>>>>> the panels from main window as well as from Query tool and Debugger) but
>>>>>>>>>>>>>> I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL
>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>> say.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ​That is expected behaviour ​because once you drag the panel out
>>>>>>>>>> of the group of Panels then it becomes individual Frame, That is what the
>>>>>>>>>> author of the wcDocker replied on my question,
>>>>>>>>>> *"A panel must either be initialized as movable or non-movable
>>>>>>>>>> from the beginning and never changed because it generates a different
>>>>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>>>>> clear about this limitation in the documentation."*
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> So does it become a panel again if a second panel is added to the
>>>>>>>>> new tab group?
>>>>>>>>>
>>>>>>>> ​No, it stays Frame.​
>>>>>>>>
>>>>>>>> As far as I understand Panel needs a Frame to render itself if it
>>>>>>>> is not attached to the main docker instance.​
>>>>>>>>
>>>>>>>>>
>>>>>>>>> There must be some way we can lock a tab that's not part of a
>>>>>>>>> group.
>>>>>>>>>
>>>>>>>> At a moment there is no way of ​
>>>>>>>> locking frames out of the box :(
>>>>>>>> ​
>>>>>>>>
>>>>>>>
>>>>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>>>>> It clearly doesn't do everything we want right now.
>>>>>>>
>>>>>> ​I would say lets include the feature by adding warning note that
>>>>>> this feature works with default layout only, And I don't think most user
>>>>>> will try to drag drop Browser panel ​
>>>>>> anyway, meanwhile I'll check what changes are required in main source
>>>>>> code to make the Frame lock.
>>>>>>
>>>>>
>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>> including half-baked features.
>>>>>
>>>>> +1, but we need to find out the way as this feature is requested by
>>>> many users.
>>>>
>>>
>>> 100% agree. I can convince my self that this feature request has to do
>>> with locking panels into a certain layout. I can also convince myself that
>>> the same request is simple because users are frustrated with the fact that
>>> the tabs and panes move around and they find that behavior annoying.
>>>
>>> -- Rob
>>>
>>>
>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>



-- 
*Akshay Joshi*

*Sr. Software Architect *



*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
@ 2018-04-24 14:56                                   ` Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Joao De Almeida Pereira @ 2018-04-24 14:56 UTC (permalink / raw)
  To: Akshay Joshi <[email protected]>; +Cc: Dave Page <[email protected]>; Murtuza Zabuawala <[email protected]>; pgadmin-hackers

Hi Murtuza,

We tested the patch and everything looks fine.  We also refactors some
parts to include things like strict equality and using let/const instead of
var.  The updated patch is attached.
In the future, it will be more valuable to have the translation to ES6 and
the feature work in separate commits so it is easier to understand what
changed.

Sincerely,

Joao and Victoria



On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <[email protected]>
wrote:

> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:
>
>> Akshay, could you review/commit this please?
>>
>> Please also update the release_notes_3_1.rst file when you commit
>> user-visible changes, to make it easier to build the release notes.
>>
>
>    Sure
>
>>
>> Thanks.
>>
>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi Dave,
>>>
>>> Please find the updated patch, Now we are able to lock wcFrame and
>>> wcPanel both.
>>>
>>> --
>>> Regards,
>>> Murtuza Zabuawala
>>> EnterpriseDB: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>>
>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>> [email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>
>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>> ​ because we do not have preference module or preference
>>>>>>>>>>>>>>> cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in at
>>>>>>>>>>>>>> least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>
>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels (all
>>>>>>>>>>>>>>> the panels from main window as well as from Query tool and Debugger) but
>>>>>>>>>>>>>>> I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL
>>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>> say.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ​That is expected behaviour ​because once you drag the panel out
>>>>>>>>>>> of the group of Panels then it becomes individual Frame, That is what the
>>>>>>>>>>> author of the wcDocker replied on my question,
>>>>>>>>>>> *"A panel must either be initialized as movable or non-movable
>>>>>>>>>>> from the beginning and never changed because it generates a different
>>>>>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>>>>>> clear about this limitation in the documentation."*
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> So does it become a panel again if a second panel is added to the
>>>>>>>>>> new tab group?
>>>>>>>>>>
>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>
>>>>>>>>> As far as I understand Panel needs a Frame to render itself if it
>>>>>>>>> is not attached to the main docker instance.​
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> There must be some way we can lock a tab that's not part of a
>>>>>>>>>> group.
>>>>>>>>>>
>>>>>>>>> At a moment there is no way of ​
>>>>>>>>> locking frames out of the box :(
>>>>>>>>> ​
>>>>>>>>>
>>>>>>>>
>>>>>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>>>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>>>>>> It clearly doesn't do everything we want right now.
>>>>>>>>
>>>>>>> ​I would say lets include the feature by adding warning note that
>>>>>>> this feature works with default layout only, And I don't think most user
>>>>>>> will try to drag drop Browser panel ​
>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>> source code to make the Frame lock.
>>>>>>>
>>>>>>
>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>> including half-baked features.
>>>>>>
>>>>>> +1, but we need to find out the way as this feature is requested by
>>>>> many users.
>>>>>
>>>>
>>>> 100% agree. I can convince my self that this feature request has to do
>>>> with locking panels into a certain layout. I can also convince myself that
>>>> the same request is simple because users are frustrated with the fact that
>>>> the tabs and panes move around and they find that behavior annoying.
>>>>
>>>> -- Rob
>>>>
>>>>
>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 976-788-8246
> <+91%2097678%2088246>*
>


Attachments:

  [text/x-patch] RM_3155_v6.patch (24.1K, 3-RM_3155_v6.patch)
  download | inline diff:
diff --git a/docs/en_US/images/preferences_misc_layout.png b/docs/en_US/images/preferences_misc_layout.png
index e69de29b..d04d3c85 100644
Binary files a/docs/en_US/images/preferences_misc_layout.png and b/docs/en_US/images/preferences_misc_layout.png differ
diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index e1ddc9b6..c631ce2a 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -97,6 +97,11 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
 
 * Use the *User language* drop-down listbox to select the display language for the client.
 
+.. image:: images/preferences_misc_layout.png
+    :alt: Preferences dialog user layout section
+
+* When the *Lock layout?* switch is set to *True*, user will not be able to drag and drop panels.
+
 **The Paths Node**
 
 Expand the *Paths* node to specify the locations of supporting utility and help files.
diff --git a/web/pgadmin/browser/static/css/browser.css b/web/pgadmin/browser/static/css/browser.css
index 3ba330d3..7d6e7823 100644
--- a/web/pgadmin/browser/static/css/browser.css
+++ b/web/pgadmin/browser/static/css/browser.css
@@ -66,3 +66,7 @@ samp,
 .pg-login-icon {
   font-size: 16px;
 }
+
+.no-mouse-event {
+  pointer-events: none;
+}
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 897d2708..b3b3dc35 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -115,6 +115,7 @@ define('pgadmin.browser', [
         isPrivate: true,
         icon: 'fa fa-binoculars',
         content: '<div id="tree" class="aciTree"></div>',
+        isMoveable: true,
       }),
       // Properties of the object node
       'properties': new pgAdmin.Browser.Panel({
@@ -690,6 +691,9 @@ define('pgadmin.browser', [
           pgBrowser.keyboardNavigation.init();
           modifyAnimation.modifyAcitreeAnimation(self);
           modifyAnimation.modifyAlertifyAnimation(self);
+          pgBrowser.Events.trigger(
+            'pgadmin-browser:preferences-updated', this, arguments
+          );
         },
         error: function(xhr) {
           try {
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index ab0681a9..92e39c02 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -1,187 +1,269 @@
-define(
-  ['underscore', 'sources/pgadmin', 'jquery', 'wcdocker'],
-  function(_, pgAdmin, $) {
-
-    var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {},
-      wcDocker = window.wcDocker;
-
-    pgAdmin.Browser.Panel = function(options) {
-      var defaults = [
-        'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
-        'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
-        'canHide', 'limit',
-      ];
-      _.extend(this, _.pick(options, defaults));
-    };
-
-    _.extend(pgAdmin.Browser.Panel.prototype, {
-      name: '',
-      title: '',
-      width: 300,
-      height: 600,
-      showTitle: true,
-      isCloseable: true,
-      isPrivate: false,
-      content: '',
-      icon: '',
-      panel: null,
-      onCreate: null,
-      elContainer: false,
-      limit: null,
-      load: function(docker, title) {
-        var that = this;
-        if (!that.panel) {
-          docker.registerPanelType(that.name, {
-            title: that.title,
-            isPrivate: that.isPrivate,
-            limit: that.limit,
-            onCreate: function(myPanel) {
-              $(myPanel).data('pgAdminName', that.name);
-              myPanel.initSize(that.width, that.height);
-
-              if (!that.showTitle)
-                myPanel.title(false);
-              else {
-                var title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
-                myPanel.title(title_elem);
-                if (that.icon != '')
-                  myPanel.icon(that.icon);
-              }
+import $ from 'jquery';
+import _ from 'underscore';
+import pgAdmin from 'sources/pgadmin';
+import 'wcdocker';
 
-              var $container = $('<div>', {
-                'class': 'pg-panel-content',
-              }).append($(that.content));
-
-              myPanel.closeable(!!that.isCloseable);
-              myPanel.layout().addItem($container);
-              that.panel = myPanel;
-              if (that.events && _.isObject(that.events)) {
-                _.each(that.events, function(v, k) {
-                  if (v && _.isFunction(v)) {
-                    myPanel.on(k, v);
-                  }
-                });
-              }
-              _.each([
-                wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
-                wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
-                wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
-                wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
-                wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
-                wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
-                wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
-                wcDocker.EVENT.SCROLLED,
-              ], function(ev) {
-                myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
-              });
+let pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {};
+let wcDocker = window.wcDocker;
 
-              if (that.onCreate && _.isFunction(that.onCreate)) {
-                that.onCreate.apply(that, [myPanel, $container]);
-              }
+pgAdmin.Browser.Panel = function(options) {
+  const defaults = [
+    'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
+    'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
+    'canHide', 'limit', 'isMoveable',
+  ];
+  _.extend(this, _.pick(options, defaults));
+};
 
-              if (that.elContainer) {
-                myPanel.pgElContainer = $container;
-                $container.addClass('pg-el-container');
-                _.each([
-                  wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
-                  wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                ], function(ev) {
-                  myPanel.on(ev, that.resizedContainer.bind(myPanel));
-                });
-                that.resizedContainer.apply(myPanel);
-              }
+_.extend(pgAdmin.Browser.Panel.prototype, {
+  name: '',
+  title: '',
+  width: 300,
+  height: 600,
+  showTitle: true,
+  isCloseable: true,
+  isPrivate: false,
+  isMoveable: false,
+  content: '',
+  icon: '',
+  panel: null,
+  onCreate: null,
+  elContainer: false,
+  limit: null,
+  load: function(docker, title) {
+    const that = this;
+    if (!that.panel) {
+      docker.registerPanelType(that.name, {
+        title: that.title,
+        isPrivate: that.isPrivate,
+        limit: that.limit,
+        onCreate: function(myPanel) {
+          $(myPanel).data('pgAdminName', that.name);
+          myPanel.initSize(that.width, that.height);
 
-              // Bind events only if they are configurable
-              if (that.canHide) {
-                _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
-                  function(ev) {
-                    myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
-                  });
+          if (!that.showTitle)
+            myPanel.title(false);
+          else {
+            const title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
+            myPanel.title(title_elem);
+            if (that.icon !== '')
+              myPanel.icon(that.icon);
+          }
+
+          const $container = $('<div>', {
+            'class': 'pg-panel-content',
+          }).append($(that.content));
+
+          myPanel.closeable(!!that.isCloseable);
+          myPanel.layout().addItem($container);
+          that.panel = myPanel;
+          if (that.events && _.isObject(that.events)) {
+            _.each(that.events, function(v, k) {
+              if (v && _.isFunction(v)) {
+                myPanel.on(k, v);
               }
-            },
+            });
+          }
+          _.each([
+            wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
+            wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
+            wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
+            wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
+            wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
+            wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
+            wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
+            wcDocker.EVENT.SCROLLED,
+          ], function(ev) {
+            myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
           });
-        }
-      },
-      eventFunc: function(eventName) {
-        var name = $(this).data('pgAdminName');
-
-        try {
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel', eventName, this, arguments
-          );
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel:' + eventName, this, arguments
-          );
 
-          if (name) {
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name, eventName, this, arguments
-            );
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
-            );
+          if (that.onCreate && _.isFunction(that.onCreate)) {
+            that.onCreate.apply(that, [myPanel, $container]);
           }
-        } catch (e) {
-          console.warn(e.stack || e);
-        }
-      },
-      resizedContainer: function() {
-        var p = this;
-
-        if (p.pgElContainer && !p.pgResizeTimeout) {
-          if (!p.isVisible()) {
-            clearTimeout(p.pgResizeTimeout);
-            p.pgResizeTimeout = null;
-
-            return;
+
+          if (that.elContainer) {
+            myPanel.pgElContainer = $container;
+            $container.addClass('pg-el-container');
+            _.each([
+              wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
+              wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            ], function(ev) {
+              myPanel.on(ev, that.resizedContainer.bind(myPanel));
+            });
+            that.resizedContainer.apply(myPanel);
           }
-          p.pgResizeTimeout = setTimeout(
-            function() {
-              var w = p.width();
-              p.pgResizeTimeout = null;
-
-              if (w <= 480) {
-                w = 'xs';
-              } else if (w < 600) {
-                w = 'sm';
-              } else if (w < 768) {
-                w = 'md';
-              } else {
-                w = 'lg';
-              }
 
-              p.pgElContainer.attr('el', w);
-            },
-            100
+          // Bind events only if they are configurable
+          if (that.canHide) {
+            _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
+              function(ev) {
+                myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
+              });
+          }
+
+          // Update panels as per new preference value
+          window.top.pgAdmin.Browser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            that.updatePanel, myPanel
           );
-        }
-      },
-      handleVisibility: function(eventName) {
-        // Currently this function only works with dashboard panel but
-        // as per need it can be extended
-        if (this._type != 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
-          return;
-
-        if (eventName == 'panelClosed') {
-          pgBrowser.save_current_layout(pgBrowser);
-          pgAdmin.Dashboard.toggleVisibility(false);
-        } else if (eventName == 'panelVisibilityChanged') {
-          if (pgBrowser.tree) {
-            pgBrowser.save_current_layout(pgBrowser);
-            var selectedNode = pgBrowser.tree.selected();
-            // Discontinue this event after first time visible
-            this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
-            if (!_.isUndefined(pgAdmin.Dashboard))
-              pgAdmin.Dashboard.toggleVisibility(true);
-            // Explicitly trigger tree selected event when we add the tab.
-            pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
-              pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+
+          myPanel.moveable(that.isMoveable);
+          // If not frame then update it
+          if(!that.isMoveable) {
+            that.updatePanel.call(myPanel);
           }
-        }
-      },
+        },
+      });
+    }
+  },
+
+  // This method will allow us to lock the individual Frame panel
+  lockFramePanel: function() {
+    // Find each wcFrame
+    $('.wcFrameTitleBar').each(function() {
+      // If it's not locked
+      if(!$(this).hasClass('no-mouse-event')) {
+        $(this).addClass('no-mouse-event');
+      }
+    });
+  },
 
+  // This method will allow us to unlock the individual Frame panel
+  unlockFramePanel: function() {
+    $('.wcFrameTitleBar').each(function() {
+      // If it's locked
+      if($(this).hasClass('no-mouse-event')) {
+        $(this).removeClass('no-mouse-event');
+      }
     });
+  },
+
+  // We'll execute this function after preferences update
+  updatePanel: function() {
+    let panel = this;
+    let preference = pgBrowser.get_preference(
+      'miscellaneous', 'lock_panel_layout'
+    );
+
+    // If the Panel opens in iframe
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      if(window.opener && window.opener.pgAdmin.Browser){
+        preference = window.opener.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      } else if(window.top && window.top.pgAdmin.Browser) {
+        preference = window.top.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      }
+    }
+
+    // If still preference is missing then don't do anything
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      return;
+    }
+
+    /*
+     preference.value == true then Lock
+     preference.value == false then UnLock
+     panel.moveable() returns True if panel is moveable
+    */
+    let isMoveable = !preference.value;
+
+    // If not moveable then lock it
+    if (isMoveable) {
+      pgAdmin.Browser.Panel.prototype.unlockFramePanel();
+    } else {
+      pgAdmin.Browser.Panel.prototype.lockFramePanel();
+    }
+
+    // If no change in settings then return from here
+    if(panel.moveable() === isMoveable)
+      return;
+
+    pgBrowser.utils.isPanelMoveable = isMoveable;
+    panel.moveable(isMoveable);
+  },
+
+  eventFunc: function(eventName) {
+    const name = $(this).data('pgAdminName');
+
+    try {
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel', eventName, this, arguments
+      );
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel:' + eventName, this, arguments
+      );
+
+      if (name) {
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name, eventName, this, arguments
+        );
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
+        );
+      }
+    } catch (e) {
+      console.warn(e.stack || e);
+    }
+  },
+  resizedContainer: function() {
+    const p = this;
+
+    if (p.pgElContainer && !p.pgResizeTimeout) {
+      if (!p.isVisible()) {
+        clearTimeout(p.pgResizeTimeout);
+        p.pgResizeTimeout = null;
+
+        return;
+      }
+      p.pgResizeTimeout = setTimeout(
+        function() {
+          let w = p.width();
+          p.pgResizeTimeout = null;
+
+          if (w <= 480) {
+            w = 'xs';
+          } else if (w < 600) {
+            w = 'sm';
+          } else if (w < 768) {
+            w = 'md';
+          } else {
+            w = 'lg';
+          }
+
+          p.pgElContainer.attr('el', w);
+        },
+        100
+      );
+    }
+  },
+  handleVisibility: function(eventName) {
+    // Currently this function only works with dashboard panel but
+    // as per need it can be extended
+    if (this._type !== 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
+      return;
+
+    if (eventName === 'panelClosed') {
+      pgBrowser.save_current_layout(pgBrowser);
+      pgAdmin.Dashboard.toggleVisibility(false);
+    } else if (eventName === 'panelVisibilityChanged') {
+      if (pgBrowser.tree) {
+        pgBrowser.save_current_layout(pgBrowser);
+        const selectedNode = pgBrowser.tree.selected();
+        // Discontinue this event after first time visible
+        this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
+        if (!_.isUndefined(pgAdmin.Dashboard))
+          pgAdmin.Dashboard.toggleVisibility(true);
+        // Explicitly trigger tree selected event when we add the tab.
+        pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
+          pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+      }
+    }
+  },
+
+});
 
-    return pgAdmin.Browser.Panel;
-  });
+module.exports = pgAdmin.Browser.Panel;
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index be3b7122..aa37925b 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -26,6 +26,7 @@ define('pgadmin.browser.utils',
     is_indent_with_tabs: '{{ editor_indent_with_tabs }}' == 'True',
     app_name: '{{ app_name }}',
     pg_libpq_version: {{pg_libpq_version|e}},
+    isPanelMoveable: true,
 
     counter: {total: 0, loaded: 0},
     registerScripts: function (ctx) {
diff --git a/web/pgadmin/misc/__init__.py b/web/pgadmin/misc/__init__.py
index da28413a..7b9521c2 100644
--- a/web/pgadmin/misc/__init__.py
+++ b/web/pgadmin/misc/__init__.py
@@ -68,6 +68,11 @@ class MiscModule(PgAdminModule):
             category_label=gettext('User language'),
             options=lang_options
         )
+        self.misc_preference.register(
+            'layout', 'lock_panel_layout',
+            gettext("Lock layout?"), 'boolean', False,
+            category_label=gettext('Layout')
+        )
 
     def get_exposed_url_endpoints(self):
         """
diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py
index 269bfdf1..2b8eb2ea 100644
--- a/web/pgadmin/settings/__init__.py
+++ b/web/pgadmin/settings/__init__.py
@@ -115,7 +115,7 @@ def store(setting=None, value=None):
             store_setting(setting, value)
     except Exception as e:
         success = 0
-        errormsg = e.message
+        errormsg = str(e)
 
     try:
         info = traceback.format_exc()
diff --git a/web/pgadmin/static/css/webcabin.overrides.css b/web/pgadmin/static/css/webcabin.overrides.css
index 18d89f84..102b3451 100644
--- a/web/pgadmin/static/css/webcabin.overrides.css
+++ b/web/pgadmin/static/css/webcabin.overrides.css
@@ -399,3 +399,11 @@ i.wcTabIcon {
   background-size: 18px !important;
   height: 18px;
 }
+
+.wcTabScroller {
+  position: initial;
+}
+
+.wcPanelTab {
+  pointer-events: auto;
+}
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index b0ed60f6..27323180 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -527,10 +527,21 @@ define('pgadmin.datagrid', [
           // Set panel title and icon
           queryToolPanel.title('<span title="'+panel_title+'">'+panel_title+'</span>');
           queryToolPanel.icon('fa fa-bolt');
+          queryToolPanel.moveable(pgBrowser.utils.isPanelMoveable);
+          pgBrowser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+          );
+
           queryToolPanel.focus();
 
           // Listen on the panel closed event.
           queryToolPanel.on(wcDocker.EVENT.CLOSED, function() {
+            pgBrowser.Events.off(
+              'pgadmin-browser:preferences-updated',
+              pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+            );
+
             $.ajax({
               url: url_for('datagrid.close', {'trans_id': trans_obj.gridTransId}),
               method: 'GET',
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index f9049d81..3a96fd8b 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -725,9 +725,19 @@ define([
                         );
 
                       panel.focus();
+                      panel.moveable(pgBrowser.utils.isPanelMoveable);
+                      pgBrowser.Events.on(
+                        'pgadmin-browser:preferences-updated',
+                        pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                      );
 
                       // Panel Closed event
                       panel.on(wcDocker.EVENT.CLOSED, function() {
+                        pgBrowser.Events.off(
+                          'pgadmin-browser:preferences-updated',
+                          pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                        );
+
                         var closeUrl = url_for('debugger.close', {
                           'trans_id': res.data.debuggerTransId,
                         });
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index f95389c6..be731728 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -155,6 +155,7 @@ define('tools.querytool', [
         height: '20%',
         isCloseable: false,
         isPrivate: true,
+        isMoveable: true,
       });
 
       sql_panel.load(main_docker);
diff --git a/web/regression/javascript/browser/panel_spec.js b/web/regression/javascript/browser/panel_spec.js
index e69de29b..3f0184c8 100644
--- a/web/regression/javascript/browser/panel_spec.js
+++ b/web/regression/javascript/browser/panel_spec.js
@@ -0,0 +1,52 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2018, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import pgAdmin from 'pgadmin';
+import Panel from 'browser/panel';
+
+describe('Panel', function () {
+  let pgBrowser = pgAdmin.Browser;
+  let Panel = pgAdmin.Browser.Panel;
+  let testPanel;
+  beforeEach(function () {
+    testPanel = new Panel({
+      name: 'test',
+      title: 'Test',
+      isMoveable: true,
+    });
+  });
+
+  describe('when we create a panel', function () {
+    describe('and it is moveable panel', function () {
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+
+    describe('and it is non-moveable panel', function () {
+      beforeEach(function () {
+        testPanel.isMoveable = false;
+      });
+      it('it should call moveable method with false as argument', function () {
+        expect(testPanel.isMoveable).toBe(false);
+      });
+    });
+
+    describe('and user created panel without defining isMoveable then it should be moveable', function () {
+      beforeEach(function () {
+        testPanel = new Panel({
+          name: 'test',
+          title: 'Test',
+        });
+      });
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+  });
+});
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index 306a030b..9932907f 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -80,6 +80,7 @@ module.exports = {
       'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults',
       'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin',
       'pgadmin.backform': sourcesDir + '/js/backform.pgadmin',
+      'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'),
     },
   },
 };


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
@ 2018-04-24 15:08                                     ` Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Joao De Almeida Pereira @ 2018-04-24 15:08 UTC (permalink / raw)
  To: Akshay Joshi <[email protected]>; +Cc: Dave Page <[email protected]>; Murtuza Zabuawala <[email protected]>; pgadmin-hackers

Hi,
Apparently the last version was not applying, here is the new version that
should apply correctly

Thanks
Victoria & Joao

On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
[email protected]> wrote:

> Hi Murtuza,
>
> We tested the patch and everything looks fine.  We also refactors some
> parts to include things like strict equality and using let/const instead of
> var.  The updated patch is attached.
> In the future, it will be more valuable to have the translation to ES6 and
> the feature work in separate commits so it is easier to understand what
> changed.
>
> Sincerely,
>
> Joao and Victoria
>
>
>
> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
> [email protected]> wrote:
>
>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:
>>
>>> Akshay, could you review/commit this please?
>>>
>>> Please also update the release_notes_3_1.rst file when you commit
>>> user-visible changes, to make it easier to build the release notes.
>>>
>>
>>    Sure
>>
>>>
>>> Thanks.
>>>
>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> Hi Dave,
>>>>
>>>> Please find the updated patch, Now we are able to lock wcFrame and
>>>> wcPanel both.
>>>>
>>>> --
>>>> Regards,
>>>> Murtuza Zabuawala
>>>> EnterpriseDB: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>>
>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>> ​ because we do not have preference module or preference
>>>>>>>>>>>>>>>> cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in at
>>>>>>>>>>>>>>> least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels
>>>>>>>>>>>>>>>> (all the panels from main window as well as from Query tool and Debugger)
>>>>>>>>>>>>>>>> but I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL
>>>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>> say.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the panel
>>>>>>>>>>>> out of the group of Panels then it becomes individual Frame, That is what
>>>>>>>>>>>> the author of the wcDocker replied on my question,
>>>>>>>>>>>> *"A panel must either be initialized as movable or non-movable
>>>>>>>>>>>> from the beginning and never changed because it generates a different
>>>>>>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>>>>>>> clear about this limitation in the documentation."*
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>> So does it become a panel again if a second panel is added to
>>>>>>>>>>> the new tab group?
>>>>>>>>>>>
>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>
>>>>>>>>>> As far as I understand Panel needs a Frame to render itself if it
>>>>>>>>>> is not attached to the main docker instance.​
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> There must be some way we can lock a tab that's not part of a
>>>>>>>>>>> group.
>>>>>>>>>>>
>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>> ​
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>>>>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>>>>>>> It clearly doesn't do everything we want right now.
>>>>>>>>>
>>>>>>>> ​I would say lets include the feature by adding warning note that
>>>>>>>> this feature works with default layout only, And I don't think most user
>>>>>>>> will try to drag drop Browser panel ​
>>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>>> source code to make the Frame lock.
>>>>>>>>
>>>>>>>
>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>> including half-baked features.
>>>>>>>
>>>>>>> +1, but we need to find out the way as this feature is requested by
>>>>>> many users.
>>>>>>
>>>>>
>>>>> 100% agree. I can convince my self that this feature request has to do
>>>>> with locking panels into a certain layout. I can also convince myself that
>>>>> the same request is simple because users are frustrated with the fact that
>>>>> the tabs and panes move around and they find that behavior annoying.
>>>>>
>>>>> -- Rob
>>>>>
>>>>>
>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 976-788-8246
>> <+91%2097678%2088246>*
>>
>


Attachments:

  [text/x-patch] RM_3155_v7.patch (129.0K, 3-RM_3155_v7.patch)
  download | inline diff:
diff --git a/docs/en_US/images/preferences_misc_layout.png b/docs/en_US/images/preferences_misc_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..d04d3c85b07c9809cbabdc01f152c4273ab59139
GIT binary patch
literal 89671
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%0A)&6`eCIk5-*Kscgn@xFKKkM
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%0AEaxiY@ZQT3dfn3N
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
HCc*y?1dlk4

literal 0
HcmV?d00001

diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index e1ddc9b6..c631ce2a 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -97,6 +97,11 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
 
 * Use the *User language* drop-down listbox to select the display language for the client.
 
+.. image:: images/preferences_misc_layout.png
+    :alt: Preferences dialog user layout section
+
+* When the *Lock layout?* switch is set to *True*, user will not be able to drag and drop panels.
+
 **The Paths Node**
 
 Expand the *Paths* node to specify the locations of supporting utility and help files.
diff --git a/web/pgadmin/browser/static/css/browser.css b/web/pgadmin/browser/static/css/browser.css
index 3ba330d3..7d6e7823 100644
--- a/web/pgadmin/browser/static/css/browser.css
+++ b/web/pgadmin/browser/static/css/browser.css
@@ -66,3 +66,7 @@ samp,
 .pg-login-icon {
   font-size: 16px;
 }
+
+.no-mouse-event {
+  pointer-events: none;
+}
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 897d2708..b3b3dc35 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -115,6 +115,7 @@ define('pgadmin.browser', [
         isPrivate: true,
         icon: 'fa fa-binoculars',
         content: '<div id="tree" class="aciTree"></div>',
+        isMoveable: true,
       }),
       // Properties of the object node
       'properties': new pgAdmin.Browser.Panel({
@@ -690,6 +691,9 @@ define('pgadmin.browser', [
           pgBrowser.keyboardNavigation.init();
           modifyAnimation.modifyAcitreeAnimation(self);
           modifyAnimation.modifyAlertifyAnimation(self);
+          pgBrowser.Events.trigger(
+            'pgadmin-browser:preferences-updated', this, arguments
+          );
         },
         error: function(xhr) {
           try {
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index ab0681a9..92e39c02 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -1,187 +1,269 @@
-define(
-  ['underscore', 'sources/pgadmin', 'jquery', 'wcdocker'],
-  function(_, pgAdmin, $) {
-
-    var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {},
-      wcDocker = window.wcDocker;
-
-    pgAdmin.Browser.Panel = function(options) {
-      var defaults = [
-        'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
-        'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
-        'canHide', 'limit',
-      ];
-      _.extend(this, _.pick(options, defaults));
-    };
-
-    _.extend(pgAdmin.Browser.Panel.prototype, {
-      name: '',
-      title: '',
-      width: 300,
-      height: 600,
-      showTitle: true,
-      isCloseable: true,
-      isPrivate: false,
-      content: '',
-      icon: '',
-      panel: null,
-      onCreate: null,
-      elContainer: false,
-      limit: null,
-      load: function(docker, title) {
-        var that = this;
-        if (!that.panel) {
-          docker.registerPanelType(that.name, {
-            title: that.title,
-            isPrivate: that.isPrivate,
-            limit: that.limit,
-            onCreate: function(myPanel) {
-              $(myPanel).data('pgAdminName', that.name);
-              myPanel.initSize(that.width, that.height);
-
-              if (!that.showTitle)
-                myPanel.title(false);
-              else {
-                var title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
-                myPanel.title(title_elem);
-                if (that.icon != '')
-                  myPanel.icon(that.icon);
-              }
+import $ from 'jquery';
+import _ from 'underscore';
+import pgAdmin from 'sources/pgadmin';
+import 'wcdocker';
 
-              var $container = $('<div>', {
-                'class': 'pg-panel-content',
-              }).append($(that.content));
-
-              myPanel.closeable(!!that.isCloseable);
-              myPanel.layout().addItem($container);
-              that.panel = myPanel;
-              if (that.events && _.isObject(that.events)) {
-                _.each(that.events, function(v, k) {
-                  if (v && _.isFunction(v)) {
-                    myPanel.on(k, v);
-                  }
-                });
-              }
-              _.each([
-                wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
-                wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
-                wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
-                wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
-                wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
-                wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
-                wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
-                wcDocker.EVENT.SCROLLED,
-              ], function(ev) {
-                myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
-              });
+let pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {};
+let wcDocker = window.wcDocker;
 
-              if (that.onCreate && _.isFunction(that.onCreate)) {
-                that.onCreate.apply(that, [myPanel, $container]);
-              }
+pgAdmin.Browser.Panel = function(options) {
+  const defaults = [
+    'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
+    'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
+    'canHide', 'limit', 'isMoveable',
+  ];
+  _.extend(this, _.pick(options, defaults));
+};
 
-              if (that.elContainer) {
-                myPanel.pgElContainer = $container;
-                $container.addClass('pg-el-container');
-                _.each([
-                  wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
-                  wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                ], function(ev) {
-                  myPanel.on(ev, that.resizedContainer.bind(myPanel));
-                });
-                that.resizedContainer.apply(myPanel);
-              }
+_.extend(pgAdmin.Browser.Panel.prototype, {
+  name: '',
+  title: '',
+  width: 300,
+  height: 600,
+  showTitle: true,
+  isCloseable: true,
+  isPrivate: false,
+  isMoveable: false,
+  content: '',
+  icon: '',
+  panel: null,
+  onCreate: null,
+  elContainer: false,
+  limit: null,
+  load: function(docker, title) {
+    const that = this;
+    if (!that.panel) {
+      docker.registerPanelType(that.name, {
+        title: that.title,
+        isPrivate: that.isPrivate,
+        limit: that.limit,
+        onCreate: function(myPanel) {
+          $(myPanel).data('pgAdminName', that.name);
+          myPanel.initSize(that.width, that.height);
 
-              // Bind events only if they are configurable
-              if (that.canHide) {
-                _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
-                  function(ev) {
-                    myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
-                  });
+          if (!that.showTitle)
+            myPanel.title(false);
+          else {
+            const title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
+            myPanel.title(title_elem);
+            if (that.icon !== '')
+              myPanel.icon(that.icon);
+          }
+
+          const $container = $('<div>', {
+            'class': 'pg-panel-content',
+          }).append($(that.content));
+
+          myPanel.closeable(!!that.isCloseable);
+          myPanel.layout().addItem($container);
+          that.panel = myPanel;
+          if (that.events && _.isObject(that.events)) {
+            _.each(that.events, function(v, k) {
+              if (v && _.isFunction(v)) {
+                myPanel.on(k, v);
               }
-            },
+            });
+          }
+          _.each([
+            wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
+            wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
+            wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
+            wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
+            wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
+            wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
+            wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
+            wcDocker.EVENT.SCROLLED,
+          ], function(ev) {
+            myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
           });
-        }
-      },
-      eventFunc: function(eventName) {
-        var name = $(this).data('pgAdminName');
-
-        try {
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel', eventName, this, arguments
-          );
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel:' + eventName, this, arguments
-          );
 
-          if (name) {
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name, eventName, this, arguments
-            );
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
-            );
+          if (that.onCreate && _.isFunction(that.onCreate)) {
+            that.onCreate.apply(that, [myPanel, $container]);
           }
-        } catch (e) {
-          console.warn(e.stack || e);
-        }
-      },
-      resizedContainer: function() {
-        var p = this;
-
-        if (p.pgElContainer && !p.pgResizeTimeout) {
-          if (!p.isVisible()) {
-            clearTimeout(p.pgResizeTimeout);
-            p.pgResizeTimeout = null;
-
-            return;
+
+          if (that.elContainer) {
+            myPanel.pgElContainer = $container;
+            $container.addClass('pg-el-container');
+            _.each([
+              wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
+              wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            ], function(ev) {
+              myPanel.on(ev, that.resizedContainer.bind(myPanel));
+            });
+            that.resizedContainer.apply(myPanel);
           }
-          p.pgResizeTimeout = setTimeout(
-            function() {
-              var w = p.width();
-              p.pgResizeTimeout = null;
-
-              if (w <= 480) {
-                w = 'xs';
-              } else if (w < 600) {
-                w = 'sm';
-              } else if (w < 768) {
-                w = 'md';
-              } else {
-                w = 'lg';
-              }
 
-              p.pgElContainer.attr('el', w);
-            },
-            100
+          // Bind events only if they are configurable
+          if (that.canHide) {
+            _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
+              function(ev) {
+                myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
+              });
+          }
+
+          // Update panels as per new preference value
+          window.top.pgAdmin.Browser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            that.updatePanel, myPanel
           );
-        }
-      },
-      handleVisibility: function(eventName) {
-        // Currently this function only works with dashboard panel but
-        // as per need it can be extended
-        if (this._type != 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
-          return;
-
-        if (eventName == 'panelClosed') {
-          pgBrowser.save_current_layout(pgBrowser);
-          pgAdmin.Dashboard.toggleVisibility(false);
-        } else if (eventName == 'panelVisibilityChanged') {
-          if (pgBrowser.tree) {
-            pgBrowser.save_current_layout(pgBrowser);
-            var selectedNode = pgBrowser.tree.selected();
-            // Discontinue this event after first time visible
-            this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
-            if (!_.isUndefined(pgAdmin.Dashboard))
-              pgAdmin.Dashboard.toggleVisibility(true);
-            // Explicitly trigger tree selected event when we add the tab.
-            pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
-              pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+
+          myPanel.moveable(that.isMoveable);
+          // If not frame then update it
+          if(!that.isMoveable) {
+            that.updatePanel.call(myPanel);
           }
-        }
-      },
+        },
+      });
+    }
+  },
+
+  // This method will allow us to lock the individual Frame panel
+  lockFramePanel: function() {
+    // Find each wcFrame
+    $('.wcFrameTitleBar').each(function() {
+      // If it's not locked
+      if(!$(this).hasClass('no-mouse-event')) {
+        $(this).addClass('no-mouse-event');
+      }
+    });
+  },
 
+  // This method will allow us to unlock the individual Frame panel
+  unlockFramePanel: function() {
+    $('.wcFrameTitleBar').each(function() {
+      // If it's locked
+      if($(this).hasClass('no-mouse-event')) {
+        $(this).removeClass('no-mouse-event');
+      }
     });
+  },
+
+  // We'll execute this function after preferences update
+  updatePanel: function() {
+    let panel = this;
+    let preference = pgBrowser.get_preference(
+      'miscellaneous', 'lock_panel_layout'
+    );
+
+    // If the Panel opens in iframe
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      if(window.opener && window.opener.pgAdmin.Browser){
+        preference = window.opener.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      } else if(window.top && window.top.pgAdmin.Browser) {
+        preference = window.top.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      }
+    }
+
+    // If still preference is missing then don't do anything
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      return;
+    }
+
+    /*
+     preference.value == true then Lock
+     preference.value == false then UnLock
+     panel.moveable() returns True if panel is moveable
+    */
+    let isMoveable = !preference.value;
+
+    // If not moveable then lock it
+    if (isMoveable) {
+      pgAdmin.Browser.Panel.prototype.unlockFramePanel();
+    } else {
+      pgAdmin.Browser.Panel.prototype.lockFramePanel();
+    }
+
+    // If no change in settings then return from here
+    if(panel.moveable() === isMoveable)
+      return;
+
+    pgBrowser.utils.isPanelMoveable = isMoveable;
+    panel.moveable(isMoveable);
+  },
+
+  eventFunc: function(eventName) {
+    const name = $(this).data('pgAdminName');
+
+    try {
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel', eventName, this, arguments
+      );
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel:' + eventName, this, arguments
+      );
+
+      if (name) {
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name, eventName, this, arguments
+        );
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
+        );
+      }
+    } catch (e) {
+      console.warn(e.stack || e);
+    }
+  },
+  resizedContainer: function() {
+    const p = this;
+
+    if (p.pgElContainer && !p.pgResizeTimeout) {
+      if (!p.isVisible()) {
+        clearTimeout(p.pgResizeTimeout);
+        p.pgResizeTimeout = null;
+
+        return;
+      }
+      p.pgResizeTimeout = setTimeout(
+        function() {
+          let w = p.width();
+          p.pgResizeTimeout = null;
+
+          if (w <= 480) {
+            w = 'xs';
+          } else if (w < 600) {
+            w = 'sm';
+          } else if (w < 768) {
+            w = 'md';
+          } else {
+            w = 'lg';
+          }
+
+          p.pgElContainer.attr('el', w);
+        },
+        100
+      );
+    }
+  },
+  handleVisibility: function(eventName) {
+    // Currently this function only works with dashboard panel but
+    // as per need it can be extended
+    if (this._type !== 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
+      return;
+
+    if (eventName === 'panelClosed') {
+      pgBrowser.save_current_layout(pgBrowser);
+      pgAdmin.Dashboard.toggleVisibility(false);
+    } else if (eventName === 'panelVisibilityChanged') {
+      if (pgBrowser.tree) {
+        pgBrowser.save_current_layout(pgBrowser);
+        const selectedNode = pgBrowser.tree.selected();
+        // Discontinue this event after first time visible
+        this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
+        if (!_.isUndefined(pgAdmin.Dashboard))
+          pgAdmin.Dashboard.toggleVisibility(true);
+        // Explicitly trigger tree selected event when we add the tab.
+        pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
+          pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+      }
+    }
+  },
+
+});
 
-    return pgAdmin.Browser.Panel;
-  });
+module.exports = pgAdmin.Browser.Panel;
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index be3b7122..aa37925b 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -26,6 +26,7 @@ define('pgadmin.browser.utils',
     is_indent_with_tabs: '{{ editor_indent_with_tabs }}' == 'True',
     app_name: '{{ app_name }}',
     pg_libpq_version: {{pg_libpq_version|e}},
+    isPanelMoveable: true,
 
     counter: {total: 0, loaded: 0},
     registerScripts: function (ctx) {
diff --git a/web/pgadmin/misc/__init__.py b/web/pgadmin/misc/__init__.py
index da28413a..7b9521c2 100644
--- a/web/pgadmin/misc/__init__.py
+++ b/web/pgadmin/misc/__init__.py
@@ -68,6 +68,11 @@ class MiscModule(PgAdminModule):
             category_label=gettext('User language'),
             options=lang_options
         )
+        self.misc_preference.register(
+            'layout', 'lock_panel_layout',
+            gettext("Lock layout?"), 'boolean', False,
+            category_label=gettext('Layout')
+        )
 
     def get_exposed_url_endpoints(self):
         """
diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py
index 269bfdf1..2b8eb2ea 100644
--- a/web/pgadmin/settings/__init__.py
+++ b/web/pgadmin/settings/__init__.py
@@ -115,7 +115,7 @@ def store(setting=None, value=None):
             store_setting(setting, value)
     except Exception as e:
         success = 0
-        errormsg = e.message
+        errormsg = str(e)
 
     try:
         info = traceback.format_exc()
diff --git a/web/pgadmin/static/css/webcabin.overrides.css b/web/pgadmin/static/css/webcabin.overrides.css
index 18d89f84..102b3451 100644
--- a/web/pgadmin/static/css/webcabin.overrides.css
+++ b/web/pgadmin/static/css/webcabin.overrides.css
@@ -399,3 +399,11 @@ i.wcTabIcon {
   background-size: 18px !important;
   height: 18px;
 }
+
+.wcTabScroller {
+  position: initial;
+}
+
+.wcPanelTab {
+  pointer-events: auto;
+}
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index b0ed60f6..27323180 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -527,10 +527,21 @@ define('pgadmin.datagrid', [
           // Set panel title and icon
           queryToolPanel.title('<span title="'+panel_title+'">'+panel_title+'</span>');
           queryToolPanel.icon('fa fa-bolt');
+          queryToolPanel.moveable(pgBrowser.utils.isPanelMoveable);
+          pgBrowser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+          );
+
           queryToolPanel.focus();
 
           // Listen on the panel closed event.
           queryToolPanel.on(wcDocker.EVENT.CLOSED, function() {
+            pgBrowser.Events.off(
+              'pgadmin-browser:preferences-updated',
+              pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+            );
+
             $.ajax({
               url: url_for('datagrid.close', {'trans_id': trans_obj.gridTransId}),
               method: 'GET',
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index f9049d81..3a96fd8b 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -725,9 +725,19 @@ define([
                         );
 
                       panel.focus();
+                      panel.moveable(pgBrowser.utils.isPanelMoveable);
+                      pgBrowser.Events.on(
+                        'pgadmin-browser:preferences-updated',
+                        pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                      );
 
                       // Panel Closed event
                       panel.on(wcDocker.EVENT.CLOSED, function() {
+                        pgBrowser.Events.off(
+                          'pgadmin-browser:preferences-updated',
+                          pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                        );
+
                         var closeUrl = url_for('debugger.close', {
                           'trans_id': res.data.debuggerTransId,
                         });
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index f95389c6..be731728 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -155,6 +155,7 @@ define('tools.querytool', [
         height: '20%',
         isCloseable: false,
         isPrivate: true,
+        isMoveable: true,
       });
 
       sql_panel.load(main_docker);
diff --git a/web/regression/javascript/browser/panel_spec.js b/web/regression/javascript/browser/panel_spec.js
new file mode 100644
index 00000000..3f0184c8
--- /dev/null
+++ b/web/regression/javascript/browser/panel_spec.js
@@ -0,0 +1,52 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2018, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import pgAdmin from 'pgadmin';
+import Panel from 'browser/panel';
+
+describe('Panel', function () {
+  let pgBrowser = pgAdmin.Browser;
+  let Panel = pgAdmin.Browser.Panel;
+  let testPanel;
+  beforeEach(function () {
+    testPanel = new Panel({
+      name: 'test',
+      title: 'Test',
+      isMoveable: true,
+    });
+  });
+
+  describe('when we create a panel', function () {
+    describe('and it is moveable panel', function () {
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+
+    describe('and it is non-moveable panel', function () {
+      beforeEach(function () {
+        testPanel.isMoveable = false;
+      });
+      it('it should call moveable method with false as argument', function () {
+        expect(testPanel.isMoveable).toBe(false);
+      });
+    });
+
+    describe('and user created panel without defining isMoveable then it should be moveable', function () {
+      beforeEach(function () {
+        testPanel = new Panel({
+          name: 'test',
+          title: 'Test',
+        });
+      });
+      it('it should call moveable method with true as argument', function () {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+  });
+});
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index 306a030b..9932907f 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -80,6 +80,7 @@ module.exports = {
       'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults',
       'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin',
       'pgadmin.backform': sourcesDir + '/js/backform.pgadmin',
+      'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'),
     },
   },
 };
-- 
2.17.0



^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
@ 2018-04-24 15:41                                       ` Joao De Almeida Pereira <[email protected]>
  2018-04-24 16:20                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-25 09:07                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  0 siblings, 2 replies; 33+ messages in thread

From: Joao De Almeida Pereira @ 2018-04-24 15:41 UTC (permalink / raw)
  To: Akshay Joshi <[email protected]>; +Cc: Dave Page <[email protected]>; Murtuza Zabuawala <[email protected]>; pgadmin-hackers

haha,
Just joking, now we have a good version that passes tests and all.

We found out that a test was failing in the patch version 5:

HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and
user created panel without defining isMoveable then it should be
moveable it should call moveable method with true as argument FAILED
    Expected false to be true.
        at UserContext.<anonymous>
(regression/javascript/browser/panel_spec.js:12886:38)

​
To solve this problem we decided to change the Panel class to match what
the test say.

Thanks
Victoria & Joao


On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
[email protected]> wrote:

> Hi,
> Apparently the last version was not applying, here is the new version that
> should apply correctly
>
> Thanks
> Victoria & Joao
>
> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
> [email protected]> wrote:
>
>> Hi Murtuza,
>>
>> We tested the patch and everything looks fine.  We also refactors some
>> parts to include things like strict equality and using let/const instead of
>> var.  The updated patch is attached.
>> In the future, it will be more valuable to have the translation to ES6
>> and the feature work in separate commits so it is easier to understand what
>> changed.
>>
>> Sincerely,
>>
>> Joao and Victoria
>>
>>
>>
>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>> [email protected]> wrote:
>>
>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:
>>>
>>>> Akshay, could you review/commit this please?
>>>>
>>>> Please also update the release_notes_3_1.rst file when you commit
>>>> user-visible changes, to make it easier to build the release notes.
>>>>
>>>
>>>    Sure
>>>
>>>>
>>>> Thanks.
>>>>
>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Dave,
>>>>>
>>>>> Please find the updated patch, Now we are able to lock wcFrame and
>>>>> wcPanel both.
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Murtuza Zabuawala
>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>>
>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>> ​ because we do not have preference module or preference
>>>>>>>>>>>>>>>>> cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in at
>>>>>>>>>>>>>>>> least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels
>>>>>>>>>>>>>>>>> (all the panels from main window as well as from Query tool and Debugger)
>>>>>>>>>>>>>>>>> but I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>>>>> frame <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL
>>>>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the panel
>>>>>>>>>>>>> out of the group of Panels then it becomes individual Frame, That is what
>>>>>>>>>>>>> the author of the wcDocker replied on my question,
>>>>>>>>>>>>> *"A panel must either be initialized as movable or non-movable
>>>>>>>>>>>>> from the beginning and never changed because it generates a different
>>>>>>>>>>>>> arrangement of elements depending. This feature should only ever be used
>>>>>>>>>>>>> within the onCreate method of the panel. I should probably have been more
>>>>>>>>>>>>> clear about this limitation in the documentation."*
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>> So does it become a panel again if a second panel is added to
>>>>>>>>>>>> the new tab group?
>>>>>>>>>>>>
>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>
>>>>>>>>>>> As far as I understand Panel needs a Frame to render itself if
>>>>>>>>>>> it is not attached to the main docker instance.​
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> There must be some way we can lock a tab that's not part of a
>>>>>>>>>>>> group.
>>>>>>>>>>>>
>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>> ​
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hmm, so the question becomes: do we include the lock feature, but
>>>>>>>>>> rename it to "Lock Tabs" or something similar, or leave it out altogether?
>>>>>>>>>> It clearly doesn't do everything we want right now.
>>>>>>>>>>
>>>>>>>>> ​I would say lets include the feature by adding warning note that
>>>>>>>>> this feature works with default layout only, And I don't think most user
>>>>>>>>> will try to drag drop Browser panel ​
>>>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>>>> source code to make the Frame lock.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>>> including half-baked features.
>>>>>>>>
>>>>>>>> +1, but we need to find out the way as this feature is requested by
>>>>>>> many users.
>>>>>>>
>>>>>>
>>>>>> 100% agree. I can convince my self that this feature request has to
>>>>>> do with locking panels into a certain layout. I can also convince myself
>>>>>> that the same request is simple because users are frustrated with the fact
>>>>>> that the tabs and panes move around and they find that behavior annoying.
>>>>>>
>>>>>> -- Rob
>>>>>>
>>>>>>
>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>> 976-788-8246 <+91%2097678%2088246>*
>>>
>>


Attachments:

  [text/x-patch] RM_3155_v8.patch (128.9K, 3-RM_3155_v8.patch)
  download | inline diff:
diff --git a/docs/en_US/images/preferences_misc_layout.png b/docs/en_US/images/preferences_misc_layout.png
new file mode 100644
index 0000000000000000000000000000000000000000..d04d3c85b07c9809cbabdc01f152c4273ab59139
GIT binary patch
literal 89671
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%0A)&6`eCIk5-*Kscgn@xFKKkM
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%0AEaxiY@ZQT3dfn3N
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
HCc*y?1dlk4

literal 0
HcmV?d00001

diff --git a/docs/en_US/preferences.rst b/docs/en_US/preferences.rst
index e1ddc9b6..c631ce2a 100644
--- a/docs/en_US/preferences.rst
+++ b/docs/en_US/preferences.rst
@@ -97,6 +97,11 @@ Expand the *Miscellaneous* node to specify miscellaneous display preferences.
 
 * Use the *User language* drop-down listbox to select the display language for the client.
 
+.. image:: images/preferences_misc_layout.png
+    :alt: Preferences dialog user layout section
+
+* When the *Lock layout?* switch is set to *True*, user will not be able to drag and drop panels.
+
 **The Paths Node**
 
 Expand the *Paths* node to specify the locations of supporting utility and help files.
diff --git a/web/pgadmin/browser/static/css/browser.css b/web/pgadmin/browser/static/css/browser.css
index 3ba330d3..7d6e7823 100644
--- a/web/pgadmin/browser/static/css/browser.css
+++ b/web/pgadmin/browser/static/css/browser.css
@@ -66,3 +66,7 @@ samp,
 .pg-login-icon {
   font-size: 16px;
 }
+
+.no-mouse-event {
+  pointer-events: none;
+}
diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js
index 897d2708..b3b3dc35 100644
--- a/web/pgadmin/browser/static/js/browser.js
+++ b/web/pgadmin/browser/static/js/browser.js
@@ -115,6 +115,7 @@ define('pgadmin.browser', [
         isPrivate: true,
         icon: 'fa fa-binoculars',
         content: '<div id="tree" class="aciTree"></div>',
+        isMoveable: true,
       }),
       // Properties of the object node
       'properties': new pgAdmin.Browser.Panel({
@@ -690,6 +691,9 @@ define('pgadmin.browser', [
           pgBrowser.keyboardNavigation.init();
           modifyAnimation.modifyAcitreeAnimation(self);
           modifyAnimation.modifyAlertifyAnimation(self);
+          pgBrowser.Events.trigger(
+            'pgadmin-browser:preferences-updated', this, arguments
+          );
         },
         error: function(xhr) {
           try {
diff --git a/web/pgadmin/browser/static/js/panel.js b/web/pgadmin/browser/static/js/panel.js
index ab0681a9..9e0427f6 100644
--- a/web/pgadmin/browser/static/js/panel.js
+++ b/web/pgadmin/browser/static/js/panel.js
@@ -1,187 +1,269 @@
-define(
-  ['underscore', 'sources/pgadmin', 'jquery', 'wcdocker'],
-  function(_, pgAdmin, $) {
-
-    var pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {},
-      wcDocker = window.wcDocker;
-
-    pgAdmin.Browser.Panel = function(options) {
-      var defaults = [
-        'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
-        'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
-        'canHide', 'limit',
-      ];
-      _.extend(this, _.pick(options, defaults));
-    };
-
-    _.extend(pgAdmin.Browser.Panel.prototype, {
-      name: '',
-      title: '',
-      width: 300,
-      height: 600,
-      showTitle: true,
-      isCloseable: true,
-      isPrivate: false,
-      content: '',
-      icon: '',
-      panel: null,
-      onCreate: null,
-      elContainer: false,
-      limit: null,
-      load: function(docker, title) {
-        var that = this;
-        if (!that.panel) {
-          docker.registerPanelType(that.name, {
-            title: that.title,
-            isPrivate: that.isPrivate,
-            limit: that.limit,
-            onCreate: function(myPanel) {
-              $(myPanel).data('pgAdminName', that.name);
-              myPanel.initSize(that.width, that.height);
-
-              if (!that.showTitle)
-                myPanel.title(false);
-              else {
-                var title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
-                myPanel.title(title_elem);
-                if (that.icon != '')
-                  myPanel.icon(that.icon);
-              }
+import $ from 'jquery';
+import _ from 'underscore';
+import pgAdmin from 'sources/pgadmin';
+import 'wcdocker';
 
-              var $container = $('<div>', {
-                'class': 'pg-panel-content',
-              }).append($(that.content));
-
-              myPanel.closeable(!!that.isCloseable);
-              myPanel.layout().addItem($container);
-              that.panel = myPanel;
-              if (that.events && _.isObject(that.events)) {
-                _.each(that.events, function(v, k) {
-                  if (v && _.isFunction(v)) {
-                    myPanel.on(k, v);
-                  }
-                });
-              }
-              _.each([
-                wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
-                wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
-                wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
-                wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
-                wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
-                wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
-                wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
-                wcDocker.EVENT.SCROLLED,
-              ], function(ev) {
-                myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
-              });
+let pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {};
+let wcDocker = window.wcDocker;
 
-              if (that.onCreate && _.isFunction(that.onCreate)) {
-                that.onCreate.apply(that, [myPanel, $container]);
-              }
+pgAdmin.Browser.Panel = function(options) {
+  const defaults = [
+    'name', 'title', 'width', 'height', 'showTitle', 'isCloseable',
+    'isPrivate', 'content', 'icon', 'events', 'onCreate', 'elContainer',
+    'canHide', 'limit', 'isMoveable',
+  ];
+  _.extend(this, _.pick(options, defaults));
+};
 
-              if (that.elContainer) {
-                myPanel.pgElContainer = $container;
-                $container.addClass('pg-el-container');
-                _.each([
-                  wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
-                  wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
-                ], function(ev) {
-                  myPanel.on(ev, that.resizedContainer.bind(myPanel));
-                });
-                that.resizedContainer.apply(myPanel);
-              }
+_.extend(pgAdmin.Browser.Panel.prototype, {
+  name: '',
+  title: '',
+  width: 300,
+  height: 600,
+  showTitle: true,
+  isCloseable: true,
+  isPrivate: false,
+  isMoveable: true,
+  content: '',
+  icon: '',
+  panel: null,
+  onCreate: null,
+  elContainer: false,
+  limit: null,
+  load: function(docker, title) {
+    const that = this;
+    if (!that.panel) {
+      docker.registerPanelType(that.name, {
+        title: that.title,
+        isPrivate: that.isPrivate,
+        limit: that.limit,
+        onCreate: function(myPanel) {
+          $(myPanel).data('pgAdminName', that.name);
+          myPanel.initSize(that.width, that.height);
 
-              // Bind events only if they are configurable
-              if (that.canHide) {
-                _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
-                  function(ev) {
-                    myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
-                  });
+          if (!that.showTitle)
+            myPanel.title(false);
+          else {
+            const title_elem = '<a href="#" tabindex="0" class="panel-link-heading">' + (title || that.title) + '</a>';
+            myPanel.title(title_elem);
+            if (that.icon !== '')
+              myPanel.icon(that.icon);
+          }
+
+          const $container = $('<div>', {
+            'class': 'pg-panel-content',
+          }).append($(that.content));
+
+          myPanel.closeable(!!that.isCloseable);
+          myPanel.layout().addItem($container);
+          that.panel = myPanel;
+          if (that.events && _.isObject(that.events)) {
+            _.each(that.events, function(v, k) {
+              if (v && _.isFunction(v)) {
+                myPanel.on(k, v);
               }
-            },
+            });
+          }
+          _.each([
+            wcDocker.EVENT.UPDATED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            wcDocker.EVENT.BEGIN_DOCK, wcDocker.EVENT.END_DOCK,
+            wcDocker.EVENT.GAIN_FOCUS, wcDocker.EVENT.LOST_FOCUS,
+            wcDocker.EVENT.CLOSED, wcDocker.EVENT.BUTTON,
+            wcDocker.EVENT.ATTACHED, wcDocker.EVENT.DETACHED,
+            wcDocker.EVENT.MOVE_STARTED, wcDocker.EVENT.MOVE_ENDED,
+            wcDocker.EVENT.MOVED, wcDocker.EVENT.RESIZE_STARTED,
+            wcDocker.EVENT.RESIZE_ENDED, wcDocker.EVENT.RESIZED,
+            wcDocker.EVENT.SCROLLED,
+          ], function(ev) {
+            myPanel.on(ev, that.eventFunc.bind(myPanel, ev));
           });
-        }
-      },
-      eventFunc: function(eventName) {
-        var name = $(this).data('pgAdminName');
-
-        try {
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel', eventName, this, arguments
-          );
-          pgBrowser.Events.trigger(
-            'pgadmin-browser:panel:' + eventName, this, arguments
-          );
 
-          if (name) {
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name, eventName, this, arguments
-            );
-            pgBrowser.Events.trigger(
-              'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
-            );
+          if (that.onCreate && _.isFunction(that.onCreate)) {
+            that.onCreate.apply(that, [myPanel, $container]);
           }
-        } catch (e) {
-          console.warn(e.stack || e);
-        }
-      },
-      resizedContainer: function() {
-        var p = this;
-
-        if (p.pgElContainer && !p.pgResizeTimeout) {
-          if (!p.isVisible()) {
-            clearTimeout(p.pgResizeTimeout);
-            p.pgResizeTimeout = null;
-
-            return;
+
+          if (that.elContainer) {
+            myPanel.pgElContainer = $container;
+            $container.addClass('pg-el-container');
+            _.each([
+              wcDocker.EVENT.RESIZED, wcDocker.EVENT.ATTACHED,
+              wcDocker.EVENT.DETACHED, wcDocker.EVENT.VISIBILITY_CHANGED,
+            ], function(ev) {
+              myPanel.on(ev, that.resizedContainer.bind(myPanel));
+            });
+            that.resizedContainer.apply(myPanel);
           }
-          p.pgResizeTimeout = setTimeout(
-            function() {
-              var w = p.width();
-              p.pgResizeTimeout = null;
-
-              if (w <= 480) {
-                w = 'xs';
-              } else if (w < 600) {
-                w = 'sm';
-              } else if (w < 768) {
-                w = 'md';
-              } else {
-                w = 'lg';
-              }
 
-              p.pgElContainer.attr('el', w);
-            },
-            100
+          // Bind events only if they are configurable
+          if (that.canHide) {
+            _.each([wcDocker.EVENT.CLOSED, wcDocker.EVENT.VISIBILITY_CHANGED],
+              function(ev) {
+                myPanel.on(ev, that.handleVisibility.bind(myPanel, ev));
+              });
+          }
+
+          // Update panels as per new preference value
+          window.top.pgAdmin.Browser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            that.updatePanel, myPanel
           );
-        }
-      },
-      handleVisibility: function(eventName) {
-        // Currently this function only works with dashboard panel but
-        // as per need it can be extended
-        if (this._type != 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
-          return;
-
-        if (eventName == 'panelClosed') {
-          pgBrowser.save_current_layout(pgBrowser);
-          pgAdmin.Dashboard.toggleVisibility(false);
-        } else if (eventName == 'panelVisibilityChanged') {
-          if (pgBrowser.tree) {
-            pgBrowser.save_current_layout(pgBrowser);
-            var selectedNode = pgBrowser.tree.selected();
-            // Discontinue this event after first time visible
-            this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
-            if (!_.isUndefined(pgAdmin.Dashboard))
-              pgAdmin.Dashboard.toggleVisibility(true);
-            // Explicitly trigger tree selected event when we add the tab.
-            pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
-              pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+
+          myPanel.moveable(that.isMoveable);
+          // If not frame then update it
+          if(!that.isMoveable) {
+            that.updatePanel.call(myPanel);
           }
-        }
-      },
+        },
+      });
+    }
+  },
+
+  // This method will allow us to lock the individual Frame panel
+  lockFramePanel: function() {
+    // Find each wcFrame
+    $('.wcFrameTitleBar').each(function() {
+      // If it's not locked
+      if(!$(this).hasClass('no-mouse-event')) {
+        $(this).addClass('no-mouse-event');
+      }
+    });
+  },
 
+  // This method will allow us to unlock the individual Frame panel
+  unlockFramePanel: function() {
+    $('.wcFrameTitleBar').each(function() {
+      // If it's locked
+      if($(this).hasClass('no-mouse-event')) {
+        $(this).removeClass('no-mouse-event');
+      }
     });
+  },
+
+  // We'll execute this function after preferences update
+  updatePanel: function() {
+    let panel = this;
+    let preference = pgBrowser.get_preference(
+      'miscellaneous', 'lock_panel_layout'
+    );
+
+    // If the Panel opens in iframe
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      if(window.opener && window.opener.pgAdmin.Browser){
+        preference = window.opener.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      } else if(window.top && window.top.pgAdmin.Browser) {
+        preference = window.top.pgAdmin.Browser.get_preference(
+          'miscellaneous', 'lock_panel_layout'
+        );
+      }
+    }
+
+    // If still preference is missing then don't do anything
+    if(_.isUndefined(preference) || _.isNull(preference)) {
+      return;
+    }
+
+    /*
+     preference.value == true then Lock
+     preference.value == false then UnLock
+     panel.moveable() returns True if panel is moveable
+    */
+    let isMoveable = !preference.value;
+
+    // If not moveable then lock it
+    if (isMoveable) {
+      pgAdmin.Browser.Panel.prototype.unlockFramePanel();
+    } else {
+      pgAdmin.Browser.Panel.prototype.lockFramePanel();
+    }
+
+    // If no change in settings then return from here
+    if(panel.moveable() === isMoveable)
+      return;
+
+    pgBrowser.utils.isPanelMoveable = isMoveable;
+    panel.moveable(isMoveable);
+  },
+
+  eventFunc: function(eventName) {
+    const name = $(this).data('pgAdminName');
+
+    try {
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel', eventName, this, arguments
+      );
+      pgBrowser.Events.trigger(
+        'pgadmin-browser:panel:' + eventName, this, arguments
+      );
+
+      if (name) {
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name, eventName, this, arguments
+        );
+        pgBrowser.Events.trigger(
+          'pgadmin-browser:panel-' + name + ':' + eventName, this, arguments
+        );
+      }
+    } catch (e) {
+      console.warn(e.stack || e);
+    }
+  },
+  resizedContainer: function() {
+    const p = this;
+
+    if (p.pgElContainer && !p.pgResizeTimeout) {
+      if (!p.isVisible()) {
+        clearTimeout(p.pgResizeTimeout);
+        p.pgResizeTimeout = null;
+
+        return;
+      }
+      p.pgResizeTimeout = setTimeout(
+        function() {
+          let w = p.width();
+          p.pgResizeTimeout = null;
+
+          if (w <= 480) {
+            w = 'xs';
+          } else if (w < 600) {
+            w = 'sm';
+          } else if (w < 768) {
+            w = 'md';
+          } else {
+            w = 'lg';
+          }
+
+          p.pgElContainer.attr('el', w);
+        },
+        100
+      );
+    }
+  },
+  handleVisibility: function(eventName) {
+    // Currently this function only works with dashboard panel but
+    // as per need it can be extended
+    if (this._type !== 'dashboard' || _.isUndefined(pgAdmin.Dashboard))
+      return;
+
+    if (eventName === 'panelClosed') {
+      pgBrowser.save_current_layout(pgBrowser);
+      pgAdmin.Dashboard.toggleVisibility(false);
+    } else if (eventName === 'panelVisibilityChanged') {
+      if (pgBrowser.tree) {
+        pgBrowser.save_current_layout(pgBrowser);
+        const selectedNode = pgBrowser.tree.selected();
+        // Discontinue this event after first time visible
+        this.off(wcDocker.EVENT.VISIBILITY_CHANGED);
+        if (!_.isUndefined(pgAdmin.Dashboard))
+          pgAdmin.Dashboard.toggleVisibility(true);
+        // Explicitly trigger tree selected event when we add the tab.
+        pgBrowser.Events.trigger('pgadmin-browser:tree:selected', selectedNode,
+          pgBrowser.tree.itemData(selectedNode), pgBrowser.Node);
+      }
+    }
+  },
+
+});
 
-    return pgAdmin.Browser.Panel;
-  });
+module.exports = pgAdmin.Browser.Panel;
diff --git a/web/pgadmin/browser/templates/browser/js/utils.js b/web/pgadmin/browser/templates/browser/js/utils.js
index be3b7122..aa37925b 100644
--- a/web/pgadmin/browser/templates/browser/js/utils.js
+++ b/web/pgadmin/browser/templates/browser/js/utils.js
@@ -26,6 +26,7 @@ define('pgadmin.browser.utils',
     is_indent_with_tabs: '{{ editor_indent_with_tabs }}' == 'True',
     app_name: '{{ app_name }}',
     pg_libpq_version: {{pg_libpq_version|e}},
+    isPanelMoveable: true,
 
     counter: {total: 0, loaded: 0},
     registerScripts: function (ctx) {
diff --git a/web/pgadmin/misc/__init__.py b/web/pgadmin/misc/__init__.py
index da28413a..7b9521c2 100644
--- a/web/pgadmin/misc/__init__.py
+++ b/web/pgadmin/misc/__init__.py
@@ -68,6 +68,11 @@ class MiscModule(PgAdminModule):
             category_label=gettext('User language'),
             options=lang_options
         )
+        self.misc_preference.register(
+            'layout', 'lock_panel_layout',
+            gettext("Lock layout?"), 'boolean', False,
+            category_label=gettext('Layout')
+        )
 
     def get_exposed_url_endpoints(self):
         """
diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py
index 269bfdf1..2b8eb2ea 100644
--- a/web/pgadmin/settings/__init__.py
+++ b/web/pgadmin/settings/__init__.py
@@ -115,7 +115,7 @@ def store(setting=None, value=None):
             store_setting(setting, value)
     except Exception as e:
         success = 0
-        errormsg = e.message
+        errormsg = str(e)
 
     try:
         info = traceback.format_exc()
diff --git a/web/pgadmin/static/css/webcabin.overrides.css b/web/pgadmin/static/css/webcabin.overrides.css
index 18d89f84..102b3451 100644
--- a/web/pgadmin/static/css/webcabin.overrides.css
+++ b/web/pgadmin/static/css/webcabin.overrides.css
@@ -399,3 +399,11 @@ i.wcTabIcon {
   background-size: 18px !important;
   height: 18px;
 }
+
+.wcTabScroller {
+  position: initial;
+}
+
+.wcPanelTab {
+  pointer-events: auto;
+}
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index b0ed60f6..27323180 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -527,10 +527,21 @@ define('pgadmin.datagrid', [
           // Set panel title and icon
           queryToolPanel.title('<span title="'+panel_title+'">'+panel_title+'</span>');
           queryToolPanel.icon('fa fa-bolt');
+          queryToolPanel.moveable(pgBrowser.utils.isPanelMoveable);
+          pgBrowser.Events.on(
+            'pgadmin-browser:preferences-updated',
+            pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+          );
+
           queryToolPanel.focus();
 
           // Listen on the panel closed event.
           queryToolPanel.on(wcDocker.EVENT.CLOSED, function() {
+            pgBrowser.Events.off(
+              'pgadmin-browser:preferences-updated',
+              pgAdmin.Browser.Panel.prototype.updatePanel, queryToolPanel
+            );
+
             $.ajax({
               url: url_for('datagrid.close', {'trans_id': trans_obj.gridTransId}),
               method: 'GET',
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index f9049d81..3a96fd8b 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -725,9 +725,19 @@ define([
                         );
 
                       panel.focus();
+                      panel.moveable(pgBrowser.utils.isPanelMoveable);
+                      pgBrowser.Events.on(
+                        'pgadmin-browser:preferences-updated',
+                        pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                      );
 
                       // Panel Closed event
                       panel.on(wcDocker.EVENT.CLOSED, function() {
+                        pgBrowser.Events.off(
+                          'pgadmin-browser:preferences-updated',
+                          pgAdmin.Browser.Panel.prototype.updatePanel, panel
+                        );
+
                         var closeUrl = url_for('debugger.close', {
                           'trans_id': res.data.debuggerTransId,
                         });
diff --git a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
index f95389c6..be731728 100644
--- a/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
+++ b/web/pgadmin/tools/sqleditor/static/js/sqleditor.js
@@ -155,6 +155,7 @@ define('tools.querytool', [
         height: '20%',
         isCloseable: false,
         isPrivate: true,
+        isMoveable: true,
       });
 
       sql_panel.load(main_docker);
diff --git a/web/regression/javascript/browser/panel_spec.js b/web/regression/javascript/browser/panel_spec.js
new file mode 100644
index 00000000..1f56ffe8
--- /dev/null
+++ b/web/regression/javascript/browser/panel_spec.js
@@ -0,0 +1,52 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2018, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+import pgAdmin from 'pgadmin';
+import Panel from 'browser/panel';
+
+describe('Panel', () => {
+  let Panel = pgAdmin.Browser.Panel;
+  let testPanel;
+  beforeEach(() => {
+    testPanel = new Panel({
+      name: 'test',
+      title: 'Test',
+      isMoveable: true,
+    });
+  });
+
+  describe('when we create a panel', () => {
+    describe('and it is moveable panel', () => {
+      it('it should call moveable method with true as argument', () => {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+
+    describe('and it is non-moveable panel', () => {
+      beforeEach(() => {
+        testPanel.isMoveable = false;
+      });
+      it('it should call moveable method with false as argument', () => {
+        expect(testPanel.isMoveable).toBe(false);
+      });
+    });
+
+    describe('and user created panel without defining isMoveable then it' +
+      ' should be moveable', () => {
+      beforeEach(() => {
+        testPanel = new Panel({
+          name: 'test',
+          title: 'Test',
+        });
+      });
+      it('it should call moveable method with true as argument', () => {
+        expect(testPanel.isMoveable).toBe(true);
+      });
+    });
+  });
+});
diff --git a/web/webpack.test.config.js b/web/webpack.test.config.js
index 306a030b..9932907f 100644
--- a/web/webpack.test.config.js
+++ b/web/webpack.test.config.js
@@ -80,6 +80,7 @@ module.exports = {
       'pgadmin.alertifyjs': sourcesDir + '/js/alertify.pgadmin.defaults',
       'pgadmin.backgrid': sourcesDir + '/js/backgrid.pgadmin',
       'pgadmin.backform': sourcesDir + '/js/backform.pgadmin',
+      'wcdocker': path.join(__dirname, './node_modules/webcabin-docker/Build/wcDocker'),
     },
   },
 };
-- 
2.17.0



^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
@ 2018-04-24 16:20                                         ` Murtuza Zabuawala <[email protected]>
  1 sibling, 0 replies; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-24 16:20 UTC (permalink / raw)
  To: Joao De Almeida Pereira <[email protected]>; +Cc: Akshay Joshi <[email protected]>; Dave Page <[email protected]>; pgadmin-hackers

Thank you Joao for reviewing.


On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
[email protected]> wrote:

> haha,
> Just joking, now we have a good version that passes tests and all.
>
> We found out that a test was failing in the patch version 5:
>
> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>     Expected false to be true.
>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>
> ​
> To solve this problem we decided to change the Panel class to match what
> the test say.
>
> Thanks
> Victoria & Joao
>
>
> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
> [email protected]> wrote:
>
>> Hi,
>> Apparently the last version was not applying, here is the new version
>> that should apply correctly
>>
>> Thanks
>> Victoria & Joao
>>
>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>> [email protected]> wrote:
>>
>>> Hi Murtuza,
>>>
>>> We tested the patch and everything looks fine.  We also refactors some
>>> parts to include things like strict equality and using let/const instead of
>>> var.  The updated patch is attached.
>>> In the future, it will be more valuable to have the translation to ES6
>>> and the feature work in separate commits so it is easier to understand what
>>> changed.
>>>
>>> Sincerely,
>>>
>>> Joao and Victoria
>>>
>>>
>>>
>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>> Akshay, could you review/commit this please?
>>>>>
>>>>> Please also update the release_notes_3_1.rst file when you commit
>>>>> user-visible changes, to make it easier to build the release notes.
>>>>>
>>>>
>>>>    Sure
>>>>
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <murtuza.zabuawala@
>>>>> enterprisedb.com> wrote:
>>>>>
>>>>>> Hi Dave,
>>>>>>
>>>>>> Please find the updated patch, Now we are able to lock wcFrame and
>>>>>> wcPanel both.
>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> Murtuza Zabuawala
>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]
>>>>>> > wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or preference
>>>>>>>>>>>>>>>>>> cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in at
>>>>>>>>>>>>>>>>> least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels
>>>>>>>>>>>>>>>>>> (all the panels from main window as well as from Query tool and Debugger)
>>>>>>>>>>>>>>>>>> but I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>>>>>> frame
>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>>>>>>>>>> not a wcDocker panel
>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL
>>>>>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the panel
>>>>>>>>>>>>>> out of the group of Panels then it becomes individual Frame, That is what
>>>>>>>>>>>>>> the author of the wcDocker replied on my question,
>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> So does it become a panel again if a second panel is added to
>>>>>>>>>>>>> the new tab group?
>>>>>>>>>>>>>
>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>
>>>>>>>>>>>> As far as I understand Panel needs a Frame to render itself if
>>>>>>>>>>>> it is not attached to the main docker instance.​
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> There must be some way we can lock a tab that's not part of a
>>>>>>>>>>>>> group.
>>>>>>>>>>>>>
>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>> ​
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Hmm, so the question becomes: do we include the lock feature,
>>>>>>>>>>> but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>
>>>>>>>>>> ​I would say lets include the feature by adding warning note that
>>>>>>>>>> this feature works with default layout only, And I don't think most user
>>>>>>>>>> will try to drag drop Browser panel ​
>>>>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>>>>> source code to make the Frame lock.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>>>> including half-baked features.
>>>>>>>>>
>>>>>>>>> +1, but we need to find out the way as this feature is requested
>>>>>>>> by many users.
>>>>>>>>
>>>>>>>
>>>>>>> 100% agree. I can convince my self that this feature request has to
>>>>>>> do with locking panels into a certain layout. I can also convince myself
>>>>>>> that the same request is simple because users are frustrated with the fact
>>>>>>> that the tabs and panes move around and they find that behavior annoying.
>>>>>>>
>>>>>>> -- Rob
>>>>>>>
>>>>>>>
>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>
>>>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
@ 2018-04-25 09:07                                         ` Akshay Joshi <[email protected]>
  2018-04-25 09:23                                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  1 sibling, 1 reply; 33+ messages in thread

From: Akshay Joshi @ 2018-04-25 09:07 UTC (permalink / raw)
  To: Joao De Almeida Pereira <[email protected]>; +Cc: Dave Page <[email protected]>; Murtuza Zabuawala <[email protected]>; pgadmin-hackers

Hi Joao/Murtuza

It break's the functionality, I am able to move "Data output", "Explain"
etc.. panel of Query Tool, even if "Lock layout?" is set to True.
Apart from above I have found more issue. Below are the steps to reproduce:

   - Set the "Lock layout?" flag to False.
   - Move out Dashboard panel.
   - Set the "Lock layout?" flag to True.
   - Close the Dashboard panel, as layout is locked and empty Dashboard
   panel is still visible. (Refer attached screenshot)


On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
[email protected]> wrote:

> haha,
> Just joking, now we have a good version that passes tests and all.
>
> We found out that a test was failing in the patch version 5:
>
> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>     Expected false to be true.
>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>
> ​
> To solve this problem we decided to change the Panel class to match what
> the test say.
>
> Thanks
> Victoria & Joao
>
>
> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
> [email protected]> wrote:
>
>> Hi,
>> Apparently the last version was not applying, here is the new version
>> that should apply correctly
>>
>> Thanks
>> Victoria & Joao
>>
>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>> [email protected]> wrote:
>>
>>> Hi Murtuza,
>>>
>>> We tested the patch and everything looks fine.  We also refactors some
>>> parts to include things like strict equality and using let/const instead of
>>> var.  The updated patch is attached.
>>> In the future, it will be more valuable to have the translation to ES6
>>> and the feature work in separate commits so it is easier to understand what
>>> changed.
>>>
>>> Sincerely,
>>>
>>> Joao and Victoria
>>>
>>>
>>>
>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>> Akshay, could you review/commit this please?
>>>>>
>>>>> Please also update the release_notes_3_1.rst file when you commit
>>>>> user-visible changes, to make it easier to build the release notes.
>>>>>
>>>>
>>>>    Sure
>>>>
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <murtuza.zabuawala@
>>>>> enterprisedb.com> wrote:
>>>>>
>>>>>> Hi Dave,
>>>>>>
>>>>>> Please find the updated patch, Now we are able to lock wcFrame and
>>>>>> wcPanel both.
>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> Murtuza Zabuawala
>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <[email protected]
>>>>>> > wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or preference
>>>>>>>>>>>>>>>>>> cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in at
>>>>>>>>>>>>>>>>> least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels
>>>>>>>>>>>>>>>>>> (all the panels from main window as well as from Query tool and Debugger)
>>>>>>>>>>>>>>>>>> but I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>>>>>> frame
>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html; and
>>>>>>>>>>>>>>>>>> not a wcDocker panel
>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL
>>>>>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the panel
>>>>>>>>>>>>>> out of the group of Panels then it becomes individual Frame, That is what
>>>>>>>>>>>>>> the author of the wcDocker replied on my question,
>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> So does it become a panel again if a second panel is added to
>>>>>>>>>>>>> the new tab group?
>>>>>>>>>>>>>
>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>
>>>>>>>>>>>> As far as I understand Panel needs a Frame to render itself if
>>>>>>>>>>>> it is not attached to the main docker instance.​
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> There must be some way we can lock a tab that's not part of a
>>>>>>>>>>>>> group.
>>>>>>>>>>>>>
>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>> ​
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Hmm, so the question becomes: do we include the lock feature,
>>>>>>>>>>> but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>
>>>>>>>>>> ​I would say lets include the feature by adding warning note that
>>>>>>>>>> this feature works with default layout only, And I don't think most user
>>>>>>>>>> will try to drag drop Browser panel ​
>>>>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>>>>> source code to make the Frame lock.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>>>> including half-baked features.
>>>>>>>>>
>>>>>>>>> +1, but we need to find out the way as this feature is requested
>>>>>>>> by many users.
>>>>>>>>
>>>>>>>
>>>>>>> 100% agree. I can convince my self that this feature request has to
>>>>>>> do with locking panels into a certain layout. I can also convince myself
>>>>>>> that the same request is simple because users are frustrated with the fact
>>>>>>> that the tabs and panes move around and they find that behavior annoying.
>>>>>>>
>>>>>>> -- Rob
>>>>>>>
>>>>>>>
>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>
>>>


-- 
*Akshay Joshi*

*Sr. Software Architect *



*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*


Attachments:

  [image/png] Layout_Error.png (167.6K, 3-Layout_Error.png)
  download | view image

^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-25 09:07                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
@ 2018-04-25 09:23                                           ` Murtuza Zabuawala <[email protected]>
  2018-04-25 10:06                                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-25 09:23 UTC (permalink / raw)
  To: Akshay Joshi <[email protected]>; +Cc: Joao De Almeida Pereira <[email protected]>; Dave Page <[email protected]>; pgadmin-hackers

Hi Akshay,


On Wed, Apr 25, 2018 at 2:37 PM, Akshay Joshi <[email protected]
> wrote:

> Hi Joao/Murtuza
>
> It break's the functionality, I am able to move "Data output", "Explain"
> etc.. panel of Query Tool, even if "Lock layout?" is set to True.
>

​It's working properly in v5 patch, Something went wrong while refactoring.​

​

Apart from above I have found more issue. Below are the steps to reproduce:
>
>    - Set the "Lock layout?" flag to False.
>    - Move out Dashboard panel.
>    - Set the "Lock layout?" flag to True.
>    - Close the Dashboard panel, as layout is locked and empty Dashboard
>    panel is still visible. (Refer attached screenshot)
>
> ​That's because we have set the Panel moveable property to False, they
won't auto resize, As discussed earlier if user drag any panel out of panel
group it gets render in seprate wcFrame. I think that needs to be taken
care by user before they decide to lock the layout, We can not expilcitly
set panel's closeable property to False when layout is locked, If we do so
user will not be able to close any Query tool, Debugger panels.​
 ​


On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
> [email protected]> wrote:
>
>> haha,
>> Just joking, now we have a good version that passes tests and all.
>>
>> We found out that a test was failing in the patch version 5:
>>
>> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>>     Expected false to be true.
>>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>>
>> ​
>> To solve this problem we decided to change the Panel class to match what
>> the test say.
>>
>> Thanks
>> Victoria & Joao
>>
>>
>> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
>> [email protected]> wrote:
>>
>>> Hi,
>>> Apparently the last version was not applying, here is the new version
>>> that should apply correctly
>>>
>>> Thanks
>>> Victoria & Joao
>>>
>>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>>> [email protected]> wrote:
>>>
>>>> Hi Murtuza,
>>>>
>>>> We tested the patch and everything looks fine.  We also refactors some
>>>> parts to include things like strict equality and using let/const instead of
>>>> var.  The updated patch is attached.
>>>> In the future, it will be more valuable to have the translation to ES6
>>>> and the feature work in separate commits so it is easier to understand what
>>>> changed.
>>>>
>>>> Sincerely,
>>>>
>>>> Joao and Victoria
>>>>
>>>>
>>>>
>>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:
>>>>>
>>>>>> Akshay, could you review/commit this please?
>>>>>>
>>>>>> Please also update the release_notes_3_1.rst file when you commit
>>>>>> user-visible changes, to make it easier to build the release notes.
>>>>>>
>>>>>
>>>>>    Sure
>>>>>
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Dave,
>>>>>>>
>>>>>>> Please find the updated patch, Now we are able to lock wcFrame and
>>>>>>> wcPanel both.
>>>>>>>
>>>>>>> --
>>>>>>> Regards,
>>>>>>> Murtuza Zabuawala
>>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <[email protected]
>>>>>>>>>>>>>>> > wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or preference
>>>>>>>>>>>>>>>>>>> cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in
>>>>>>>>>>>>>>>>>> at least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels
>>>>>>>>>>>>>>>>>>> (all the panels from main window as well as from Query tool and Debugger)
>>>>>>>>>>>>>>>>>>> but I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>>>>>>> frame
>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the SQL
>>>>>>>>>>>>>>>> Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the panel
>>>>>>>>>>>>>>> out of the group of Panels then it becomes individual Frame, That is what
>>>>>>>>>>>>>>> the author of the wcDocker replied on my question,
>>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> So does it become a panel again if a second panel is added to
>>>>>>>>>>>>>> the new tab group?
>>>>>>>>>>>>>>
>>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>>
>>>>>>>>>>>>> As far as I understand Panel needs a Frame to render itself if
>>>>>>>>>>>>> it is not attached to the main docker instance.​
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> There must be some way we can lock a tab that's not part of a
>>>>>>>>>>>>>> group.
>>>>>>>>>>>>>>
>>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>>> ​
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Hmm, so the question becomes: do we include the lock feature,
>>>>>>>>>>>> but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>>
>>>>>>>>>>> ​I would say lets include the feature by adding warning note
>>>>>>>>>>> that this feature works with default layout only, And I don't think most
>>>>>>>>>>> user will try to drag drop Browser panel ​
>>>>>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>>>>>> source code to make the Frame lock.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>>>>> including half-baked features.
>>>>>>>>>>
>>>>>>>>>> +1, but we need to find out the way as this feature is requested
>>>>>>>>> by many users.
>>>>>>>>>
>>>>>>>>
>>>>>>>> 100% agree. I can convince my self that this feature request has to
>>>>>>>> do with locking panels into a certain layout. I can also convince myself
>>>>>>>> that the same request is simple because users are frustrated with the fact
>>>>>>>> that the tabs and panes move around and they find that behavior annoying.
>>>>>>>>
>>>>>>>> -- Rob
>>>>>>>>
>>>>>>>>
>>>>>>>>> --
>>>>>>>>>> Dave Page
>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>
>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Dave Page
>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>> Twitter: @pgsnake
>>>>>>
>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>
>>>>
>
>
> --
> *Akshay Joshi*
>
> *Sr. Software Architect *
>
>
>
> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-25 09:07                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-25 09:23                                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-25 10:06                                             ` Dave Page <[email protected]>
  2018-04-25 11:13                                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Dave Page @ 2018-04-25 10:06 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Akshay Joshi <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

All,

We just had a brief discussion in our EDB sprint planning meeting about
this. There is a non-zero chance that we're going to have to fork wcDocker
in the near future, in order to update it to work with jQuery 3. If we do
that, then it may be significantly easier to fix this issue in that fork
(perhaps by adding a single lockLayout(bool) function, rather than trying
to do so from pgAdmin.

I think (unless Murtuza believes that won't help), that we're better off
holding on this for now until we know if we've had to do that.

On Wed, Apr 25, 2018 at 10:23 AM, Murtuza Zabuawala <
[email protected]> wrote:

> Hi Akshay,
>
>
> On Wed, Apr 25, 2018 at 2:37 PM, Akshay Joshi <
> [email protected]> wrote:
>
>> Hi Joao/Murtuza
>>
>> It break's the functionality, I am able to move "Data output", "Explain"
>> etc.. panel of Query Tool, even if "Lock layout?" is set to True.
>>
>
> ​It's working properly in v5 patch, Something went wrong while
> refactoring.​
>
> ​
>
> Apart from above I have found more issue. Below are the steps to reproduce:
>>
>>    - Set the "Lock layout?" flag to False.
>>    - Move out Dashboard panel.
>>    - Set the "Lock layout?" flag to True.
>>    - Close the Dashboard panel, as layout is locked and empty Dashboard
>>    panel is still visible. (Refer attached screenshot)
>>
>> ​That's because we have set the Panel moveable property to False, they
> won't auto resize, As discussed earlier if user drag any panel out of panel
> group it gets render in seprate wcFrame. I think that needs to be taken
> care by user before they decide to lock the layout, We can not expilcitly
> set panel's closeable property to False when layout is locked, If we do so
> user will not be able to close any Query tool, Debugger panels.​
>  ​
>
>
> On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
>> [email protected]> wrote:
>>
>>> haha,
>>> Just joking, now we have a good version that passes tests and all.
>>>
>>> We found out that a test was failing in the patch version 5:
>>>
>>> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>>>     Expected false to be true.
>>>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>>>
>>> ​
>>> To solve this problem we decided to change the Panel class to match what
>>> the test say.
>>>
>>> Thanks
>>> Victoria & Joao
>>>
>>>
>>> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>> Apparently the last version was not applying, here is the new version
>>>> that should apply correctly
>>>>
>>>> Thanks
>>>> Victoria & Joao
>>>>
>>>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Murtuza,
>>>>>
>>>>> We tested the patch and everything looks fine.  We also refactors some
>>>>> parts to include things like strict equality and using let/const instead of
>>>>> var.  The updated patch is attached.
>>>>> In the future, it will be more valuable to have the translation to ES6
>>>>> and the feature work in separate commits so it is easier to understand what
>>>>> changed.
>>>>>
>>>>> Sincerely,
>>>>>
>>>>> Joao and Victoria
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Akshay, could you review/commit this please?
>>>>>>>
>>>>>>> Please also update the release_notes_3_1.rst file when you commit
>>>>>>> user-visible changes, to make it easier to build the release notes.
>>>>>>>
>>>>>>
>>>>>>    Sure
>>>>>>
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Dave,
>>>>>>>>
>>>>>>>> Please find the updated patch, Now we are able to lock wcFrame and
>>>>>>>> wcPanel both.
>>>>>>>>
>>>>>>>> --
>>>>>>>> Regards,
>>>>>>>> Murtuza Zabuawala
>>>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira <
>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or
>>>>>>>>>>>>>>>>>>>> preference cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Looks like everything is working when we change the lock.
>>>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in
>>>>>>>>>>>>>>>>>>> at least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>>>> The given patch is working fine for all the Tabs/Panels
>>>>>>>>>>>>>>>>>>>> (all the panels from main window as well as from Query tool and Debugger)
>>>>>>>>>>>>>>>>>>>> but I'm facing an issue while handling the Browser tree section, It is a wcDocer
>>>>>>>>>>>>>>>>>>>> frame
>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the
>>>>>>>>>>>>>>>>> SQL Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the
>>>>>>>>>>>>>>>> panel out of the group of Panels then it becomes individual Frame, That is
>>>>>>>>>>>>>>>> what the author of the wcDocker replied on my question,
>>>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> So does it become a panel again if a second panel is added
>>>>>>>>>>>>>>> to the new tab group?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> As far as I understand Panel needs a Frame to render itself
>>>>>>>>>>>>>> if it is not attached to the main docker instance.​
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> There must be some way we can lock a tab that's not part of
>>>>>>>>>>>>>>> a group.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>>>> ​
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hmm, so the question becomes: do we include the lock feature,
>>>>>>>>>>>>> but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>>>
>>>>>>>>>>>> ​I would say lets include the feature by adding warning note
>>>>>>>>>>>> that this feature works with default layout only, And I don't think most
>>>>>>>>>>>> user will try to drag drop Browser panel ​
>>>>>>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>>>>>>> source code to make the Frame lock.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>>>>>> including half-baked features.
>>>>>>>>>>>
>>>>>>>>>>> +1, but we need to find out the way as this feature is requested
>>>>>>>>>> by many users.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 100% agree. I can convince my self that this feature request has
>>>>>>>>> to do with locking panels into a certain layout. I can also convince myself
>>>>>>>>> that the same request is simple because users are frustrated with the fact
>>>>>>>>> that the tabs and panes move around and they find that behavior annoying.
>>>>>>>>>
>>>>>>>>> -- Rob
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>
>>>>>
>>
>>
>> --
>> *Akshay Joshi*
>>
>> *Sr. Software Architect *
>>
>>
>>
>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>
>
>


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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-25 09:07                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-25 09:23                                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-25 10:06                                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-25 11:13                                               ` Murtuza Zabuawala <[email protected]>
  2018-04-25 11:14                                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-25 11:13 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Akshay Joshi <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

Hi Dave,

On Wed, Apr 25, 2018 at 3:36 PM, Dave Page <[email protected]> wrote:

> All,
>
> We just had a brief discussion in our EDB sprint planning meeting about
> this. There is a non-zero chance that we're going to have to fork wcDocker
> in the near future, in order to update it to work with jQuery 3. If we do
> that, then it may be significantly easier to fix this issue in that fork
> (perhaps by adding a single lockLayout(bool) function, rather than trying
> to do so from pgAdmin.
>
> I think (unless Murtuza believes that won't help), that we're better off
> holding on this for now until we know if we've had to do that.
>

​I don't have any objection forking the code and adding the flag to lock
the panel,  But I'm certain that
we will use the same inbuilt method *panel.moveable(false)* which we have
used right now in the patch to prevent a panel from floating and will face
the same issue again which Akshay mentioned in his last email.

Let me know if you want me to attach latest patch onto the ticket for
future reference and update the ticket accordingly​.


> On Wed, Apr 25, 2018 at 10:23 AM, Murtuza Zabuawala <
> [email protected]> wrote:
>
>> Hi Akshay,
>>
>>
>> On Wed, Apr 25, 2018 at 2:37 PM, Akshay Joshi <
>> [email protected]> wrote:
>>
>>> Hi Joao/Murtuza
>>>
>>> It break's the functionality, I am able to move "Data output", "Explain"
>>> etc.. panel of Query Tool, even if "Lock layout?" is set to True.
>>>
>>
>> ​It's working properly in v5 patch, Something went wrong while
>> refactoring.​
>>
>> ​
>>
>> Apart from above I have found more issue. Below are the steps to
>>> reproduce:
>>>
>>>    - Set the "Lock layout?" flag to False.
>>>    - Move out Dashboard panel.
>>>    - Set the "Lock layout?" flag to True.
>>>    - Close the Dashboard panel, as layout is locked and empty Dashboard
>>>    panel is still visible. (Refer attached screenshot)
>>>
>>> ​That's because we have set the Panel moveable property to False, they
>> won't auto resize, As discussed earlier if user drag any panel out of panel
>> group it gets render in seprate wcFrame. I think that needs to be taken
>> care by user before they decide to lock the layout, We can not expilcitly
>> set panel's closeable property to False when layout is locked, If we do so
>> user will not be able to close any Query tool, Debugger panels.​
>>  ​
>>
>>
>> On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
>>> [email protected]> wrote:
>>>
>>>> haha,
>>>> Just joking, now we have a good version that passes tests and all.
>>>>
>>>> We found out that a test was failing in the patch version 5:
>>>>
>>>> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>>>>     Expected false to be true.
>>>>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>>>>
>>>> ​
>>>> To solve this problem we decided to change the Panel class to match
>>>> what the test say.
>>>>
>>>> Thanks
>>>> Victoria & Joao
>>>>
>>>>
>>>> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi,
>>>>> Apparently the last version was not applying, here is the new version
>>>>> that should apply correctly
>>>>>
>>>>> Thanks
>>>>> Victoria & Joao
>>>>>
>>>>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Murtuza,
>>>>>>
>>>>>> We tested the patch and everything looks fine.  We also refactors
>>>>>> some parts to include things like strict equality and using let/const
>>>>>> instead of var.  The updated patch is attached.
>>>>>> In the future, it will be more valuable to have the translation to
>>>>>> ES6 and the feature work in separate commits so it is easier to understand
>>>>>> what changed.
>>>>>>
>>>>>> Sincerely,
>>>>>>
>>>>>> Joao and Victoria
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Akshay, could you review/commit this please?
>>>>>>>>
>>>>>>>> Please also update the release_notes_3_1.rst file when you commit
>>>>>>>> user-visible changes, to make it easier to build the release notes.
>>>>>>>>
>>>>>>>
>>>>>>>    Sure
>>>>>>>
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Dave,
>>>>>>>>>
>>>>>>>>> Please find the updated patch, Now we are able to lock wcFrame and
>>>>>>>>> wcPanel both.
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Regards,
>>>>>>>>> Murtuza Zabuawala
>>>>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <[email protected]
>>>>>>>>>>>>>>> > wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira
>>>>>>>>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or
>>>>>>>>>>>>>>>>>>>>> preference cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review comments.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Looks like everything is working when we change the
>>>>>>>>>>>>>>>>>>>> lock.
>>>>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this in
>>>>>>>>>>>>>>>>>>>> at least 2 commits, one that is related to the preference issue and another
>>>>>>>>>>>>>>>>>>>> one that is related to this story.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>>>>> The given patch is working fine for all the
>>>>>>>>>>>>>>>>>>>>> Tabs/Panels (all the panels from main window as well as from Query tool and
>>>>>>>>>>>>>>>>>>>>> Debugger) but I'm facing an issue while handling the Browser tree section,
>>>>>>>>>>>>>>>>>>>>> It is a wcDocer frame
>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the
>>>>>>>>>>>>>>>>>> SQL Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the
>>>>>>>>>>>>>>>>> panel out of the group of Panels then it becomes individual Frame, That is
>>>>>>>>>>>>>>>>> what the author of the wcDocker replied on my question,
>>>>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> So does it become a panel again if a second panel is added
>>>>>>>>>>>>>>>> to the new tab group?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> As far as I understand Panel needs a Frame to render itself
>>>>>>>>>>>>>>> if it is not attached to the main docker instance.​
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> There must be some way we can lock a tab that's not part of
>>>>>>>>>>>>>>>> a group.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>>>>> ​
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hmm, so the question becomes: do we include the lock feature,
>>>>>>>>>>>>>> but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>>>>
>>>>>>>>>>>>> ​I would say lets include the feature by adding warning note
>>>>>>>>>>>>> that this feature works with default layout only, And I don't think most
>>>>>>>>>>>>> user will try to drag drop Browser panel ​
>>>>>>>>>>>>> anyway, meanwhile I'll check what changes are required in main
>>>>>>>>>>>>> source code to make the Frame lock.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>>>>>>> including half-baked features.
>>>>>>>>>>>>
>>>>>>>>>>>> +1, but we need to find out the way as this feature is
>>>>>>>>>>> requested by many users.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 100% agree. I can convince my self that this feature request has
>>>>>>>>>> to do with locking panels into a certain layout. I can also convince myself
>>>>>>>>>> that the same request is simple because users are frustrated with the fact
>>>>>>>>>> that the tabs and panes move around and they find that behavior annoying.
>>>>>>>>>>
>>>>>>>>>> -- Rob
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>>> Dave Page
>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>
>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Dave Page
>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>> Twitter: @pgsnake
>>>>>>>>
>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> *Akshay Joshi*
>>>>>>>
>>>>>>> *Sr. Software Architect *
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>>
>>>>>>
>>>
>>>
>>> --
>>> *Akshay Joshi*
>>>
>>> *Sr. Software Architect *
>>>
>>>
>>>
>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>
>>
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-25 09:07                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-25 09:23                                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-25 10:06                                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-25 11:13                                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
@ 2018-04-25 11:14                                                 ` Dave Page <[email protected]>
  2018-04-25 13:25                                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Dave Page @ 2018-04-25 11:14 UTC (permalink / raw)
  To: Murtuza Zabuawala <[email protected]>; +Cc: Akshay Joshi <[email protected]>; Joao De Almeida Pereira <[email protected]>; pgadmin-hackers

On Wed, Apr 25, 2018 at 12:13 PM, Murtuza Zabuawala <
[email protected]> wrote:

> Hi Dave,
>
> On Wed, Apr 25, 2018 at 3:36 PM, Dave Page <[email protected]> wrote:
>
>> All,
>>
>> We just had a brief discussion in our EDB sprint planning meeting about
>> this. There is a non-zero chance that we're going to have to fork wcDocker
>> in the near future, in order to update it to work with jQuery 3. If we do
>> that, then it may be significantly easier to fix this issue in that fork
>> (perhaps by adding a single lockLayout(bool) function, rather than trying
>> to do so from pgAdmin.
>>
>> I think (unless Murtuza believes that won't help), that we're better off
>> holding on this for now until we know if we've had to do that.
>>
>
> ​I don't have any objection forking the code and adding the flag to lock
> the panel,  But I'm certain that
> we will use the same inbuilt method *panel.moveable(false)* which we have
> used right now in the patch to prevent a panel from floating and will face
> the same issue again which Akshay mentioned in his last email.
>
> Let me know if you want me to attach latest patch onto the ticket for
> future reference and update the ticket accordingly​.
>

That's probably a good idea - thanks.


>
>
>> On Wed, Apr 25, 2018 at 10:23 AM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi Akshay,
>>>
>>>
>>> On Wed, Apr 25, 2018 at 2:37 PM, Akshay Joshi <
>>> [email protected]> wrote:
>>>
>>>> Hi Joao/Murtuza
>>>>
>>>> It break's the functionality, I am able to move "Data output",
>>>> "Explain" etc.. panel of Query Tool, even if "Lock layout?" is set to True.
>>>>
>>>
>>> ​It's working properly in v5 patch, Something went wrong while
>>> refactoring.​
>>>
>>> ​
>>>
>>> Apart from above I have found more issue. Below are the steps to
>>>> reproduce:
>>>>
>>>>    - Set the "Lock layout?" flag to False.
>>>>    - Move out Dashboard panel.
>>>>    - Set the "Lock layout?" flag to True.
>>>>    - Close the Dashboard panel, as layout is locked and empty
>>>>    Dashboard panel is still visible. (Refer attached screenshot)
>>>>
>>>> ​That's because we have set the Panel moveable property to False, they
>>> won't auto resize, As discussed earlier if user drag any panel out of panel
>>> group it gets render in seprate wcFrame. I think that needs to be taken
>>> care by user before they decide to lock the layout, We can not expilcitly
>>> set panel's closeable property to False when layout is locked, If we do so
>>> user will not be able to close any Query tool, Debugger panels.​
>>>  ​
>>>
>>>
>>> On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
>>>> [email protected]> wrote:
>>>>
>>>>> haha,
>>>>> Just joking, now we have a good version that passes tests and all.
>>>>>
>>>>> We found out that a test was failing in the patch version 5:
>>>>>
>>>>> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>>>>>     Expected false to be true.
>>>>>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>>>>>
>>>>> ​
>>>>> To solve this problem we decided to change the Panel class to match
>>>>> what the test say.
>>>>>
>>>>> Thanks
>>>>> Victoria & Joao
>>>>>
>>>>>
>>>>> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>> Apparently the last version was not applying, here is the new version
>>>>>> that should apply correctly
>>>>>>
>>>>>> Thanks
>>>>>> Victoria & Joao
>>>>>>
>>>>>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Murtuza,
>>>>>>>
>>>>>>> We tested the patch and everything looks fine.  We also refactors
>>>>>>> some parts to include things like strict equality and using let/const
>>>>>>> instead of var.  The updated patch is attached.
>>>>>>> In the future, it will be more valuable to have the translation to
>>>>>>> ES6 and the feature work in separate commits so it is easier to understand
>>>>>>> what changed.
>>>>>>>
>>>>>>> Sincerely,
>>>>>>>
>>>>>>> Joao and Victoria
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Akshay, could you review/commit this please?
>>>>>>>>>
>>>>>>>>> Please also update the release_notes_3_1.rst file when you commit
>>>>>>>>> user-visible changes, to make it easier to build the release notes.
>>>>>>>>>
>>>>>>>>
>>>>>>>>    Sure
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave,
>>>>>>>>>>
>>>>>>>>>> Please find the updated patch, Now we are able to lock wcFrame
>>>>>>>>>> and wcPanel both.
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Regards,
>>>>>>>>>> Murtuza Zabuawala
>>>>>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <
>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida Pereira
>>>>>>>>>>>>>>>>>>>> <[email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or
>>>>>>>>>>>>>>>>>>>>>> preference cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review
>>>>>>>>>>>>>>>>>>>>>> comments.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Looks like everything is working when we change the
>>>>>>>>>>>>>>>>>>>>> lock.
>>>>>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this
>>>>>>>>>>>>>>>>>>>>> in at least 2 commits, one that is related to the preference issue and
>>>>>>>>>>>>>>>>>>>>> another one that is related to this story.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>>>>>> The given patch is working fine for all the
>>>>>>>>>>>>>>>>>>>>>> Tabs/Panels (all the panels from main window as well as from Query tool and
>>>>>>>>>>>>>>>>>>>>>> Debugger) but I'm facing an issue while handling the Browser tree section,
>>>>>>>>>>>>>>>>>>>>>> It is a wcDocer frame
>>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the
>>>>>>>>>>>>>>>>>>> SQL Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the
>>>>>>>>>>>>>>>>>> panel out of the group of Panels then it becomes individual Frame, That is
>>>>>>>>>>>>>>>>>> what the author of the wcDocker replied on my question,
>>>>>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> So does it become a panel again if a second panel is added
>>>>>>>>>>>>>>>>> to the new tab group?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> As far as I understand Panel needs a Frame to render itself
>>>>>>>>>>>>>>>> if it is not attached to the main docker instance.​
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> There must be some way we can lock a tab that's not part
>>>>>>>>>>>>>>>>> of a group.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>>>>>> ​
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hmm, so the question becomes: do we include the lock
>>>>>>>>>>>>>>> feature, but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ​I would say lets include the feature by adding warning note
>>>>>>>>>>>>>> that this feature works with default layout only, And I don't think most
>>>>>>>>>>>>>> user will try to drag drop Browser panel ​
>>>>>>>>>>>>>> anyway, meanwhile I'll check what changes are required in
>>>>>>>>>>>>>> main source code to make the Frame lock.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Anyone else have any thoughts on this? Personally I don't like
>>>>>>>>>>>>> including half-baked features.
>>>>>>>>>>>>>
>>>>>>>>>>>>> +1, but we need to find out the way as this feature is
>>>>>>>>>>>> requested by many users.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 100% agree. I can convince my self that this feature request has
>>>>>>>>>>> to do with locking panels into a certain layout. I can also convince myself
>>>>>>>>>>> that the same request is simple because users are frustrated with the fact
>>>>>>>>>>> that the tabs and panes move around and they find that behavior annoying.
>>>>>>>>>>>
>>>>>>>>>>> -- Rob
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>
>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Dave Page
>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>
>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Akshay Joshi*
>>>>>>>>
>>>>>>>> *Sr. Software Architect *
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>>>
>>>>>>>
>>>>
>>>>
>>>> --
>>>> *Akshay Joshi*
>>>>
>>>> *Sr. Software Architect *
>>>>
>>>>
>>>>
>>>> *Phone: +91 20-3058-9517Mobile: +91 976-788-8246*
>>>>
>>>
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>


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

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


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-25 09:07                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-25 09:23                                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-25 10:06                                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-25 11:13                                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-25 11:14                                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
@ 2018-04-25 13:25                                                   ` Joao De Almeida Pereira <[email protected]>
  2018-04-26 14:20                                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  0 siblings, 1 reply; 33+ messages in thread

From: Joao De Almeida Pereira @ 2018-04-25 13:25 UTC (permalink / raw)
  To: Dave Page <[email protected]>; +Cc: Murtuza Zabuawala <[email protected]>; Akshay Joshi <[email protected]>; pgadmin-hackers

Hi,
@Murtuza: We didn't notice the issue, can you please advise on what need to
change to make it work? The only change we did was to make one test pass.

@Hackers: In our point of view it is never good to fork a library. But if
he really have to do it, then we should fork it in Github, make our code
accessible to other people, and we should add it as a dependency on
package.json


Thanks
Anthony & Joao


On Wed, Apr 25, 2018 at 7:14 AM Dave Page <[email protected]> wrote:

> On Wed, Apr 25, 2018 at 12:13 PM, Murtuza Zabuawala <
> [email protected]> wrote:
>
>> Hi Dave,
>>
>> On Wed, Apr 25, 2018 at 3:36 PM, Dave Page <[email protected]> wrote:
>>
>>> All,
>>>
>>> We just had a brief discussion in our EDB sprint planning meeting about
>>> this. There is a non-zero chance that we're going to have to fork wcDocker
>>> in the near future, in order to update it to work with jQuery 3. If we do
>>> that, then it may be significantly easier to fix this issue in that fork
>>> (perhaps by adding a single lockLayout(bool) function, rather than trying
>>> to do so from pgAdmin.
>>>
>>> I think (unless Murtuza believes that won't help), that we're better off
>>> holding on this for now until we know if we've had to do that.
>>>
>>
>> ​I don't have any objection forking the code and adding the flag to lock
>> the panel,  But I'm certain that
>> we will use the same inbuilt method *panel.moveable(false)* which we
>> have used right now in the patch to prevent a panel from floating and will
>> face the same issue again which Akshay mentioned in his last email.
>>
>> Let me know if you want me to attach latest patch onto the ticket for
>> future reference and update the ticket accordingly​.
>>
>
> That's probably a good idea - thanks.
>
>
>>
>>
>>> On Wed, Apr 25, 2018 at 10:23 AM, Murtuza Zabuawala <
>>> [email protected]> wrote:
>>>
>>>> Hi Akshay,
>>>>
>>>>
>>>> On Wed, Apr 25, 2018 at 2:37 PM, Akshay Joshi <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Joao/Murtuza
>>>>>
>>>>> It break's the functionality, I am able to move "Data output",
>>>>> "Explain" etc.. panel of Query Tool, even if "Lock layout?" is set to True.
>>>>>
>>>>
>>>> ​It's working properly in v5 patch, Something went wrong while
>>>> refactoring.​
>>>>
>>>> ​
>>>>
>>>> Apart from above I have found more issue. Below are the steps to
>>>>> reproduce:
>>>>>
>>>>>    - Set the "Lock layout?" flag to False.
>>>>>    - Move out Dashboard panel.
>>>>>    - Set the "Lock layout?" flag to True.
>>>>>    - Close the Dashboard panel, as layout is locked and empty
>>>>>    Dashboard panel is still visible. (Refer attached screenshot)
>>>>>
>>>>> ​That's because we have set the Panel moveable property to False, they
>>>> won't auto resize, As discussed earlier if user drag any panel out of panel
>>>> group it gets render in seprate wcFrame. I think that needs to be taken
>>>> care by user before they decide to lock the layout, We can not expilcitly
>>>> set panel's closeable property to False when layout is locked, If we do so
>>>> user will not be able to close any Query tool, Debugger panels.​
>>>>  ​
>>>>
>>>>
>>>> On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> haha,
>>>>>> Just joking, now we have a good version that passes tests and all.
>>>>>>
>>>>>> We found out that a test was failing in the patch version 5:
>>>>>>
>>>>>> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>>>>>>     Expected false to be true.
>>>>>>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>>>>>>
>>>>>> ​
>>>>>> To solve this problem we decided to change the Panel class to match
>>>>>> what the test say.
>>>>>>
>>>>>> Thanks
>>>>>> Victoria & Joao
>>>>>>
>>>>>>
>>>>>> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>> Apparently the last version was not applying, here is the new
>>>>>>> version that should apply correctly
>>>>>>>
>>>>>>> Thanks
>>>>>>> Victoria & Joao
>>>>>>>
>>>>>>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Murtuza,
>>>>>>>>
>>>>>>>> We tested the patch and everything looks fine.  We also refactors
>>>>>>>> some parts to include things like strict equality and using let/const
>>>>>>>> instead of var.  The updated patch is attached.
>>>>>>>> In the future, it will be more valuable to have the translation to
>>>>>>>> ES6 and the feature work in separate commits so it is easier to understand
>>>>>>>> what changed.
>>>>>>>>
>>>>>>>> Sincerely,
>>>>>>>>
>>>>>>>> Joao and Victoria
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Akshay, could you review/commit this please?
>>>>>>>>>>
>>>>>>>>>> Please also update the release_notes_3_1.rst file when you commit
>>>>>>>>>> user-visible changes, to make it easier to build the release notes.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>    Sure
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>
>>>>>>>>>>> Please find the updated patch, Now we are able to lock wcFrame
>>>>>>>>>>> and wcPanel both.
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Regards,
>>>>>>>>>>> Murtuza Zabuawala
>>>>>>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <[email protected]
>>>>>>>>>>>>>>> > wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <
>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida
>>>>>>>>>>>>>>>>>>>>> Pereira <[email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or
>>>>>>>>>>>>>>>>>>>>>>> preference cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review
>>>>>>>>>>>>>>>>>>>>>>> comments.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Looks like everything is working when we change the
>>>>>>>>>>>>>>>>>>>>>> lock.
>>>>>>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this
>>>>>>>>>>>>>>>>>>>>>> in at least 2 commits, one that is related to the preference issue and
>>>>>>>>>>>>>>>>>>>>>> another one that is related to this story.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>>>>>>> The given patch is working fine for all the
>>>>>>>>>>>>>>>>>>>>>>> Tabs/Panels (all the panels from main window as well as from Query tool and
>>>>>>>>>>>>>>>>>>>>>>> Debugger) but I'm facing an issue while handling the Browser tree section,
>>>>>>>>>>>>>>>>>>>>>>> It is a wcDocer frame
>>>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put the
>>>>>>>>>>>>>>>>>>>> SQL Panel on it's own below the properties/stats panels (so it looks like
>>>>>>>>>>>>>>>>>>>> pgAdmin 3 used to by default), and then lock the layout, I can un-dock the
>>>>>>>>>>>>>>>>>>>> SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the
>>>>>>>>>>>>>>>>>>> panel out of the group of Panels then it becomes individual Frame, That is
>>>>>>>>>>>>>>>>>>> what the author of the wcDocker replied on my question,
>>>>>>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> So does it become a panel again if a second panel is
>>>>>>>>>>>>>>>>>> added to the new tab group?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> As far as I understand Panel needs a Frame to render
>>>>>>>>>>>>>>>>> itself if it is not attached to the main docker instance.​
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> There must be some way we can lock a tab that's not part
>>>>>>>>>>>>>>>>>> of a group.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>>>>>>> ​
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hmm, so the question becomes: do we include the lock
>>>>>>>>>>>>>>>> feature, but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ​I would say lets include the feature by adding warning note
>>>>>>>>>>>>>>> that this feature works with default layout only, And I don't think most
>>>>>>>>>>>>>>> user will try to drag drop Browser panel ​
>>>>>>>>>>>>>>> anyway, meanwhile I'll check what changes are required in
>>>>>>>>>>>>>>> main source code to make the Frame lock.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Anyone else have any thoughts on this? Personally I don't
>>>>>>>>>>>>>> like including half-baked features.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> +1, but we need to find out the way as this feature is
>>>>>>>>>>>>> requested by many users.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> 100% agree. I can convince my self that this feature request
>>>>>>>>>>>> has to do with locking panels into a certain layout. I can also convince
>>>>>>>>>>>> myself that the same request is simple because users are frustrated with
>>>>>>>>>>>> the fact that the tabs and panes move around and they find that behavior
>>>>>>>>>>>> annoying.
>>>>>>>>>>>>
>>>>>>>>>>>> -- Rob
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Dave Page
>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>
>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Akshay Joshi*
>>>>>>>>>
>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>>>>
>>>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> *Akshay Joshi*
>>>>>
>>>>> *Sr. Software Architect *
>>>>>
>>>>>
>>>>>
>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Dave Page
>>> Blog: http://pgsnake.blogspot.com
>>> Twitter: @pgsnake
>>>
>>> EnterpriseDB UK: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>
>>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread

* Re: [pgAdmin4][RM#3155] Allow user to lock the Layout
  2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-03-29 13:47 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-03-29 15:27   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-02 14:07     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-02 19:41       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-03 11:56         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-03 15:33           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 06:20             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 09:17               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 09:45                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 11:30                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-04 11:54                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-04 14:39                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-05 03:31                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Khushboo Vashi <[email protected]>
  2018-04-05 13:02                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Robert Eckhardt <[email protected]>
  2018-04-24 07:45                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-24 07:47                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-24 08:58                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-24 14:56                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:08                                     ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-24 15:41                                       ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
  2018-04-25 09:07                                         ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Akshay Joshi <[email protected]>
  2018-04-25 09:23                                           ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-25 10:06                                             ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-25 11:13                                               ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
  2018-04-25 11:14                                                 ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Dave Page <[email protected]>
  2018-04-25 13:25                                                   ` Re: [pgAdmin4][RM#3155] Allow user to lock the Layout Joao De Almeida Pereira <[email protected]>
@ 2018-04-26 14:20                                                     ` Murtuza Zabuawala <[email protected]>
  0 siblings, 0 replies; 33+ messages in thread

From: Murtuza Zabuawala @ 2018-04-26 14:20 UTC (permalink / raw)
  To: Joao De Almeida Pereira <[email protected]>; +Cc: Dave Page <[email protected]>; Akshay Joshi <[email protected]>; pgadmin-hackers

Hi Joao,

On Wed, Apr 25, 2018 at 6:55 PM, Joao De Almeida Pereira <
[email protected]> wrote:

> Hi,
> @Murtuza: We didn't notice the issue, can you please advise on what need
> to change to make it work? The only change we did was to make one test pass.
>

I moved to another project so I didn't get a chance to look into the code
but a
s you are aware that ​we are no longer considering given the patch as a fix
for the issue instead someone from the team might fork the ​

​code and add the option in the library itself.​

Regards,
Murtuza


> @Hackers: In our point of view it is never good to fork a library. But if
> he really have to do it, then we should fork it in Github, make our code
> accessible to other people, and we should add it as a dependency on
> package.json
>
>
> Thanks
> Anthony & Joao
>
>
> On Wed, Apr 25, 2018 at 7:14 AM Dave Page <[email protected]> wrote:
>
>> On Wed, Apr 25, 2018 at 12:13 PM, Murtuza Zabuawala <
>> [email protected]> wrote:
>>
>>> Hi Dave,
>>>
>>> On Wed, Apr 25, 2018 at 3:36 PM, Dave Page <[email protected]> wrote:
>>>
>>>> All,
>>>>
>>>> We just had a brief discussion in our EDB sprint planning meeting about
>>>> this. There is a non-zero chance that we're going to have to fork wcDocker
>>>> in the near future, in order to update it to work with jQuery 3. If we do
>>>> that, then it may be significantly easier to fix this issue in that fork
>>>> (perhaps by adding a single lockLayout(bool) function, rather than trying
>>>> to do so from pgAdmin.
>>>>
>>>> I think (unless Murtuza believes that won't help), that we're better
>>>> off holding on this for now until we know if we've had to do that.
>>>>
>>>
>>> ​I don't have any objection forking the code and adding the flag to lock
>>> the panel,  But I'm certain that
>>> we will use the same inbuilt method *panel.moveable(false)* which we
>>> have used right now in the patch to prevent a panel from floating and will
>>> face the same issue again which Akshay mentioned in his last email.
>>>
>>> Let me know if you want me to attach latest patch onto the ticket for
>>> future reference and update the ticket accordingly​.
>>>
>>
>> That's probably a good idea - thanks.
>>
>>
>>>
>>>
>>>> On Wed, Apr 25, 2018 at 10:23 AM, Murtuza Zabuawala <
>>>> [email protected]> wrote:
>>>>
>>>>> Hi Akshay,
>>>>>
>>>>>
>>>>> On Wed, Apr 25, 2018 at 2:37 PM, Akshay Joshi <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Joao/Murtuza
>>>>>>
>>>>>> It break's the functionality, I am able to move "Data output",
>>>>>> "Explain" etc.. panel of Query Tool, even if "Lock layout?" is set to True.
>>>>>>
>>>>>
>>>>> ​It's working properly in v5 patch, Something went wrong while
>>>>> refactoring.​
>>>>>
>>>>> ​
>>>>>
>>>>> Apart from above I have found more issue. Below are the steps to
>>>>>> reproduce:
>>>>>>
>>>>>>    - Set the "Lock layout?" flag to False.
>>>>>>    - Move out Dashboard panel.
>>>>>>    - Set the "Lock layout?" flag to True.
>>>>>>    - Close the Dashboard panel, as layout is locked and empty
>>>>>>    Dashboard panel is still visible. (Refer attached screenshot)
>>>>>>
>>>>>> ​That's because we have set the Panel moveable property to False,
>>>>> they won't auto resize, As discussed earlier if user drag any panel out of
>>>>> panel group it gets render in seprate wcFrame. I think that needs to be
>>>>> taken care by user before they decide to lock the layout, We can not
>>>>> expilcitly set panel's closeable property to False when layout is locked,
>>>>> If we do so user will not be able to close any Query tool, Debugger panels.​
>>>>>  ​
>>>>>
>>>>>
>>>>> On Tue, Apr 24, 2018 at 9:11 PM, Joao De Almeida Pereira <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> haha,
>>>>>>> Just joking, now we have a good version that passes tests and all.
>>>>>>>
>>>>>>> We found out that a test was failing in the patch version 5:
>>>>>>>
>>>>>>> HeadlessChrome 0.0.0 (Linux 0.0.0) Panel when we create a panel and user created panel without defining isMoveable then it should be moveable it should call moveable method with true as argument FAILED
>>>>>>>     Expected false to be true.
>>>>>>>         at UserContext.<anonymous> (regression/javascript/browser/panel_spec.js:12886:38)
>>>>>>>
>>>>>>> ​
>>>>>>> To solve this problem we decided to change the Panel class to match
>>>>>>> what the test say.
>>>>>>>
>>>>>>> Thanks
>>>>>>> Victoria & Joao
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Apr 24, 2018 at 11:08 AM Joao De Almeida Pereira <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>> Apparently the last version was not applying, here is the new
>>>>>>>> version that should apply correctly
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Victoria & Joao
>>>>>>>>
>>>>>>>> On Tue, Apr 24, 2018 at 10:56 AM Joao De Almeida Pereira <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Murtuza,
>>>>>>>>>
>>>>>>>>> We tested the patch and everything looks fine.  We also refactors
>>>>>>>>> some parts to include things like strict equality and using let/const
>>>>>>>>> instead of var.  The updated patch is attached.
>>>>>>>>> In the future, it will be more valuable to have the translation to
>>>>>>>>> ES6 and the feature work in separate commits so it is easier to understand
>>>>>>>>> what changed.
>>>>>>>>>
>>>>>>>>> Sincerely,
>>>>>>>>>
>>>>>>>>> Joao and Victoria
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Apr 24, 2018 at 4:58 AM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> On Tue, Apr 24, 2018 at 1:17 PM, Dave Page <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Akshay, could you review/commit this please?
>>>>>>>>>>>
>>>>>>>>>>> Please also update the release_notes_3_1.rst file when you
>>>>>>>>>>> commit user-visible changes, to make it easier to build the release notes.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>    Sure
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Apr 24, 2018 at 8:45 AM, Murtuza Zabuawala <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>
>>>>>>>>>>>> Please find the updated patch, Now we are able to lock wcFrame
>>>>>>>>>>>> and wcPanel both.
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Regards,
>>>>>>>>>>>> Murtuza Zabuawala
>>>>>>>>>>>> EnterpriseDB: http://www.enterprisedb.com
>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Apr 5, 2018 at 6:32 PM, Robert Eckhardt <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 11:31 PM, Khushboo Vashi <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 8:09 PM, Dave Page <[email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 12:54 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 5:00 PM, Dave Page <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 10:45 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 2:47 PM, Dave Page <
>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Wed, Apr 4, 2018 at 7:20 AM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hi Dave,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 9:03 PM, Dave Page <
>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 12:56 PM, Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Thanks Joao for reviewing.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> PFA updated patch.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 3, 2018 at 1:11 AM, Joao De Almeida
>>>>>>>>>>>>>>>>>>>>>> Pereira <[email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Hello,
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> On Mon, Apr 2, 2018 at 10:07 AM Murtuza Zabuawala <
>>>>>>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> ​Hello,
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Please find updated patch,
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Now layout will be locked after user updates its
>>>>>>>>>>>>>>>>>>>>>>>> preferences, w
>>>>>>>>>>>>>>>>>>>>>>>> e have used ​
>>>>>>>>>>>>>>>>>>>>>>>> templated variable in the javascript file
>>>>>>>>>>>>>>>>>>>>>>>> ​ because we do not have preference module or
>>>>>>>>>>>>>>>>>>>>>>>> preference cache available when the page loads and panels gets rendered,
>>>>>>>>>>>>>>>>>>>>>>>> ​I
>>>>>>>>>>>>>>>>>>>>>>>> ​ also
>>>>>>>>>>>>>>>>>>>>>>>> made changes in JS tests as per Joao's review
>>>>>>>>>>>>>>>>>>>>>>>> comments.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> Looks like everything is working when we change the
>>>>>>>>>>>>>>>>>>>>>>> lock.
>>>>>>>>>>>>>>>>>>>>>>> As a personal preferences I would prefer to see this
>>>>>>>>>>>>>>>>>>>>>>> in at least 2 commits, one that is related to the preference issue and
>>>>>>>>>>>>>>>>>>>>>>> another one that is related to this story.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> All the tests are working, but he linter is failing:
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> /tmp/build/4a5630c2/pivotal-rm-3155/web /tmp/build/4a5630c2
>>>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>>>> ./pgadmin/misc/__init__.py:78: [E303] too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>>>> 1       E303 too many blank lines (2)
>>>>>>>>>>>>>>>>>>>>>>>  <https://gpdb-dev.bosh.pivotalci.info/teams/main/pipelines/pgadmin-feature-branches/jobs/pivotal-rm-3...;
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> 1
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> ​Fixed​
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> @Dave/Pivotal team,
>>>>>>>>>>>>>>>>>>>>>>>> The given patch is working fine for all the
>>>>>>>>>>>>>>>>>>>>>>>> Tabs/Panels (all the panels from main window as well as from Query tool and
>>>>>>>>>>>>>>>>>>>>>>>> Debugger) but I'm facing an issue while handling the Browser tree section,
>>>>>>>>>>>>>>>>>>>>>>>> It is a wcDocer frame
>>>>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcFrame.html;
>>>>>>>>>>>>>>>>>>>>>>>> and not a wcDocker panel
>>>>>>>>>>>>>>>>>>>>>>>> <http://docker.api.webcabin.org/module-wcPanel.html;. Like
>>>>>>>>>>>>>>>>>>>>>>>> wcDocker panel, wcDocker frame do not provide any API so that a developer
>>>>>>>>>>>>>>>>>>>>>>>> can prevent drag-drop functionality on it.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> It's not working fine for me. For example, if I put
>>>>>>>>>>>>>>>>>>>>> the SQL Panel on it's own below the properties/stats panels (so it looks
>>>>>>>>>>>>>>>>>>>>> like pgAdmin 3 used to by default), and then lock the layout, I can un-dock
>>>>>>>>>>>>>>>>>>>>> the SQL panel into a dialogue, but then cannot re-dock it. I can do weird
>>>>>>>>>>>>>>>>>>>>> things with the browser tree as well, probably because it's a frame as you
>>>>>>>>>>>>>>>>>>>>> say.
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> ​That is expected behaviour ​because once you drag the
>>>>>>>>>>>>>>>>>>>> panel out of the group of Panels then it becomes individual Frame, That is
>>>>>>>>>>>>>>>>>>>> what the author of the wcDocker replied on my question,
>>>>>>>>>>>>>>>>>>>> *"A panel must either be initialized as movable or
>>>>>>>>>>>>>>>>>>>> non-movable from the beginning and never changed because it generates a
>>>>>>>>>>>>>>>>>>>> different arrangement of elements depending. This feature should only ever
>>>>>>>>>>>>>>>>>>>> be used within the onCreate method of the panel. I should probably have
>>>>>>>>>>>>>>>>>>>> been more clear about this limitation in the documentation."*
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> So does it become a panel again if a second panel is
>>>>>>>>>>>>>>>>>>> added to the new tab group?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ​No, it stays Frame.​
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> As far as I understand Panel needs a Frame to render
>>>>>>>>>>>>>>>>>> itself if it is not attached to the main docker instance.​
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> There must be some way we can lock a tab that's not part
>>>>>>>>>>>>>>>>>>> of a group.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> At a moment there is no way of ​
>>>>>>>>>>>>>>>>>> locking frames out of the box :(
>>>>>>>>>>>>>>>>>> ​
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hmm, so the question becomes: do we include the lock
>>>>>>>>>>>>>>>>> feature, but rename it to "Lock Tabs" or something similar, or leave it out
>>>>>>>>>>>>>>>>> altogether? It clearly doesn't do everything we want right now.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ​I would say lets include the feature by adding warning
>>>>>>>>>>>>>>>> note that this feature works with default layout only, And I don't think
>>>>>>>>>>>>>>>> most user will try to drag drop Browser panel ​
>>>>>>>>>>>>>>>> anyway, meanwhile I'll check what changes are required in
>>>>>>>>>>>>>>>> main source code to make the Frame lock.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Anyone else have any thoughts on this? Personally I don't
>>>>>>>>>>>>>>> like including half-baked features.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> +1, but we need to find out the way as this feature is
>>>>>>>>>>>>>> requested by many users.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> 100% agree. I can convince my self that this feature request
>>>>>>>>>>>>> has to do with locking panels into a certain layout. I can also convince
>>>>>>>>>>>>> myself that the same request is simple because users are frustrated with
>>>>>>>>>>>>> the fact that the tabs and panes move around and they find that behavior
>>>>>>>>>>>>> annoying.
>>>>>>>>>>>>>
>>>>>>>>>>>>> -- Rob
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Dave Page
>>>>>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Dave Page
>>>>>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>>>>>> Twitter: @pgsnake
>>>>>>>>>>>
>>>>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>
>>>>>>>>>> *Sr. Software Architect *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Akshay Joshi*
>>>>>>
>>>>>> *Sr. Software Architect *
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91
>>>>>> 976-788-8246 <+91%2097678%2088246>*
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Dave Page
>>>> Blog: http://pgsnake.blogspot.com
>>>> Twitter: @pgsnake
>>>>
>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>> The Enterprise PostgreSQL Company
>>>>
>>>
>>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>


^ permalink  raw  reply  [nested|flat] 33+ messages in thread


end of thread, other threads:[~2018-04-26 14:20 UTC | newest]

Thread overview: 33+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2018-03-29 13:15 [pgAdmin4][RM#3155] Allow user to lock the Layout Murtuza Zabuawala <[email protected]>
2018-03-29 13:47 ` Dave Page <[email protected]>
2018-03-29 15:27   ` Joao De Almeida Pereira <[email protected]>
2018-04-02 14:07     ` Murtuza Zabuawala <[email protected]>
2018-04-02 19:41       ` Joao De Almeida Pereira <[email protected]>
2018-04-03 11:56         ` Murtuza Zabuawala <[email protected]>
2018-04-03 15:24           ` Joao De Almeida Pereira <[email protected]>
2018-04-03 15:33           ` Dave Page <[email protected]>
2018-04-04 06:20             ` Murtuza Zabuawala <[email protected]>
2018-04-04 09:17               ` Dave Page <[email protected]>
2018-04-04 09:45                 ` Murtuza Zabuawala <[email protected]>
2018-04-04 11:30                   ` Dave Page <[email protected]>
2018-04-04 11:54                     ` Murtuza Zabuawala <[email protected]>
2018-04-04 14:39                       ` Dave Page <[email protected]>
2018-04-04 14:41                         ` Ashesh Vashi <[email protected]>
2018-04-04 15:46                           ` Victoria Henry <[email protected]>
2018-04-04 15:51                             ` Dave Page <[email protected]>
2018-04-05 03:31                         ` Khushboo Vashi <[email protected]>
2018-04-05 13:02                           ` Robert Eckhardt <[email protected]>
2018-04-24 07:45                             ` Murtuza Zabuawala <[email protected]>
2018-04-24 07:47                               ` Dave Page <[email protected]>
2018-04-24 08:58                                 ` Akshay Joshi <[email protected]>
2018-04-24 14:56                                   ` Joao De Almeida Pereira <[email protected]>
2018-04-24 15:08                                     ` Joao De Almeida Pereira <[email protected]>
2018-04-24 15:41                                       ` Joao De Almeida Pereira <[email protected]>
2018-04-24 16:20                                         ` Murtuza Zabuawala <[email protected]>
2018-04-25 09:07                                         ` Akshay Joshi <[email protected]>
2018-04-25 09:23                                           ` Murtuza Zabuawala <[email protected]>
2018-04-25 10:06                                             ` Dave Page <[email protected]>
2018-04-25 11:13                                               ` Murtuza Zabuawala <[email protected]>
2018-04-25 11:14                                                 ` Dave Page <[email protected]>
2018-04-25 13:25                                                   ` Joao De Almeida Pereira <[email protected]>
2018-04-26 14:20                                                     ` Murtuza Zabuawala <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox