From d0310b669e0a01513c9e8996436df57697af7524 Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Wed, 9 Sep 2020 20:10:56 +0530 Subject: [PATCH] Fixed an issue where clicking on the 'Generate script' button shows a forever spinner due to pop up blocker. Fixes #5815 --- docs/en_US/release_notes_4_26.rst | 1 + .../tools/datagrid/static/js/datagrid.js | 9 ++++-- .../datagrid/static/js/show_query_tool.js | 29 ++++++++++--------- .../schema_diff/static/js/schema_diff_ui.js | 4 +-- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/docs/en_US/release_notes_4_26.rst b/docs/en_US/release_notes_4_26.rst index 3fe0b01e4..835eb05b7 100644 --- a/docs/en_US/release_notes_4_26.rst +++ b/docs/en_US/release_notes_4_26.rst @@ -39,4 +39,5 @@ Bug fixes | `Issue #5773 `_ - Fixed an issue where the application ignores the fixed port configuration value. | `Issue #5775 `_ - Ensure that 'setup-web.sh' should work in Debian 10. | `Issue #5794 `_ - Fixed excessive CPU usage by stopping the indefinite growth of the graph dataset. +| `Issue #5815 `_ - Fixed an issue where clicking on the 'Generate script' button shows a forever spinner due to pop up blocker. | `Issue #5820 `_ - Fixed an issue while refreshing Resource Group. \ No newline at end of file diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js index 640b325c4..bb4d333ca 100644 --- a/web/pgadmin/tools/datagrid/static/js/datagrid.js +++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js @@ -234,8 +234,12 @@ define('pgadmin.datagrid', [ if (self.preferences.new_browser_tab) { var newWin = window.open('', '_blank'); - newWin.document.write(queryToolForm); - newWin.document.title = panel_title; + if(newWin) { + newWin.document.write(queryToolForm); + newWin.document.title = panel_title; + } else { + return false; + } } else { /* On successfully initialization find the dashboard panel, * create new panel and add it to the dashboard panel. @@ -283,6 +287,7 @@ define('pgadmin.datagrid', [ openQueryToolURL(queryToolPanel); } + return true; }, }, Backbone.Events); diff --git a/web/pgadmin/tools/datagrid/static/js/show_query_tool.js b/web/pgadmin/tools/datagrid/static/js/show_query_tool.js index 3e7205f3f..2bc1d2522 100644 --- a/web/pgadmin/tools/datagrid/static/js/show_query_tool.js +++ b/web/pgadmin/tools/datagrid/static/js/show_query_tool.js @@ -64,19 +64,10 @@ export function showQueryTool(datagrid, pgBrowser, alertify, url, aciTreeIdentif } const gridUrl = generateUrl(transId, queryToolTitle, parentData); - - let retVal = datagrid.launch_grid(transId, gridUrl, true, queryToolTitle, sURL); - if(!retVal) { - alertify.alert( - gettext('Query tool launch error'), - gettext( - 'Please allow the pop-ups for this site to perform the desired action. If the main window of pgAdmin is closed then close this window and open a new pgAdmin session.' - ) - ); - } + launchDataGrid(datagrid, transId, gridUrl, queryToolTitle, sURL, alertify); } -export function generateScript(parentData, datagrid) { +export function generateScript(parentData, datagrid, alertify) { const queryToolTitle = `${parentData.database}/${parentData.user}@${parentData.server}`; const transId = getRandomInt(1, 9999999); @@ -90,6 +81,18 @@ export function generateScript(parentData, datagrid) { +`&server_type=${parentData.stype}` +`&did=${parentData.did}`; - datagrid.launch_grid(transId, url_endpoint, true, queryToolTitle, ''); - + launchDataGrid(datagrid, transId, url_endpoint, queryToolTitle, '', alertify); +} + +export function launchDataGrid(datagrid, transId, gridUrl, queryToolTitle, sURL, alertify) { + let retVal = datagrid.launch_grid(transId, gridUrl, true, queryToolTitle, sURL); + + if(!retVal) { + alertify.alert( + gettext('Query tool launch error'), + gettext( + 'Please allow the pop-ups for this site to perform the desired action. If the main window of pgAdmin is closed then close this window and open a new pgAdmin session.' + ) + ); + } } diff --git a/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js b/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js index 228271518..2e037e47d 100644 --- a/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js +++ b/web/pgadmin/tools/schema_diff/static/js/schema_diff_ui.js @@ -239,7 +239,7 @@ export default class SchemaDiffUI { } pgWindow.pgAdmin.ddl_diff = generated_script; - generateScript(server_data, pgWindow.pgAdmin.DataGrid); + generateScript(server_data, pgWindow.pgAdmin.DataGrid, Alertify); } $('#diff_fetching_data').find('.schema-diff-busy-text').text(''); @@ -485,7 +485,7 @@ export default class SchemaDiffUI { contentType: 'application/json', }) .done(function (res) { - let msg = res.data.compare_msg; + let msg = _.escape(res.data.compare_msg); if (res.data.diff_percentage != 100) { msg = msg + gettext(' (this may take a few minutes)...'); }