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]> 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:47 Dave Page <[email protected]> parent: Murtuza Zabuawala <[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 15:27 Joao De Almeida Pereira <[email protected]> parent: Dave Page <[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-04-02 14:07 Murtuza Zabuawala <[email protected]> parent: 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 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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..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-04-02 19:41 Joao De Almeida Pereira <[email protected]> parent: 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-04-03 11:56 Murtuza Zabuawala <[email protected]> parent: Joao De Almeida Pereira <[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-04-03 15:24 Joao De Almeida Pereira <[email protected]> parent: Murtuza Zabuawala <[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-04-03 15:33 Dave Page <[email protected]> parent: 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-04-04 06:20 Murtuza Zabuawala <[email protected]> parent: 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-04-04 09:17 Dave Page <[email protected]> parent: 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-04-04 09:45 Murtuza Zabuawala <[email protected]> parent: 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-04-04 11:30 Dave Page <[email protected]> parent: 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-04-04 11:54 Murtuza Zabuawala <[email protected]> parent: 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-04-04 14:39 Dave Page <[email protected]> parent: Murtuza Zabuawala <[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-04-04 14:41 Ashesh Vashi <[email protected]> parent: Dave Page <[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-04-04 15:46 Victoria Henry <[email protected]> parent: Ashesh Vashi <[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-04-04 15:51 Dave Page <[email protected]> parent: Victoria Henry <[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-04-05 03:31 Khushboo Vashi <[email protected]> parent: Dave Page <[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-04-05 13:02 Robert Eckhardt <[email protected]> parent: Khushboo Vashi <[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-04-24 07:45 Murtuza Zabuawala <[email protected]> parent: Robert Eckhardt <[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-04-24 07:47 Dave Page <[email protected]> parent: Murtuza Zabuawala <[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-04-24 08:58 Akshay Joshi <[email protected]> parent: Dave Page <[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-04-24 14:56 Joao De Almeida Pereira <[email protected]> parent: Akshay Joshi <[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-04-24 15:08 Joao De Almeida Pereira <[email protected]> parent: 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 z%F#!Oh<=Bz$*=F^bK2*F#Sv>e9*4Wjk8b|m9jeUQAOoiyn!0od(&oZQX-|IbH;9S) z;O|HG?tN%Dzj8{xF?!5OGzOF&?;Y>Mr2}#BMh#t~>qlYQ<W+fka2s7?G}RI~tR`NK zzwX{d8cx&KOI0s3d+{{R&Q523X{!;D9ms$#3340Hvr5O<TM<+@9B8^0!@2X&^JIRb zE2Bo9FJ->boCxPdVZtou!H#pET5@my{B&#m%)XZciGa{8n<DeK<?g}Bbra)|yr4C; zhTaLZW2Btio-I58LYfsrvnIK#IJ(gTqJ5B5v1UO9#7WR1A-^9&;_z&qQHm+#5Mp)< z!BK<&*lr(O1S5ztwQnY6L12iHM`#g(MVYhh;JzN{rB<U{&47cqy!&e3ApcB|jC=&w zmdLSYGm%-^dIoVzSYIT){bOog!wfoqdXJ7Ju^A6pNgf}L_7Fupy0yC+;)<f@a3jAi z_T(Jhz&Eh8N5j}7mcHl*;e7}4jDeQzF^kvawTH0p4n+f|d~n=?5r*Z810WyCZCj3! z{626#R~Y((M@%6$;-Oed>_KOEMzc7Qemfl5cuZSWA=?QuUcTY}2thZB&HD9;FXsru z<lX_*KJ7&u2Sh6_;g8^QD8Ca&*wyyU%9+CTu#{#R76p0v@fzz7=hA3Jc`0}~P;sd( z6RBMs2^PGLzT5Hw>7hmb1A}VvrXQBYfqc4@KOlP2sK@!@U6c50K&NwQ!fAA0o=lJF ztbO_L4wrg145lMd8w>YqK7mrpLa$y1QIJY6<r_F6Vp?Znny)NSFV#Hy>S847Z$Mme zdwk?}=VIx<D(h#ukg=iWV4_i%J_$5pS=fFkbtZohhu?Orlkq0zf_+T&<w{(|>vkmH zd%G#T!U)pP_KnP@wGM+Y!f(xegU}@T$uVzgCz|mTukKa$Ut7W7YgK)esv88H9Gn_F zJlgY_rms7tnI3xg3hNq`mZap-t|7_iF|Rxg1(=3^B$?F@F1~(ac&~2@BX0WrKs4-d zwvn$;h~0pR*9#s>>M02~=n=SOH)r_I9LdP1XiUG<RG)#@9Fql8gP$i(H(yG=D0Zad zHevsOHQJZ$Ls3&ZUHq_B@AEhO_LxHR94Eh&`vl$x0(;t4-`Yc-MJFaB<(M!xPhB85 zetN!i1n&FO*5ZO@!KGSP$R5e@7in&}&KfemRY!ZRf0bJE4UO*YN?W$1uhQm`4-lD= z>1{ep^BR3P|Km4E@Mp=31nXBZDR&57>#du9$&tMmOgE-Q*1Xz(0$-EGm-qL5`e6J9 z6@;QG+WiyC#+Fv`aFL|)uJz|LV&@{#tl^%dnflVTKVLVTwMHkM9*y}K+kJi%J5b^? zLZ-9zXmi>i#+T!7K<kf&k&6u5Bt&N|iA)sfqUePler{#5$q?hX)FoX<ht_34#DBVz zQC0lNiLR&A&a5ZD?(n&ZNoek}L-48AX{ATg8bMF6r=GuD&qTYg)BN^-@1{)=xxr;C zhH%=_;x4?&5aa)YQZ(G$K1TLGYc`wK4d|p<qCA7|R3zCVql<VDJ^^zWMOM|=Q)}aR zMxF=X-d<k5yegc$a^6|2@au+RI(@(l3#$bI+w9L@U$SK(ZxV2R1<2-}eN}DA4qi=u zA*y*|^(t91esTVBgk3m$BkCILYsvn_V`ZLpaVl@eH@SE&ytf*(k6ahG=%fWJkQfx? zY>O)n{z{Dw_nb7j!X$tAljvBzbaG>t9sAoSi0_BM0~Jq7C$exq@%TS27I<gqR(J>- zTAgMt&L5;M?=2=N+qcuFKx3|A&LF(>bGgo5|2%K8HNuNrXw$lD#AMT~*z~}!AWkpn zM-sz68{zNu`_DgSBQ9`h%{Ka&Q_<HxEAcx$@CV<)Gq;R4yy*<*+>1mKCZV00dw0Fq z|K0rqL}v=R>qkxo#mN^D^TlI+`uzD7K*!(BM9|Ukq^72xjQGHrd{-@H#RjZpvvM+a zgWBQRG17HE#~;b3Y8IWRc<xc6MS5R*?ih;y(>gyxLuB#EDxBaRz$?y9OvOK(>}yry z8-W|~92C%9yOup}Y00|f@7=yn>b+;@wEL)|05$NHU9<_l7MJxpSVOa?`Dc)d!O93$ z8j3-t30lWsi&Jols@!wWs`+B+e|`!J88yyvA|@4k32E5i(e8Gms=$u4Fg&F3^r?ol zV&9E*-qq>X;V-<pxn0f(IaRvr{YrdC3*`kpZ!w4PrW%X^Nk9MS*(U8JWv(C95!ezI zOPvOM9mtfo1g5O<&`QRW^7DLh!+0lipLMUT!;jt`tDhA;j+cA@!`pM6^K(Aay3T30 zv{1l0o=%?Kp?27#Ex%dUqU-D6B-Pq}jNL)f;_#B_f3F#J6*6f1o>2SSZc%aAC2*SP zP1}*2op<^)sWi5h#iUhw)<KG?;}s5RkB*wcKi3=i0_;AzIx188Bmfk@ivVFvo^Y(W z)v*Ffx|x@s47;=fPmWA)7#5Hmsw6q}SB*=pVI5lM%Ya%`1tOI4mqt4o`$nGA_4(w_ zCQ_zd?5y|YxB*;NQqfs@4efM1!nvCg!;3Kum{ImnqJR0XN*Y)f!d+e<rKIk9Y^k|h zqd!kA(LwOiwp}P+z9!$ZC)=QV`27i4D@1{~@Y=O&A~DAOSOpZ=5)1)?d*_`7L$5)# zTW)m}gX^bj=hbLtHBHUYWk9%h0&CcpTZQjk!zFw4;t=m?9|9-$F6akx;bOgdDSbD7 zsK4yNx(PwZL|PeeF%?#QBg!?dtJe3QeQQPdQ(g#JpkJ<v6&M4#!f<u6kw@zA2NM&I zjWK3H>%M0pAy6#hx$(7B8JvQ{$|=^9NEqAol(UE0<WZ)8OdWuGzu=Qu7B!!Voh#EE zwut54%T1^V&XJ>G8Qh$z(ZME4G6Vqa%JuK3&cM~9xoHjlpWWW=6kWx?vj9YAa_~t< z1fS>?=nFTjd{#P>cmVZ+Ek|T7H~us6<DyVkSy5<eVNF3eko@1ZXidT2om_uv*(rI~ za=_s3LfhQXLhPk9HV%nye8v<3yV3l?=u=wHP_Ck6%<~9TU=WtD_<v-*cRbbq|NqZ% z>~-uy99wqw=7=H^%HBz4W@Ohvh%z%nGK%cIcOg4_@0C505PpwmpWpjcuh;i-=?{O1 zbDZb%`M8hU?RrBh?v`k%j&;lewi}na+B3k9RuTJ|eE<f~*@okgZX8t7QLpG+O$0;T z5wzkLgCMb#N;F%}tO)~ZN{l?0V+*!#P~BalS@l#Ce#a2qvjw~bkz13MT_9(Z6O7jf zJQdQ?{Gix8P>c*0BT(C!G3wFSgw)ojpmSLlS}(KyssKETt4~VlfW-Z~Y-wcy;ldVB zzr_NZyyhfmqE&$}<HONU|EB7-g|K^+s9m>>k=v(RU<7RsCMW^YKe_+Y3@gjyCwy%V z%V@g$3xT=ZWvN;jE|U3ZuoFlvQEnNx)bo&UMjk4IXHpiJh1vQxb;&zBG3pSq(oyQ9 zR8@&ffS!E`jmv=0lQJV~)_();W|NFkedD2kavc2o7;$f*ZJk_)6d2S%R!m4*E3Rr` z^Es4ipwLvV{FAW5l%Dat+3_>$XBa3c$C5py#xClXdo#I-$2oRBp=O|49S|;fk>D?b z4d;j%HbN?)6)-9Db=Y3_fG*GP{MgE-KMf5Gnz|cFmION45CuD58xW^-z|IM2&VaBh z@@g&#fNxOvBb)MjqkBeEJ!J&pKc(m|Z_~&Axy=-qG}4;BxZ`d!xvbxdh{;<DJ(tax zdN0i@)2c5an0$J#<OX|y-DNEwpE?r&2*pk2MmIhCjO}0y6rnoYq&&<{trK8IX-f32 zLEm-8XYqFRVTIvxGcMz6;AhKq!?rB)LNe2mE9kdgAwk0<p=rn!LIr$$w`(*zZ9^Lm z;b8-Yj`dk~^3yoPbjtUtIm@$~xGe4y`l9O0d9#Dhp*_YikfoRL=85t*{7eVQMA_Il z3hm^9>i6%bKV?Ap%)qZ<bJP5+J6X>i$kt@326CY#S&mT2+BrNmwh;MnD+~N2#0Q1H z&T=z20j2oZCyT{;s~y=V?5tgn*5@Z;U2$;VJg#z?4_KlSwhoS1o@Z!*r!N8zX)MHf zo-Rbl^t3e%M^8W59?<tYJJfZ1S_^P>_dXc`b_5qQ(ms+$8KceLayii|^{canELiZB z^E3<kmkP%X3=UxL>^E1_RrQ>K>4wXub9-mfu-y`{>OHv`<KkYNP^$ZK%z(*dqz2Cw zA&%f*W2C;KX9Wohok~lcMlVq;I4pNk)#!YmmwEeOHBNx!q#h`pmZ6X{0Lw$wRJlqO z-JhS*Oj9l`-}UmqADeBPzY?4AuX(rva#l!uIYs;3jUFH_1l`a|??|^sWiHTb612!J z=H14&D&Hf(#iO9$KvM`5V`1(AL+XYEWwIE`AG@`4&psX7$_t6(6a>lK$dkR%&+*ci zK&7wa{M;RJ3EXblV%Mrdn}>-UToDqYjJ4@cL-1dsOU0BqQa#c?wSNX_O-9p5;YiqM zfKPG{dV?0m@RC;K)@Mq8_B6Sdx~)pd8{?%P;@*+s(ds?n+jJ#kaLe}ya#Cy=r`Ibt z!wi^Y=$#&VJjJxsL@>g~%Foy{NAsVfjSq%uReXa8aZb;$2qqcGbhfChb=L_Q!s5C$ zSMgkkcdWZzGED7$tm4+t#4>I3QRH%-+(Ud2te!Q8adu3TT)1sIR@Iu{#ax4um#1uk zK`TBRDLlO7(dI;&<b&hJi&MGdF4OY`xuK__-u!*ON7Elh7^W@`3!iE?V;1iMV$4S~ zG~1_v?djU#^uSU+@l}6iOX_jrRdWH|Zo8Q}&uReU402<cetL1{a{8!p<J7Ic9by{& zWHOlOj}Pv=T;GSNTg2U&LDfPn_#|qmd6;-La<1(mGa(FrXQlbnt4J1)SFaA)5V^mY zOZC%D4^KetyLodr>aVs@1KwGE`#UQ6NFYqfuimUx4&dF1-@WYbddFJU+(sXVAA)1Q z8C8@M{24aFID|H&;Su^N?~}%tCxACh6a_2B>QdgCC_igm=q8@}6ls=^@@4)0N>q=+ zpD69h#G<iuf>@ps=goVfRXOGkYq)XgZR*|4w1KW-3GtP$4qtg$hrzjtKoqA;N9(Wd zv+k46CvSvp(k)O`<|dc0EEX7;arx}sM{vK+B18L0JDWa<uc!Tz+=RcB;|akNMkC38 z8kYQOm1QDP{_BpN<G|Q@CL{4<0-J!|elD^|rTyVKm`ui!^nS!540oT~*NijWcYxKO zy?a&3vnx^5ZJ4Tid7V<2aj2LwkCB^uEy;A!%reeu)c>S%-)X~8%7o=+lOGmAa>q5x zJAY10#8sFHnnEiQ(|$V=Je!p;alb_&Sry1AvMqe|&VHrVTe=rwowSt|YX)5;c12b? z+67BHHXO}Nl5T%(>)cxJDU}={af7WQ^n$EZN38s|%H;Z_`$s19<?0ypVZUU;d7g%= z|9M--WT1BTpu2u~9y@h~V1<`^P1fmd!fa_}w>P6WPN&+GN0;zyEH=BNY4diy=ZL5P z|Cno$M4GRe@y1}MfBE${za~6S=gy*-FvvO;|NK~14MF@RIwfAGPI0(tqo1z~1-V|E z)t~bI|JGOHKyFqtmym^tyMSd}5n6+BI=ZWoM}4xha#FbZFh%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-04-24 15:41 Joao De Almeida Pereira <[email protected]> parent: Joao De Almeida Pereira <[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-04-24 16:20 Murtuza Zabuawala <[email protected]> parent: Joao De Almeida Pereira <[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-04-25 09:07 Akshay Joshi <[email protected]> parent: Joao De Almeida Pereira <[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-04-25 09:23 Murtuza Zabuawala <[email protected]> parent: Akshay Joshi <[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-04-25 10:06 Dave Page <[email protected]> parent: 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-04-25 11:13 Murtuza Zabuawala <[email protected]> parent: 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-04-25 11:14 Dave Page <[email protected]> parent: Murtuza Zabuawala <[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-04-25 13:25 Joao De Almeida Pereira <[email protected]> parent: Dave Page <[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-04-26 14:20 Murtuza Zabuawala <[email protected]> parent: Joao De Almeida Pereira <[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