1) Added support for dynamic tab size. Fixes #4231

2) Fixed an issue where a long file name is not visible on the process watcher dialog. Fixes #5950
This commit is contained in:
Nikhil Mohite
2020-11-04 17:45:28 +05:30
committed by Akshay Joshi
parent 749ba4a25c
commit 2793747d3c
35 changed files with 317 additions and 170 deletions

View File

@@ -77,39 +77,6 @@ class DebuggerModule(PgAdminModule):
return scripts
def register_preferences(self):
self.open_in_new_tab = self.preference.register(
'display', 'debugger_new_browser_tab',
gettext("Open in new browser tab"), 'boolean', False,
category_label=PREF_LABEL_DISPLAY,
help_str=gettext('If set to True, the Debugger '
'will be opened in a new browser tab.')
)
self.tab_title = self.preference.register(
'display', 'debugger_tab_title_placeholder',
gettext("Tab title"),
'text', '%FUNCTION%(%ARGS%)',
category_label=PREF_LABEL_DISPLAY,
help_str=gettext(
'Supported placeholders are %FUNCTION%, %ARGS%, %SCHEMA% and'
' %DATABASE%. Users can provide any string with or '
'without placeholders of their choice. The blank title will be'
' revert back to the default title with placeholders.'
)
)
self.tab_title = self.preference.register(
'display', 'debugger_tab_title_placeholder',
gettext("Debugger tab title placeholder"),
'text', '%FUNCTION%/%SCHEMA%/%DATABASE%',
category_label=PREF_LABEL_DISPLAY,
help_str=gettext(
'Supported placeholders: FUNCTION, SCHEMA and DATABASE. '
'You can also provide any string with or '
'without placeholders'
)
)
self.preference.register(
'keyboard_shortcuts', 'btn_start',
gettext('Accesskey (Continue/Start)'), 'keyboardshortcut',

View File

@@ -334,8 +334,7 @@ define([
var t = pgBrowser.tree,
i = item || t.selected(),
d = i && i.length == 1 ? t.itemData(i) : undefined,
node = d && pgBrowser.Nodes[d._type],
self = this;
node = d && pgBrowser.Nodes[d._type];
if (!d)
return;
@@ -410,8 +409,9 @@ define([
var url = url_for('debugger.direct', {
'trans_id': res.data.debuggerTransId,
});
if (self.preferences.debugger_new_browser_tab) {
var browser_preferences = pgBrowser.get_preferences_for_module('browser');
var open_new_tab = browser_preferences.new_browser_tab_open;
if (open_new_tab && open_new_tab.includes('debugger')) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
@@ -427,7 +427,7 @@ define([
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
debuggerUtils.setDebuggerTitle(panel, self.preferences, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label);
debuggerUtils.setDebuggerTitle(panel, browser_preferences, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label);
panel.focus();
@@ -448,7 +448,8 @@ define([
// We will execute this function when user clicks on the OK button
function(evt, value) {
if(value) {
debuggerUtils.setDebuggerTitle(panel, self.preferences, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label, value);
let browser_preferences = pgBrowser.get_preferences_for_module('browser');
debuggerUtils.setDebuggerTitle(panel, browser_preferences, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label, value);
}
},
// We will execute this function when user clicks on the Cancel
@@ -478,8 +479,7 @@ define([
var t = pgBrowser.tree,
i = item || t.selected(),
d = i && i.length == 1 ? t.itemData(i) : undefined,
node = d && pgBrowser.Nodes[d._type],
self = this;
node = d && pgBrowser.Nodes[d._type];
if (!d)
return;
@@ -549,7 +549,9 @@ define([
'trans_id': trans_id,
});
if (self.preferences.debugger_new_browser_tab) {
var browser_preferences = pgBrowser.get_preferences_for_module('browser');
var open_new_tab = browser_preferences.new_browser_tab_open;
if (open_new_tab && open_new_tab.includes('debugger')) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
@@ -565,7 +567,7 @@ define([
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
debuggerUtils.setDebuggerTitle(panel, self.preferences, newTreeInfo.function.label, newTreeInfo.schema.label, newTreeInfo.database.label);
debuggerUtils.setDebuggerTitle(panel, browser_preferences, newTreeInfo.function.label, newTreeInfo.schema.label, newTreeInfo.database.label);
panel.focus();
@@ -586,7 +588,8 @@ define([
// We will execute this function when user clicks on the OK button
function(evt, value) {
if(value) {
debuggerUtils.setDebuggerTitle(panel, self.preferences, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label, value);
let browser_preferences = pgBrowser.get_preferences_for_module('browser');
debuggerUtils.setDebuggerTitle(panel, browser_preferences, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label, value);
}
},
// We will execute this function when user clicks on the Cancel

View File

@@ -10,9 +10,11 @@
define([
'sources/gettext', 'sources/url_for', 'jquery', 'underscore', 'backbone',
'pgadmin.alertifyjs', 'sources/pgadmin', 'pgadmin.browser',
'pgadmin.backgrid', 'sources/window', 'pgadmin.tools.debugger.utils', 'wcdocker',
'pgadmin.backgrid', 'sources/window', 'pgadmin.tools.debugger.utils',
'tools/datagrid/static/js/show_query_tool', 'wcdocker',
], function(
gettext, url_for, $, _, Backbone, Alertify, pgAdmin, pgBrowser, Backgrid, pgWindow, debuggerUtils
gettext, url_for, $, _, Backbone, Alertify, pgAdmin, pgBrowser, Backgrid,
pgWindow, debuggerUtils, showQueryTool
) {
var wcDocker = window.wcDocker;
@@ -759,7 +761,9 @@ define([
}
);
if (self.preferences.debugger_new_browser_tab) {
var browserPreferences = pgWindow.default.pgAdmin.Browser.get_preferences_for_module('browser');
var open_new_tab = browserPreferences.new_browser_tab_open;
if (open_new_tab && open_new_tab.includes('debugger')) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
@@ -773,7 +777,10 @@ define([
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
debuggerUtils.setDebuggerTitle(panel, self.preferences, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label);
var browser_pref = pgBrowser.get_preferences_for_module('browser');
debuggerUtils.setDebuggerTitle(panel, browser_pref, treeInfo.function.label, treeInfo.schema.label, treeInfo.database.label);
showQueryTool._set_dynamic_tab(pgBrowser, browser_pref['dynamic_tabs']);
panel.focus();

View File

@@ -6,6 +6,7 @@
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////////////////
import {generateTitle} from '../../../datagrid/static/js/datagrid_panel_title';
function setFocusToDebuggerEditor(editor, command) {
const TAB = 9;
@@ -59,12 +60,15 @@ function setDebuggerTitle(panel, preferences, function_name, schema_name, databa
args = args.concat(args_list[0]);
}
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%FUNCTION%'), function_name);
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%ARGS%'), args);
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%SCHEMA%'), schema_name);
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%DATABASE%'), database_name);
panel.title('<span>'+ _.escape(debugger_title_placeholder) +'</span>');
var title_data = {
'function_name': function_name,
'args': args,
'schema': schema_name,
'database': database_name,
'type': 'debugger',
};
var title = generateTitle(debugger_title_placeholder, title_data);
panel.title('<span>'+ _.escape(title) +'</span>');
}
function get_function_name(function_name) {

View File

@@ -1835,7 +1835,9 @@ define([
/* If debugger is in a new tab, event fired is not available
* instead, a poller is set up who will check
*/
if(self.preferences.debugger_new_browser_tab) {
var browser_preferences = browser.get_preferences_for_module('browser');
var open_new_tab = browser_preferences.new_browser_tab_open;
if (open_new_tab && open_new_tab.includes('debugger')) {
pgBrowser.bind_beforeunload();
let pollIntervalId = setInterval(()=>{
if(pgWindow.default.pgAdmin) {