Hi Hackers, Please find the updated patch for upgrading the jQuery version to 3.x. The patch is only for pgAdmin4 code changes replacing old deprecated functions with new replacement. We need to look into external libraries used for any vulnerabilities. Request you to kindly review.
Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB Software Solutions | Pune "Don't Complain about Heat, Plant a tree" On Mon, May 14, 2018 at 1:23 PM, Aditya Toshniwal < aditya.toshni...@enterprisedb.com> wrote: > Hi Hackers, > > Please hold on with the patch. Will send the updated patch soon. > Apologies. > > > > Thanks and Regards, > Aditya Toshniwal > Software Engineer | EnterpriseDB Software Solutions | Pune > "Don't Complain about Heat, Plant a tree" > > On Mon, May 14, 2018 at 12:52 PM, Aditya Toshniwal <aditya.toshniwal@ > enterprisedb.com> wrote: > >> Hi Hackers, >> >> PFA patch for upgrading jQuery version to 3.3.1 from current version >> 1.12.4. Patch includes replacing deprecated functions of jquery to latest >> one. >> Kindly review. >> >> Thanks and Regards, >> Aditya Toshniwal >> Software Engineer | EnterpriseDB Software Solutions | Pune >> "Don't Complain about Heat, Plant a tree" >> > >
diff --git a/libraries.txt b/libraries.txt index 17f85cf..4a33ef2 100644 --- a/libraries.txt +++ b/libraries.txt @@ -5,7 +5,7 @@ Library Version Licence URL ======= ======= ======= === QT 4.6.2+ LGPL v2.1/3 http://www.qt.io/ Bootstrap 3.3.4 MIT http://getbootstrap.com/ -jQuery 1.11.1 MIT http://jquery.com/ +jQuery 3.3.1 MIT http://jquery.com/ Modernizr 2.6.2 MIT/BSD http://modernizr.com/ AlertifyJS 1.7.1 MIT http://alertifyjs.com/ *** Do not update - changed to GPL3 in 1.8.0 *** CodeMirror 5.14.2 MIT http://codemirror.net/ diff --git a/web/package.json b/web/package.json index b9953b6..6ccc4ee 100644 --- a/web/package.json +++ b/web/package.json @@ -69,7 +69,7 @@ "immutability-helper": "^2.2.0", "imports-loader": "^0.7.1", "ip-address": "^5.8.9", - "jquery": "^1.12.4", + "jquery": "3.3.1", "jquery-contextmenu": "^2.6.4", "jquery-ui": "^1.12.1", "moment": "^2.20.1", diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/static/js/column.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/static/js/column.js index 72b6eb0..3eac530 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/static/js/column.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/static/js/column.js @@ -287,7 +287,7 @@ define('pgadmin.node.column', [ var command = new Backgrid.Command({key: 'Tab', keyCode: 9, which: 9}); self.model.trigger('backgrid:edited', self.model, self.column, command); - next_cell.focus(); + next_cell.trigger('focus'); } }, 20); }, diff --git a/web/pgadmin/browser/server_groups/servers/static/js/privilege.js b/web/pgadmin/browser/server_groups/servers/static/js/privilege.js index 64557a0..6758bf6 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/privilege.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/privilege.js @@ -381,10 +381,10 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform', 'header': true, })); } - self.$el.find('input[type=checkbox]').first().focus(); + self.$el.find('input[type=checkbox]').first().trigger('focus'); // Since blur event does not bubble we need to explicitly call parent's blur event. $(self.$el.find('input[type=checkbox]')).on('blur',function() { - self.$el.blur(); + self.$el.trigger('blur'); }); // Make row visible in when entering in edit mode. diff --git a/web/pgadmin/browser/server_groups/servers/static/js/variable.js b/web/pgadmin/browser/server_groups/servers/static/js/variable.js index 2c5bb07..9e48b4f 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/variable.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/variable.js @@ -395,7 +395,7 @@ define([ // Add button callback if (!(data.disabled || data.canAdd == false)) { - $gridBody.find('button.add').first().click(function(e) { + $gridBody.find('button.add').first().on('click',(e) => { e.preventDefault(); var canAddRow = _.isFunction(data.canAddRow) ? data.canAddRow.apply(self, [self.model]) : true; diff --git a/web/pgadmin/browser/static/js/browser.js b/web/pgadmin/browser/static/js/browser.js index d969348..b26738c 100644 --- a/web/pgadmin/browser/static/js/browser.js +++ b/web/pgadmin/browser/static/js/browser.js @@ -1609,7 +1609,7 @@ define('pgadmin.browser', [ jsonResp = ( contentType && contentType.indexOf('application/json') == 0 && - $.parseJSON(xhr.responseText) + JSON.parse(xhr.responseText) ) || {}; if (xhr.status == 410 && jsonResp.success == 0) { diff --git a/web/pgadmin/browser/static/js/keyboard.js b/web/pgadmin/browser/static/js/keyboard.js index e4e1da1..371faa5 100644 --- a/web/pgadmin/browser/static/js/keyboard.js +++ b/web/pgadmin/browser/static/js/keyboard.js @@ -142,18 +142,18 @@ _.extend(pgBrowser.keyboardNavigation, { bindMainMenuUpDown: function(event, combo) { // Handle Sub-menus if (combo === 'up' && $(event.target).parent().prev().prev('.dropdown-submenu').length > 0) { - $(event.target).parent().prev().prev('.dropdown-submenu').find('a:first').focus(); + $(event.target).parent().prev().prev('.dropdown-submenu').find('a:first').trigger('focus'); } else { if ($(event.target).parent().hasClass('dropdown-submenu')) { $(event.target).parent().parent().parent().find('a:first').dropdown('toggle'); - $(event.target).parent().parent().children().eq(2).find('a:first').focus(); + $(event.target).parent().parent().children().eq(2).find('a:first').trigger('focus'); } } }, bindLeftTree: function() { const tree = this.getTreeDetails(); - $('#tree').focus(); + $('#tree').trigger('focus'); tree.t.focus(tree.i); tree.t.select(tree.i); }, @@ -219,7 +219,7 @@ _.extend(pgBrowser.keyboardNavigation, { const top = $(event.srcElement).find('.aciTreeEntry').position().top + 70; tree.t.blur(tree.i); - $('#tree').blur(); + $('#tree').trigger('blur'); // Call context menu and set position tree.i.children().contextMenu({x: left, y: top}); }, diff --git a/web/pgadmin/browser/static/js/menu.js b/web/pgadmin/browser/static/js/menu.js index db3b92a..d236a89 100644 --- a/web/pgadmin/browser/static/js/menu.js +++ b/web/pgadmin/browser/static/js/menu.js @@ -95,10 +95,10 @@ define([ element.find('i').addClass('font-white'); element.find('i').removeClass('font-gray-4'); - span.mouseover(function() { + span.on('mouseover',() => { element.addClass('bg-gray-5'); }); - span.mouseout(function() { + span.on('mouseout',() => { element.removeClass('bg-gray-5'); }); }, diff --git a/web/pgadmin/browser/static/js/node.js b/web/pgadmin/browser/static/js/node.js index ad58248..460ab03 100644 --- a/web/pgadmin/browser/static/js/node.js +++ b/web/pgadmin/browser/static/js/node.js @@ -734,7 +734,7 @@ define('pgadmin.browser.node', [ /* Error from the server */ if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) { try { - var data = $.parseJSON(jqx.responseText); + var data = JSON.parse(jqx.responseText); msg = data.errormsg; } catch (e) { console.warn(e.stack || e); @@ -1140,7 +1140,7 @@ define('pgadmin.browser.node', [ icon: 'fa fa-lg fa-pencil-square-o', disabled: !that.canEdit, register: function(btn) { - btn.click(function() { + btn.on('click',() => { onEdit(); }); }, @@ -1154,7 +1154,7 @@ define('pgadmin.browser.node', [ icon: 'fa fa-lg fa-info', disabled: (that.sqlAlterHelp == '' && that.sqlCreateHelp == '') ? true : false, register: function(btn) { - btn.click(function() { + btn.on('click',() => { onSqlHelp(); }); }, @@ -1359,7 +1359,7 @@ define('pgadmin.browser.node', [ icon: 'fa fa-lg fa-info', disabled: (that.sqlAlterHelp == '' && that.sqlCreateHelp == '') ? true : false, register: function(btn) { - btn.click(function() { + btn.on('click',() => { onSqlHelp(); }); }, @@ -1371,7 +1371,7 @@ define('pgadmin.browser.node', [ icon: 'fa fa-lg fa-question', disabled: (that.dialogHelp == '') ? true : false, register: function(btn) { - btn.click(function() { + btn.on('click',() => { onDialogHelp(); }); }, @@ -1384,7 +1384,7 @@ define('pgadmin.browser.node', [ disabled: true, register: function(btn) { // Save the changes - btn.click(function() { + btn.on('click',() => { onSave.call(this, view, btn); }); }, @@ -1396,7 +1396,7 @@ define('pgadmin.browser.node', [ icon: 'fa fa-lg fa-close', disabled: false, register: function(btn) { - btn.click(function() { + btn.on('click',() => { // Removing the action-mode panel.$container.removeAttr('action-mode'); onCancelFunc.call(arguments); @@ -1410,7 +1410,7 @@ define('pgadmin.browser.node', [ icon: 'fa fa-lg fa-recycle', disabled: true, register: function(btn) { - btn.click(function() { + btn.on('click',() => { setTimeout(function() { editFunc.call(); }, 0); diff --git a/web/pgadmin/dashboard/static/js/dashboard.js b/web/pgadmin/dashboard/static/js/dashboard.js index 686cbf2..5c812bf 100644 --- a/web/pgadmin/dashboard/static/js/dashboard.js +++ b/web/pgadmin/dashboard/static/js/dashboard.js @@ -63,9 +63,9 @@ define('pgadmin.dashboard', [ // This will refresh the grid var refresh_grid = function() { if (is_server_dashboard) { - $('#btn_server_activity_refresh').click(); + $('#btn_server_activity_refresh').trigger('click'); } else if (is_database_dashboard) { - $('#btn_database_activity_refresh').click(); + $('#btn_database_activity_refresh').trigger('click'); } }; @@ -139,7 +139,7 @@ define('pgadmin.dashboard', [ ); this.delegateEvents(); if (this.grabFocus) - this.$el.focus(); + this.$el.trigger('focus'); return this; }, }); @@ -969,7 +969,7 @@ define('pgadmin.dashboard', [ }); // Handle button clicks - $('button').click(function() { + $('button').on('click',() => { switch (this.id) { case 'btn_server_activity_refresh': pgAdmin.Dashboard.render_grid_data(div_server_activity); @@ -1290,7 +1290,7 @@ define('pgadmin.dashboard', [ }); // Handle button clicks - $('button').click(function() { + $('button').on('click',() => { switch (this.id) { case 'btn_database_activity_refresh': pgAdmin.Dashboard.render_grid_data(div_database_activity); diff --git a/web/pgadmin/misc/file_manager/static/js/file_manager.js b/web/pgadmin/misc/file_manager/static/js/file_manager.js index 10de1ea..11fa2e7 100644 --- a/web/pgadmin/misc/file_manager/static/js/file_manager.js +++ b/web/pgadmin/misc/file_manager/static/js/file_manager.js @@ -574,7 +574,7 @@ define('misc.file_manager', [ $('.file_manager_ok').addClass('disabled'); $('.replace_file, .fm_dimmer').show(); - $yesBtn.click(function() { + $yesBtn.on('click',() => { $('.replace_file, .fm_dimmer').hide(); $yesBtn.off(); $noBtn.off(); @@ -586,7 +586,7 @@ define('misc.file_manager', [ $('.file_manager_ok').removeClass('disabled'); }); - $noBtn.click(function() { + $noBtn.on('click',() => { $('.replace_file, .fm_dimmer').hide(); $yesBtn.off(); $noBtn.off(); diff --git a/web/pgadmin/misc/file_manager/static/js/utility.js b/web/pgadmin/misc/file_manager/static/js/utility.js index 249b0fe..ce3cd17 100755 --- a/web/pgadmin/misc/file_manager/static/js/utility.js +++ b/web/pgadmin/misc/file_manager/static/js/utility.js @@ -133,13 +133,13 @@ define([ if (!has_capability(data, 'delete') || pgAdmin.FileUtils.hideButtons()) { $('.file_manager').find('button.delete').hide(); } else { - $('.file_manager').find('button.delete').click(function() { + $('.file_manager').find('button.delete').on('click',() => { // hide dimmer $('.fileinfo .delete_item, .fm_dimmer').show(); }); // take action based on pressed button yes or no - $('.fileinfo .delete_item button.btn_yes').unbind().on('click', function() { + $('.fileinfo .delete_item button.btn_yes').off().on('click', function() { var path; if ($('.fileinfo').data('view') == 'grid') { path = decodeURI($('.fileinfo').find('#contents li.selected .clip span').attr('data-alt')); @@ -168,7 +168,7 @@ define([ if (!has_capability(data, 'download') || pgAdmin.FileUtils.hideButtons()) { $('.file_manager').find('button.download').hide(); } else { - $('.file_manager').find('button.download').unbind().click(function() { + $('.file_manager').find('button.download').off().on('click',() => { var path; if ($('.fileinfo').data('view') == 'grid') { path = $('.fileinfo li.selected').find('.clip span').attr('data-alt'); @@ -266,7 +266,7 @@ define([ data.Filename = newName; // UnBind toolbar functions. - $('.fileinfo').find('button.rename, button.delete, button.download').unbind(); + $('.fileinfo').find('button.rename, button.delete, button.download').off(); Alertify.success(lg.successful_rename); } else { @@ -443,7 +443,7 @@ define([ } // navigate to directory or path when clicked on breadcrumbs - $('.file_manager a.breadcrumbs').unbind().on('click', function() { + $('.file_manager a.breadcrumbs').off().on('click', function() { var curr_path = $(this).attr('data-path'), current_dir = $(this).html(), move_to = curr_path.substring( @@ -669,7 +669,7 @@ define([ $('.fileinfo .file_listing').html(result); // rename file/folder - $('.file_manager button.rename').unbind().on('click', function(e) { + $('.file_manager button.rename').off().on('click', function(e) { if ($('.fileinfo').data('view') == 'grid') { e.stopPropagation(); @@ -681,11 +681,11 @@ define([ newvalue = decodeURI(orig_value); } - $this.find('input').toggle().val(newvalue).focus(); + $this.find('input').toggle().val(newvalue).trigger('focus'); $this.find('span').toggle(); // Rename folder/file on pressing enter key - $('.file_manager').unbind().on('keyup', function(e) { + $('.file_manager').off().on('keyup', function(e) { if (e.keyCode == 13) { e.stopPropagation(); $('.fileinfo #contents li.selected p').find( @@ -705,11 +705,11 @@ define([ newvalue = decodeURI(orig_value); } - $this.find('input').toggle().val(newvalue).focus(); + $this.find('input').toggle().val(newvalue).trigger('focus'); $this.find('span').toggle(); // Rename folder/file on pressing enter key - $('.file_manager').unbind().on('keyup', function(e) { + $('.file_manager').off().on('keyup', function(e) { if (e.keyCode == 13) { e.stopPropagation(); $('.fileinfo table#contents tr.selected td p').find( @@ -866,12 +866,12 @@ define([ } else { var is_valid_file = getFileInfo(path); if (is_valid_file && check_file_capability(e, data_cap, 'grid')) { - $('.file_manager_ok').click(); + $('.file_manager_ok').trigger('click'); } } }); - $('.fileinfo').find('#contents li').click(function(e) { + $('.fileinfo').find('#contents li').on('click',(e) => { e.stopPropagation(); var path = decodeURI($(this).find('.clip span').attr('data-alt')), is_protected = $(this).find( @@ -976,7 +976,7 @@ define([ if ( is_valid_file && check_file_capability(e, data_cap, 'table') ) { - $('.file_manager_ok').click(); + $('.file_manager_ok').trigger('click'); } } }); @@ -1131,7 +1131,7 @@ define([ // If user have preference to show hidden files if (config.options.show_hidden_files) { setTimeout(function() { - $('#show_hidden').click(); + $('#show_hidden').trigger('click'); }, 10); } // handle show hidden files functionality @@ -1199,7 +1199,7 @@ define([ ).on( 'click', function(e) { - $('#uploader .filemanager-btn-group').unbind().on( + $('#uploader .filemanager-btn-group').off().on( 'click', function() { $('.fileinfo .delete_item, .fileinfo .replace_file, .fileinfo .fm_dimmer').hide(); @@ -1221,7 +1221,7 @@ define([ }); // re-render the home view - $('.file_manager .home').click(function() { + $('.file_manager .home').on('click',() => { var currentViewMode = $('.fileinfo').data('view'); $('.fileinfo').data('view', currentViewMode); getFolderInfo('/'); @@ -1229,7 +1229,7 @@ define([ }); // Go one directory back - $('.file_manager .level-up').click(function() { + $('.file_manager .level-up').on('click',() => { var b = $('.currentpath').val(); // Enable/Disable level up button enab_dis_level_up(); @@ -1253,7 +1253,7 @@ define([ }); // set buttons to switch between grid and list views. - $('.file_manager .grid').click(function() { + $('.file_manager .grid').on('click',() => { setViewButtonsFor('grid'); $('.fileinfo').data('view', 'grid'); enable_disable_btn(); @@ -1262,7 +1262,7 @@ define([ }); // Show list mode - $('.file_manager .list').click(function() { + $('.file_manager .list').on('click',() => { setViewButtonsFor('list'); $('.fileinfo').data('view', 'list'); enable_disable_btn(); @@ -1387,7 +1387,7 @@ define([ $('.upload').remove(); $('.create').before('<button value="Upload" type="button" title="Upload File" name="upload" id="upload" class="btn fa fa-upload upload" tabindex="6"><span></span></button> '); - $('#uploader .upload').unbind().click(function() { + $('#uploader .upload').off().on('click',() => { // we create prompt var msg = '<div id="dropzone-container">' + '<button class="fa fa-times dz_cross_btn" tabindex="7"></button>' + @@ -1443,7 +1443,7 @@ define([ acceptedFiles: acceptFiles, autoProcessQueue: true, init: function() { - $('.dz_cross_btn').unbind().on('click', function() { + $('.dz_cross_btn').off().on('click', function() { $('.file_manager .upload_file').toggle(); }); }, @@ -1533,7 +1533,7 @@ define([ $('.storage_dialog #uploader .input-path').attr('data-path', path); // create new folder - $('.create').unbind().click(function() { + $('.create').off().on('click',() => { var foldername = lg.new_folder; var $file_element, $file_element_list, diff --git a/web/pgadmin/misc/static/explain/js/explain.js b/web/pgadmin/misc/static/explain/js/explain.js index f406c3c..61cf8f9 100644 --- a/web/pgadmin/misc/static/explain/js/explain.js +++ b/web/pgadmin/misc/static/explain/js/explain.js @@ -576,7 +576,7 @@ define('pgadmin.misc.explain', [ // Draw tooltip var image_data = this.toJSON(); - image.mouseover(function() { + image.on('mouseover',() => { // Empty the tooltip content if it has any and add new data toolTipContainer.empty(); @@ -618,7 +618,7 @@ define('pgadmin.misc.explain', [ }); // Remove tooltip when mouse is out from node's area - image.mouseout(function() { + image.on('mouseout',() => { toolTipContainer.empty(); toolTipContainer.css({ 'opacity': '0', @@ -851,7 +851,7 @@ define('pgadmin.misc.explain', [ 'height': h * curr_zoom_factor, }); planDiv.data('zoom-factor', curr_zoom_factor); - zoomInBtn.blur(); + zoomInBtn.trigger('blur'); }); zoomOutBtn.on('click', function() { @@ -867,7 +867,7 @@ define('pgadmin.misc.explain', [ 'height': h * curr_zoom_factor, }); planDiv.data('zoom-factor', curr_zoom_factor); - zoomOutBtn.blur(); + zoomOutBtn.trigger('blur'); }); zoomToNormal.on('click', function() { @@ -883,7 +883,7 @@ define('pgadmin.misc.explain', [ 'height': h * curr_zoom_factor, }); planDiv.data('zoom-factor', curr_zoom_factor); - zoomToNormal.blur(); + zoomToNormal.trigger('blur'); }); }); diff --git a/web/pgadmin/static/js/alertify.pgadmin.defaults.js b/web/pgadmin/static/js/alertify.pgadmin.defaults.js index 887d08f..7c49980 100644 --- a/web/pgadmin/static/js/alertify.pgadmin.defaults.js +++ b/web/pgadmin/static/js/alertify.pgadmin.defaults.js @@ -96,7 +96,7 @@ define([ if (contentType) { try { if (contentType.indexOf('application/json') == 0) { - var resp = $.parseJSON(msg); + var resp = JSON.parse(msg); if (resp.result != null && (!resp.errormsg || resp.errormsg == '') && onJSONResult && typeof(onJSONResult) == 'function') { @@ -253,7 +253,7 @@ define([ var contentType = xhr.getResponseHeader('Content-Type'), jsonResp = contentType && contentType.indexOf('application/json') == 0 && - $.parseJSON(xhr.responseText); + JSON.parse(xhr.responseText); if ( jsonResp && ( diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js index 97c52e1..c7b9849 100644 --- a/web/pgadmin/static/js/backform.pgadmin.js +++ b/web/pgadmin/static/js/backform.pgadmin.js @@ -1081,7 +1081,7 @@ define([ // Add button callback if (!(data.disabled || data.canAdd == false)) { - $dialog.find('button.add').first().click(function(e) { + $dialog.find('button.add').first().on('click',(e) => { e.preventDefault(); var canAddRow = _.isFunction(data.canAddRow) ? data.canAddRow.apply(self, [self.model]) : true; @@ -1361,7 +1361,7 @@ define([ var $dialog = gridBody.append(subNodeGrid); // Add button callback - $dialog.find('button.add').click(function(e) { + $dialog.find('button.add').on('click',(e) => { e.preventDefault(); var canAddRow = _.isFunction(data.canAddRow) ? data.canAddRow.apply(self, [self.model]) : true; @@ -1379,7 +1379,7 @@ define([ grid.insertRow({}); var newRow = $(grid.body.rows[collection.length - 1].$el); - newRow.attr('class', 'new').click(function() { + newRow.attr('class', 'new').on('click',() => { $(this).attr('class', 'editable'); }); $(newRow).pgMakeVisible('backform-tab'); @@ -2367,7 +2367,7 @@ define([ if (widget) { setTimeout(function() { picker.toggle(); - self.$el.find('input').first().blur(); + self.$el.find('input').first().trigger('blur'); }, 10); } else { setTimeout(function() { @@ -2380,7 +2380,7 @@ define([ // blur the input setTimeout( function() { - self.$el.find('input').first().blur(); + self.$el.find('input').first().trigger('blur'); }, 10 ); } @@ -2390,7 +2390,7 @@ define([ var picker = this; setTimeout(function() { picker.toggle(); - self.$el.find('input').first().blur(); + self.$el.find('input').first().trigger('blur'); }, 10); } }, diff --git a/web/pgadmin/static/js/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid.pgadmin.js index eb4516a..2e87fbf 100644 --- a/web/pgadmin/static/js/backgrid.pgadmin.js +++ b/web/pgadmin/static/js/backgrid.pgadmin.js @@ -348,7 +348,7 @@ define([ this.$el.html('<i class=\'fa fa-pencil-square-o\' title=\'' + _('Edit row') + '\'></i>'); this.delegateEvents(); if (this.grabFocus) - this.$el.focus(); + this.$el.trigger('focus'); return this; }, exitEditMode: function() { @@ -465,7 +465,7 @@ define([ enterEditMode: function() { this.$el.addClass('editor'); - $(this.$el.find('input')).focus(); + $(this.$el.find('input')).trigger('focus'); }, exitEditMode: function() { @@ -537,7 +537,7 @@ define([ }); self.model.trigger('backgrid:edited', self.model, self.column, command); - gotoCell.focus(); + gotoCell.trigger('focus'); } }, 20); } diff --git a/web/pgadmin/static/js/keyboard_shortcuts.js b/web/pgadmin/static/js/keyboard_shortcuts.js index 4619456..996a591 100644 --- a/web/pgadmin/static/js/keyboard_shortcuts.js +++ b/web/pgadmin/static/js/keyboard_shortcuts.js @@ -84,7 +84,7 @@ function keyboardShortcutsDebugger($el, event, user_defined_shortcuts) { if(panel_content.length) { $input = $(panel_content).find('td.editable:first'); if($input.length) - $input.click(); + $input.trigger('click'); } } else if(this.validateShortcutKeys(next_panel_keys, event)) { this._stopEventPropagation(event); diff --git a/web/pgadmin/static/js/sqleditor/execute_query.js b/web/pgadmin/static/js/sqleditor/execute_query.js index 333a3a2..687a64b 100644 --- a/web/pgadmin/static/js/sqleditor/execute_query.js +++ b/web/pgadmin/static/js/sqleditor/execute_query.js @@ -13,6 +13,18 @@ import url_for from '../url_for'; import axios from 'axios'; import * as httpErrorHandler from './query_tool_http_error_handler'; + +/* jQuery has removed selector property in version 3.x + * To allow JS test cases to run, the below function is + * used to set the selector property + */ +function setPropAndSelector(selector, propName, propVal) { + let tmpObj = $(selector); + tmpObj['selector'] = selector; + tmpObj.prop(propName,propVal); + return tmpObj; +} + class LoadingScreen { constructor(sqlEditor) { this.sqlEditor = sqlEditor; @@ -167,7 +179,7 @@ class ExecuteQuery { initializeExecutionOnSqlEditor(sqlStatement) { this.loadingScreen.show('Initializing query execution...'); - $('#btn-flash').prop('disabled', true); + setPropAndSelector('#btn-flash','disabled', true); this.sqlServerObject.query_start_time = new Date(); if (typeof sqlStatement === 'object') { @@ -236,12 +248,12 @@ class ExecuteQuery { enableSQLEditorButtons() { this.sqlServerObject.disable_tool_buttons(false); - $('#btn-cancel-query').prop('disabled', true); + setPropAndSelector('#btn-cancel-query','disabled', true); } disableSQLEditorButtons() { this.sqlServerObject.disable_tool_buttons(true); - $('#btn-cancel-query').prop('disabled', false); + setPropAndSelector('#btn-cancel-query','disabled', false); } static wasConnectionLostToPythonServer(httpResponse) { diff --git a/web/pgadmin/tools/backup/static/js/backup.js b/web/pgadmin/tools/backup/static/js/backup.js index 1b0b362..94ab8b7 100644 --- a/web/pgadmin/tools/backup/static/js/backup.js +++ b/web/pgadmin/tools/backup/static/js/backup.js @@ -755,7 +755,7 @@ commonUtils }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); alertify.alert( gettext('Backup job failed.'), err.errormsg @@ -1041,7 +1041,7 @@ commonUtils }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); alertify.alert( gettext('Backup job failed.'), err.errormsg diff --git a/web/pgadmin/tools/datagrid/static/js/datagrid.js b/web/pgadmin/tools/datagrid/static/js/datagrid.js index b0ed60f..42122ed 100644 --- a/web/pgadmin/tools/datagrid/static/js/datagrid.js +++ b/web/pgadmin/tools/datagrid/static/js/datagrid.js @@ -473,7 +473,7 @@ define('pgadmin.datagrid', [ } try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); alertify.alert(gettext('Query Tool Initialize Error'), err.errormsg ); diff --git a/web/pgadmin/tools/debugger/static/js/debugger.js b/web/pgadmin/tools/debugger/static/js/debugger.js index 6838335..14c2ccf 100644 --- a/web/pgadmin/tools/debugger/static/js/debugger.js +++ b/web/pgadmin/tools/debugger/static/js/debugger.js @@ -295,7 +295,7 @@ define([ }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); if (err.success == 0) { Alertify.alert(gettext('Debugger Error'), err.errormsg); } @@ -415,7 +415,7 @@ define([ }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); if (err.success == 0) { Alertify.alert(gettext('Debugger Error'), err.errormsg); } @@ -538,7 +538,7 @@ define([ }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); if (err.success == 0) { Alertify.alert(gettext('Debugger Error'), err.errormsg); } diff --git a/web/pgadmin/tools/debugger/static/js/debugger_ui.js b/web/pgadmin/tools/debugger/static/js/debugger_ui.js index f9049d8..d88ac87 100644 --- a/web/pgadmin/tools/debugger/static/js/debugger_ui.js +++ b/web/pgadmin/tools/debugger/static/js/debugger_ui.js @@ -531,7 +531,7 @@ define([ var grid_checkbox = $(grid.el).find('input:checkbox').first(); if (grid_checkbox.length) { setTimeout(function() { - grid_checkbox.click(); + grid_checkbox.trigger('click'); }, 250); } diff --git a/web/pgadmin/tools/debugger/static/js/direct.js b/web/pgadmin/tools/debugger/static/js/direct.js index 42b2408..f7f8edf 100644 --- a/web/pgadmin/tools/debugger/static/js/direct.js +++ b/web/pgadmin/tools/debugger/static/js/direct.js @@ -690,7 +690,7 @@ define([ }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); if (err.success == 0) { Alertify.alert(gettext('Debugger Error'), err.errormsg); } diff --git a/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js b/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js index 750887e..5ce0e2f 100644 --- a/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js +++ b/web/pgadmin/tools/grant_wizard/static/js/grant_wizard.js @@ -218,7 +218,6 @@ define([ // Generate wizard main container var $container = $('<div class=\'wizard_dlg\'></div>'); - return { main: function(title) { this.set('title', title); @@ -442,7 +441,7 @@ define([ 'did': encodeURI(did), } ), - dataType: 'jsonp', + dataType: 'json', }); }, diff --git a/web/pgadmin/tools/import_export/static/js/import_export.js b/web/pgadmin/tools/import_export/static/js/import_export.js index 3058f12..e64d3de 100644 --- a/web/pgadmin/tools/import_export/static/js/import_export.js +++ b/web/pgadmin/tools/import_export/static/js/import_export.js @@ -549,7 +549,7 @@ Backform, commonUtils }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); Alertify.alert( gettext('Import/export job failed.'), err.errormsg diff --git a/web/pgadmin/tools/restore/static/js/restore.js b/web/pgadmin/tools/restore/static/js/restore.js index 585b972..7daa764 100644 --- a/web/pgadmin/tools/restore/static/js/restore.js +++ b/web/pgadmin/tools/restore/static/js/restore.js @@ -686,7 +686,7 @@ commonUtils }, error: function(xhr) { try { - var err = $.parseJSON(xhr.responseText); + var err = JSON.parse(xhr.responseText); alertify.alert( gettext('Restore failed.'), err.errormsg diff --git a/web/pgadmin/tools/user_management/static/js/user_management.js b/web/pgadmin/tools/user_management/static/js/user_management.js index dcf65cb..ec3d515 100644 --- a/web/pgadmin/tools/user_management/static/js/user_management.js +++ b/web/pgadmin/tools/user_management/static/js/user_management.js @@ -812,12 +812,12 @@ define([ userCollection.fetch(); - this.$content.find('a.close-error').click(function() { + this.$content.find('a.close-error').on('click',() => { $statusBar.find('.alert-text').empty(); $statusBar.css('visibility', 'hidden'); }); - this.$content.find('button.add').first().click(function(e) { + this.$content.find('button.add').first().on('click',(e) => { e.preventDefault(); var canAddRow = true; diff --git a/web/regression/javascript/selection/column_selector_spec.js b/web/regression/javascript/selection/column_selector_spec.js index b7f1475..53de6b2 100644 --- a/web/regression/javascript/selection/column_selector_spec.js +++ b/web/regression/javascript/selection/column_selector_spec.js @@ -273,7 +273,7 @@ describe('ColumnSelector', function () { describe('when the column is not selectable', function () { it('does not select the column', function () { - $(container.find('.slick-header-column:contains(some-non-selectable-column)')).click(); + $(container.find('.slick-header-column:contains(some-non-selectable-column)')).trigger('click'); var selectedRanges = cellSelectionModel.getSelectedRanges(); expect(selectedRanges.length).toEqual(0); diff --git a/web/regression/javascript/selection/grid_selector_spec.js b/web/regression/javascript/selection/grid_selector_spec.js index 33e2753..e3a758e 100644 --- a/web/regression/javascript/selection/grid_selector_spec.js +++ b/web/regression/javascript/selection/grid_selector_spec.js @@ -68,7 +68,7 @@ describe('GridSelector', function () { describe('when the cell for the select/deselect all is clicked', function () { it('selects the whole grid', function () { - container.find('[title=\'Select/Deselect All\']').parent().click(); + container.find('[title=\'Select/Deselect All\']').parent().trigger('click'); var selectedRanges = xCellSelectionModel.getSelectedRanges(); expect(selectedRanges.length).toBe(1); @@ -80,7 +80,7 @@ describe('GridSelector', function () { }); it('adds selected class', function () { - container.find('[title=\'Select/Deselect All\']').parent().click(); + container.find('[title=\'Select/Deselect All\']').parent().trigger('click'); expect($(container.find('[data-id=\'select-all\']')).hasClass('selected')).toBeTruthy(); }); @@ -89,7 +89,7 @@ describe('GridSelector', function () { describe('when the select all button in the corner gets selected', function () { it('selects all the cells', function () { - container.find('[title=\'Select/Deselect All\']').click(); + container.find('[title=\'Select/Deselect All\']').trigger('click'); var selectedRanges = xCellSelectionModel.getSelectedRanges(); expect(selectedRanges.length).toBe(1); @@ -102,11 +102,11 @@ describe('GridSelector', function () { describe('when the select all button in the corner gets deselected', function () { beforeEach(function () { - container.find('[title=\'Select/Deselect All\']').click(); + container.find('[title=\'Select/Deselect All\']').trigger('click'); }); it('deselects all the cells', function () { - container.find('[title=\'Select/Deselect All\']').click(); + container.find('[title=\'Select/Deselect All\']').trigger('click'); var selectedRanges = xCellSelectionModel.getSelectedRanges(); expect(selectedRanges.length).toBe(0); @@ -115,11 +115,11 @@ describe('GridSelector', function () { describe('and then the underlying selection changes', function () { beforeEach(function () { - container.find('[title=\'Select/Deselect All\']').click(); + container.find('[title=\'Select/Deselect All\']').trigger('click'); }); it('removes the selected class', function () { - container.find('[title=\'Select/Deselect All\']').parent().click(); + container.find('[title=\'Select/Deselect All\']').parent().trigger('click'); expect($(container.find('[data-id=\'select-all\']')).hasClass('selected')).toBeFalsy(); }); diff --git a/web/regression/javascript/slickgrid/cell_selector_spec.js b/web/regression/javascript/slickgrid/cell_selector_spec.js index a8db27e..4b33f57 100644 --- a/web/regression/javascript/slickgrid/cell_selector_spec.js +++ b/web/regression/javascript/slickgrid/cell_selector_spec.js @@ -54,7 +54,7 @@ describe('CellSelector', function () { describe('when the user clicks or tabs to a cell', function () { it('sets the selected range to that cell', function () { var row = 1, column = 0; - $(container.find('.slick-row .slick-cell.l' + column)[row]).click(); + $(container.find('.slick-row .slick-cell.l' + column)[row]).trigger('click'); var selectedRanges = cellSelectionModel.getSelectedRanges(); expect(selectedRanges.length).toBe(1); @@ -71,7 +71,7 @@ describe('CellSelector', function () { cellSelectionModel.setSelectedRanges(ranges); var row = 4, column = 1; - $(container.find('.slick-row .slick-cell.l' + column)[row]).click(); + $(container.find('.slick-row .slick-cell.l' + column)[row]).trigger('click'); expect(RangeSelectionHelper.isRangeSelected(cellSelectionModel.getSelectedRanges(), row2Range)) .toBe(false);