diff --git a/web/package.json b/web/package.json
index 2602d07..b777765 100644
--- a/web/package.json
+++ b/web/package.json
@@ -107,7 +107,7 @@
"tempusdominus-core": "^5.0.3",
"underscore": "^1.9.1",
"watchify": "~3.11.1",
- "webcabin-docker": "git+https://github.com/EnterpriseDB/wcDocker/#8298a57d875dce51a4d3707c68a1a2b82f2e6c03",
+ "webcabin-docker": "git+https://github.com/EnterpriseDB/wcDocker/#c4a3398b89588408dc705895675bce7bd7660d36",
"wkx": "^0.4.6"
},
"scripts": {
diff --git a/web/pgadmin/browser/static/js/frame.js b/web/pgadmin/browser/static/js/frame.js
index 2ced098..82d9939 100644
--- a/web/pgadmin/browser/static/js/frame.js
+++ b/web/pgadmin/browser/static/js/frame.js
@@ -30,6 +30,7 @@ define([
height: 600,
showTitle: true,
isClosable: true,
+ isRenamable: true,
isPrivate: false,
url: '',
icon: '',
@@ -52,6 +53,7 @@ define([
myPanel.icon(that.icon);
myPanel.closeable(!!that.isCloseable);
+ myPanel.renamable(that.isRenamable);
var $frameArea = $('
');
myPanel.layout().addItem($frameArea);
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js
index bb4d333..5a413e5 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js
@@ -6,7 +6,6 @@
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
-
define('pgadmin.datagrid', [
'sources/gettext', 'sources/url_for', 'jquery', 'underscore',
'pgadmin.alertifyjs', 'sources/pgadmin', 'bundled_codemirror',
@@ -181,6 +180,7 @@ define('pgadmin.datagrid', [
name: 'frm_datagrid',
showTitle: true,
isCloseable: true,
+ isRenameable: true,
isPrivate: true,
url: 'about:blank',
});
@@ -259,6 +259,36 @@ define('pgadmin.datagrid', [
});
});
+ // Listen on the panelRename event.
+ queryToolPanel.on(wcDocker.EVENT.RENAME, function(panel_data) {
+ alertify.prompt(
+ gettext('Title'), panel_data.$titleText[0].textContent,
+ // We will execute this function when user clicks on the OK button
+ function(evt, value) {
+ if(value) {
+
+ var is_file = false;
+ if(panel_data.$titleText[0].innerHTML.includes('File - ')) {
+ is_file = true;
+ }
+ var selected_item = pgBrowser.treeMenu.selected();
+ var panel_titles = '';
+
+ if(is_query_tool) {
+ panel_titles = panelTitleFunc.getPanelTitle(pgBrowser, selected_item, value);
+ } else {
+ panel_titles = showData.generateDatagridTitle(pgBrowser, selected_item, value);
+ }
+ // Set title to the selected tab.
+ panelTitleFunc.setQueryToolDockerTitle(queryToolPanel, is_query_tool, _.unescape(panel_titles), is_file);
+ }
+ },
+ // 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 Title')});
+ });
+
var openQueryToolURL = function(j) {
// add spinner element
let $spinner_el =
diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js b/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
index f92c64a..3ddcfad 100644
--- a/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
+++ b/web/pgadmin/tools/datagrid/static/js/datagrid_panel_title.js
@@ -19,7 +19,7 @@ function isServerInformationAvailable(parentData) {
return parentData.server === undefined;
}
-export function getPanelTitle(pgBrowser, selected_item=null) {
+export function getPanelTitle(pgBrowser, selected_item=null, custom_title=null) {
var preferences = pgBrowser.get_preferences_for_module('sqleditor');
if(selected_item == null) {
selected_item = pgBrowser.treeMenu.selected();
@@ -32,8 +32,13 @@ export function getPanelTitle(pgBrowser, selected_item=null) {
}
const db_label = getDatabaseLabel(parentData);
+ var qt_title_placeholder = '';
+ if (custom_title) {
+ qt_title_placeholder = custom_title;
+ } else {
+ qt_title_placeholder = preferences['qt_tab_title_placeholder'];
+ }
- var qt_title_placeholder = preferences['qt_tab_title_placeholder'];
var placeholders = qt_title_placeholder.split('%');
var title = '';
placeholders.forEach(function(placeholder) {
diff --git a/web/pgadmin/tools/datagrid/static/js/show_data.js b/web/pgadmin/tools/datagrid/static/js/show_data.js
index 401af2b..75371f7 100644
--- a/web/pgadmin/tools/datagrid/static/js/show_data.js
+++ b/web/pgadmin/tools/datagrid/static/js/show_data.js
@@ -278,7 +278,7 @@ function hasSchemaOrCatalogOrViewInformation(parentData) {
parentData.catalog !== undefined;
}
-export function generateDatagridTitle(pgBrowser, aciTreeIdentifier) {
+export function generateDatagridTitle(pgBrowser, aciTreeIdentifier, custom_title=null) {
//const baseTitle = getPanelTitle(pgBrowser, aciTreeIdentifier);
var preferences = pgBrowser.get_preferences_for_module('sqleditor');
const parentData = getTreeNodeHierarchyFromIdentifier.call(
@@ -290,7 +290,13 @@ export function generateDatagridTitle(pgBrowser, aciTreeIdentifier) {
const db_label = getDatabaseLabel(parentData);
const node = pgBrowser.treeMenu.findNodeByDomElement(aciTreeIdentifier);
- var dtg_title_placeholder = preferences['vw_edt_tab_title_placeholder'];
+ var dtg_title_placeholder = '';
+ if(custom_title) {
+ dtg_title_placeholder = custom_title;
+ } else {
+ dtg_title_placeholder = preferences['vw_edt_tab_title_placeholder'];
+ }
+
var placeholders = dtg_title_placeholder.split('%');
var title = '';
placeholders.forEach(function(placeholder) {
diff --git a/web/pgadmin/tools/debugger/static/js/debugger.js b/web/pgadmin/tools/debugger/static/js/debugger.js
index b638347..950c4d5 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger.js
@@ -441,6 +441,22 @@ define([
method: 'DELETE',
});
});
+
+ // Panel Rename event
+ panel.on(wcDocker.EVENT.RENAME, function(panel_data) {
+ Alertify.prompt(
+ gettext('Title'), 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 Title')});
+ });
}
})
.fail(function(xhr) {
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
index 2caf387..6dae56d 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js
@@ -787,6 +787,22 @@ define([
method: 'DELETE',
});
});
+
+ // Panel Rename event
+ panel.on(wcDocker.EVENT.RENAME, function(panel_data) {
+ Alertify.prompt(
+ gettext('Title'), 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 Title')});
+ });
}
var _url;
diff --git a/web/pgadmin/tools/debugger/static/js/debugger_utils.js b/web/pgadmin/tools/debugger/static/js/debugger_utils.js
index 718c439..5525bfc 100644
--- a/web/pgadmin/tools/debugger/static/js/debugger_utils.js
+++ b/web/pgadmin/tools/debugger/static/js/debugger_utils.js
@@ -42,8 +42,14 @@ function getProcedureId(treeInfoObject) {
return objectId;
}
-function setDebuggerTitle(panel, preferences, function_name, schema_name, database_name) {
- var debugger_title_placeholder = preferences['debugger_tab_title_placeholder'];
+function setDebuggerTitle(panel, preferences, function_name, schema_name, database_name, custom_title) {
+ var debugger_title_placeholder = '';
+ if(custom_title) {
+ debugger_title_placeholder = custom_title;
+ } else {
+ debugger_title_placeholder = preferences['debugger_tab_title_placeholder'];
+ }
+
var placeholders = debugger_title_placeholder.split('%');
var title = '';