mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed the following issues:
RM-4232: 1. If the user adds a percentage (other than for placeholders) then it is stripped off. 2. Backslash is getting removed in the connection string if we provide the backslash(\) in placeholders or the database name contains it. 3. If the user added only spaces( )in placeholders it is not getting reset to default values. RM-4230: 1. Rename panel option is not working in the debugger. 2. Added Rename panel for schema diff. Fixes #4232 #4230
This commit is contained in:
committed by
Akshay Joshi
parent
892fb83907
commit
b5f9fffadd
@@ -202,6 +202,12 @@ def save(pid):
|
|||||||
"""
|
"""
|
||||||
data = request.form if request.form else json.loads(request.data.decode())
|
data = request.form if request.form else json.loads(request.data.decode())
|
||||||
|
|
||||||
|
if data['name'] in ['vw_edt_tab_title_placeholder',
|
||||||
|
'qt_tab_title_placeholder',
|
||||||
|
'debugger_tab_title_placeholder']:
|
||||||
|
if data['value'].isspace():
|
||||||
|
data['value'] = ''
|
||||||
|
|
||||||
res, msg = Preferences.save(
|
res, msg = Preferences.save(
|
||||||
data['mid'], data['category_id'], data['id'], data['value'])
|
data['mid'], data['category_id'], data['id'], data['value'])
|
||||||
sgm.get_nodes(sgm)
|
sgm.get_nodes(sgm)
|
||||||
|
|||||||
@@ -201,22 +201,17 @@ let NewConnectionDialog = {
|
|||||||
let tab_title = '';
|
let tab_title = '';
|
||||||
|
|
||||||
var qt_title_placeholder = preferences['qt_tab_title_placeholder'];
|
var qt_title_placeholder = preferences['qt_tab_title_placeholder'];
|
||||||
var placeholders = qt_title_placeholder.split('%');
|
qt_title_placeholder = qt_title_placeholder.replace(new RegExp('%DATABASE%'), selected_database_name);
|
||||||
placeholders.forEach(function(placeholder) {
|
|
||||||
if(placeholder == 'DATABASE'){
|
if(newConnCollectionModel['role']) {
|
||||||
tab_title = tab_title.concat(selected_database_name);
|
qt_title_placeholder = qt_title_placeholder.replace(new RegExp('%USERNAME%'), newConnCollectionModel['role']);
|
||||||
} else if(placeholder == 'USERNAME') {
|
} else {
|
||||||
if(newConnCollectionModel['role']) {
|
qt_title_placeholder = qt_title_placeholder.replace(new RegExp('%USERNAME%'), newConnCollectionModel['user']);
|
||||||
tab_title = tab_title.concat(newConnCollectionModel['role']);
|
}
|
||||||
} else {
|
|
||||||
tab_title = tab_title.concat(newConnCollectionModel['user']);
|
qt_title_placeholder = qt_title_placeholder.replace(new RegExp('%SERVER%'), response.server_name);
|
||||||
}
|
|
||||||
} else if(placeholder == 'SERVER') {
|
tab_title = qt_title_placeholder;
|
||||||
tab_title = tab_title.concat(response.server_name);
|
|
||||||
} else{
|
|
||||||
tab_title = tab_title.concat(placeholder);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(!newConnCollectionModel['role']) {
|
if(!newConnCollectionModel['role']) {
|
||||||
newConnCollectionModel['role'] = null;
|
newConnCollectionModel['role'] = null;
|
||||||
|
|||||||
@@ -224,10 +224,11 @@ define('pgadmin.datagrid', [
|
|||||||
queryToolForm +=`<textarea name="sql_filter" hidden>${sql_filter}</textarea>`;
|
queryToolForm +=`<textarea name="sql_filter" hidden>${sql_filter}</textarea>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Escape backslashes as it is stripped by back end */
|
||||||
queryToolForm +=`
|
queryToolForm +=`
|
||||||
</form>
|
</form>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById("title").value = "${_.escape(panel_title)}";
|
document.getElementById("title").value = "${_.escape(panel_title.replace('\\', '\\\\'))}";
|
||||||
document.getElementById("queryToolForm").submit();
|
document.getElementById("queryToolForm").submit();
|
||||||
</script>
|
</script>
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -39,20 +39,11 @@ export function getPanelTitle(pgBrowser, selected_item=null, custom_title=null)
|
|||||||
qt_title_placeholder = preferences['qt_tab_title_placeholder'];
|
qt_title_placeholder = preferences['qt_tab_title_placeholder'];
|
||||||
}
|
}
|
||||||
|
|
||||||
var placeholders = qt_title_placeholder.split('%');
|
qt_title_placeholder = qt_title_placeholder.replace(new RegExp('%DATABASE%'), db_label);
|
||||||
var title = '';
|
qt_title_placeholder = qt_title_placeholder.replace(new RegExp('%USERNAME%'), parentData.server.user.name);
|
||||||
placeholders.forEach(function(placeholder) {
|
qt_title_placeholder = qt_title_placeholder.replace(new RegExp('%SERVER%'), parentData.server.label);
|
||||||
if(placeholder == 'DATABASE'){
|
|
||||||
title = title.concat(db_label);
|
return _.escape(qt_title_placeholder);
|
||||||
} else if(placeholder == 'USERNAME') {
|
|
||||||
title = title.concat(parentData.server.user.name);
|
|
||||||
} else if(placeholder == 'SERVER') {
|
|
||||||
title = title.concat(parentData.server.label);
|
|
||||||
} else{
|
|
||||||
title = title.concat(placeholder);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return _.escape(title);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setQueryToolDockerTitle(panel, is_query_tool, panel_title, is_file) {
|
export function setQueryToolDockerTitle(panel, is_query_tool, panel_title, is_file) {
|
||||||
|
|||||||
@@ -297,23 +297,11 @@ export function generateDatagridTitle(pgBrowser, aciTreeIdentifier, custom_title
|
|||||||
dtg_title_placeholder = preferences['vw_edt_tab_title_placeholder'];
|
dtg_title_placeholder = preferences['vw_edt_tab_title_placeholder'];
|
||||||
}
|
}
|
||||||
|
|
||||||
var placeholders = dtg_title_placeholder.split('%');
|
dtg_title_placeholder = dtg_title_placeholder.replace(new RegExp('%DATABASE%'), db_label);
|
||||||
var title = '';
|
dtg_title_placeholder = dtg_title_placeholder.replace(new RegExp('%USERNAME%'), parentData.server.user.name);
|
||||||
placeholders.forEach(function(placeholder) {
|
dtg_title_placeholder = dtg_title_placeholder.replace(new RegExp('%SERVER%'), parentData.server.label);
|
||||||
if(placeholder == 'DATABASE'){
|
dtg_title_placeholder = dtg_title_placeholder.replace(new RegExp('%SCHEMA%'), namespaceName);
|
||||||
title = title.concat(db_label);
|
dtg_title_placeholder = dtg_title_placeholder.replace(new RegExp('%TABLE%'), node.getData().label);
|
||||||
} else if(placeholder == 'USERNAME') {
|
|
||||||
title = title.concat(parentData.server.user.name);
|
|
||||||
} else if(placeholder == 'SERVER') {
|
|
||||||
title = title.concat(parentData.server.label);
|
|
||||||
} else if(placeholder == 'SCHEMA') {
|
|
||||||
title = title.concat(namespaceName);
|
|
||||||
} else if(placeholder == 'TABLE') {
|
|
||||||
title = title.concat(node.getData().label);
|
|
||||||
} else{
|
|
||||||
title = title.concat(placeholder);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return _.escape(title);
|
return _.escape(dtg_title_placeholder);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -579,6 +579,21 @@ define([
|
|||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Panel Rename event
|
||||||
|
panel.on(wcDocker.EVENT.RENAME, function(panel_data) {
|
||||||
|
Alertify.prompt('', panel_data.$titleText[0].textContent,
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// We will execute this function when user clicks on the Cancel
|
||||||
|
// button. Do nothing just close it.
|
||||||
|
function(evt) { evt.cancel = false; }
|
||||||
|
).set({'title': gettext('Rename Panel')});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.fail(function(e) {
|
.fail(function(e) {
|
||||||
|
|||||||
@@ -50,33 +50,21 @@ function setDebuggerTitle(panel, preferences, function_name, schema_name, databa
|
|||||||
debugger_title_placeholder = preferences['debugger_tab_title_placeholder'];
|
debugger_title_placeholder = preferences['debugger_tab_title_placeholder'];
|
||||||
}
|
}
|
||||||
|
|
||||||
var placeholders = debugger_title_placeholder.split('%');
|
var function_data = function_name.split('(');
|
||||||
|
function_name = get_function_name(function_name);
|
||||||
|
|
||||||
var title = '';
|
var args_list = function_data[function_data.length - 1].split(')');
|
||||||
placeholders.forEach(function(placeholder) {
|
var args = '';
|
||||||
if(placeholder == 'FUNCTION'){
|
if(args_list.length > 0) {
|
||||||
var func_name = '';
|
args = args.concat(args_list[0]);
|
||||||
func_name = get_function_name(function_name);
|
}
|
||||||
|
|
||||||
title = title.concat(func_name);
|
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%FUNCTION%'), function_name);
|
||||||
} else if(placeholder == 'ARGS') {
|
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%ARGS%'), args);
|
||||||
var args = '';
|
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%SCHEMA%'), schema_name);
|
||||||
var function_data = function_name.split('(');
|
debugger_title_placeholder = debugger_title_placeholder.replace(new RegExp('%DATABASE%'), database_name);
|
||||||
var args_list = function_data[function_data.length - 1].split(')');
|
|
||||||
if(args_list.length > 0) {
|
panel.title('<span>'+ _.escape(debugger_title_placeholder) +'</span>');
|
||||||
args = args.concat(args_list[0]);
|
|
||||||
}
|
|
||||||
function_name = get_function_name(function_name);
|
|
||||||
title = title.concat(args);
|
|
||||||
} else if(placeholder == 'SCHEMA'){
|
|
||||||
title = title.concat(schema_name);
|
|
||||||
} else if(placeholder == 'DATABASE'){
|
|
||||||
title = title.concat(database_name);
|
|
||||||
} else if (placeholder != 'ARGS' ){
|
|
||||||
title = title.concat(placeholder);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
panel.title('<span>'+ _.escape(title) +'</span>');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_function_name(function_name) {
|
function get_function_name(function_name) {
|
||||||
|
|||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
define('pgadmin.schemadiff', [
|
define('pgadmin.schemadiff', [
|
||||||
'sources/gettext', 'sources/url_for', 'jquery', 'underscore',
|
'sources/gettext', 'sources/url_for', 'jquery', 'underscore',
|
||||||
'sources/pgadmin', 'sources/csrf', 'pgadmin.browser.node',
|
'sources/pgadmin', 'sources/csrf', 'pgadmin.alertifyjs', 'pgadmin.browser.node',
|
||||||
], function(
|
], function(
|
||||||
gettext, url_for, $, _, pgAdmin, csrfToken
|
gettext, url_for, $, _, pgAdmin, csrfToken, Alertify,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var wcDocker = window.wcDocker,
|
var wcDocker = window.wcDocker,
|
||||||
@@ -113,6 +113,21 @@ define('pgadmin.schemadiff', [
|
|||||||
var propertiesPanel = pgBrowser.docker.findPanels('properties'),
|
var propertiesPanel = pgBrowser.docker.findPanels('properties'),
|
||||||
schemaDiffPanel = pgBrowser.docker.addPanel('frm_schemadiff', wcDocker.DOCK.STACKED, propertiesPanel[0]);
|
schemaDiffPanel = pgBrowser.docker.addPanel('frm_schemadiff', wcDocker.DOCK.STACKED, propertiesPanel[0]);
|
||||||
|
|
||||||
|
// Rename schema diff tab
|
||||||
|
schemaDiffPanel.on(wcDocker.EVENT.RENAME, function(panel_data) {
|
||||||
|
Alertify.prompt('', panel_data.$titleText[0].textContent,
|
||||||
|
// We will execute this function when user clicks on the OK button
|
||||||
|
function(evt, value) {
|
||||||
|
if(value) {
|
||||||
|
schemaDiffPanel.title('<span>'+ _.escape(value) +'</span>');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// We will execute this function when user clicks on the Cancel
|
||||||
|
// button. Do nothing just close it.
|
||||||
|
function(evt) { evt.cancel = false; }
|
||||||
|
).set({'title': gettext('Rename Panel')});
|
||||||
|
});
|
||||||
|
|
||||||
// Set panel title and icon
|
// Set panel title and icon
|
||||||
schemaDiffPanel.title('<span title="'+panel_tooltip+'">'+panel_title+'</span>');
|
schemaDiffPanel.title('<span title="'+panel_tooltip+'">'+panel_title+'</span>');
|
||||||
schemaDiffPanel.icon('pg-font-icon icon-schema-diff');
|
schemaDiffPanel.icon('pg-font-icon icon-schema-diff');
|
||||||
|
|||||||
@@ -108,7 +108,6 @@ export default class SchemaDiffUI {
|
|||||||
this.resize_panels();
|
this.resize_panels();
|
||||||
}.bind(self), 200);
|
}.bind(self), 200);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
raise_error_on_fail(alert_title, xhr) {
|
raise_error_on_fail(alert_title, xhr) {
|
||||||
|
|||||||
Reference in New Issue
Block a user