Update all Python and JS dependencies. Fixes #4019

This commit is contained in:
Khushboo Vashi 2019-03-14 15:11:16 +00:00 committed by Dave Page
parent c7b29d35ae
commit e4417229aa
133 changed files with 8649 additions and 8569 deletions

View File

@ -19,6 +19,7 @@ Bug fixes
*********
| `Bug #3995 <https://redmine.postgresql.org/issues/3995>`_ - Avoid 'bogus varno' message from Postgres when viewing the SQL for a table with triggers.
| `Bug #4019 <https://redmine.postgresql.org/issues/4019>`_ - Update all Python and JavaScript dependencies.
| `Bug #4052 <https://redmine.postgresql.org/issues/4052>`_ - Fix the online help button on the resource group dialogue.
| `Bug #4053 <https://redmine.postgresql.org/issues/4053>`_ - Enable the online help button on the index dialogue.
| `Bug #4054 <https://redmine.postgresql.org/issues/4054>`_ - Handle resultsets with zero columns correctly in the Query Tool.

File diff suppressed because it is too large Load Diff

View File

@ -4,32 +4,33 @@
# ignored when building a PIP Wheel.
##############################################################################
blinker==1.4
Flask==0.12.4
Flask==1.0.2
Flask-Gravatar==0.5.0
Flask-Login==0.3.2
Flask-Login==0.4.1
Flask-Mail==0.9.1
Flask-Migrate==2.1.1
Flask-Migrate==2.4.0
Flask-Principal==0.4.0
Flask-SQLAlchemy==2.3.2
Flask-WTF==0.14.2
passlib==1.7.1
pytz==2018.3
simplejson==3.13.2
six>=1.11.0
pytz==2018.9
simplejson==3.16.0
six>=1.12.0
speaklater==1.3
sqlparse==0.2.4
WTForms==2.1
WTForms==2.2.1
Flask-Paranoid==0.2.0
psutil==5.4.7
psycopg2>=2.7.4
python-dateutil>=2.7.1
psutil==5.5.1
psycopg2>=2.7.7
python-dateutil>=2.8.0
htmlmin==0.1.12
Flask-HTMLmin==1.3.2
SQLAlchemy>=1.2.5
Flask-HTMLmin==1.5.0
SQLAlchemy>=1.2.18
Flask-Security>=3.0.0
sshtunnel>=0.1.3
sshtunnel>=0.1.4
###############################################################
# Modules specifically required for Python2.7
###############################################################
importlib==1.0.3; python_version <= '2.7'
importlib==1.0.4; python_version <= '2.7'

View File

@ -14,14 +14,9 @@ module.exports = {
'amd': true,
'jasmine': true,
},
'extends': [
'eslint:recommended',
],
'parserOptions': {
'ecmaFeatures': {
'experimentalObjectRestSpread': true,
},
'sourceType': 'module'
'ecmaVersion': 2018,
'sourceType': 'module',
},
'plugins': [
],

View File

@ -1,96 +1,98 @@
{
"license": "PostgreSQL",
"devDependencies": {
"axios-mock-adapter": "^1.14.1",
"babel-core": "~6.24.0",
"babel-loader": "~7.1.2",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-es2015": "~6.24.0",
"cross-env": "^5.0.1",
"eclint": "^2.3.0",
"eslint": "3.19.0",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^0.11.2",
"image-webpack-loader": "^3.3.1",
"@babel/core": "~7.3.4",
"@babel/preset-env": "~7.3.4",
"axios-mock-adapter": "^1.16.0",
"babel-loader": "~8.0.5",
"babel-plugin-transform-object-rest-spread": "^7.0.0-beta.3",
"cross-env": "^5.2.0",
"eclint": "^2.8.1",
"eslint": "5.15.1",
"file-loader": "^3.0.1",
"image-webpack-loader": "^4.6.0",
"is-docker": "^1.1.0",
"jasmine-core": "~2.99.0",
"karma": "~2.0.0",
"karma-babel-preprocessor": "^7.0.0",
"karma-browserify": "~5.2.0",
"jasmine-core": "~3.3.0",
"karma": "^4.0.1",
"karma-babel-preprocessor": "^8.0.0",
"karma-browserify": "~6.0.0",
"karma-chrome-launcher": "^2.2.0",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"karma-requirejs": "~1.1.0",
"karma-source-map-support": "^1.3.0",
"karma-source-map-support": "^1.4.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "~2.0.13",
"node-sass": "^4.5.3",
"optimize-css-assets-webpack-plugin": "^2.0.0",
"popper.js": "^1.14.4",
"raw-loader": "^0.5.1",
"karma-webpack": "~4.0.0-rc.6",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.11.0",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"popper.js": "^1.14.7",
"raw-loader": "^1.0.0",
"sass-loader": "^7.1.0",
"sass-resources-loader": "^1.3.3",
"style-loader": "^0.18.2",
"uglifyjs-webpack-plugin": "^0.4.6",
"url-loader": "^0.5.9",
"webpack": "^3.0.0"
"sass-resources-loader": "^2.0.0",
"style-loader": "^0.23.1",
"uglifyjs-webpack-plugin": "^2.1.2",
"url-loader": "^1.1.2",
"webpack": "^4.29.6",
"webpack-cli": "^3.2.3"
},
"dependencies": {
"@babel/polyfill": "^7.2.5",
"acitree": "git+https://github.com/imsurinder90/jquery-aciTree.git#rc.7",
"alertifyjs": "1.7.1",
"axios": "^0.18.0",
"babel-plugin-transform-es2015-modules-amd": "^6.24.1",
"babel-polyfill": "^6.23.0",
"babel-preset-es2015-without-strict": "~0.0.4",
"babelify": "~7.3.0",
"backbone": "1.3.3",
"babelify": "~10.0.0",
"backbone": "1.4.0",
"backform": "^0.2.0",
"backgrid": "^0.3.8",
"backgrid-filter": "^0.3.7",
"backgrid-select-all": "^0.3.5",
"backgrid-sizeable-columns": "^0.1.1",
"bignumber.js": "^6.0.0",
"bootstrap": "^4.1.3",
"bootstrap-datepicker": "^1.7.0",
"bignumber.js": "^8.1.1",
"bootstrap": "^4.3.1",
"bootstrap-datepicker": "^1.8.0",
"bootstrap4-toggle": "3.4.0",
"bowser": "1.6.1",
"browserify": "~14.1.0",
"codemirror": "^5.43.0",
"css-loader": "0.14.0",
"cssnano": "^3.10.0",
"dropzone": "^5.1.1",
"exports-loader": "~0.6.4",
"bowser": "2.1.2",
"browserify": "~16.2.3",
"codemirror": "^5.44.0",
"css-loader": "2.1.0",
"cssnano": "^4.1.10",
"dropzone": "^5.5.1",
"exports-loader": "~0.7.0",
"flotr2": "git+https://github.com/EnterpriseDB/Flotr2.git",
"font-awesome": "^4.7.0",
"hard-source-webpack-plugin": "0.12.0",
"immutability-helper": "^2.2.0",
"imports-loader": "^0.7.1",
"fsevents": "^1.2.7",
"hard-source-webpack-plugin": "0.13.1",
"immutability-helper": "^3.0.0",
"imports-loader": "^0.8.0",
"ip-address": "^5.8.9",
"jquery": "3.3.1",
"jquery-contextmenu": "^2.6.4",
"jquery-contextmenu": "^2.8.0",
"jquery-ui": "^1.12.1",
"json-bignumber": "^1.0.1",
"leaflet": "^1.3.3",
"moment": "^2.20.1",
"moment-timezone": "^0.5.21",
"mousetrap": "^1.6.1",
"prop-types": "^15.5.10",
"requirejs": "~2.3.3",
"leaflet": "^1.4.0",
"moment": "^2.24.0",
"moment-timezone": "^0.5.23",
"mousetrap": "^1.6.3",
"prop-types": "^15.7.2",
"requirejs": "~2.3.6",
"select2": "^4.0.6-rc.1",
"shim-loader": "^1.0.1",
"slickgrid": "git+https://github.com/6pac/SlickGrid.git#2.3.16",
"snapsvg": "^0.5.1",
"spectrum-colorpicker": "^1.8.0",
"split.js": "^1.5.10",
"sprintf-js": "^1.1.1",
"tablesorter": "^2.30.6",
"sprintf-js": "^1.1.2",
"tablesorter": "^2.31.1",
"tempusdominus-bootstrap-4": "^5.1.2",
"tempusdominus-core": "^5.0.3",
"underscore": "^1.8.3",
"underscore.string": "^3.3.4",
"watchify": "~3.9.0",
"underscore": "^1.9.1",
"underscore.string": "^3.3.5",
"watchify": "~3.11.1",
"webcabin-docker": "git+https://github.com/EnterpriseDB/wcDocker/#9cf81f03bb350b76b77a264f1db5d55391d5e424",
"wkx": "^0.4.5"
"wkx": "^0.4.6"
},
"scripts": {
"linter": "yarn eslint --no-eslintrc -c .eslintrc.js --ext .js .",

View File

@ -51,11 +51,11 @@ define(
}
$.get(url_for('about.index'),
function(data) {
alertify.aboutDialog(
S(gettext('About %s')).sprintf(pgAdmin.Browser.utils.app_name).value(), data
).resizeTo(pgAdmin.Browser.stdW.md, pgAdmin.Browser.stdH.md);
});
function(data) {
alertify.aboutDialog(
S(gettext('About %s')).sprintf(pgAdmin.Browser.utils.app_name).value(), data
).resizeTo(pgAdmin.Browser.stdW.md, pgAdmin.Browser.stdH.md);
});
},
};

View File

@ -12,7 +12,7 @@ define('pgadmin.node.cast', [
'underscore.string', 'sources/pgadmin', 'pgadmin.browser',
'pgadmin.alertifyjs', 'pgadmin.backform', 'pgadmin.browser.collection',
], function(gettext, url_for, $, _, S, pgAdmin, pgBrowser, alertify, Backform) {
// Extend the collection class for cast
// Extend the collection class for cast
if (!pgBrowser.Nodes['coll-cast']) {
pgAdmin.Browser.Nodes['coll-cast'] =
pgAdmin.Browser.Collection.extend({
@ -23,7 +23,7 @@ define('pgadmin.node.cast', [
});
}
// Extend the node class for cast
// Extend the node class for cast
if (!pgBrowser.Nodes['cast']) {
pgAdmin.Browser.Nodes['cast'] = pgAdmin.Browser.Node.extend({
parent_type: 'database',
@ -38,13 +38,13 @@ define('pgadmin.node.cast', [
hasDepends: true,
Init: function() {
// Avoid multiple registration of menus
// Avoid multiple registration of menus
if (this.initialized)
return;
this.initialized = true;
// Add context menus for cast
// Add context menus for cast
pgBrowser.add_menus([{
name: 'create_cast_on_database', node: 'database', module: this,
applies: ['object', 'context'], callback: 'show_obj_properties',
@ -65,7 +65,7 @@ define('pgadmin.node.cast', [
},
// Define the backform model for cast node
// Define the backform model for cast node
model: pgAdmin.Browser.Node.Model.extend({
idAttribute: 'oid',
defaults: {
@ -79,7 +79,7 @@ define('pgadmin.node.cast', [
description: undefined, // Comment on the cast
},
// Define the schema for cast
// Define the schema for cast
schema: [{
id: 'name', label: gettext('Name'), cell: 'string',
editable: false, type: 'text', disabled: true, cellHeaderClasses: 'width_percent_50',
@ -99,7 +99,7 @@ define('pgadmin.node.cast', [
return rows;
},
/*
/*
* Control is extended to create cast name from source type and destination type
* once their values are changed
*/
@ -107,10 +107,10 @@ define('pgadmin.node.cast', [
onChange: function() {
Backform.NodeAjaxOptionsControl.prototype.onChange.apply(
this, arguments
);
this, arguments
);
/*
/*
* On source type change, check if both source type and
* target type are set, if yes then fetch values from both
* controls and generate cast name
@ -121,12 +121,12 @@ define('pgadmin.node.cast', [
trgtype != undefined && trgtype != '')
this.model.set('name', srctype+'->'+trgtype);
else
this.model.unset('name');
this.model.unset('name');
},
}),
},
/*
/*
* Text control for viewing source type in properties and
* edit mode only
*/
@ -145,7 +145,7 @@ define('pgadmin.node.cast', [
return rows;
},
/*
/*
* Control is extended to create cast name from source type and destination type
* once their values are changed
*/
@ -153,10 +153,10 @@ define('pgadmin.node.cast', [
onChange: function() {
Backform.NodeAjaxOptionsControl.prototype.onChange.apply(
this, arguments
);
this, arguments
);
/*
/*
* on target type change, check if both source type and
* target type are set, if yes then fetch values from both
* controls and generate cast name
@ -167,11 +167,11 @@ define('pgadmin.node.cast', [
trgtype != undefined && trgtype != '')
this.model.set('name', srcType+'->'+trgtype);
else
this.model.unset('name');
this.model.unset('name');
},
}),
},
/*
/*
* Text control for viewing target type in properties and
* edit mode only
*/
@ -180,7 +180,7 @@ define('pgadmin.node.cast', [
group: gettext('Definition'), disabled: true, mode:['properties','edit'],
},
/*
/*
* Proname field is dependent on source type and target type.
* On source and target type changed event,
* associated functions will be fetch using ajax call
@ -197,13 +197,13 @@ define('pgadmin.node.cast', [
if(srcTyp != undefined && srcTyp != '' &&
trgtyp != undefined && trgtyp != '')
{
{
var node = control.field.get('schema_node'),
_url = node.generate_url.apply(
node, [
null, 'get_functions', control.field.get('node_data'), false,
control.field.get('node_info'),
]);
node, [
null, 'get_functions', control.field.get('node_data'), false,
control.field.get('node_info'),
]);
$.ajax({
type: 'POST',
timeout: 30000,
@ -212,15 +212,15 @@ define('pgadmin.node.cast', [
async: false,
data: {'srctyp' : srcTyp, 'trgtyp' : trgtyp},
})
// On success return function list from server
.done(function(result) {
res = result.data;
return res;
})
// On failure show error appropriate error message to user
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
});
// On success return function list from server
.done(function(result) {
res = result.data;
return res;
})
// On failure show error appropriate error message to user
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
});
}
return res;
},

View File

@ -21,18 +21,18 @@ define('pgadmin.node.foreign_server', [
fsrvvalue: undefined,
},
// Defining schema for the Options model
// Defining schema for the Options model
schema: [
{id: 'fsrvoption', label: gettext('Options'), type:'text', cellHeaderClasses:'width_percent_50', group: null, editable: true},
{id: 'fsrvvalue', label: gettext('Value'), type: 'text', cellHeaderClasses:'width_percent_50', group:null, editable: true},
{id: 'fsrvoption', label: gettext('Options'), type:'text', cellHeaderClasses:'width_percent_50', group: null, editable: true},
{id: 'fsrvvalue', label: gettext('Value'), type: 'text', cellHeaderClasses:'width_percent_50', group:null, editable: true},
],
/* validate function is used to validate the input given by
/* validate function is used to validate the input given by
* the user. In case of error, message will be displayed on
* the browser for the respective control.
*/
validate: function() {
// Validation for the option name
// Validation for the option name
if (_.isUndefined(this.get('fsrvoption')) ||
_.isNull(this.get('fsrvoption')) ||
String(this.get('fsrvoption')).replace(/^\s+|\s+$/g, '') == '') {

View File

@ -13,7 +13,7 @@ define('pgadmin.node.user_mapping', [
'pgadmin.backform', 'pgadmin.browser.collection',
], function(gettext, url_for, $, _, S, pgAdmin, pgBrowser, Backform) {
// Extend the browser's node model class to create a Options model
// Extend the browser's node model class to create a Options model
var OptionsModel = pgAdmin.Browser.Node.Model.extend({
idAttribute: 'umoption',
defaults: {
@ -21,7 +21,7 @@ define('pgadmin.node.user_mapping', [
umvalue: undefined,
},
// Defining schema for the Options model
// Defining schema for the Options model
schema: [{
id: 'umoption', label: gettext('Options'), type:'text',
cellHeaderClasses:'width_percent_50', group: null, editable: true,
@ -30,12 +30,12 @@ define('pgadmin.node.user_mapping', [
cellHeaderClasses:'width_percent_50', group:null, editable: true,
}],
/* validate function is used to validate the input given by
/* validate function is used to validate the input given by
* the user. In case of error, message will be displayed on
* the browser for the respective control.
*/
validate: function() {
// Validation for the option value
// Validation for the option value
if (_.isUndefined(this.get('umoption')) ||
_.isNull(this.get('umoption')) ||
String(this.get('umoption')).replace(/^\s+|\s+$/g, '') == '') {

View File

@ -13,14 +13,14 @@ define('pgadmin.node.foreign_data_wrapper', [
'pgadmin.browser.collection', 'pgadmin.browser.server.privilege',
], function(gettext, url_for, $, _, S, pgAdmin, pgBrowser, Backform) {
// Extend the browser's node model class to create a Options model
// Extend the browser's node model class to create a Options model
var OptionsModel = pgBrowser.Node.Model.extend({
idAttribute: 'fdwoption',
defaults: {
fdwoption: undefined,
fdwvalue: undefined,
},
// Defining schema for the Options model
// Defining schema for the Options model
schema: [{
id: 'fdwoption', label: gettext('Option'), type:'text',
cellHeaderClasses:'width_percent_50', editable: true,
@ -28,12 +28,12 @@ define('pgadmin.node.foreign_data_wrapper', [
id: 'fdwvalue', label: gettext('Value'), type: 'text',
cellHeaderClasses:'width_percent_50', group:null, editable: true,
}],
/* validate function is used to validate the input given by
/* validate function is used to validate the input given by
* the user. In case of error, message will be displayed on
* the browser for the respective control.
*/
validate: function() {
// Validation for the option name
// Validation for the option name
if (_.isUndefined(this.get('fdwoption')) ||
_.isNull(this.get('fdwoption')) ||
String(this.get('fdwoption')).replace(/^\s+|\s+$/g, '') == '') {
@ -170,7 +170,7 @@ define('pgadmin.node.foreign_data_wrapper', [
id: 'acl', label: gettext('Privileges'), type: 'text',
group: gettext('Security'), mode: ['properties'], disabled: true,
}],
/* validate function is used to validate the input given by
/* validate function is used to validate the input given by
* the user. In case of error, message will be displayed on
* the browser for the respective control.
*/

View File

@ -13,7 +13,7 @@ define('pgadmin.node.collation', [
'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node',
'pgadmin.browser.collection',
], function(gettext, url_for, $, _, S, pgAdmin, pgBrowser, schemaChild,
schemaChildTreeNode) {
schemaChildTreeNode) {
if (!pgBrowser.Nodes['coll-collation']) {
pgAdmin.Browser.Nodes['coll-collation'] =

View File

@ -209,10 +209,10 @@ define('pgadmin.node.domain', [
_.each(m.type_options, function(o) {
// if type from selected from combobox matches in options
if ( of_type == o.value ) {
// if length is allowed for selected type
// if length is allowed for selected type
if(o.length)
{
// set the values in model
{
// set the values in model
m.set('is_tlength', true, {silent: true});
m.set('min_val', o.min_val, {silent: true});
m.set('max_val', o.max_val, {silent: true});
@ -236,10 +236,10 @@ define('pgadmin.node.domain', [
_.each(m.type_options, function(o) {
// if type from selected from combobox matches in options
if ( of_type == o.value ) {
// if precession is allowed for selected type
// if precession is allowed for selected type
if(o.precision)
{
// set the values in model
{
// set the values in model
m.set('is_precision', true, {silent: true});
m.set('min_val', o.min_val, {silent: true});
m.set('max_val', o.max_val, {silent: true});
@ -269,7 +269,7 @@ define('pgadmin.node.domain', [
model: ConstraintModel, canAdd: true, canDelete: true,
canEdit: false, columns: ['conname','consrc', 'convalidated'],
},
pgBrowser.SecurityGroupSchema,
pgBrowser.SecurityGroupSchema,
{
id: 'seclabels', label: gettext('Security labels'),
model: pgBrowser.SecLabelModel, type: 'collection',
@ -301,7 +301,7 @@ define('pgadmin.node.domain', [
if (!m.isNew()) {
var server = this.node_info.server;
if (server.version < 90200)
{
{
return false;
}
}

View File

@ -96,7 +96,7 @@ define('pgadmin.node.foreign_table', [
type: 'int', deps: ['datatype'],
disabled: function(m) {
var val = m.get('typlen');
// We will store type from selected from combobox
// We will store type from selected from combobox
if(!(_.isUndefined(m.get('inheritedid'))
|| _.isNull(m.get('inheritedid'))
|| _.isUndefined(m.get('inheritedfrom'))
@ -115,14 +115,14 @@ define('pgadmin.node.foreign_table', [
if(m.type_options) {
m.set('is_tlength', false, {silent: true});
// iterating over all the types
// iterating over all the types
_.each(m.type_options, function(o) {
// if type from selected from combobox matches in options
// if type from selected from combobox matches in options
if ( of_type == o.value ) {
// if length is allowed for selected type
// if length is allowed for selected type
if(o.length)
{
// set the values in model
{
// set the values in model
has_length = true;
m.set('is_tlength', true, {silent: true});
m.set('min_val', o.min_val, {silent: true});
@ -171,15 +171,15 @@ define('pgadmin.node.foreign_table', [
if(m.type_options) {
m.set('is_precision', false, {silent: true});
// iterating over all the types
// iterating over all the types
_.each(m.type_options, function(o) {
// if type from selected from combobox matches in options
// if type from selected from combobox matches in options
if ( of_type == o.value ) {
// if precession is allowed for selected type
// if precession is allowed for selected type
if(o.precision)
{
{
has_precision = true;
// set the values in model
// set the values in model
m.set('is_precision', true, {silent: true});
m.set('min_val', o.min_val, {silent: true});
m.set('max_val', o.max_val, {silent: true});
@ -263,7 +263,7 @@ define('pgadmin.node.foreign_table', [
}
if (_.isUndefined(this.get('datatype')) || String(this.get('datatype'))
.replace(/^\s+|\s+$/g, '') == '') {
.replace(/^\s+|\s+$/g, '') == '') {
errmsg = gettext('Column Datatype cannot be empty.');
this.errorModel.set('datatype', errmsg);
} else {
@ -345,10 +345,10 @@ define('pgadmin.node.foreign_table', [
var node = this.field.get('schema_node'),
node_info = this.field.get('node_info'),
full_url = node.generate_url.apply(
node, [
null, url, this.field.get('node_data'),
this.field.get('url_with_id') || false, node_info,
]),
node, [
null, url, this.field.get('node_data'),
this.field.get('url_with_id') || false, node_info,
]),
cache_level = this.field.get('cache_level') || node.type,
cache_node = this.field.get('cache_node');
@ -363,17 +363,17 @@ define('pgadmin.node.foreign_table', [
url: full_url,
data: data,
})
.done(function(res) {
.done(function(res) {
/*
* We will cache this data for short period of time for avoiding
* same calls.
*/
data = cache_node.cache(url, node_info, cache_level, res.data);
data = cache_node.cache(url, node_info, cache_level, res.data);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
m.trigger('pgadmin:view:fetched', m, self.field);
// To fetch only options from cache, we do not need time from 'at'
@ -444,7 +444,7 @@ define('pgadmin.node.foreign_table', [
}
if (_.isUndefined(this.get('consrc')) || String(this.get('consrc'))
.replace(/^\s+|\s+$/g, '') == '') {
.replace(/^\s+|\s+$/g, '') == '') {
err['consrc'] = gettext('Constraint Check cannot be empty.');
errmsg = errmsg || err['consrc'];
}
@ -631,8 +631,8 @@ define('pgadmin.node.foreign_table', [
mode: ['properties'], min_version: 90200,
}, pgBrowser.SecurityGroupSchema, {
id: 'acl', label: gettext('Privileges'), model: pgAdmin
.Browser.Node.PrivilegeRoleModel.extend(
{privileges: ['a','r','w','x']}), uniqueCol : ['grantee', 'grantor'],
.Browser.Node.PrivilegeRoleModel.extend(
{privileges: ['a','r','w','x']}), uniqueCol : ['grantee', 'grantor'],
editable: false, type: 'collection', group: 'security',
mode: ['edit', 'create'],
canAdd: true, canDelete: true, control: 'unique-col-collection',
@ -657,7 +657,7 @@ define('pgadmin.node.foreign_table', [
}
if (_.isUndefined(this.get('basensp')) || String(this.get('basensp'))
.replace(/^\s+|\s+$/g, '') == '') {
.replace(/^\s+|\s+$/g, '') == '') {
err['basensp'] = gettext('Schema cannot be empty.');
errmsg = errmsg || err['basensp'];
}

View File

@ -24,7 +24,7 @@ define('pgadmin.node.fts_configuration', [
dictname: undefined,
},
keys: ['token'],
// Define the schema for the token/dictionary list
// Define the schema for the token/dictionary list
schema: [{
id: 'token', label: gettext('Token'), type:'text', group: null,
cellHeaderClasses:'width_percent_50',
@ -34,9 +34,9 @@ define('pgadmin.node.fts_configuration', [
cellHeaderClasses:'width_percent_50', editable: true,
cell:Backgrid.Extension.MultiSelectAjaxCell, url: 'dictionaries',
}],
// Validation for token and dictionary list
// Validation for token and dictionary list
validate: function() {
// Clear any existing errors.
// Clear any existing errors.
var msg;
this.errorModel.clear();
var token = this.get('token');
@ -61,14 +61,14 @@ define('pgadmin.node.fts_configuration', [
},
});
// Customized control for token control
// Customized control for token control
var TokenControl = Backform.TokenControl =
Backform.UniqueColCollectionControl.extend({
initialize: function() {
Backform.UniqueColCollectionControl.prototype.initialize.apply(
this, arguments
);
this, arguments
);
var self = this,
headerSchema = [{
@ -82,7 +82,7 @@ define('pgadmin.node.fts_configuration', [
Backform.NodeAjaxOptionsControl.prototype.initialize.apply(
this,
arguments
);
);
var self = this,
url = self.field.get('url') || self.defaults.url,
m = self.model.top || self.model;
@ -122,20 +122,20 @@ define('pgadmin.node.fts_configuration', [
async: false,
url: full_url,
})
.done(function(res) {
/*
.done(function(res) {
/*
* We will cache this data for short period of time for
* avoiding same calls.
*/
data = cache_node.cache(url,
node_info,
cache_level,
res.data
);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
data = cache_node.cache(url,
node_info,
cache_level,
res.data
);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
m.trigger('pgadmin:view:fetched', m, self.field);
}
@ -169,16 +169,16 @@ define('pgadmin.node.fts_configuration', [
// Grid columns backgrid
gridCols = ['token', 'dictname'];
// Creating model for header control which is used to add new tokens
// Creating model for header control which is used to add new tokens
self.headerData = new (Backbone.Model.extend({
defaults: headerDefaults,
schema: headerSchema,
}))({});
// Creating view from header schema in tokens control
// Creating view from header schema in tokens control
var headerGroups = Backform.generateViewSchema(
self.field.get('node_info'), self.headerData, 'create',
self.field.get('schema_node'), self.field.get('node_data')
self.field.get('node_info'), self.headerData, 'create',
self.field.get('schema_node'), self.field.get('node_data')
),
fields = [];
@ -187,13 +187,13 @@ define('pgadmin.node.fts_configuration', [
});
self.headerFields = new Backform.Fields(fields);
// creating grid using grid columns
// creating grid using grid columns
self.gridSchema = Backform.generateGridColumnsFromModel(
self.field.get('node_info'), self.field.get('model'),
'edit', gridCols, self.field.get('schema_node')
);
);
// Providing behaviour control functions to header and grid control
// Providing behaviour control functions to header and grid control
self.controls = [];
self.listenTo(self.headerData, 'change', self.headerDataChanged);
self.listenTo(self.headerData, 'select2', self.headerDataChanged);
@ -201,7 +201,7 @@ define('pgadmin.node.fts_configuration', [
self.listenTo(self.collection, 'remove', self.onAddorRemoveTokens);
},
// Template for creating header view
// Template for creating header view
generateHeader: function(data) {
var header = [
'<div class="subnode-header-form">',
@ -234,19 +234,19 @@ define('pgadmin.node.fts_configuration', [
});
$header.find('div[header="' + field.get('name') + '"]').append(
control.render().$el
);
control.render().$el
);
control.$el.find('.control-label').remove();
controls.push(control);
});
// We should not show add button in properties mode
// We should not show add button in properties mode
if (data.mode == 'properties') {
$header.find('button.add').remove();
}
// Disable add button in token control in create mode
// Disable add button in token control in create mode
if(data.mode == 'create') {
$header.find('button.add').attr('disabled', true);
}
@ -255,13 +255,13 @@ define('pgadmin.node.fts_configuration', [
return $header;
},
// Providing event handler for add button in header
// Providing event handler for add button in header
events: _.extend(
{}, Backform.UniqueColCollectionControl.prototype.events,
{'click button.add': 'addTokens'}
),
{}, Backform.UniqueColCollectionControl.prototype.events,
{'click button.add': 'addTokens'}
),
// Show token/dictionary grid
// Show token/dictionary grid
showGridControl: function(data) {
var self = this,
@ -269,14 +269,14 @@ define('pgadmin.node.fts_configuration', [
$gridBody = $('<div></div>', {
class:'pgadmin-control-group backgrid form-group col-12 object subnode',
}).append(
titleTmpl({label: data.label})
titleTmpl({label: data.label})
);
$gridBody.append(self.generateHeader(data));
var gridColumns = _.clone(this.gridSchema.columns);
// Insert Delete Cell into Grid
// Insert Delete Cell into Grid
if (data.disabled == false && data.canDelete) {
gridColumns.unshift({
name: 'pg-backform-delete', label: '',
@ -289,7 +289,7 @@ define('pgadmin.node.fts_configuration', [
self.grid.remove();
self.grid.null;
}
// Initialize a new Grid instance
// Initialize a new Grid instance
var grid = self.grid = new Backgrid.Grid({
columns: gridColumns,
collection: self.collection,
@ -299,21 +299,21 @@ define('pgadmin.node.fts_configuration', [
$gridBody.append(self.$grid);
// Find selected dictionaries in grid and show it all together
// Find selected dictionaries in grid and show it all together
setTimeout(function() {
self.headerData.set({
'token': self.$header.find(
'div[header="token"] select'
'div[header="token"] select'
).val(),
}, {silent:true}
);
}, 10);
// Render node grid
// Render node grid
return $gridBody;
},
// When user change the header control to add a new token
// When user change the header control to add a new token
headerDataChanged: function() {
var self = this,
data = this.headerData.toJSON(),
@ -326,7 +326,7 @@ define('pgadmin.node.fts_configuration', [
self.$header.find('button.add').prop('disabled', inSelected);
},
// Get called when user click on add button header
// Get called when user click on add button header
addTokens: function(ev) {
ev.preventDefault();
var self = this,
@ -338,14 +338,14 @@ define('pgadmin.node.fts_configuration', [
var coll = self.model.get(self.field.get('name')),
m = new (self.field.get('model'))(
self.headerData.toJSON(), {
silent: true, top: self.model.top,
collection: coll, handler: coll,
}),
self.headerData.toJSON(), {
silent: true, top: self.model.top,
collection: coll, handler: coll,
}),
checkVars = ['token'],
idx = -1;
// Find if token exists in grid
// Find if token exists in grid
self.collection.each(function(m) {
_.each(checkVars, function(v) {
var val = m.get(v);
@ -357,7 +357,7 @@ define('pgadmin.node.fts_configuration', [
// remove 'm' if duplicate value found.
// remove 'm' if duplicate value found.
if (idx == -1) {
coll.add(m);
idx = coll.indexOf(m);
@ -365,18 +365,18 @@ define('pgadmin.node.fts_configuration', [
self.$grid.find('.new').removeClass('new');
var newRow = self.grid.body.rows[idx].$el;
newRow.addClass('new');
//$(newRow).pgMakeVisible('table-bordered');
//$(newRow).pgMakeVisible('table-bordered');
$(newRow).pgMakeVisible('backform-tab');
return false;
},
// When user delete token/dictionary entry from grid
// When user delete token/dictionary entry from grid
onAddorRemoveTokens: function() {
var self = this;
/*
/*
* Wait for collection to be updated before checking for the button to
* be enabled, or not.
*/
@ -386,7 +386,7 @@ define('pgadmin.node.fts_configuration', [
}, 10);
},
// When control is about to destroy
// When control is about to destroy
remove: function() {
/*
* Stop listening the events registered by this control.
@ -395,13 +395,13 @@ define('pgadmin.node.fts_configuration', [
this.listenTo(this.headerData, 'select2', this.headerDataChanged);
this.listenTo(this.collection, 'remove', this.onAddorRemoveTokens);
// Remove header controls.
// Remove header controls.
_.each(this.controls, function(control) {
control.remove();
});
TokenControl.__super__.remove.apply(this, arguments);
// Remove the header model
// Remove the header model
delete (this.headerData);
},
@ -551,7 +551,7 @@ define('pgadmin.node.fts_configuration', [
var copy_config_or_parser = !(parser === '' ||
_.isUndefined(parser) ||
_.isNull(parser)) ?
this.get('prsname') : this.get('copy_config');
this.get('prsname') : this.get('copy_config');
var schema = this.get('schema');
// Clear the existing error model

View File

@ -14,7 +14,7 @@ define('pgadmin.node.fts_dictionary', [
'pgadmin.browser.collection',
], function(
gettext, url_for, $, _, S, pgAdmin, pgBrowser, Backform, schemaChild,
schemaChildTreeNode
schemaChildTreeNode
) {
// Extend the browser's node model class to create a option/value pair
@ -23,7 +23,7 @@ define('pgadmin.node.fts_dictionary', [
options: undefined,
value: undefined,
},
// Define the schema for the Options
// Define the schema for the Options
schema: [
{
id: 'option', label: gettext('Option'), type:'text', group: null,

View File

@ -59,10 +59,10 @@ define('pgadmin.node.function', [
id: 'argmode', label: gettext('Mode'), type: 'options',
control: 'node-ajax-options', cellHeaderClasses:'width_percent_20',
options:[
{'label': 'IN', 'value': 'IN'},
{'label': 'OUT', 'value': 'OUT'},
{'label': 'INOUT', 'value': 'INOUT'},
{'label': 'VARIADIC', 'value': 'VARIADIC'},
{'label': 'IN', 'value': 'IN'},
{'label': 'OUT', 'value': 'OUT'},
{'label': 'INOUT', 'value': 'INOUT'},
{'label': 'VARIADIC', 'value': 'VARIADIC'},
], editable: function(m) {
var node_info = this.get('node_info');
if(node_info && 'catalog' in node_info) {

View File

@ -15,7 +15,7 @@ define('pgadmin.node.procedure', [
'pgadmin.node.schema.dir/schema_child_tree_node',
'pgadmin.browser.collection', 'pgadmin.browser.server.privilege',
], function(gettext, url_for, $, _, S, pgAdmin, pgBrowser, alertify, Function,
schemaChild, schemaChildTreeNode) {
schemaChild, schemaChildTreeNode) {
if (!pgBrowser.Nodes['coll-procedure']) {
pgAdmin.Browser.Nodes['coll-procedure'] =
@ -83,7 +83,7 @@ define('pgadmin.node.procedure', [
// Procedures supported only in PPAS and PG >= 11
return (
'server' in node_hierarchy && (
node_hierarchy['server'].server_type == 'ppas' ||
node_hierarchy['server'].server_type == 'ppas' ||
(node_hierarchy['server'].server_type == 'pg' &&
node_hierarchy['server'].version >= 110000)
)

View File

@ -13,7 +13,7 @@ define('pgadmin.node.package', [
'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node',
'pgadmin.browser.collection',
], function(gettext, url_for, $, _, pgAdmin, pgBrowser, Backform, schemaChild,
schemaChildTreeNode) {
schemaChildTreeNode) {
// Extend the browser's collection class for package collection
if (!pgBrowser.Nodes['coll-package']) {
@ -67,7 +67,7 @@ define('pgadmin.node.package', [
},
canCreate: function(itemData, item, data) {
//If check is false then , we will allow create menu
//If check is false then , we will allow create menu
if (data && data.check == false)
return true;
@ -77,11 +77,11 @@ define('pgadmin.node.package', [
if (server && server.server_type === 'pg')
return false;
// If it is catalog then don't allow user to create package
// If it is catalog then don't allow user to create package
if (treeData['catalog'] != undefined)
return false;
// by default we want to allow create menu
// by default we want to allow create menu
return true;
},
// Define the model for package node.

View File

@ -14,7 +14,7 @@ define('pgadmin.node.sequence', [
'pgadmin.browser.collection',
], function(
gettext, url_for, $, _, S, pgAdmin, pgBrowser, Backform, schemaChild,
schemaChildTreeNode
schemaChildTreeNode
) {
// Extend the browser's collection class for sequence collection

View File

@ -36,20 +36,20 @@ define('pgadmin.node.schema', [
data;
m.trigger('pgadmin-view:fetching', m, self.field);
// fetch default values for autovacuum fields
// fetch default values for autovacuum fields
$.ajax({
async: false,
url: full_url,
})
.done(function (res) {
data = res;
})
.fail(function() {
m.trigger('pgadmin-view:fetch:error', m, self.field);
});
.done(function (res) {
data = res;
})
.fail(function() {
m.trigger('pgadmin-view:fetch:error', m, self.field);
});
m.trigger('pgadmin-view:fetched', m, self.field);
// Add fetched models into collection
// Add fetched models into collection
if (data && _.isArray(data)) {
m.get(self.field.get('name')).reset(data, {silent: true});
}
@ -60,7 +60,7 @@ define('pgadmin.node.schema', [
var self = this,
attributes = self.field.attributes;
// remove grid
// remove grid
if(self.grid) {
self.grid.remove();
delete self.grid;
@ -74,17 +74,17 @@ define('pgadmin.node.schema', [
' <label class="control-label col-sm-4"><%-label%></label>',
'</div>'].join('\n')),
gridBody = $('<div class="pgadmin-control-group backgrid form-group col-12 object subnode"></div>').append(
gridHeader(attributes)
);
gridHeader(attributes)
);
// Initialize a new Grid instance
// Initialize a new Grid instance
var grid = self.grid = new Backgrid.Grid({
columns: self.grid_columns,
collection: self.model.get(self.field.get('name')),
className: 'backgrid table-bordered table-noouter-border table-hover',
});
// render grid
// render grid
self.$el.append($(gridBody).append(grid.render().$el));
return self;
@ -127,7 +127,7 @@ define('pgadmin.node.schema', [
},
});
// Extend the browser's collection class for VacuumSettingsModel
// Extend the browser's collection class for VacuumSettingsModel
Backform.VacuumSettingsSchema = [{
id: 'spacer_ctrl', group: gettext('Table'), mode: ['edit', 'create'], type: 'spacer',
},{
@ -373,7 +373,7 @@ define('pgadmin.node.schema', [
},{
id: 'nspacl', label: gettext('Privileges'),
model: pgBrowser.Node.PrivilegeRoleModel.extend(
{privileges: ['C', 'U']}), uniqueCol : ['grantee', 'grantor'],
{privileges: ['C', 'U']}), uniqueCol : ['grantee', 'grantor'],
editable: false, type: 'collection', group: gettext('Security'),
mode: ['edit', 'create'],
canAdd: true, canDelete: true, control: 'unique-col-collection',

View File

@ -13,7 +13,7 @@ define('pgadmin.node.synonym', [
'pgadmin.node.schema.dir/child', 'pgadmin.node.schema.dir/schema_child_tree_node',
'pgadmin.browser.collection',
], function(gettext, url_for, $, _, S, pgAdmin, pgBrowser, alertify,
schemaChild, schemaChildTreeNode) {
schemaChild, schemaChildTreeNode) {
if (!pgBrowser.Nodes['coll-synonym']) {
pgAdmin.Browser.Nodes['coll-synonym'] =
@ -110,13 +110,13 @@ define('pgadmin.node.synonym', [
select2: { width: '50%', allowClear: false },
options: function() {
return [
{label: gettext('Function'), value: 'f'},
{label: gettext('Package'), value: 'P'},
{label: gettext('Procedure'), value: 'p'},
{label: gettext('Public Synonym'), value: 's'},
{label: gettext('Sequence'), value: 'S'},
{label: gettext('Table'), value: 'r'},
{label: gettext('View'), value: 'v'},
{label: gettext('Function'), value: 'f'},
{label: gettext('Package'), value: 'P'},
{label: gettext('Procedure'), value: 'p'},
{label: gettext('Public Synonym'), value: 's'},
{label: gettext('Sequence'), value: 'S'},
{label: gettext('Table'), value: 'r'},
{label: gettext('View'), value: 'v'},
];
},
control: 'select2',
@ -169,14 +169,14 @@ define('pgadmin.node.synonym', [
data: {'trgTyp' : trgTyp, 'trgSchema' : trgSchema},
})
// On success return function list from server
.done(function(result) {
res = result.data;
return res;
})
.done(function(result) {
res = result.data;
return res;
})
// On failure show error appropriate error message to user
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
});
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
});
return res;
},
},{
@ -228,7 +228,7 @@ define('pgadmin.node.synonym', [
},
}),
canCreate: function(itemData, item, data) {
//If check is false then , we will allow create menu
//If check is false then , we will allow create menu
if (data && data.check == false)
return true;
@ -238,11 +238,11 @@ define('pgadmin.node.synonym', [
if (server && server.server_type === 'pg')
return false;
// If it is catalog then don't allow user to create synonyms
// If it is catalog then don't allow user to create synonyms
if (treeData['catalog'] != undefined)
return false;
// by default we do not want to allow create menu
// by default we do not want to allow create menu
return true;
},
});

View File

@ -28,7 +28,7 @@ define('pgadmin.node.column', [
});
}
// This Node model will be used for variable control for column
// This Node model will be used for variable control for column
var VariablesModel = Backform.VariablesModel = pgBrowser.Node.Model.extend({
idAttribute: 'name',
defaults: {
@ -39,7 +39,7 @@ define('pgadmin.node.column', [
id: 'name', label: gettext('Name'), cell: 'select2',
type: 'text', disabled: false, node: 'column',
options: [['n_distinct', 'n_distinct'],
['n_distinct_inherited','n_distinct_inherited']],
['n_distinct_inherited','n_distinct_inherited']],
select2: {placeholder: 'Select variable'},
cellHeaderClasses:'width_percent_50',
},{
@ -338,7 +338,7 @@ define('pgadmin.node.column', [
_.each(m.datatypes, function(o) {
if ( of_type == o.value ) {
if(o.length)
{
{
m.set('min_val', o.min_val, {silent: true});
m.set('max_val', o.max_val, {silent: true});
flag = false;
@ -355,7 +355,7 @@ define('pgadmin.node.column', [
return flag;
},
editable: function(m) {
// inheritedfrom has value then we should disable it
// inheritedfrom has value then we should disable it
if(!_.isUndefined(m.get('inheritedfrom'))) {
return false;
}
@ -409,7 +409,7 @@ define('pgadmin.node.column', [
return flag;
},
editable: function(m) {
// inheritedfrom has value then we should disable it
// inheritedfrom has value then we should disable it
if(!_.isUndefined(m.get('inheritedfrom'))) {
return false;
}
@ -449,7 +449,7 @@ define('pgadmin.node.column', [
_.each(m.datatypes, function(o) {
if ( of_type == o.value ) {
if(o.is_collatable)
{
{
flag = false;
}
}
@ -661,25 +661,25 @@ define('pgadmin.node.column', [
editable_check_for_table: function(arg) {
if (arg instanceof Backbone.Collection) {
return !arg.model.prototype.inSchemaWithColumnCheck.apply(
this, [arg.top]
);
this, [arg.top]
);
} else {
return !arg.inSchemaWithColumnCheck.apply(
this, [arg]
);
this, [arg]
);
}
},
}),
// Below function will enable right click menu for creating column
canCreate: function(itemData, item, data) {
// If check is false then , we will allow create menu
// If check is false then , we will allow create menu
if (data && data.check == false)
return true;
var t = pgBrowser.tree, i = item, d = itemData, parents = [];
// To iterate over tree to check parent node
// To iterate over tree to check parent node
while (i) {
// If it is schema then allow user to create table
// If it is schema then allow user to create table
if (_.indexOf(['schema'], d._type) > -1) {
return true;
}
@ -693,7 +693,7 @@ define('pgadmin.node.column', [
i = t.hasParent(i) ? t.parent(i) : null;
d = i ? t.itemData(i) : null;
}
// If node is under catalog then do not allow 'create' menu
// If node is under catalog then do not allow 'create' menu
if (_.indexOf(parents, 'catalog') > -1 ||
_.indexOf(parents, 'coll-view') > -1 ||
_.indexOf(parents, 'coll-mview') > -1 ||

View File

@ -71,21 +71,21 @@ define('pgadmin.node.check_constraint', [
url: obj.generate_url(i, 'validate', d, true),
type:'GET',
})
.done(function(res) {
if (res.success == 1) {
alertify.success(res.info);
t.removeIcon(i);
data.valid = true;
data.icon = 'icon-check_constraint';
t.addIcon(i, {icon: data.icon});
setTimeout(function() {t.deselect(i);}, 10);
setTimeout(function() {t.select(i);}, 100);
}
})
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
.done(function(res) {
if (res.success == 1) {
alertify.success(res.info);
t.removeIcon(i);
data.valid = true;
data.icon = 'icon-check_constraint';
t.addIcon(i, {icon: data.icon});
setTimeout(function() {t.deselect(i);}, 10);
setTimeout(function() {t.select(i);}, 100);
}
})
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
return false;
},
@ -127,10 +127,10 @@ define('pgadmin.node.check_constraint', [
id: 'consrc', label: gettext('Check'), type: 'multiline', cell:
'string', group: gettext('Definition'), mode: ['properties',
'create', 'edit'], disabled: function(m) {
return ((_.has(m, 'handler') &&
return ((_.has(m, 'handler') &&
!_.isUndefined(m.handler) &&
!_.isUndefined(m.get('oid'))) || (_.isFunction(m.isNew) && !m.isNew()));
}, editable: false,
}, editable: false,
},{
id: 'connoinherit', label: gettext('No inherit?'), type:
'switch', cell: 'boolean', group: gettext('Definition'), mode:
@ -204,21 +204,21 @@ define('pgadmin.node.check_constraint', [
}),
// Below function will enable right click menu for creating check constraint.
canCreate: function(itemData, item, data) {
// If check is false then , we will allow create menu
// If check is false then , we will allow create menu
if (data && data.check == false)
return true;
var t = pgBrowser.tree, i = item, d = itemData, parents = [];
// To iterate over tree to check parent node
// To iterate over tree to check parent node
while (i) {
// If it is schema then allow user to c reate table
// If it is schema then allow user to c reate table
if (_.indexOf(['schema'], d._type) > -1)
return true;
parents.push(d._type);
i = t.hasParent(i) ? t.parent(i) : null;
d = i ? t.itemData(i) : null;
}
// If node is under catalog then do not allow 'create' menu
// If node is under catalog then do not allow 'create' menu
if (_.indexOf(parents, 'catalog') > -1) {
return false;
} else {

View File

@ -48,7 +48,7 @@ define('pgadmin.node.exclusion_constraint', [
!_.isUndefined(m.collection.handler) &&
!_.isUndefined(m.collection.handler.get('amname')) &&
m.collection.handler.get('amname') != 'btree') {
// Disable if access method is not btree
// Disable if access method is not btree
return false;
}
return true;
@ -67,7 +67,7 @@ define('pgadmin.node.exclusion_constraint', [
if (url && (indextype == 'btree' || _.isUndefined(indextype) ||
_.isNull(indextype) || indextype == '')) {
// Set sort_order and nulls to true if access method is btree
// Set sort_order and nulls to true if access method is btree
setTimeout(function() {
m.set('order', true);
m.set('nulls_order', true);
@ -77,10 +77,10 @@ define('pgadmin.node.exclusion_constraint', [
eventHandler = m.top || m,
node_info = this.column.get('node_info'),
full_url = node.generate_url.apply(
node, [
null, url, this.column.get('node_data'),
this.column.get('url_with_id') || false, node_info,
]),
node, [
null, url, this.column.get('node_data'),
this.column.get('url_with_id') || false, node_info,
]),
data = [];
indextype = 'btree';
@ -92,13 +92,13 @@ define('pgadmin.node.exclusion_constraint', [
data : {indextype:indextype},
url: full_url,
})
.done(function(res) {
data = res.data;
self.column.set('options', data);
})
.fail(function() {
eventHandler.trigger('pgadmin:view:fetch:error', m, self.column);
});
.done(function(res) {
data = res.data;
self.column.set('options', data);
})
.fail(function() {
eventHandler.trigger('pgadmin:view:fetch:error', m, self.column);
});
eventHandler.trigger('pgadmin:view:fetched', m, self.column);
}
} else {
@ -193,13 +193,13 @@ define('pgadmin.node.exclusion_constraint', [
data : {col_type:col_type},
url: full_url,
})
.done(function(res) {
data = res.data;
self.column.set('options', data);
})
.fail(function() {
eventHandler.trigger('pgadmin:view:fetch:error', m, self.column);
});
.done(function(res) {
data = res.data;
self.column.set('options', data);
})
.fail(function() {
eventHandler.trigger('pgadmin:view:fetch:error', m, self.column);
});
eventHandler.trigger('pgadmin:view:fetched', m, self.column);
}
}
@ -333,13 +333,13 @@ define('pgadmin.node.exclusion_constraint', [
_.each(rows, function(r) {
if (filter(r)) {
var l = (_.isFunction(node['node_label']) ?
(node['node_label']).apply(node, [r, that.model, that]) :
(node['node_label']).apply(node, [r, that.model, that]) :
r.label),
image = (_.isFunction(node['node_image']) ?
(node['node_image']).apply(
node, [r, that.model, that]
) :
(node['node_image'] || ('icon-' + node.type)));
(node['node_image'] || ('icon-' + node.type)));
res.push({
'value': r.label,
'image': image,
@ -374,9 +374,9 @@ define('pgadmin.node.exclusion_constraint', [
}))({});
var headerGroups = Backform.generateViewSchema(
self.field.get('node_info'), self.headerData, 'create',
node, self.field.get('node_data')
),
self.field.get('node_info'), self.headerData, 'create',
node, self.field.get('node_data')
),
fields = [];
_.each(headerGroups, function(o) {
@ -981,8 +981,8 @@ define('pgadmin.node.exclusion_constraint', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
return !_.isUndefined(m.get('oid'));
}
@ -1024,16 +1024,16 @@ define('pgadmin.node.exclusion_constraint', [
}),
canCreate: function(itemData, item, data) {
// If check is false then , we will allow create menu
// If check is false then , we will allow create menu
if (data && data.check == false)
return true;
var t = pgBrowser.tree, i = item, d = itemData, parents = [],
immediate_parent_table_found = false,
is_immediate_parent_table_partitioned = false;
// To iterate over tree to check parent node
// To iterate over tree to check parent node
while (i) {
// If table is partitioned table then return false
// If table is partitioned table then return false
if (!immediate_parent_table_found && (d._type == 'table' || d._type == 'partition')) {
immediate_parent_table_found = true;
if ('is_partitioned' in d && d.is_partitioned) {
@ -1041,14 +1041,14 @@ define('pgadmin.node.exclusion_constraint', [
}
}
// If it is schema then allow user to create table
// If it is schema then allow user to create table
if (_.indexOf(['schema'], d._type) > -1)
return !is_immediate_parent_table_partitioned;
parents.push(d._type);
i = t.hasParent(i) ? t.parent(i) : null;
d = i ? t.itemData(i) : null;
}
// If node is under catalog then do not allow 'create' menu
// If node is under catalog then do not allow 'create' menu
if (_.indexOf(parents, 'catalog') > -1) {
return false;
} else {

View File

@ -27,8 +27,8 @@ define('pgadmin.node.foreign_key', [
return opt.text;
} else {
return $(
'<span><span class="wcTabIcon ' + optimage + '"/>' + opt.text + '</span>'
);
'<span><span class="wcTabIcon ' + optimage + '"/>' + opt.text + '</span>'
);
}
},
headerSelectControlTemplate = _.template([
@ -224,15 +224,15 @@ define('pgadmin.node.foreign_key', [
data : {tid:tid},
url: full_url,
})
.done(function(res) {
data = res.data;
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
.done(function(res) {
data = res.data;
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
m.trigger('pgadmin:view:fetched', m, self.field);
}
/*
/*
* Transform the data
*/
var transform = this.field.get('transform') || self.defaults.transform;
@ -285,9 +285,9 @@ define('pgadmin.node.foreign_key', [
}))({});
var headerGroups = Backform.generateViewSchema(
self.field.get('node_info'), self.headerData, 'create',
node, self.field.get('node_data')
),
self.field.get('node_info'), self.headerData, 'create',
node, self.field.get('node_data')
),
fields = [];
_.each(headerGroups, function(o) {
@ -486,7 +486,7 @@ define('pgadmin.node.foreign_key', [
}
var m = new (self.field.get('model'))(
self.headerData.toJSON()),
self.headerData.toJSON()),
coll = self.model.get(self.field.get('name'));
coll.add(m);
@ -567,12 +567,12 @@ define('pgadmin.node.foreign_key', [
data : {cols:JSON.stringify(cols)},
url: full_url,
})
.done(function(res) {
coveringindex = res.data;
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
.done(function(res) {
coveringindex = res.data;
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
m.trigger('pgadmin:view:fetched', m, self.field);
}
}
@ -662,21 +662,21 @@ define('pgadmin.node.foreign_key', [
url: obj.generate_url(i, 'validate', d, true),
type:'GET',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.valid = true;
data.icon = 'icon-foreign_key';
t.addIcon(i, {icon: data.icon});
setTimeout(function() {t.deselect(i);}, 10);
setTimeout(function() {t.select(i);}, 100);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.valid = true;
data.icon = 'icon-foreign_key';
t.addIcon(i, {icon: data.icon});
setTimeout(function() {t.deselect(i);}, 10);
setTimeout(function() {t.select(i);}, 100);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
return false;
},
@ -981,19 +981,19 @@ define('pgadmin.node.foreign_key', [
},
}),
canAdd: function(m) {
// We can't update columns of existing foreign key.
// We can't update columns of existing foreign key.
return m.isNew();
}, canDelete: true,
control: ForeignKeyColumnControl,
model: ForeignKeyColumnModel,
disabled: function(m) {
// If we are in table edit mode then
// If we are in table edit mode then
if (_.has(m, 'handler') && !_.isUndefined(m.handler)) {
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
return !_.isUndefined(m.get('oid'));
}
// We can't update columns of existing foreign key.
// We can't update columns of existing foreign key.
return !m.isNew();
},
},{
@ -1001,19 +1001,19 @@ define('pgadmin.node.foreign_key', [
type:'select2', group: gettext('Action'), mode: ['edit','create'],
select2:{width:'50%', allowClear: false},
options: [
{label: 'NO ACTION', value: 'a'},
{label: 'RESTRICT', value: 'r'},
{label: 'CASCADE', value: 'c'},
{label: 'SET NULL', value: 'n'},
{label: 'SET DEFAULT', value: 'd'},
{label: 'NO ACTION', value: 'a'},
{label: 'RESTRICT', value: 'r'},
{label: 'CASCADE', value: 'c'},
{label: 'SET NULL', value: 'n'},
{label: 'SET DEFAULT', value: 'd'},
],disabled: function(m) {
// If we are in table edit mode then
// If we are in table edit mode then
if (_.has(m, 'handler') && !_.isUndefined(m.handler)) {
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
return !_.isUndefined(m.get('oid'));
}
// We can't update confupdtype of existing foreign key.
// We can't update confupdtype of existing foreign key.
return !m.isNew();
},
},{
@ -1021,19 +1021,19 @@ define('pgadmin.node.foreign_key', [
type:'select2', group: gettext('Action'), mode: ['edit','create'],
select2:{width:'50%', allowClear: false},
options: [
{label: 'NO ACTION', value: 'a'},
{label: 'RESTRICT', value: 'r'},
{label: 'CASCADE', value: 'c'},
{label: 'SET NULL', value: 'n'},
{label: 'SET DEFAULT', value: 'd'},
{label: 'NO ACTION', value: 'a'},
{label: 'RESTRICT', value: 'r'},
{label: 'CASCADE', value: 'c'},
{label: 'SET NULL', value: 'n'},
{label: 'SET DEFAULT', value: 'd'},
],disabled: function(m) {
// If we are in table edit mode then
// If we are in table edit mode then
if (_.has(m, 'handler') && !_.isUndefined(m.handler)) {
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
return !_.isUndefined(m.get('oid'));
}
// We can't update confdeltype of existing foreign key.
// We can't update confdeltype of existing foreign key.
return !m.isNew();
},
},
@ -1064,7 +1064,7 @@ define('pgadmin.node.foreign_key', [
}),
canCreate: function(itemData, item, data) {
// If check is false then , we will allow create menu
// If check is false then , we will allow create menu
if (data && data.check == false)
return true;
@ -1073,9 +1073,9 @@ define('pgadmin.node.foreign_key', [
is_immediate_parent_table_partitioned = false,
s_version = this.getTreeNodeHierarchy(i).server.version;
// To iterate over tree to check parent node
// To iterate over tree to check parent node
while (i) {
// If table is partitioned table then return false
// If table is partitioned table then return false
if (!immediate_parent_table_found && (d._type == 'table' || d._type == 'partition')) {
immediate_parent_table_found = true;
if ('is_partitioned' in d && d.is_partitioned && s_version < 110000) {
@ -1083,14 +1083,14 @@ define('pgadmin.node.foreign_key', [
}
}
// If it is schema then allow user to c reate table
// If it is schema then allow user to c reate table
if (_.indexOf(['schema'], d._type) > -1)
return !is_immediate_parent_table_partitioned;
parents.push(d._type);
i = t.hasParent(i) ? t.parent(i) : null;
d = i ? t.itemData(i) : null;
}
// If node is under catalog then do not allow 'create' menu
// If node is under catalog then do not allow 'create' menu
if (_.indexOf(parents, 'catalog') > -1) {
return false;
} else {

View File

@ -314,7 +314,7 @@ define('pgadmin.node.primary_key', [
this.stopListening(this.model, 'change:' + name, this.render);
/*
/*
* Iterate through all the values, and find out how many are already
* present in the collection.
*/
@ -329,7 +329,7 @@ define('pgadmin.node.primary_key', [
}
});
/*
/*
* Adding new values
*/
@ -344,7 +344,7 @@ define('pgadmin.node.primary_key', [
collection.add(m);
});
/*
/*
* Removing unwanted!
*/
_.each(removed, function(v) {
@ -391,8 +391,8 @@ define('pgadmin.node.primary_key', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
return !_.isUndefined(m.get('oid'));
}
@ -488,8 +488,8 @@ define('pgadmin.node.primary_key', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
return !_.isUndefined(m.get('oid'));
}
@ -580,8 +580,8 @@ define('pgadmin.node.primary_key', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
return !_.isUndefined(m.get('oid'));
}
@ -609,8 +609,8 @@ define('pgadmin.node.primary_key', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
return !_.isUndefined(m.get('oid'));
}

View File

@ -300,7 +300,7 @@ define('pgadmin.node.unique_constraint', [
this.stopListening(this.model, 'change:' + name, this.render);
/*
/*
* Iterate through all the values, and find out how many are already
* present in the collection.
*/
@ -315,7 +315,7 @@ define('pgadmin.node.unique_constraint', [
}
});
/*
/*
* Adding new values
*/
@ -330,7 +330,7 @@ define('pgadmin.node.unique_constraint', [
collection.add(m);
});
/*
/*
* Removing unwanted!
*/
_.each(removed, function(v) {
@ -377,8 +377,8 @@ define('pgadmin.node.unique_constraint', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
return !_.isUndefined(m.get('oid'));
}
@ -474,8 +474,8 @@ define('pgadmin.node.unique_constraint', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should be allowed for Unique
return !_.isUndefined(m.get('oid'));
}
@ -566,8 +566,8 @@ define('pgadmin.node.unique_constraint', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
return !_.isUndefined(m.get('oid'));
}
@ -595,8 +595,8 @@ define('pgadmin.node.unique_constraint', [
// If we are in table edit mode then
if (_.has(m, 'top') && !_.isUndefined(m.top)
&& !m.top.isNew()) {
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
// If OID is undefined then user is trying to add
// new constraint which should allowed for Unique
return !_.isUndefined(m.get('oid'));
}

View File

@ -205,8 +205,8 @@ define('pgadmin.node.index', [
_.isNull(parent_model.get('amname')) ||
String(parent_model.get('amname')).replace(/^\s+|\s+$/g, '') == '' ||
parent_model.get('amname') === 'btree') {
// We need to set nulls to true if sort_order is set to desc
// nulls first is default for desc
// We need to set nulls to true if sort_order is set to desc
// nulls first is default for desc
if(m.get('sort_order') == true && m.previous('sort_order') == false) {
setTimeout(function() { m.set('nulls', true); }, 10);
}

View File

@ -108,12 +108,12 @@ function(
info || {} : this.getTreeNodeHierarchy(item);
return S('table/%s/%s/%s/%s/%s/%s').sprintf(
encodeURIComponent(type), encodeURIComponent(info['server_group']._id),
encodeURIComponent(info['server']._id),
encodeURIComponent(info['database']._id),
encodeURIComponent(info['partition'].schema_id),
encodeURIComponent(info['partition']._id)
).value();
encodeURIComponent(type), encodeURIComponent(info['server_group']._id),
encodeURIComponent(info['server']._id),
encodeURIComponent(info['database']._id),
encodeURIComponent(info['partition'].schema_id),
encodeURIComponent(info['partition']._id)
).value();
},
canDrop: SchemaChildTreeNode.isTreeItemOfChildOfSchema,
canDropCascade: SchemaChildTreeNode.isTreeItemOfChildOfSchema,
@ -146,21 +146,21 @@ function(
data: params,
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.unload(i);
t.setInode(i);
t.deselect(i);
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(i);
t.deselect(i);
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
},
/* Truncate table */
truncate_table: function(args) {
@ -194,25 +194,25 @@ function(
data: params,
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-partition';
t.addIcon(i, {icon: data.icon});
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-partition';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
}},
function() {}
);
@ -237,25 +237,25 @@ function(
url: obj.generate_url(i, 'reset' , d, true),
type:'DELETE',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-partition';
t.addIcon(i, {icon: data.icon});
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-partition';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
}
},
function() {}
@ -280,26 +280,26 @@ function(
url: obj.generate_url(i, 'detach' , d, true),
type:'PUT',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
var n = t.next(i);
if (!n || !n.length) {
n = t.prev(i);
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
var n = t.next(i);
if (!n || !n.length) {
n = t.parent(i);
t.setInode(n, true);
n = t.prev(i);
if (!n || !n.length) {
n = t.parent(i);
t.setInode(n, true);
}
}
t.remove(i);
if (n.length) {
t.select(n);
}
}
t.remove(i);
if (n.length) {
t.select(n);
}
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
}
},
function() {}
@ -343,8 +343,8 @@ function(
initialize: function(attrs, args) {
if (_.size(attrs) === 0) {
var userInfo = pgBrowser.serverInfo[
args.node_info.server._id
].user,
args.node_info.server._id
].user,
schemaInfo = args.node_info.schema;
this.set({
@ -486,11 +486,11 @@ function(
if (primary_key_column_exist.length == 0) {
var primary_key_column = new (primary_key_column_coll.model)(
{column: column_name}, { silent: true,
top: self.model,
collection: primary_key_coll,
handler: primary_key_coll,
});
{column: column_name}, { silent: true,
top: self.model,
collection: primary_key_coll,
handler: primary_key_coll,
});
primary_key_column_coll.add(primary_key_column);
}
@ -574,7 +574,7 @@ function(
return true;
},
canAddRow: function(m) {
// User can only add one primary key
// User can only add one primary key
var columns = m.get('columns');
return (m.get('primary_key') &&
@ -602,7 +602,7 @@ function(
},
columns : ['name', 'columns'],
canAddRow: function(m) {
// User can only add if there is at least one column with name.
// User can only add if there is at least one column with name.
var columns = m.get('columns');
return _.some(columns.pluck('name'));
},
@ -637,7 +637,7 @@ function(
return true;
},
canAddRow: function(m) {
// User can only add if there is at least one column with name.
// User can only add if there is at least one column with name.
var columns = m.get('columns');
return _.some(columns.pluck('name'));
},
@ -662,7 +662,7 @@ function(
return true;
},
canAddRow: function(m) {
// User can only add if there is at least one column with name.
// User can only add if there is at least one column with name.
var columns = m.get('columns');
return _.some(columns.pluck('name'));
},
@ -679,7 +679,7 @@ function(
return data;
},
control: Backform.NodeAjaxOptionsControl.extend({
// When of_types changes we need to clear columns collection
// When of_types changes we need to clear columns collection
onChange: function() {
Backform.NodeAjaxOptionsControl.prototype.onChange.apply(this, arguments);
var self = this,
@ -693,7 +693,7 @@ function(
var msg = gettext('Changing of table type will clear columns collection.');
Alertify.confirm(msg, function (e) {
if (e) {
// User clicks Ok, lets clear columns collection
// User clicks Ok, lets clear columns collection
column_collection.reset();
} else {
return this;
@ -703,11 +703,11 @@ function(
column_collection.reset();
}
// Run Ajax now to fetch columns
// Run Ajax now to fetch columns
if (!_.isUndefined(tbl_name) && tbl_name !== '') {
arg = { 'tname': tbl_name };
data = self.model.fetch_columns_ajax.apply(self, [arg]);
// Add into column collection
// Add into column collection
column_collection.set(data, { merge:false,remove:false });
}
},
@ -878,27 +878,27 @@ function(
// Make ajax call to get the tables to be attached
$.ajax({
url: node.generate_url.apply(
node, [
null, 'get_attach_tables', this.field.get('node_data'),
true, node_info,
]),
node, [
null, 'get_attach_tables', this.field.get('node_data'),
true, node_info,
]),
type: 'GET',
async: false,
})
.done(function(res) {
if (res.success == 1) {
self.model.table_options = res.data;
}
else {
Alertify.alert(
gettext('Error fetching tables to be attached'), res.data.result
);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error, gettext('Error fetching tables to be attached'));
});
.done(function(res) {
if (res.success == 1) {
self.model.table_options = res.data;
}
else {
Alertify.alert(
gettext('Error fetching tables to be attached'), res.data.result
);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error, gettext('Error fetching tables to be attached'));
});
}
},
}
@ -1143,11 +1143,11 @@ function(
node = this.field.get('schema_node'),
node_info = this.field.get('node_info'),
full_url = node.generate_url.apply(
node, [
null, url, this.field.get('node_data'),
this.field.get('url_with_id') || false, node_info,
]
),
node, [
null, url, this.field.get('node_data'),
this.field.get('url_with_id') || false, node_info,
]
),
cache_level = this.field.get('cache_level') || node.type,
cache_node = this.field.get('cache_node');
@ -1160,12 +1160,12 @@ function(
url: full_url,
data: arg,
})
.done(function(res) {
data = cache_node.cache(url, node_info, cache_level, res.data);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
.done(function(res) {
data = cache_node.cache(url, node_info, cache_level, res.data);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
m.trigger('pgadmin:view:fetched', m, self.field);
data = (data && data.data) || [];
return data;

View File

@ -97,12 +97,12 @@ define('pgadmin.node.table_partition_utils', [
return _.isObject(res) && !_.isArray(res) ? null : res;
},
initialize: function() {
// Here we will decide if we need to call URL
// Or fetch the data from parent columns collection
// Here we will decide if we need to call URL
// Or fetch the data from parent columns collection
var self = this;
if(this.model.handler) {
Backgrid.Extension.Select2DepCell.prototype.initialize.apply(this, arguments);
// Do not listen for any event(s) for existing constraint.
// Do not listen for any event(s) for existing constraint.
if (_.isUndefined(self.model.get('oid'))) {
var tableCols = self.model.top.get('columns');
self.listenTo(tableCols, 'remove' , self.resetColOptions);
@ -121,7 +121,7 @@ define('pgadmin.node.table_partition_utils', [
}, 50);
},
custom_options: function() {
// We will add all the columns entered by user in table model
// We will add all the columns entered by user in table model
var columns = this.model.top.get('columns'),
typename = this.model.top.get('typname'),
of_types_tables = this.model.top.of_types_tables,
@ -132,26 +132,26 @@ define('pgadmin.node.table_partition_utils', [
var col = m.get('name');
if(!_.isUndefined(col) && !_.isNull(col)) {
added_columns_from_tables.push(
{label: col, value: col, image:'icon-column'}
);
{label: col, value: col, image:'icon-column'}
);
}
});
} else if (!_.isUndefined(typename) && !_.isNull(typename)
&& !_.isUndefined(of_types_tables) && of_types_tables.length > 0) {
// Iterate through all the of_type tables
// Iterate through all the of_type tables
_.each(of_types_tables, function(type) {
if (type.label == typename) {
// Iterate all the columns of selected "OF TYPE".
// Iterate all the columns of selected "OF TYPE".
_.each(type.oftype_columns, function(col) {
added_columns_from_tables.push(
{label: col.name, value: col.name, image:'icon-column'}
);
{label: col.name, value: col.name, image:'icon-column'}
);
});
}
});
}
// Set the values in to options so that user can select
// Set the values in to options so that user can select
this.column.set('options', added_columns_from_tables);
},
remove: function() {

View File

@ -175,25 +175,25 @@ define('pgadmin.node.table', [
data: params,
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = data.is_partitioned ? 'icon-partition': 'icon-table';
t.addIcon(i, {icon: data.icon});
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = data.is_partitioned ? 'icon-partition': 'icon-table';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
}
}, function() {}
);
@ -218,25 +218,25 @@ define('pgadmin.node.table', [
url: obj.generate_url(i, 'reset' , d, true),
type:'DELETE',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = data.is_partitioned ? 'icon-partition': 'icon-table';
t.addIcon(i, {icon: data.icon});
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.removeIcon(i);
data.icon = data.is_partitioned ? 'icon-partition': 'icon-table';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
}
},
function() {}
@ -256,20 +256,20 @@ define('pgadmin.node.table', [
url: obj.generate_url(i, 'count_rows' , d, true),
type:'GET',
})
.done(function(res) {
Alertify.success(res.info);
d.rows_cnt = res.data.total_rows;
t.unload(i);
t.setInode(i);
t.deselect(i);
setTimeout(function() {
t.select(i);
}, 10);
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
.done(function(res) {
Alertify.success(res.info);
d.rows_cnt = res.data.total_rows;
t.unload(i);
t.setInode(i);
t.deselect(i);
setTimeout(function() {
t.select(i);
}, 10);
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
},
},
model: pgBrowser.Node.Model.extend({
@ -309,8 +309,8 @@ define('pgadmin.node.table', [
initialize: function(attrs, args) {
if (_.size(attrs) === 0) {
var userInfo = pgBrowser.serverInfo[
args.node_info.server._id
].user,
args.node_info.server._id
].user,
schemaInfo = args.node_info.schema;
this.set({
@ -739,22 +739,22 @@ define('pgadmin.node.table', [
msg = gettext('Changing \'Of type\' will remove column definitions.');
Alertify.confirm(
title, msg, function () {
// User clicks Ok, lets clear columns collection
column_collection.remove(
column_collection.filter(function() { return true; })
);
},
function() {
setTimeout(function() {
self.model.set('typname', null);
}, 10);
}
);
title, msg, function () {
// User clicks Ok, lets clear columns collection
column_collection.remove(
column_collection.filter(function() { return true; })
);
},
function() {
setTimeout(function() {
self.model.set('typname', null);
}, 10);
}
);
} else if (!_.isUndefined(tbl_name) && tbl_name === '') {
column_collection.remove(
column_collection.filter(function() { return true; })
);
column_collection.filter(function() { return true; })
);
}
// Run Ajax now to fetch columns
@ -903,7 +903,7 @@ define('pgadmin.node.table', [
if (m.get('partition_type') && m.get('partition_type') == 'list')
max_row_count = 1;
/* If columns are not specified by the user then it may be
/* If columns are not specified by the user then it may be
* possible that he/she selected 'OF TYPE', so we should check
* for that as well.
*/
@ -1011,19 +1011,19 @@ define('pgadmin.node.table', [
type: 'GET',
async: false,
})
.done(function(res) {
if (res.success == 1) {
self.model.table_options = res.data;
}
else {
Alertify.alert(
gettext('Error fetching tables to be attached'), res.data.result
);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
.done(function(res) {
if (res.success == 1) {
self.model.table_options = res.data;
}
else {
Alertify.alert(
gettext('Error fetching tables to be attached'), res.data.result
);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
}
},
}
@ -1291,12 +1291,12 @@ define('pgadmin.node.table', [
url: full_url,
data: arg,
})
.done(function(res) {
data = cache_node.cache(url, node_info, cache_level, res.data);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
.done(function(res) {
data = cache_node.cache(url, node_info, cache_level, res.data);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
m.trigger('pgadmin:view:fetched', m, self.field);
data = (data && data.data) || [];
return data;

View File

@ -111,25 +111,25 @@ define('pgadmin.node.trigger', [
data: {'enable' : true},
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-trigger';
t.addIcon(i, {icon: data.icon});
.done(function(res) {
if (res.success == 1) {
alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-trigger';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(false);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(false);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
},
/* Disable trigger */
disable_trigger: function(args) {
@ -149,25 +149,25 @@ define('pgadmin.node.trigger', [
data: {'enable' : false},
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-trigger-bad';
t.addIcon(i, {icon: data.icon});
.done(function(res) {
if (res.success == 1) {
alertify.success(res.info);
t.removeIcon(i);
data.icon = 'icon-trigger-bad';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(false);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error, gettext('Disable trigger failed'));
t.unload(i);
t.setInode(false);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error, gettext('Disable trigger failed'));
t.unload(i);
});
});
},
},
canDrop: SchemaChildTreeNode.isTreeItemOfChildOfSchema,
@ -199,7 +199,7 @@ define('pgadmin.node.trigger', [
if (_.has(m, 'node_info') && _.has(m.node_info, 'table') &&
_.has(m.node_info.table, 'is_partitioned') &&
m.node_info.table.is_partitioned && m.node_info.server.version < 110000
)
)
{
setTimeout(function(){
m.set('is_row_trigger', false);
@ -214,7 +214,7 @@ define('pgadmin.node.trigger', [
if(!m.inSchemaWithModelCheck.apply(this, [m])) {
if(!_.isUndefined(is_constraint_trigger) &&
is_constraint_trigger === true) {
// change it's model value
// change it's model value
setTimeout(function() { m.set('is_row_trigger', true); }, 10);
return true;
} else {
@ -263,7 +263,7 @@ define('pgadmin.node.trigger', [
is_constraint_trigger === true) {
return false;
} else {
// If value is already set then reset it to false
// If value is already set then reset it to false
if(m.get('tgdeferrable')) {
setTimeout(function() { m.set('tgdeferrable', false); }, 10);
}
@ -287,11 +287,11 @@ define('pgadmin.node.trigger', [
tgdeferrable) {
return false;
} else {
// If value is already set then reset it to false
// If value is already set then reset it to false
if(m.get('tginitdeferred')) {
setTimeout(function() { m.set('tginitdeferred', false); }, 10);
}
// If constraint trigger is set then do not disable
// If constraint trigger is set then do not disable
return m.get('is_constraint_trigger') ? false : true;
}
} else {
@ -318,7 +318,7 @@ define('pgadmin.node.trigger', [
if(server_type === 'ppas' &&
!_.isUndefined(tfunction) &&
tfunction === 'Inline EDB-SPL') {
// Disable and clear its value
// Disable and clear its value
m.set('tgargs', undefined);
return true;
} else {
@ -334,8 +334,8 @@ define('pgadmin.node.trigger', [
mode: ['create','edit', 'properties'], group: gettext('Events'),
options: function(control) {
var table_options = [
{label: 'BEFORE', value: 'BEFORE'},
{label: 'AFTER', value: 'AFTER'}],
{label: 'BEFORE', value: 'BEFORE'},
{label: 'AFTER', value: 'AFTER'}],
view_options = [
{label: 'BEFORE', value: 'BEFORE'},
{label: 'AFTER', value: 'AFTER'},

View File

@ -435,12 +435,12 @@ define('pgadmin.node.type', [
cache: false,
data: {'typname' : l_typname},
})
.done(function(res) {
result = res.data;
})
.fail(function() {
self.model.trigger('pgadmin:view:fetch:error', self.model, self.field);
});
.done(function(res) {
result = res.data;
})
.fail(function() {
self.model.trigger('pgadmin:view:fetch:error', self.model, self.field);
});
//
}
return result;
@ -503,13 +503,13 @@ define('pgadmin.node.type', [
cache: false,
data: {'name' : name},
})
.done(function(res) {
result = res.data;
})
.fail(function() {
self.model.trigger('pgadmin:view:fetch:error',
self.model, self.field);
});
.done(function(res) {
result = res.data;
})
.fail(function() {
self.model.trigger('pgadmin:view:fetch:error',
self.model, self.field);
});
}
return result;
},
@ -528,24 +528,24 @@ define('pgadmin.node.type', [
!_.isUndefined(l_opcname) && l_opcname != '') {
var node = this.field.get('schema_node'),
_url = node.generate_url.apply(
node, [
null, 'get_stypediff',
this.field.get('node_data'), false,
this.field.get('node_info'),
]);
node, [
null, 'get_stypediff',
this.field.get('node_data'), false,
this.field.get('node_info'),
]);
$.ajax({
async: false,
url: _url,
cache: false,
data: {'typname' : l_typname, 'opcname': l_opcname},
})
.done(function(res) {
result = res.data;
})
.fail(function() {
self.model.trigger('pgadmin:view:fetch:error',
.done(function(res) {
result = res.data;
})
.fail(function() {
self.model.trigger('pgadmin:view:fetch:error',
self.model, self.field);
});
});
}
return result;
},

View File

@ -267,20 +267,20 @@ define('pgadmin.node.mview', [
data: {'concurrent': args.concurrent, 'with_data': args.with_data},
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(gettext('View refreshed successfully'));
}
else {
Alertify.alert(
gettext('Error refreshing view'),
.done(function(res) {
if (res.success == 1) {
Alertify.success(gettext('View refreshed successfully'));
}
else {
Alertify.alert(
gettext('Error refreshing view'),
res.data.result
);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error, gettext('Error refreshing view'));
});
);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error, gettext('Error refreshing view'));
});
},
is_version_supported: function(data, item) {

View File

@ -62,7 +62,7 @@ define('pgadmin.node.view', [
this.initialized = true;
/**
/**
Add "create view" menu option into context and object menu
for the following nodes:
coll-view, view and schema.

View File

@ -197,33 +197,33 @@ define('pgadmin.node.database', [
url: obj.generate_url(i, 'connect', d, true),
type:'DELETE',
})
.done(function(res) {
if (res.success == 1) {
var prv_i = t.parent(i);
Alertify.success(res.info);
t.removeIcon(i);
data.connected = false;
data.icon = 'icon-database-not-connected';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(i);
setTimeout(function() {
t.select(prv_i);
}, 10);
.done(function(res) {
if (res.success == 1) {
var prv_i = t.parent(i);
Alertify.success(res.info);
t.removeIcon(i);
data.connected = false;
data.icon = 'icon-database-not-connected';
t.addIcon(i, {icon: data.icon});
t.unload(i);
t.setInode(i);
setTimeout(function() {
t.select(prv_i);
}, 10);
} else {
try {
Alertify.error(res.errormsg);
} catch (e) {
console.warn(e.stack || e);
} else {
try {
Alertify.error(res.errormsg);
} catch (e) {
console.warn(e.stack || e);
}
t.unload(i);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
},
function() { return true; });

View File

@ -186,11 +186,11 @@ define('pgadmin.node.pga_job', [
})
// 'pgagent.pga_job' table updated with current time to run the job
// now.
.done(function() { t.unload(i); })
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
.done(function() { t.unload(i); })
.fail(function(xhr, status, error) {
alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
return false;
},

View File

@ -209,11 +209,11 @@ define('pgadmin.node.role', [
return opt.text;
} else {
var d = _.extend(
{}, data, {
'opttext': _.escape(opt.text),
'optimage': optimage,
'checkbox': true,
}),
{}, data, {
'opttext': _.escape(opt.text),
'optimage': optimage,
'checkbox': true,
}),
j = $(self.selectionTemplate(d));
// Update the checkbox lazy
@ -255,7 +255,7 @@ define('pgadmin.node.role', [
this.stopListening(this.model, 'change:' + name, this.render);
/*
/*
* Iterate through all the values, and find out how many are already
* present in the collection.
*/
@ -270,14 +270,14 @@ define('pgadmin.node.role', [
}
});
/*
/*
* Adding new values
*/
_.each(vals, function(v) {
collection.add({role: v});
});
/*
/*
* Removing unwanted!
*/
_.each(removed, function(v) {

View File

@ -133,8 +133,8 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
// it is not loaded yet
node_info = (_.has(model.top, 'node_info')
&& !_.isUndefined(model.top.node_info)) ?
model.top.node_info :
model.handler.top.node_info,
model.top.node_info :
model.handler.top.node_info,
curr_user = node_info.server.user.name;
model.collection.each(function(m) {
@ -282,11 +282,11 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
this.attributes['privileges']) {
var anyPrivSelected = false;
this.attributes['privileges'].each(
function(p) {
if (p.get('privilege')) {
anyPrivSelected = true;
}
});
function(p) {
if (p.get('privilege')) {
anyPrivSelected = true;
}
});
if (!anyPrivSelected) {
msg = gettext('At least one privilege should be selected.');
@ -473,7 +473,7 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
*/
$allPrivileges.prop('checked', false);
$elGrant.prop('checked', false),
$allGrants.prop('checked', false);
$allGrants.prop('checked', false);
$elGrant.prop('disabled', true);
$allGrants.prop('disabled', true);
}
@ -546,8 +546,8 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
if (type == 'with_grant') {
$allGrants = $tbl.find(
'input[name=with_grant][privilege!=\'ALL\']:checked'
);
'input[name=with_grant][privilege!=\'ALL\']:checked'
);
if ($allGrants.length == collection.models.length) {
$allGrants.prop('disabled', false);
$allGrants.prop('checked', true);
@ -616,7 +616,7 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
coll = this.model.get(this.column.get('name'));
if (command.moveUp() || command.moveDown() || command.save()) {
// backgrid vertical navigation (Up/Down arrow key)
// backgrid vertical navigation (Up/Down arrow key)
ev.preventDefault();
ev.stopPropagation();
model.trigger('backgrid:edited', model, column, command);
@ -752,7 +752,7 @@ define(['sources/gettext', 'underscore', 'jquery', 'backbone', 'backform',
e.stopPropagation();
model.trigger('backgrid:edited', model, column, command);
}
// esc
// esc
else if (command.cancel()) {
// undo
e.stopPropagation();

View File

@ -223,38 +223,38 @@ define('pgadmin.node.server', [
url: obj.generate_url(i, 'connect', d, true),
type:'DELETE',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
d = t.itemData(i);
t.removeIcon(i);
d.connected = false;
d.icon = 'icon-server-not-connected';
t.addIcon(i, {icon: d.icon});
obj.callbacks.refresh.apply(obj, [null, i]);
if (pgBrowser.serverInfo && d._id in pgBrowser.serverInfo) {
delete pgBrowser.serverInfo[d._id];
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
d = t.itemData(i);
t.removeIcon(i);
d.connected = false;
d.icon = 'icon-server-not-connected';
t.addIcon(i, {icon: d.icon});
obj.callbacks.refresh.apply(obj, [null, i]);
if (pgBrowser.serverInfo && d._id in pgBrowser.serverInfo) {
delete pgBrowser.serverInfo[d._id];
}
pgBrowser.enable_disable_menus(i);
// Trigger server disconnect event
pgBrowser.Events.trigger(
'pgadmin:server:disconnect',
{item: i, data: d}, false
);
}
pgBrowser.enable_disable_menus(i);
// Trigger server disconnect event
pgBrowser.Events.trigger(
'pgadmin:server:disconnect',
{item: i, data: d}, false
);
}
else {
try {
Alertify.error(res.errormsg);
} catch (e) {
console.warn(e.stack || e);
else {
try {
Alertify.error(res.errormsg);
} catch (e) {
console.warn(e.stack || e);
}
t.unload(i);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
};
if (notify) {
@ -318,18 +318,18 @@ define('pgadmin.node.server', [
url: obj.generate_url(i, 'reload', d, true),
method:'GET',
})
.done(function(res) {
if (res.data.status) {
Alertify.success(res.data.result);
}
else {
Alertify.error(res.data.result);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
.done(function(res) {
if (res.data.status) {
Alertify.success(res.data.result);
}
else {
Alertify.error(res.data.result);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
},
function() { return true; }
);
@ -359,13 +359,13 @@ define('pgadmin.node.server', [
method:'POST',
data:{ 'value': JSON.stringify(value) },
})
.done(function(res) {
Alertify.success(res.data.result, 10);
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
.done(function(res) {
Alertify.success(res.data.result, 10);
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
} else {
evt.cancel = true;
Alertify.error( gettext('Please enter a valid name.'), 10);
@ -515,27 +515,27 @@ define('pgadmin.node.server', [
method:'POST',
data:{'data': JSON.stringify(args) },
})
.done(function(res) {
if (res.success) {
.done(function(res) {
if (res.success) {
// Notify user to update pgpass file
if(is_pgpass_file_used) {
Alertify.alert(
gettext('Change Password'),
gettext('Please make sure to disconnect the server'
if(is_pgpass_file_used) {
Alertify.alert(
gettext('Change Password'),
gettext('Please make sure to disconnect the server'
+ ' and update the new password in the pgpass file'
+ ' before performing any other operation')
);
}
);
}
Alertify.success(res.info);
self.close();
} else {
Alertify.error(res.errormsg);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
Alertify.success(res.info);
self.close();
} else {
Alertify.error(res.errormsg);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
}
},
};
@ -547,15 +547,15 @@ define('pgadmin.node.server', [
url: check_pgpass_url,
method:'GET',
})
.done(function(res) {
if (res.success && res.data.is_pgpass) {
is_pgpass_file_used = true;
}
Alertify.changeServerPassword(d).resizeTo('40%','52%');
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
.done(function(res) {
if (res.success && res.data.is_pgpass) {
is_pgpass_file_used = true;
}
Alertify.changeServerPassword(d).resizeTo('40%','52%');
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
return false;
},
@ -576,23 +576,23 @@ define('pgadmin.node.server', [
type:'DELETE',
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).wal_pause=res.data.wal_pause;
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).wal_pause=res.data.wal_pause;
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
},
/* Resume WAL Replay */
@ -611,23 +611,23 @@ define('pgadmin.node.server', [
type:'PUT',
dataType: 'json',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).wal_pause=res.data.wal_pause;
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).wal_pause=res.data.wal_pause;
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
t.setInode(i);
t.deselect(i);
// Fetch updated data from server
setTimeout(function() {
t.select(i);
}, 10);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
t.unload(i);
});
});
},
/* Cleat saved database server password */
@ -651,18 +651,18 @@ define('pgadmin.node.server', [
url: obj.generate_url(i, 'clear_saved_password', d, true),
method:'PUT',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).is_password_saved=res.data.is_password_saved;
}
else {
Alertify.error(res.info);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).is_password_saved=res.data.is_password_saved;
}
else {
Alertify.error(res.info);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
},
function() { return true; }
);
@ -691,18 +691,18 @@ define('pgadmin.node.server', [
url: obj.generate_url(i, 'clear_sshtunnel_password', d, true),
method:'PUT',
})
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).is_tunnel_password_saved=res.data.is_tunnel_password_saved;
}
else {
Alertify.error(res.info);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
.done(function(res) {
if (res.success == 1) {
Alertify.success(res.info);
t.itemData(i).is_tunnel_password_saved=res.data.is_tunnel_password_saved;
}
else {
Alertify.error(res.info);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
},
function() { return true; }
);
@ -1241,16 +1241,16 @@ define('pgadmin.node.server', [
url: _url,
data: $('#frmPassword').serialize(),
})
.done(function(res) {
return _onSuccess(
res, _node, _data, _tree, _item, _status
);
})
.fail(function(xhr, status, error) {
return _onFailure(
xhr, status, error, _node, _data, _tree, _item, _status
);
});
.done(function(res) {
return _onSuccess(
res, _node, _data, _tree, _item, _status
);
})
.fail(function(xhr, status, error) {
return _onFailure(
xhr, status, error, _node, _data, _tree, _item, _status
);
});
} else {
_onCancel && typeof(_onCancel) == 'function' &&
_onCancel(_tree, _item, _data, _status);

View File

@ -11,214 +11,214 @@ define([
'sources/gettext', 'underscore', 'jquery', 'backbone', 'backform', 'backgrid', 'alertify',
'sources/pgadmin', 'pgadmin.browser.node', 'pgadmin.browser.node.ui',
],
function(gettext, _, $, Backbone, Backform, Backgrid, Alertify, pgAdmin, pgNode) {
function(gettext, _, $, Backbone, Backform, Backgrid, Alertify, pgAdmin, pgNode) {
/*
/*
* cellFunction for variable control.
* This function returns cell class depending on vartype.
*/
var cellFunction = function(model) {
var self = this,
name = model.get('name'),
availVariables = {};
var cellFunction = function(model) {
var self = this,
name = model.get('name'),
availVariables = {};
self.collection.each(function(col) {
if (col.get('name') == 'name') {
availVariables = col.get('availVariables');
}
});
self.collection.each(function(col) {
if (col.get('name') == 'name') {
availVariables = col.get('availVariables');
}
});
var variable = name ? availVariables[name]: undefined,
value = model.get('value');
var variable = name ? availVariables[name]: undefined,
value = model.get('value');
switch(variable && variable.vartype) {
case 'bool':
/*
switch(variable && variable.vartype) {
case 'bool':
/*
* bool cell and variable cannot be stateless (i.e undefined).
* It should be either true or false.
*/
model.set('value', !!model.get('value'), {silent: true});
model.set('value', !!model.get('value'), {silent: true});
return Backgrid.Extension.SwitchCell;
case 'enum':
model.set({'value': value}, {silent:true});
var options = [],
enumVals = variable.enumvals;
return Backgrid.Extension.SwitchCell;
case 'enum':
model.set({'value': value}, {silent:true});
var options = [],
enumVals = variable.enumvals;
_.each(enumVals, function(enumVal) {
options.push([enumVal, enumVal]);
});
_.each(enumVals, function(enumVal) {
options.push([enumVal, enumVal]);
});
return Backgrid.Extension.Select2Cell.extend({optionValues: options});
case 'integer':
if (!_.isNaN(parseInt(value))) {
model.set({'value': parseInt(value)}, {silent:true});
} else {
model.set({'value': undefined}, {silent:true});
}
return Backgrid.IntegerCell;
case 'real':
if (!_.isNaN(parseFloat(value))) {
model.set({'value': parseFloat(value)}, {silent:true});
} else {
model.set({'value': undefined}, {silent:true});
}
return Backgrid.NumberCell.extend({decimals: 0});
case 'string':
return Backgrid.StringCell;
default:
return Backgrid.Extension.Select2Cell.extend({optionValues: options});
case 'integer':
if (!_.isNaN(parseInt(value))) {
model.set({'value': parseInt(value)}, {silent:true});
} else {
model.set({'value': undefined}, {silent:true});
return Backgrid.Cell;
}
};
return Backgrid.IntegerCell;
case 'real':
if (!_.isNaN(parseFloat(value))) {
model.set({'value': parseFloat(value)}, {silent:true});
} else {
model.set({'value': undefined}, {silent:true});
}
return Backgrid.NumberCell.extend({decimals: 0});
case 'string':
return Backgrid.StringCell;
default:
model.set({'value': undefined}, {silent:true});
return Backgrid.Cell;
}
};
/*
/*
* This row will define behaviour or value column cell depending upon
* variable name.
*/
var VariableRow = Backgrid.Row.extend({
modelDuplicateClass: 'bg-model-duplicate',
var VariableRow = Backgrid.Row.extend({
modelDuplicateClass: 'bg-model-duplicate',
initialize: function () {
Backgrid.Row.prototype.initialize.apply(this, arguments);
var self = this;
self.model.on('change:name', function() {
setTimeout(function() {
self.columns.each(function(col) {
if (col.get('name') == 'value') {
initialize: function () {
Backgrid.Row.prototype.initialize.apply(this, arguments);
var self = this;
self.model.on('change:name', function() {
setTimeout(function() {
self.columns.each(function(col) {
if (col.get('name') == 'value') {
var idx = self.columns.indexOf(col),
cf = col.get('cellFunction'),
cell = new (cf.apply(col, [self.model]))({
column: col,
model: self.model,
}),
oldCell = self.cells[idx];
oldCell.remove();
self.cells[idx] = cell;
self.render();
}
var idx = self.columns.indexOf(col),
cf = col.get('cellFunction'),
cell = new (cf.apply(col, [self.model]))({
column: col,
model: self.model,
}),
oldCell = self.cells[idx];
oldCell.remove();
self.cells[idx] = cell;
self.render();
}
});
}, 10);
});
self.listenTo(self.model, 'pgadmin-session:model:duplicate', self.modelDuplicate);
self.listenTo(self.model, 'pgadmin-session:model:unique', self.modelUnique);
},
modelDuplicate: function() {
$(this.el).removeClass('new');
$(this.el).addClass(this.modelDuplicateClass);
},
modelUnique: function() {
$(this.el).removeClass(this.modelDuplicateClass);
},
});
}, 10);
});
self.listenTo(self.model, 'pgadmin-session:model:duplicate', self.modelDuplicate);
self.listenTo(self.model, 'pgadmin-session:model:unique', self.modelUnique);
},
modelDuplicate: function() {
$(this.el).removeClass('new');
$(this.el).addClass(this.modelDuplicateClass);
},
modelUnique: function() {
$(this.el).removeClass(this.modelDuplicateClass);
},
});
/**
});
/**
* VariableModel used to represent configuration parameters (variables tab)
* for database objects.
**/
var VariableModel = pgNode.VariableModel = pgNode.Model.extend({
keys: ['name'],
defaults: {
name: undefined,
value: undefined,
role: null,
database: null,
},
schema: [
{
id: 'name', label: gettext('Name'), type:'text', cellHeaderClasses: 'width_percent_30',
editable: function(m) {
return (m instanceof Backbone.Collection) ? true : m.isNew();
},
cell: Backgrid.Extension.NodeAjaxOptionsCell.extend({
initialize: function() {
Backgrid.Extension.NodeAjaxOptionsCell.prototype.initialize.apply(this, arguments);
var VariableModel = pgNode.VariableModel = pgNode.Model.extend({
keys: ['name'],
defaults: {
name: undefined,
value: undefined,
role: null,
database: null,
},
schema: [
{
id: 'name', label: gettext('Name'), type:'text', cellHeaderClasses: 'width_percent_30',
editable: function(m) {
return (m instanceof Backbone.Collection) ? true : m.isNew();
},
cell: Backgrid.Extension.NodeAjaxOptionsCell.extend({
initialize: function() {
Backgrid.Extension.NodeAjaxOptionsCell.prototype.initialize.apply(this, arguments);
// Immediately process options as we need them before render.
// Immediately process options as we need them before render.
var opVals = _.clone(this.optionValues ||
var opVals = _.clone(this.optionValues ||
(_.isFunction(this.column.get('options')) ?
(this.column.get('options'))(this) :
this.column.get('options')));
this.column.get('options')));
this.column.set('options', opVals);
},
}),
url: 'vopts',
select2: { allowClear: false },
transform: function(vars, cell) {
var res = [],
availVariables = {};
_.each(vars, function(v) {
res.push({
'value': v.name,
'image': undefined,
'label': v.name,
});
availVariables[v.name] = v;
});
cell.column.set('availVariables', availVariables);
return res;
this.column.set('options', opVals);
},
},
{
id: 'value', label: gettext('Value'), type: 'text', editable: true,
cellFunction: cellFunction, cellHeaderClasses: 'width_percent_40',
},
{id: 'database', label: gettext('Database'), type: 'text', editable: true,
node: 'database', cell: Backgrid.Extension.NodeListByNameCell,
},
{id: 'role', label: gettext('Role'), type: 'text', editable: true,
node: 'role', cell: Backgrid.Extension.NodeListByNameCell},
],
toJSON: function() {
var d = Backbone.Model.prototype.toJSON.apply(this);
}),
url: 'vopts',
select2: { allowClear: false },
transform: function(vars, cell) {
var res = [],
availVariables = {};
// Remove not defined values from model values.
// i.e.
// role, database
if (_.isUndefined(d.database) || _.isNull(d.database)) {
delete d.database;
}
_.each(vars, function(v) {
res.push({
'value': v.name,
'image': undefined,
'label': v.name,
});
availVariables[v.name] = v;
});
if (_.isUndefined(d.role) || _.isNull(d.role)) {
delete d.role;
}
return d;
cell.column.set('availVariables', availVariables);
return res;
},
},
validate: function() {
var msg = null;
if (_.isUndefined(this.get('name')) ||
{
id: 'value', label: gettext('Value'), type: 'text', editable: true,
cellFunction: cellFunction, cellHeaderClasses: 'width_percent_40',
},
{id: 'database', label: gettext('Database'), type: 'text', editable: true,
node: 'database', cell: Backgrid.Extension.NodeListByNameCell,
},
{id: 'role', label: gettext('Role'), type: 'text', editable: true,
node: 'role', cell: Backgrid.Extension.NodeListByNameCell},
],
toJSON: function() {
var d = Backbone.Model.prototype.toJSON.apply(this);
// Remove not defined values from model values.
// i.e.
// role, database
if (_.isUndefined(d.database) || _.isNull(d.database)) {
delete d.database;
}
if (_.isUndefined(d.role) || _.isNull(d.role)) {
delete d.role;
}
return d;
},
validate: function() {
var msg = null;
if (_.isUndefined(this.get('name')) ||
_.isNull(this.get('name')) ||
String(this.get('name')).replace(/^\s+|\s+$/g, '') == '') {
msg = gettext('Please select a parameter name.');
this.errorModel.set('name', msg);
} else if (_.isUndefined(this.get('value')) ||
msg = gettext('Please select a parameter name.');
this.errorModel.set('name', msg);
} else if (_.isUndefined(this.get('value')) ||
_.isNull(this.get('value')) ||
String(this.get('value')).replace(/^\s+|\s+$/g, '') == '') {
msg = ('Please enter a value for the parameter.');
this.errorModel.set('value', msg);
this.errorModel.unset('name');
} else {
this.errorModel.unset('name');
this.errorModel.unset('value');
}
msg = ('Please enter a value for the parameter.');
this.errorModel.set('value', msg);
this.errorModel.unset('name');
} else {
this.errorModel.unset('name');
this.errorModel.unset('value');
}
return msg;
},
});
return msg;
},
});
/**
/**
* Variable Tab Control to set/update configuration values for database object.
*
**/
Backform.VariableCollectionControl =
Backform.VariableCollectionControl =
Backform.UniqueColCollectionControl.extend({
hasDatabase: false,
@ -228,7 +228,7 @@ define([
var self = this,
keys = ['name'];
/*
/*
* Read from field schema whether user wants to use database and role
* fields in Variable control.
*/
@ -247,9 +247,9 @@ define([
opts.field.set({
model: pgNode.VariableModel.extend({keys:keys}),
},
{
silent: true,
});
{
silent: true,
});
} else {
opts.field.extend({
model: pgNode.VariableModel.extend({keys:keys}),
@ -311,18 +311,18 @@ define([
async: false,
url: full_url,
})
.done(function (res) {
data = res.data;
})
.fail(function() {
m.trigger('pgadmin-view:fetch:error', m, self.field);
});
.done(function (res) {
data = res.data;
})
.fail(function() {
m.trigger('pgadmin-view:fetch:error', m, self.field);
});
m.trigger('pgadmin-view:fetched', m, self.field);
if (data && _.isArray(data)) {
self.collection.reset(data, {silent: true});
}
/*
/*
* Make sure - new data will be taken care by the session management
*/
if (isTracking) {
@ -483,5 +483,5 @@ define([
},
});
return VariableModel;
});
return VariableModel;
});

View File

@ -290,17 +290,17 @@ define('pgadmin.node.tablespace', [
method:'PUT',
data:{'data': JSON.stringify(args) },
})
.done(function(res) {
if (res.success) {
Alertify.success(res.info);
self.close();
} else {
Alertify.error(res.errormsg);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
.done(function(res) {
if (res.success) {
Alertify.success(res.info);
self.close();
} else {
Alertify.error(res.errormsg);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
},
function() {
// Do nothing as user cancel the operation

View File

@ -45,7 +45,7 @@ define('pgadmin.browser', [
if (d && obj.Nodes[d._type].callbacks['selected'] &&
_.isFunction(obj.Nodes[d._type].callbacks['selected'])) {
return obj.Nodes[d._type].callbacks['selected'].apply(
obj.Nodes[d._type], [i, d, obj]);
obj.Nodes[d._type], [i, d, obj]);
}
}
};
@ -492,7 +492,7 @@ define('pgadmin.browser', [
if (d && obj.Nodes[d._type]) {
node = obj.Nodes[d._type];
/* If the node specific callback returns false, we will also return
/* If the node specific callback returns false, we will also return
* false for further processing.
*/
if (_.isObject(node.callbacks) &&
@ -535,8 +535,8 @@ define('pgadmin.browser', [
url: url_for('misc.cleanup'),
type:'POST',
})
.done(function() {})
.fail(function() {});
.done(function() {})
.fail(function() {});
}, 300000);
obj.Events.on('pgadmin:browser:tree:add', obj.onAddTreeNode, obj);
@ -571,13 +571,13 @@ define('pgadmin.browser', [
'management', 'tools', 'help']) >= 0) {
var menus;
// If current node is not visible in browser tree
// then return from here
// If current node is not visible in browser tree
// then return from here
if(!checkNodeVisibility(self, m.node)) {
return;
} else if(_.has(m, 'module') && !_.isUndefined(m.module)) {
// If module to which this menu applies is not visible in
// browser tree then also we do not display menu
// If module to which this menu applies is not visible in
// browser tree then also we do not display menu
if(!checkNodeVisibility(self, m.module.type)) {
return;
}
@ -601,16 +601,16 @@ define('pgadmin.browser', [
target: m.target, icon: m.icon,
enable: (m.enable == '' ? true : (_.isString(m.enable) &&
m.enable.toLowerCase() == 'false') ?
false : m.enable),
false : m.enable),
node: m.node,
});
}
} else {
console.warn(
'Developer warning: Category \'' +
'Developer warning: Category \'' +
a +
'\' is not supported!\nSupported categories are: context, file, edit, object, tools, management, help'
);
);
}
});
});
@ -628,17 +628,17 @@ define('pgadmin.browser', [
{menu: 'management', id: '#mnu_management'},
{menu: 'tools', id: '#mnu_tools'},
{menu: 'help', id:'#mnu_help'}],
function(o) {
var $mnu = navbar.children(o.id).first(),
$dropdown = $mnu.children('.dropdown-menu').first();
$dropdown.empty();
function(o) {
var $mnu = navbar.children(o.id).first(),
$dropdown = $mnu.children('.dropdown-menu').first();
$dropdown.empty();
if (pgAdmin.Browser.MenuCreator(
$dropdown, obj.menus[o.menu], obj.menu_categories
)) {
$mnu.removeClass('d-none');
}
});
if (pgAdmin.Browser.MenuCreator(
$dropdown, obj.menus[o.menu], obj.menu_categories
)) {
$mnu.removeClass('d-none');
}
});
navbar.children('#mnu_obj').removeClass('d-none');
obj.enable_disable_menus();
@ -739,12 +739,12 @@ define('pgadmin.browser', [
hasId: true,
i: null, // current item
p: _.toArray(_hierarchy || {}).sort(
function(a, b) {
return (a.priority === b.priority) ? 0 : (
a.priority < b.priority ? -1 : 1
);
}
), // path of the parent
function(a, b) {
return (a.priority === b.priority) ? 0 : (
a.priority < b.priority ? -1 : 1
);
}
), // path of the parent
pathOfTreeItems: [], // path Item
t: this.tree, // Tree Api
o: _opts,
@ -893,8 +893,8 @@ define('pgadmin.browser', [
if(
is_parent_loaded_before &&
_parent_data && _parent_data._type.search(
_data._type
) > -1
_data._type
) > -1
) {
ctx.t.openPath(i);
ctx.t.select(i);
@ -988,12 +988,12 @@ define('pgadmin.browser', [
i: null, // current item
hasId: true,
p: _.toArray(_hierarchy || {}).sort(
function(a, b) {
return (a.priority === b.priority) ? 0 : (
a.priority < b.priority ? -1 : 1
);
}
), // path of the old object
function(a, b) {
return (a.priority === b.priority) ? 0 : (
a.priority < b.priority ? -1 : 1
);
}
), // path of the old object
pathOfTreeItems: [], // path items
t: this.tree, // Tree Api
o: _opts,
@ -1035,9 +1035,9 @@ define('pgadmin.browser', [
&& this.t.hasParent(this.i)
&& this.t.parent(this.i)) || null,
_item_grand_parent = _item_parent ?
(this.t.hasParent(_item_parent)
(this.t.hasParent(_item_parent)
&& this.t.parent(_item_parent))
: null;
: null;
// Remove the current node first.
if (
@ -1147,7 +1147,7 @@ define('pgadmin.browser', [
self.t.unload(_parent, {success: function() {
setTimeout(postRemove);
}}
);
);
},
});
} else {
@ -1541,73 +1541,73 @@ define('pgadmin.browser', [
cache: false,
dataType: 'json',
})
.done(function(res) {
.done(function(res) {
// Node information can come as result/data
var newData = res.result || res.data;
var newData = res.result || res.data;
newData._label = newData.label;
newData.label = _.escape(newData.label);
newData._label = newData.label;
newData.label = _.escape(newData.label);
ctx.t.setLabel(ctx.i, {label: newData.label});
ctx.t.addIcon(ctx.i, {icon: newData.icon});
ctx.t.setId(ctx.i, {id: newData.id});
if (newData.inode)
ctx.t.setInode(ctx.i, {inode: true});
ctx.t.setLabel(ctx.i, {label: newData.label});
ctx.t.addIcon(ctx.i, {icon: newData.icon});
ctx.t.setId(ctx.i, {id: newData.id});
if (newData.inode)
ctx.t.setInode(ctx.i, {inode: true});
// This will update the tree item data.
var itemData = ctx.t.itemData(ctx.i);
_.extend(itemData, newData);
// This will update the tree item data.
var itemData = ctx.t.itemData(ctx.i);
_.extend(itemData, newData);
if (
_n.can_expand && typeof(_n.can_expand) == 'function'
) {
if (!_n.can_expand(itemData)) {
ctx.t.unload(ctx.i);
return;
if (
_n.can_expand && typeof(_n.can_expand) == 'function'
) {
if (!_n.can_expand(itemData)) {
ctx.t.unload(ctx.i);
return;
}
}
}
ctx.b._refreshNode(ctx, ctx.branch);
var success = (ctx.o && ctx.o.success) || ctx.success;
if (success && typeof(success) == 'function') {
success();
}
})
.fail(function(xhr, error, status) {
if (
!Alertify.pgHandleItemError(
xhr, error, status, {item: _i, info: info}
)
) {
var contentType = xhr.getResponseHeader('Content-Type'),
jsonResp = (
contentType &&
ctx.b._refreshNode(ctx, ctx.branch);
var success = (ctx.o && ctx.o.success) || ctx.success;
if (success && typeof(success) == 'function') {
success();
}
})
.fail(function(xhr, error, status) {
if (
!Alertify.pgHandleItemError(
xhr, error, status, {item: _i, info: info}
)
) {
var contentType = xhr.getResponseHeader('Content-Type'),
jsonResp = (
contentType &&
contentType.indexOf('application/json') == 0 &&
JSON.parse(xhr.responseText)
) || {};
) || {};
if (xhr.status == 410 && jsonResp.success == 0) {
var p = ctx.t.parent(ctx.i);
if (xhr.status == 410 && jsonResp.success == 0) {
var p = ctx.t.parent(ctx.i);
ctx.t.remove(ctx.i, {
success: function() {
if (p) {
ctx.t.remove(ctx.i, {
success: function() {
if (p) {
// Try to refresh the parent on error
try {
pgBrowser.Events.trigger(
'pgadmin:browser:tree:refresh', p
);
} catch (e) { console.warn(e.stack || e); }
}
},
});
}
try {
pgBrowser.Events.trigger(
'pgadmin:browser:tree:refresh', p
);
} catch (e) { console.warn(e.stack || e); }
}
},
});
}
Alertify.pgNotifier(
error, xhr, gettext('Error retrieving details for the node.'),
function() { console.warn(arguments); }
);
}
});
Alertify.pgNotifier(
error, xhr, gettext('Error retrieving details for the node.'),
function() { console.warn(arguments); }
);
}
});
}.bind(this);
if (n && n.collection_node) {
@ -1792,16 +1792,16 @@ define('pgadmin.browser', [
url: childNodeUrl,
dataType: 'json',
})
.done(function(res) {
if (res.success) {
arrayChildNodeData.push(res.data);
}
fetchNodeInfo(_callback);
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
fetchNodeInfo(_callback);
});
.done(function(res) {
if (res.success) {
arrayChildNodeData.push(res.data);
}
fetchNodeInfo(_callback);
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
fetchNodeInfo(_callback);
});
};
@ -1885,33 +1885,33 @@ define('pgadmin.browser', [
'Ctrl-Space': 'autocomplete',
'Cmd-Space': 'autocomplete',
// Select All text
// Select All text
'Ctrl-A': 'selectAll',
'Cmd-A': 'selectAll',
// Redo text
// Redo text
'Ctrl-Y': 'redo',
'Cmd-Y': 'redo',
// Undo text
// Undo text
'Ctrl-Z': 'undo',
'Cmd-Z': 'undo',
// Delete Line
// Delete Line
'Ctrl-D': 'deleteLine',
'Cmd-D': 'deleteLine',
// Go to start/end of Line
// Go to start/end of Line
'Alt-Left': 'goLineStart',
'Alt-Right': 'goLineEnd',
// Move word by word left/right
// Move word by word left/right
'Ctrl-Alt-Left': 'goGroupLeft',
'Cmd-Alt-Left': 'goGroupLeft',
'Ctrl-Alt-Right': 'goGroupRight',
'Cmd-Alt-Right': 'goGroupRight',
// Allow user to delete Tab(s)
// Allow user to delete Tab(s)
'Shift-Tab': 'indentLess',
},
editor_options: {
@ -1944,7 +1944,7 @@ define('pgadmin.browser', [
},
});
/* Remove paste event mapping from CodeMirror's emacsy KeyMap binding
/* Remove paste event mapping from CodeMirror's emacsy KeyMap binding
* specific to Mac LineNumber:5797 - lib/Codemirror.js
* It is preventing default paste event(Cmd-V) from triggering
* in runtime.

View File

@ -76,7 +76,7 @@ define([
j = panel.$container.find('.obj_properties').first(),
view = j.data('obj-view'),
content = $('<div></div>')
.addClass('pg-prop-content col-12 has-pg-prop-btn-group'),
.addClass('pg-prop-content col-12 has-pg-prop-btn-group'),
node = pgBrowser.Nodes[that.node],
$msgContainer = '',
// This will be the URL, used for object manipulation.
@ -136,9 +136,9 @@ define([
}))();
// Add the new column for the multi-select menus
if((_.isFunction(that.canDrop) ?
that.canDrop.apply(that, [data, item]) : that.canDrop) ||
that.canDrop.apply(that, [data, item]) : that.canDrop) ||
(_.isFunction(that.canDropCascade) ?
that.canDropCascade.apply(that, [data, item]) : that.canDropCascade)) {
that.canDropCascade.apply(that, [data, item]) : that.canDropCascade)) {
gridSchema.columns.unshift({
name: 'oid',
cell: Backgrid.Extension.SelectRowCell.extend({
@ -178,7 +178,7 @@ define([
headerCell: Backgrid.Extension.SelectAllHeaderCell,
});
}
// Initialize a new Grid instance
// Initialize a new Grid instance
that.grid = new Backgrid.Grid({
emptyText: 'No data found',
columns: gridSchema.columns,
@ -224,10 +224,10 @@ define([
$msgContainer = $($msgContainer).appendTo(j);
that.header = $('<div></div>').addClass(
'pg-prop-header'
'pg-prop-header'
);
// Render the buttons
// Render the buttons
var buttons = [];
buttons.push({
@ -282,51 +282,51 @@ define([
}, 1000);
},
})
.done(function(res) {
clearTimeout(timer);
.done(function(res) {
clearTimeout(timer);
if (_.isUndefined(that.grid) || _.isNull(that.grid)) return;
if (_.isUndefined(that.grid) || _.isNull(that.grid)) return;
that.data = res;
that.data = res;
if (that.data.length > 0) {
if (that.data.length > 0) {
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
that.header.appendTo(j);
j.append(content);
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
that.header.appendTo(j);
j.append(content);
// Listen scroll event to load more rows
$('.pg-prop-content').on('scroll', that.__loadMoreRows.bind(that));
// Listen scroll event to load more rows
$('.pg-prop-content').on('scroll', that.__loadMoreRows.bind(that));
that.collection.reset(that.data.splice(0, 50));
} else {
that.collection.reset(that.data.splice(0, 50));
} else {
// Do not listen the scroll event
$('.pg-prop-content').off('scroll', that.__loadMoreRows);
$('.pg-prop-content').off('scroll', that.__loadMoreRows);
$msgContainer.text(gettext('No properties are available for the selected object.'));
$msgContainer.text(gettext('No properties are available for the selected object.'));
}
})
.fail(function(xhr, error) {
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'properties', xhr, error.message, item, that
);
if (!Alertify.pgHandleItemError(xhr, error.message, {
item: item,
info: info,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving properties - %s')).sprintf(
error.message || that.label).value(), function() {
console.warn(arguments);
});
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
}
})
.fail(function(xhr, error) {
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'properties', xhr, error.message, item, that
);
if (!Alertify.pgHandleItemError(xhr, error.message, {
item: item,
info: info,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving properties - %s')).sprintf(
error.message || that.label).value(), function() {
console.warn(arguments);
});
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
var onDrop = function(type) {
let sel_row_models = this.grid.getSelectedModels(),
@ -366,45 +366,45 @@ define([
data: JSON.stringify({'ids': sel_rows}),
contentType: 'application/json; charset=utf-8',
})
.done(function(res) {
if (res.success == 0) {
pgBrowser.report_error(res.errormsg, res.info);
} else {
.done(function(res) {
if (res.success == 0) {
pgBrowser.report_error(res.errormsg, res.info);
} else {
$(pgBrowser.panels['properties'].panel).removeData('node-prop');
pgBrowser.Events.trigger(
'pgadmin:browser:tree:refresh', item || pgBrowser.tree.selected(), {
success: function() {
node.callbacks.selected.apply(node, [item]);
},
});
}
return true;
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
}
}
pgBrowser.report_error(
S(gettext('Error dropping %s'))
.sprintf(d._label.toLowerCase())
.value(), msg);
$(pgBrowser.panels['properties'].panel).removeData('node-prop');
pgBrowser.Events.trigger(
'pgadmin:browser:tree:refresh', item || pgBrowser.tree.selected(), {
success: function() {
node.callbacks.selected.apply(node, [item]);
},
});
}
return true;
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
}
}
pgBrowser.report_error(
S(gettext('Error dropping %s'))
.sprintf(d._label.toLowerCase())
.value(), msg);
$(pgBrowser.panels['properties'].panel).removeData('node-prop');
pgBrowser.Events.trigger(
'pgadmin:browser:tree:refresh', item || pgBrowser.tree.selected(), {
success: function() {
node.callbacks.selected.apply(node, [item]);
},
}
);
});
'pgadmin:browser:tree:refresh', item || pgBrowser.tree.selected(), {
success: function() {
node.callbacks.selected.apply(node, [item]);
},
}
);
});
},
null).show();
return;

View File

@ -36,7 +36,7 @@ define([
obj = new(pgBrowser.Node.Collection)(val, {
model: ((_.isString(s.model) &&
s.model in pgBrowser.Nodes) ?
pgBrowser.Nodes[s.model].model : s.model),
pgBrowser.Nodes[s.model].model : s.model),
top: self.top || self,
handler: self,
parse: true,
@ -44,7 +44,7 @@ define([
attrName: s.id,
});
/*
/*
* Nested collection models may or may not have idAttribute.
* So to decide whether model is new or not set 'on_server'
* flag on such models.
@ -56,7 +56,7 @@ define([
on_server: true,
});
} else {
/*
/*
* Nested collection models may or may not have idAttribute.
* So to decide whether model is new or not set 'on_server'
* flag on such models.
@ -83,13 +83,13 @@ define([
if (_.isString(s.model) &&
s.model in pgBrowser.Nodes[s.model]) {
obj = new(pgBrowser.Nodes[s.model].Model)(
obj, {
silent: true,
top: self.top || self,
handler: self,
attrName: s.id,
}
);
obj, {
silent: true,
top: self.top || self,
handler: self,
attrName: s.id,
}
);
} else {
obj = new(s.model)(obj, {
silent: true,
@ -163,7 +163,7 @@ define([
self.objects = [];
self.arrays = [];
self.attrName = options.attrName,
self.top = (options.top || self.collection && self.collection.top || self.collection || self);
self.top = (options.top || self.collection && self.collection.top || self.collection || self);
self.handler = options.handler ||
(self.collection && self.collection.handler);
self.trackChanges = false;
@ -234,19 +234,19 @@ define([
if (_.isString(s.model) &&
s.model in pgBrowser.Nodes[s.model]) {
obj = new(pgBrowser.Nodes[s.model].Model)(
obj, {
top: self.top || self,
handler: self,
attrName: s.id,
}
);
obj, {
top: self.top || self,
handler: self,
attrName: s.id,
}
);
} else {
obj = new(s.model)(
obj, {
top: self.top || self,
handler: self,
attrName: s.id,
});
obj, {
top: self.top || self,
handler: self,
attrName: s.id,
});
}
}
@ -549,26 +549,26 @@ define([
typeof(obj.primary_key) === 'function';
var key = hasPrimaryKey ? obj.primary_key() : obj.cid,
comparator = hasPrimaryKey ?
function(k) {
var o = self.get('k');
function(k) {
var o = self.get('k');
if (o && o.primary_key() === key) {
objName = k;
return true;
}
if (o && o.primary_key() === key) {
objName = k;
return true;
}
return false;
} :
function(k) {
var o = self.get(k);
return false;
} :
function(k) {
var o = self.get(k);
if (o.cid === key) {
objName = k;
return true;
}
if (o.cid === key) {
objName = k;
return true;
}
return false;
};
return false;
};
_.findIndex(self.objects, comparator);
}
@ -599,26 +599,26 @@ define([
(typeof(obj.primary_key) === 'function'));
var key = hasPrimaryKey ? obj.primary_key() : obj.cid,
comparator = hasPrimaryKey ?
function(k) {
var o = self.get('k');
function(k) {
var o = self.get('k');
if (o && o.primary_key() === key) {
objName = k;
return true;
}
if (o && o.primary_key() === key) {
objName = k;
return true;
}
return false;
} :
function(k) {
var o = self.get('k');
return false;
} :
function(k) {
var o = self.get('k');
if (o && o.cid === key) {
objName = k;
return true;
}
if (o && o.cid === key) {
objName = k;
return true;
}
return false;
};
return false;
};
_.findIndex(self.objects, comparator);
}

View File

@ -8,16 +8,16 @@
//////////////////////////////////////////////////////////////
define(
['sources/gettext', 'underscore', 'alertify', 'sources/pgadmin'],
function(gettext, _, alertify, pgAdmin) {
pgAdmin.Browser = pgAdmin.Browser || {};
['sources/gettext', 'underscore', 'alertify', 'sources/pgadmin'],
function(gettext, _, alertify, pgAdmin) {
pgAdmin.Browser = pgAdmin.Browser || {};
_.extend(pgAdmin.Browser, {
report_error: function(title, message, info) {
title = _.escape(title);
message = _.escape(message);
info = _.escape(info);
let text = '<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">\
_.extend(pgAdmin.Browser, {
report_error: function(title, message, info) {
title = _.escape(title);
message = _.escape(message);
info = _.escape(info);
let text = '<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">\
<div class="panel panel-default">\
<div class="panel-heading" role="tab" id="headingOne">\
<h4 class="panel-title">\
@ -30,8 +30,8 @@ function(gettext, _, alertify, pgAdmin) {
</div>\
</div>';
if (info != null && info != '') {
text += '<div class="panel panel-default">\
if (info != null && info != '') {
text += '<div class="panel panel-default">\
<div class="panel-heading" role="tab" id="headingTwo">\
<h4 class="panel-title">\
<a class="collapsed" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">\
@ -43,15 +43,15 @@ function(gettext, _, alertify, pgAdmin) {
</div>\
</div>\
</div>';
}
}
text += '</div>';
alertify.alert(
title,
text
).set('closable', true);
},
text += '</div>';
alertify.alert(
title,
text
).set('closable', true);
},
});
return pgAdmin.Browser.report_error;
});
return pgAdmin.Browser.report_error;
});

View File

@ -113,8 +113,8 @@ define([
cb;
if (o.module['callbacks'] && (
o.callback in o.module['callbacks']
)) {
o.callback in o.module['callbacks']
)) {
cb = o.module['callbacks'][o.callback];
} else if (o.callback in o.module) {
cb = o.module[o.callback];
@ -141,8 +141,8 @@ define([
return true;
}
if (_.isArray(this.node) ? (
_.indexOf(this.node, node) == -1
) : (this.node != node._type)) {
_.indexOf(this.node, node) == -1
) : (this.node != node._type)) {
return true;
}
}

View File

@ -423,11 +423,11 @@ define('pgadmin.browser.node', [
xhr, error, message, item
);
if (!Alertify.pgHandleItemError(
xhr, error, message, {
item: item,
info: info,
}
)) {
xhr, error, message, {
item: item,
info: info,
}
)) {
Alertify.pgNotifier(
error, xhr,
S(
@ -738,10 +738,10 @@ define('pgadmin.browser.node', [
title = S(gettext('DROP CASCADE %s?')).sprintf(obj.label).value();
if (!(_.isFunction(obj.canDropCascade) ?
obj.canDropCascade.apply(obj, [d, i]) : obj.canDropCascade)) {
obj.canDropCascade.apply(obj, [d, i]) : obj.canDropCascade)) {
Alertify.error(
S(gettext('The %s "%s" cannot be dropped.'))
.sprintf(obj.label, d.label).value(),
.sprintf(obj.label, d.label).value(),
10
);
return;
@ -752,10 +752,10 @@ define('pgadmin.browser.node', [
title = S(gettext('DROP %s?')).sprintf(obj.label).value();
if (!(_.isFunction(obj.canDrop) ?
obj.canDrop.apply(obj, [d, i]) : obj.canDrop)) {
obj.canDrop.apply(obj, [d, i]) : obj.canDrop)) {
Alertify.error(
S(gettext('The %s "%s" cannot be dropped.'))
.sprintf(obj.label, d.label).value(),
.sprintf(obj.label, d.label).value(),
10
);
return;
@ -767,30 +767,30 @@ define('pgadmin.browser.node', [
url: obj.generate_url(i, input.url, d, true),
type: 'DELETE',
})
.done(function(res) {
if (res.success == 0) {
pgBrowser.report_error(res.errormsg, res.info);
} else {
pgBrowser.removeTreeNode(i, true);
}
return true;
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
.done(function(res) {
if (res.success == 0) {
pgBrowser.report_error(res.errormsg, res.info);
} else {
pgBrowser.removeTreeNode(i, true);
}
}
pgBrowser.report_error(
S(gettext('Error dropping %s: "%s"'))
.sprintf(obj.label, objName)
.value(), msg);
});
return true;
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
}
}
pgBrowser.report_error(
S(gettext('Error dropping %s: "%s"'))
.sprintf(obj.label, objName)
.value(), msg);
});
},
null).show();
},
@ -913,7 +913,7 @@ define('pgadmin.browser.node', [
}
pgBrowser.Events.trigger('pgadmin:browser:tree:expand-from-previous-tree-state',
item);
item);
pgBrowser.Node.callbacks.change_server_background(item, data);
},
// Callback called - when a node is selected in browser tree.
@ -944,7 +944,7 @@ define('pgadmin.browser.node', [
}
pgBrowser.Events.trigger('pgadmin:browser:tree:update-tree-state',
item);
item);
return true;
},
removed: function(item) {
@ -1003,7 +1003,7 @@ define('pgadmin.browser.node', [
auto_expand = pgBrowser.get_preference('browser', 'auto_expand_sole_children');
pgBrowser.Events.trigger('pgadmin:browser:tree:update-tree-state',
item);
item);
if (auto_expand && auto_expand.value == true && tree.children(item).length == 1) {
// Automatically expand the child node, if a treeview node has only a single child.
@ -1013,7 +1013,7 @@ define('pgadmin.browser.node', [
},
closed: function(item) {
pgBrowser.Events.trigger('pgadmin:browser:tree:remove-from-tree-state',
item);
item);
},
},
/**********************************************************************
@ -1029,7 +1029,7 @@ define('pgadmin.browser.node', [
j = panel.$container.find('.obj_properties').first(),
view = j.data('obj-view'),
content = $('<div tabindex="1"></div>')
.addClass('pg-prop-content col-12');
.addClass('pg-prop-content col-12');
// Handle key press events for Cancel, save and help button
var handleKeyDown = function(event, context) {
@ -1041,12 +1041,12 @@ define('pgadmin.browser.node', [
closePanel();
break;
case keyCode.ENTER:
// Return if event is fired from child element
// Return if event is fired from child element
if (event.target !== context) return;
if (view && view.model && view.model.sessChanged()) {
var btn = $(event.target).closest('.obj_properties')
.find('.pg-prop-btn-group')
.find('button.btn-primary');
.find('.pg-prop-btn-group')
.find('button.btn-primary');
onSave.call(this, view, btn);
}
break;
@ -1364,8 +1364,8 @@ define('pgadmin.browser.node', [
panel.icon(
_.isFunction(that['node_image']) ?
(that['node_image']).apply(that, [data, view.model]) :
(that['node_image'] || ('icon-' + that.type))
(that['node_image']).apply(that, [data, view.model]) :
(that['node_image'] || ('icon-' + that.type))
);
// Create proper buttons

View File

@ -165,16 +165,16 @@ define([
async: false,
url: full_url,
})
.done(function(res) {
.done(function(res) {
/*
* We will cache this data for short period of time for avoiding
* same calls.
*/
data = cache_node.cache(node.type + '#' + url, node_info, cache_level, res.data);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
data = cache_node.cache(node.type + '#' + url, node_info, cache_level, res.data);
})
.fail(function() {
m.trigger('pgadmin:view:fetch:error', m, self.field);
});
m.trigger('pgadmin:view:fetched', m, self.field);
}
// To fetch only options from cache, we do not need time from 'at'
@ -406,16 +406,16 @@ define([
async: false,
url: full_url,
})
.done(function(res) {
.done(function(res) {
/*
* We will cache this data for short period of time for avoiding
* same calls.
*/
data = cache_node.cache(node.type + '#' + url, node_info, cache_level, res.data);
})
.fail(function() {
eventHandler.trigger('pgadmin:view:fetch:error', m, column);
});
data = cache_node.cache(node.type + '#' + url, node_info, cache_level, res.data);
})
.fail(function() {
eventHandler.trigger('pgadmin:view:fetch:error', m, column);
});
eventHandler.trigger('pgadmin:view:fetched', m, column);
}
// To fetch only options from cache, we do not need time from 'at'

View File

@ -9,10 +9,10 @@
import pgAdmin from 'sources/pgadmin';
import url_for from 'sources/url_for';
import * as modifyAnimation from 'sources/modify_animation';
import $ from 'jquery';
import * as Alertify from 'pgadmin.alertifyjs';
import * as SqlEditorUtils from 'sources/sqleditor_utils';
var modifyAnimation = require('sources/modify_animation');
const pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {};
@ -51,8 +51,8 @@ _.extend(pgBrowser, {
if(self.preferences_cache.length > 0) {
clearInterval(preferenceTimeout);
return _.findWhere(
self.preferences_cache, {'module': module, 'name': preference}
);
self.preferences_cache, {'module': module, 'name': preference}
);
}
},
preferenceTimeout = setInterval(check_preference, 1000);
@ -93,35 +93,35 @@ _.extend(pgBrowser, {
$.ajax({
url: url_for('preferences.get_all'),
})
.done(function(res) {
self.preferences_cache = res;
self.preference_version(self.generate_preference_version());
.done(function(res) {
self.preferences_cache = res;
self.preference_version(self.generate_preference_version());
pgBrowser.keyboardNavigation.init();
if(pgBrowser.tree) {
modifyAnimation.modifyAcitreeAnimation(self);
modifyAnimation.modifyAlertifyAnimation(self);
}
pgBrowser.keyboardNavigation.init();
if(pgBrowser.tree) {
modifyAnimation.modifyAcitreeAnimation(self);
modifyAnimation.modifyAlertifyAnimation(self);
}
// Initialize Tree saving/reloading
pgBrowser.browserTreeState.init();
// Initialize Tree saving/reloading
pgBrowser.browserTreeState.init();
/* Once the cache is loaded after changing the preferences,
/* Once the cache is loaded after changing the preferences,
* notify the modules of the change
*/
if(modulesChanged) {
if(typeof modulesChanged === 'string'){
$.event.trigger('prefchange:'+modulesChanged);
} else {
_.each(modulesChanged, (val, key)=> {
$.event.trigger('prefchange:'+key);
});
if(modulesChanged) {
if(typeof modulesChanged === 'string'){
$.event.trigger('prefchange:'+modulesChanged);
} else {
_.each(modulesChanged, (val, key)=> {
$.event.trigger('prefchange:'+key);
});
}
}
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
}, 500);
},

View File

@ -95,17 +95,17 @@ define('pgadmin.dashboard', [
url: action_url,
type: 'DELETE',
})
.done(function(res) {
if (res == gettext('Success')) {
Alertify.success(txtSuccess);
refresh_grid();
} else {
Alertify.error(txtError);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
.done(function(res) {
if (res == gettext('Success')) {
Alertify.success(txtSuccess);
refresh_grid();
} else {
Alertify.error(txtError);
}
})
.fail(function(xhr, status, error) {
Alertify.pgRespErrorNotify(xhr, error);
});
},
function() {
return true;
@ -228,14 +228,14 @@ define('pgadmin.dashboard', [
type: 'GET',
dataType: 'html',
})
.done(function(data) {
$(div).html(data);
})
.fail(function() {
$(div).html(
'<div class="alert alert-danger pg-panel-message" role="alert">' + gettext('An error occurred whilst loading the dashboard.') + '</div>'
);
});
.done(function(data) {
$(div).html(data);
})
.fail(function() {
$(div).html(
'<div class="alert alert-danger pg-panel-message" role="alert">' + gettext('An error occurred whilst loading the dashboard.') + '</div>'
);
});
// Cache the current IDs for next time
$(dashboardPanel).data('sid', -1);
@ -342,15 +342,15 @@ define('pgadmin.dashboard', [
type: 'GET',
dataType: 'html',
})
.done(function(data) {
$(div).html(data);
self.init_dashboard();
})
.fail(function() {
$(div).html(
'<div class="alert alert-danger pg-panel-message" role="alert">' + gettext('An error occurred whilst loading the dashboard.') + '</div>'
);
});
.done(function(data) {
$(div).html(data);
self.init_dashboard();
})
.fail(function() {
$(div).html(
'<div class="alert alert-danger pg-panel-message" role="alert">' + gettext('An error occurred whilst loading the dashboard.') + '</div>'
);
});
$(dashboardPanel).data('server_status', true);
}
} else {
@ -536,45 +536,45 @@ define('pgadmin.dashboard', [
url: path,
type: 'GET',
})
.done(function(resp) {
last_poll_wait_counter = 0;
for(let chart_name in resp) {
let chart_obj = chart_store[chart_name].chart_obj;
$(chart_obj.getContainer()).removeClass('graph-error');
self.updateChart(chart_obj, resp[chart_name]);
}
})
.fail(function(xhr) {
last_poll_wait_counter = 0;
let err = '';
let msg = '';
let cls = 'info';
if (xhr.readyState === 0) {
msg = gettext('Not connected to the server or the connection to the server has been closed.');
} else {
err = JSON.parse(xhr.responseText);
msg = err.errormsg;
// If we get a 428, it means the server isn't connected
if (xhr.status === 428) {
if (_.isUndefined(msg) || _.isNull(msg)) {
msg = gettext('Please connect to the selected server to view the graph.');
}
} else {
msg = gettext('An error occurred whilst rendering the graph.');
cls = 'danger';
.done(function(resp) {
last_poll_wait_counter = 0;
for(let chart_name in resp) {
let chart_obj = chart_store[chart_name].chart_obj;
$(chart_obj.getContainer()).removeClass('graph-error');
self.updateChart(chart_obj, resp[chart_name]);
}
}
})
.fail(function(xhr) {
last_poll_wait_counter = 0;
let err = '';
let msg = '';
let cls = 'info';
for(let chart_name in chart_store) {
let chart_obj = chart_store[chart_name].chart_obj;
$(chart_obj.getContainer()).addClass('graph-error');
$(chart_obj.getContainer()).html(
'<div class="alert alert-' + cls + ' pg-panel-message" role="alert">' + msg + '</div>'
);
}
});
if (xhr.readyState === 0) {
msg = gettext('Not connected to the server or the connection to the server has been closed.');
} else {
err = JSON.parse(xhr.responseText);
msg = err.errormsg;
// If we get a 428, it means the server isn't connected
if (xhr.status === 428) {
if (_.isUndefined(msg) || _.isNull(msg)) {
msg = gettext('Please connect to the selected server to view the graph.');
}
} else {
msg = gettext('An error occurred whilst rendering the graph.');
cls = 'danger';
}
}
for(let chart_name in chart_store) {
let chart_obj = chart_store[chart_name].chart_obj;
$(chart_obj.getContainer()).addClass('graph-error');
$(chart_obj.getContainer()).html(
'<div class="alert alert-' + cls + ' pg-panel-message" role="alert">' + msg + '</div>'
);
}
});
last_poll_wait_counter = WAIT_COUNTER;
};
/* Execute once for the first time as setInterval will not do */
@ -586,8 +586,8 @@ define('pgadmin.dashboard', [
add_new_server: function() {
if (pgBrowser && pgBrowser.tree) {
var i = pgBrowser.tree.selected().length != 0 ?
pgBrowser.tree.selected() :
pgBrowser.tree.first(null, false),
pgBrowser.tree.selected() :
pgBrowser.tree.first(null, false),
serverModule = require('pgadmin.node.server'),
itemData = pgBrowser.tree.itemData(i);

View File

@ -112,12 +112,12 @@ define('misc.bgprocess', [
case 'status':
if (this.details && this.out != -1 && this.err != -1) {
return url_for(
'bgprocess.detailed_status', {
'pid': this.id,
'out': this.out,
'err': this.err,
}
);
'bgprocess.detailed_status', {
'pid': this.id,
'out': this.out,
'err': this.err,
}
);
}
return url_for('bgprocess.status', {
'pid': this.id,
@ -270,18 +270,18 @@ define('misc.bgprocess', [
async: true,
contentType: 'application/json',
})
.done(function(res) {
setTimeout(function() {
self.update(res);
}, 10);
})
.fail(function(res) {
// Try after some time only if job id present
if (res.status != 410)
.done(function(res) {
setTimeout(function() {
self.update(res);
}, 10000);
});
}, 10);
})
.fail(function(res) {
// Try after some time only if job id present
if (res.status != 410)
setTimeout(function() {
self.update(res);
}, 10000);
});
},
show: function() {
@ -477,12 +477,12 @@ define('misc.bgprocess', [
async: true,
contentType: 'application/json',
})
.done(function() {
return;
})
.fail(function() {
console.warn(arguments);
});
.done(function() {
return;
})
.fail(function() {
console.warn(arguments);
});
},
stop_process: function() {
@ -497,12 +497,12 @@ define('misc.bgprocess', [
async: true,
contentType: 'application/json',
})
.done(function() {
return;
})
.fail(function() {
console.warn(arguments);
});
.done(function() {
return;
})
.fail(function() {
console.warn(arguments);
});
},
});
@ -547,31 +547,31 @@ define('misc.bgprocess', [
async: true,
contentType: 'application/json',
})
.done(function(res) {
if (!res || !_.isArray(res)) {
return;
}
for (var idx in res) {
var process = res[idx];
if ('id' in process) {
if (!(process.id in observer.bgprocesses)) {
observer.bgprocesses[process.id] = new BGProcess(process);
.done(function(res) {
if (!res || !_.isArray(res)) {
return;
}
for (var idx in res) {
var process = res[idx];
if ('id' in process) {
if (!(process.id in observer.bgprocesses)) {
observer.bgprocesses[process.id] = new BGProcess(process);
}
}
}
}
if (recheck && res.length == 0) {
if (recheck && res.length == 0) {
// Recheck after some more time
setTimeout(
function() {
observer.update_process_list(false);
}, 3000
);
}
})
.fail(function() {
setTimeout(
function() {
observer.update_process_list(false);
}, 3000
);
}
})
.fail(function() {
// FIXME:: What to do now?
console.warn(arguments);
});
console.warn(arguments);
});
},
create_panel: function() {

View File

@ -47,8 +47,8 @@ define('misc.dependencies', [
parse: function(res) {
var node = pgBrowser.Nodes[res.type];
res.icon = node ? (_.isFunction(node['node_image']) ?
(node['node_image']).apply(node, [null, null]) :
(node['node_image'] || ('icon-' + res.type))) :
(node['node_image']).apply(node, [null, null]) :
(node['node_image'] || ('icon-' + res.type))) :
('icon-' + res.type);
res.type = S.titleize(res.type.replace(/_/g, ' '), true);
return res;
@ -76,7 +76,7 @@ define('misc.dependencies', [
columns: [{
name: 'type',
label: gettext('Type'),
// Extend it to render the icon as per the type.
// Extend it to render the icon as per the type.
cell: Backgrid.Cell.extend({
render: function() {
Backgrid.Cell.prototype.render.apply(this, arguments);
@ -162,65 +162,65 @@ define('misc.dependencies', [
}, 1000);
},
})
.done(function(res) {
clearTimeout(timer);
.done(function(res) {
clearTimeout(timer);
if (res.length > 0) {
if (res.length > 0) {
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
$gridContainer.removeClass('d-none');
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
$gridContainer.removeClass('d-none');
self.dependenciesData = res;
self.dependenciesData = res;
// Load only 100 rows
self.dependenciesCollection.reset(self.dependenciesData.splice(0, 100), {parse: true});
// Load only 100 rows
self.dependenciesCollection.reset(self.dependenciesData.splice(0, 100), {parse: true});
// Load more rows on scroll down
pgBrowser.Events.on(
'pgadmin-browser:panel-dependencies:' +
// Load more rows on scroll down
pgBrowser.Events.on(
'pgadmin-browser:panel-dependencies:' +
wcDocker.EVENT.SCROLLED,
self.__loadMoreRows
);
self.__loadMoreRows
);
} else {
} else {
// Do not listen the scroll event
pgBrowser.Events.off(
'pgadmin-browser:panel-dependencies:' +
pgBrowser.Events.off(
'pgadmin-browser:panel-dependencies:' +
wcDocker.EVENT.SCROLLED
);
);
self.dependenciesCollection.reset({silent: true});
$msgContainer.text(msg);
$msgContainer.removeClass('d-none');
self.dependenciesCollection.reset({silent: true});
$msgContainer.text(msg);
$msgContainer.removeClass('d-none');
if (!$gridContainer.hasClass('d-none')) {
$gridContainer.addClass('d-none');
if (!$gridContainer.hasClass('d-none')) {
$gridContainer.addClass('d-none');
}
}
}
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'depends', xhr, error, message
);
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving data from the server: %s')).sprintf(
message || _label).value(), function() {
console.warn(arguments);
});
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'depends', xhr, error, message
);
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving data from the server: %s')).sprintf(
message || _label).value(), function() {
console.warn(arguments);
});
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
}
} if (msg != '') {
$msgContainer.text(msg);

View File

@ -47,8 +47,8 @@ define('misc.dependents', [
parse: function(res) {
var node = pgBrowser.Nodes[res.type];
res.icon = node ? (_.isFunction(node['node_image']) ?
(node['node_image']).apply(node, [null, null]) :
(node['node_image'] || ('icon-' + res.type))) :
(node['node_image']).apply(node, [null, null]) :
(node['node_image'] || ('icon-' + res.type))) :
('icon-' + res.type);
res.type = S.titleize(res.type.replace(/_/g, ' '), true);
return res;
@ -77,7 +77,7 @@ define('misc.dependents', [
columns: [{
name: 'type',
label: gettext('Type'),
// Extend it to render the icon as per the type.
// Extend it to render the icon as per the type.
cell: Backgrid.Cell.extend({
render: function() {
Backgrid.Cell.prototype.render.apply(this, arguments);
@ -168,65 +168,65 @@ define('misc.dependents', [
}, 1000);
},
})
.done(function(res) {
clearTimeout(timer);
.done(function(res) {
clearTimeout(timer);
if (res.length > 0) {
if (res.length > 0) {
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
$gridContainer.removeClass('d-none');
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
$gridContainer.removeClass('d-none');
self.dependentData = res;
self.dependentData = res;
// Load only 100 rows
self.dependentCollection.reset(self.dependentData.splice(0, 100), {parse: true});
// Load only 100 rows
self.dependentCollection.reset(self.dependentData.splice(0, 100), {parse: true});
// Load more rows on scroll down
pgBrowser.Events.on(
'pgadmin-browser:panel-dependents:' +
// Load more rows on scroll down
pgBrowser.Events.on(
'pgadmin-browser:panel-dependents:' +
wcDocker.EVENT.SCROLLED,
self.__loadMoreRows
);
self.__loadMoreRows
);
} else {
} else {
// Do not listen the scroll event
pgBrowser.Events.off(
'pgadmin-browser:panel-dependents:' +
pgBrowser.Events.off(
'pgadmin-browser:panel-dependents:' +
wcDocker.EVENT.SCROLLED
);
);
self.dependentCollection.reset({silent: true});
$msgContainer.text(msg);
$msgContainer.removeClass('d-none');
self.dependentCollection.reset({silent: true});
$msgContainer.text(msg);
$msgContainer.removeClass('d-none');
if (!$gridContainer.hasClass('d-none')) {
$gridContainer.addClass('d-none');
if (!$gridContainer.hasClass('d-none')) {
$gridContainer.addClass('d-none');
}
}
}
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'depends', xhr, error, message
);
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving data from the server: %s')).sprintf(
message || _label).value(), function() {
console.warn(arguments);
});
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'depends', xhr, error, message
);
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving data from the server: %s')).sprintf(
message || _label).value(), function() {
console.warn(arguments);
});
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
}
} if (msg != '') {
$msgContainer.text(msg);

View File

@ -98,14 +98,14 @@ module.exports = Alertify.dialog('createModeDlg', function() {
contentType: 'application/x-download; charset=utf-8',
async: false,
})
.done(function(resp) {
var data = resp.data.result;
if (data['Code'] === 1) {
is_exist = true;
} else {
is_exist = false;
}
});
.done(function(resp) {
var data = resp.data.result;
if (data['Code'] === 1) {
is_exist = true;
} else {
is_exist = false;
}
});
return is_exist;
},
check_permission: function(path) {
@ -125,19 +125,19 @@ module.exports = Alertify.dialog('createModeDlg', function() {
contentType: 'application/json; charset=utf-8',
async: false,
})
.done(function(resp) {
var data = resp.data.result;
if (data.Code === 1) {
permission = true;
} else {
.done(function(resp) {
var data = resp.data.result;
if (data.Code === 1) {
permission = true;
} else {
$('.file_manager_ok').addClass('disabled');
Alertify.error(data.Error);
}
})
.fail(function() {
$('.file_manager_ok').addClass('disabled');
Alertify.error(data.Error);
}
})
.fail(function() {
$('.file_manager_ok').addClass('disabled');
Alertify.error(gettext('Error occurred while checking access permission.'));
});
Alertify.error(gettext('Error occurred while checking access permission.'));
});
return permission;
},
callback: function(closeEvent) {

View File

@ -141,7 +141,7 @@ module.exports = Alertify.dialog('fileSelectionDlg', function() {
},
hooks: {
onshow: function() {
// $(this.elements.body).addClass('pgadmin-storage-body');
// $(this.elements.body).addClass('pgadmin-storage-body');
},
},
};

File diff suppressed because it is too large Load Diff

View File

@ -134,30 +134,30 @@ define('misc.sql', [
}, 1000);
},
})
.done(function(res) {
if (pgAdmin.Browser.editor.getValue() != res) {
pgAdmin.Browser.editor.setValue(res);
}
clearTimeout(timer);
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'sql', xhr, error, message, item
);
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving the information - %s')).sprintf(
message || _label
).value(),
function() {}
.done(function(res) {
if (pgAdmin.Browser.editor.getValue() != res) {
pgAdmin.Browser.editor.setValue(res);
}
clearTimeout(timer);
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'sql', xhr, error, message, item
);
}
});
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving the information - %s')).sprintf(
message || _label
).value(),
function() {}
);
}
});
}
}

View File

@ -436,9 +436,9 @@ define('pgadmin.misc.explain', [
var mappedImage = (_.isFunction(imageMapper[node_type]) &&
imageMapper[node_type].apply(undefined, [data])) ||
imageMapper[node_type] || {
'image': 'ex_unknown.svg',
'image_text': node_type,
};
'image': 'ex_unknown.svg',
'image_text': node_type,
};
data['image'] = mappedImage['image'];
data['image_text'] = mappedImage['image_text'];

View File

@ -86,10 +86,10 @@ define('misc.statistics', [
}),
// timestamptz
1184: 'string'
/* Backgrid.DatetimeCell.extend({
/* Backgrid.DatetimeCell.extend({
includeDate: true, includeTime: true, includeMilli: true
}) */
,
,
1266: 'string',
/* Backgrid.DatetimeCell.extend({
includeDate: false, includeTime: true, includeMilli: true
@ -248,78 +248,78 @@ define('misc.statistics', [
}, 1000);
},
})
.done(function(res) {
.done(function(res) {
// clear timer and reset message.
clearTimeout(timer);
$msgContainer.text('');
if (res.data) {
var data = self.data = res.data;
if (node.hasCollectiveStatistics || data['rows'].length > 1) {
clearTimeout(timer);
$msgContainer.text('');
if (res.data) {
var data = self.data = res.data;
if (node.hasCollectiveStatistics || data['rows'].length > 1) {
// Listen scroll event to load more rows
pgBrowser.Events.on(
'pgadmin-browser:panel-statistics:' +
pgBrowser.Events.on(
'pgadmin-browser:panel-statistics:' +
wcDocker.EVENT.SCROLLED,
self.__loadMoreRows
);
self.__createMultiLineStatistics.call(self, data, node.statsPrettifyFields);
} else {
self.__loadMoreRows
);
self.__createMultiLineStatistics.call(self, data, node.statsPrettifyFields);
} else {
// Do not listen the scroll event
pgBrowser.Events.off(
'pgadmin-browser:panel-statistics:' +
pgBrowser.Events.off(
'pgadmin-browser:panel-statistics:' +
wcDocker.EVENT.SCROLLED,
self.__loadMoreRows
);
self.__createSingleLineStatistics.call(self, data, node.statsPrettifyFields);
}
self.__loadMoreRows
);
self.__createSingleLineStatistics.call(self, data, node.statsPrettifyFields);
}
if (self.grid) {
delete self.grid;
self.grid = null;
}
if (self.grid) {
delete self.grid;
self.grid = null;
}
self.grid = new Backgrid.Grid({
emptyText: 'No data found',
columns: self.columns,
collection: self.collection,
className: GRID_CLASSES,
});
self.grid.render();
$gridContainer.empty();
$gridContainer.append(self.grid.$el);
self.grid = new Backgrid.Grid({
emptyText: 'No data found',
columns: self.columns,
collection: self.collection,
className: GRID_CLASSES,
});
self.grid.render();
$gridContainer.empty();
$gridContainer.append(self.grid.$el);
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
$gridContainer.removeClass('d-none');
if (!$msgContainer.hasClass('d-none')) {
$msgContainer.addClass('d-none');
}
$gridContainer.removeClass('d-none');
} else if (res.info) {
if (!$gridContainer.hasClass('d-none')) {
$gridContainer.addClass('d-none');
} else if (res.info) {
if (!$gridContainer.hasClass('d-none')) {
$gridContainer.addClass('d-none');
}
$msgContainer.text(res.info);
$msgContainer.removeClass('d-none');
}
$msgContainer.text(res.info);
$msgContainer.removeClass('d-none');
}
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'statistics', xhr, error, message, item
);
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving the information - %s')).sprintf(
message || _label
).value(),
function() {}
})
.fail(function(xhr, error, message) {
var _label = treeHierarchy[n_type].label;
pgBrowser.Events.trigger(
'pgadmin:node:retrieval:error', 'statistics', xhr, error, message, item
);
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
if (!Alertify.pgHandleItemError(xhr, error, message, {
item: item,
info: treeHierarchy,
})) {
Alertify.pgNotifier(
error, xhr,
S(gettext('Error retrieving the information - %s')).sprintf(
message || _label
).value(),
function() {}
);
}
// show failed message.
$msgContainer.text(gettext('Failed to retrieve data from the server.'));
});
}
}
if (msg != '') {

View File

@ -273,10 +273,10 @@ define('pgadmin.preferences', [
return 'keyboardShortcut';
default:
if (console && console.warn) {
// Warning for developer only.
// Warning for developer only.
console.warn(
'Hmm.. We don\'t know how to render this type - \'\'' + p.type + '\' of control.'
);
'Hmm.. We don\'t know how to render this type - \'\'' + p.type + '\' of control.'
);
}
return 'input';
}
@ -314,7 +314,7 @@ define('pgadmin.preferences', [
return true;
if (d.preferences) {
/*
/*
* Clear the existing html in the preferences content
*/
$container.find('.preferences_content');
@ -341,7 +341,7 @@ define('pgadmin.preferences', [
'mid': d.mid,
'name': p.name,
});
/*
/*
* We don't know until now, how to render the control for
* this preference.
*/
@ -356,13 +356,13 @@ define('pgadmin.preferences', [
d.sortable = false;
break;
case 'loaded':
// Let's select the first category from the prefrences.
// We need to wait for sometime before all item gets loaded
// properly.
// Let's select the first category from the prefrences.
// We need to wait for sometime before all item gets loaded
// properly.
setTimeout(
function() {
selectFirstCategory(api, null);
}, 300);
function() {
selectFirstCategory(api, null);
}, 300);
break;
}
return true;

View File

@ -43,18 +43,18 @@ define('pgadmin.settings', [
type: 'DELETE',
async: false,
})
.done(function() {
.done(function() {
// Prevent saving layout on server for next page reload.
$(window).off('unload');
window.onbeforeunload = null;
// Now reload page
location.reload(true);
})
.fail(function() {
console.warn(
'Something went wrong on server while resetting layout.'
);
});
$(window).off('unload');
window.onbeforeunload = null;
// Now reload page
location.reload(true);
})
.fail(function() {
console.warn(
'Something went wrong on server while resetting layout.'
);
});
},
function() {

View File

@ -22,11 +22,11 @@ define('app', [
}
};
// Initialize modules registered to pgAdmin, pgAdmin.Browser and Tools object.
// Initialize modules registered to pgAdmin, pgAdmin.Browser and Tools object.
initializeModules(pgAdmin);
initializeModules(pgAdmin.Browser);
initializeModules(pgAdmin.Tools);
// create menus after all modules are initialized.
// create menus after all modules are initialized.
pgAdmin.Browser.create_menus();
});

View File

@ -355,25 +355,25 @@ define([
),
dataType: 'json',
})
.done(function(res) {
if (res.success && 'connected' in res.data) {
if (res.data.connected) {
.done(function(res) {
if (res.success && 'connected' in res.data) {
if (res.data.connected) {
// Server is connected, but - the connection with the
// particular database has been lost.
pgBrowser.Events.trigger(
'pgadmin:database:connection:lost', args.item, jsonResp
);
return;
pgBrowser.Events.trigger(
'pgadmin:database:connection:lost', args.item, jsonResp
);
return;
}
}
}
// Serever was not connected, we should first try to connect
// the server.
reconnectServer();
})
.fail(function() {
reconnectServer();
});
// Serever was not connected, we should first try to connect
// the server.
reconnectServer();
})
.fail(function() {
reconnectServer();
});
return true;
}
return false;

View File

@ -22,9 +22,9 @@ import {getTreeNodeHierarchyFromIdentifier} from '../tree/pgadmin_tree_node';
*/
export class Dialog {
constructor(errorAlertTitle,
dialogContainerSelector,
pgBrowser, $, alertify, DialogModel,
backform = Backform) {
dialogContainerSelector,
pgBrowser, $, alertify, DialogModel,
backform = Backform) {
this.errorAlertTitle = errorAlertTitle;
this.alertify = alertify;
this.pgBrowser = pgBrowser;

View File

@ -12,8 +12,8 @@ import {RestoreDialogWrapper} from '../../../tools/restore/static/js/restore_dia
export class DialogFactory {
constructor(pgBrowser, $,
alertify, DialogModel,
backform, dialogContainerSelector) {
alertify, DialogModel,
backform, dialogContainerSelector) {
this.pgBrowser = pgBrowser;
this.jquery = $;
this.alertify = alertify;

View File

@ -511,7 +511,7 @@ define([
data.options = _.defaults({
disabled: evalF(field.disabled, field, this.model),
}, this.field.get('options'), this.defaults.options,
$.fn.bootstrapToggle.defaults);
$.fn.bootstrapToggle.defaults);
this.$el.html(this.template(data)).addClass(field.name);
@ -573,8 +573,8 @@ define([
this.cleanup();
var c = this.$el
.children().first().children('.active')
.first().attr('id'),
.children().first().children('.active')
.first().attr('id'),
m = this.model,
controls = this.controls,
tmpls = this.template,
@ -625,15 +625,15 @@ define([
function() {
self.hidden_tab = $(this).data('tabIndex');
}).on('shown.bs.tab', function() {
var self = this;
self.shown_tab = $(self).data('tabIndex');
m.trigger('pg-property-tab-changed', {
'model': m,
'shown': self.shown_tab,
'hidden': self.hidden_tab,
'tab': self,
});
var self = this;
self.shown_tab = $(self).data('tabIndex');
m.trigger('pg-property-tab-changed', {
'model': m,
'shown': self.shown_tab,
'hidden': self.hidden_tab,
'tab': self,
});
});
});
var makeActive = tabHead.find('[id="' + c + '"]').first();
@ -1748,7 +1748,7 @@ define([
var visible = true;
ver_in_limit = (_.isUndefined(server_info) ? true :
((_.isUndefined(s.server_type) ? true :
(server_info.type in s.server_type)) &&
(server_info.type in s.server_type)) &&
(_.isUndefined(s.min_version) ? true :
(server_info.version >= s.min_version)) &&
(_.isUndefined(s.max_version) ? true :
@ -1783,7 +1783,7 @@ define([
groups[group] = (groups[group] || []);
ver_in_limit = (_.isUndefined(server_info) ? true :
((_.isUndefined(s.server_type) ? true :
(server_info.type in s.server_type)) &&
(server_info.type in s.server_type)) &&
(_.isUndefined(s.min_version) ? true :
(server_info.version >= s.min_version)) &&
(_.isUndefined(s.max_version) ? true :
@ -2242,7 +2242,7 @@ define([
* SQL Editor can be in different tab
*/
let browser = window.opener ?
window.opener.pgAdmin.Browser : window.top.pgAdmin.Browser;
window.opener.pgAdmin.Browser : window.top.pgAdmin.Browser;
let sqlEditPreferences = browser.get_preferences_for_module('sqleditor');
@ -2916,12 +2916,12 @@ define([
_.each(innerFields, function(fld) {
var f = new Backform.Field(
_.extend({}, {
id: fld['name'],
name: fld['name'],
control: fld['type'] == 'checkbox' ? 'checkboxWithBox' : fld['type'],
label: fld['label'],
})
_.extend({}, {
id: fld['name'],
name: fld['name'],
control: fld['type'] == 'checkbox' ? 'checkboxWithBox' : fld['type'],
label: fld['label'],
})
),
cntr = new (f.get('control')) ({
field: f,

View File

@ -68,10 +68,10 @@ define([
var col_type = column.get('cell').prototype.className || 'string-cell',
comparator = this.makeComparator(column.get('name'), order,
order ?
column.sortValue() :
function(model) {
return model.cid.replace('c', '') * 1;
}, col_type);
column.sortValue() :
function(model) {
return model.cid.replace('c', '') * 1;
}, col_type);
if (Backbone.PageableCollection &&
collection instanceof Backbone.PageableCollection) {
@ -527,9 +527,9 @@ define([
tabIndex: -1,
type: 'checkbox',
}).prop('checked', rawValue).prop('disabled', !editable).attr('data-toggle', 'toggle')
.attr('data-size', options.size).attr('data-on', options.onText).attr('data-off', options.offText)
.attr('data-width', options.width).attr('data-height', options.height)
.attr('data-onstyle', options.onColor).attr('data-offstyle', options.offColor));
.attr('data-size', options.size).attr('data-on', options.onText).attr('data-off', options.offText)
.attr('data-width', options.width).attr('data-height', options.height)
.attr('data-onstyle', options.onColor).attr('data-offstyle', options.offColor));
this.$input = this.$el.find('input[type=checkbox]').first();
@ -633,9 +633,9 @@ define([
'<%= selected ? \'selected="selected"\' : "" %>>',
'<%- label %></option>',
].join(''),
null, {
variable: null,
}),
null, {
variable: null,
}),
initialize: function() {
Backgrid.SelectCell.prototype.initialize.apply(this, arguments);
@ -683,7 +683,7 @@ define([
openOnEnter: false,
multiple: false,
}, self.defaults.select2,
(col.select2 || {})
(col.select2 || {})
),
selectTpl = _.template('<select <%=multiple ? "multiple" : "" %>></select>');
@ -1409,9 +1409,9 @@ define([
var m = this.modelInUnixOffset ? moment(rawData) :
this.modelInUnixTimestamp ? moment.unix(rawData) :
this.modelInUTC ?
moment.utc(rawData, this.modelFormat, this.modelLang) :
moment(rawData, this.modelFormat, this.modelLang);
this.modelInUTC ?
moment.utc(rawData, this.modelFormat, this.modelLang) :
moment(rawData, this.modelFormat, this.modelLang);
if (this.displayInUnixOffset) return +m;
@ -1439,9 +1439,9 @@ define([
var m = this.displayInUnixOffset ? moment(+formattedData) :
this.displayInUnixTimestamp ? moment.unix(+formattedData) :
this.displayInUTC ?
moment.utc(formattedData, this.displayFormat, this.displayLang) :
moment(formattedData, this.displayFormat, this.displayLang);
this.displayInUTC ?
moment.utc(formattedData, this.displayFormat, this.displayLang) :
moment(formattedData, this.displayFormat, this.displayLang);
if (!m || !m.isValid()) return (this.allowEmpty && formattedData === '') ? null : undefined;
@ -1636,7 +1636,7 @@ define([
if (
_.isFunction(editable) ? !!editable.apply(column, [model]) :
!!editable
!!editable
) {
this.$el.addClass('editable');
} else {

View File

@ -212,21 +212,21 @@ function keyboardShortcutsQueryTool(
queryToolActions.executeRollback(sqlEditorController);
}
} else if ((
(this.isMac() && event.metaKey) ||
(this.isMac() && event.metaKey) ||
(!this.isMac() && event.ctrlKey)
) && !event.altKey && event.shiftKey && keyCode === FWD_SLASH_KEY) {
) && !event.altKey && event.shiftKey && keyCode === FWD_SLASH_KEY) {
this._stopEventPropagation(event);
queryToolActions.commentBlockCode(sqlEditorController);
} else if ((
(this.isMac() && !this.isKeyCtrlAltShift(event) && event.metaKey) ||
(this.isMac() && !this.isKeyCtrlAltShift(event) && event.metaKey) ||
(!this.isMac() && !this.isKeyAltShift(event) && event.ctrlKey)
) && keyCode === FWD_SLASH_KEY) {
) && keyCode === FWD_SLASH_KEY) {
this._stopEventPropagation(event);
queryToolActions.commentLineCode(sqlEditorController);
} else if ((
(this.isMac() && !this.isKeyCtrlAltShift(event) && event.metaKey) ||
(this.isMac() && !this.isKeyCtrlAltShift(event) && event.metaKey) ||
(!this.isMac() && !this.isKeyAltShift(event) && event.ctrlKey)
) && keyCode === PERIOD_KEY) {
) && keyCode === PERIOD_KEY) {
this._stopEventPropagation(event);
queryToolActions.uncommentLineCode(sqlEditorController);
} else if (keyCode == ESC_KEY) {
@ -296,22 +296,11 @@ function keyboardShortcutsQueryTool(
return panel_id;
}
module.exports = {
processEventDebugger: keyboardShortcutsDebugger,
processEventQueryTool: keyboardShortcutsQueryTool,
getInnerPanel: getInnerPanel,
validateShortcutKeys: validateShortcutKeys,
// misc functions
_stopEventPropagation: _stopEventPropagation,
isMac: isMac,
isKeyCtrlAlt: isKeyCtrlAlt,
isKeyAltShift: isKeyAltShift,
isKeyCtrlShift: isKeyCtrlShift,
isKeyCtrlAltShift: isKeyCtrlAltShift,
isAltShiftBoth: isAltShiftBoth,
isCtrlShiftBoth: isCtrlShiftBoth,
isCtrlAltBoth: isCtrlAltBoth,
shortcut_key : shortcut_key,
shortcut_title : shortcut_title,
shortcut_accesskey_title : shortcut_accesskey_title,
export {
keyboardShortcutsDebugger as processEventDebugger,
keyboardShortcutsQueryTool as processEventQueryTool,
getInnerPanel, validateShortcutKeys,
_stopEventPropagation, isMac, isKeyCtrlAlt, isKeyAltShift, isKeyCtrlShift,
isKeyCtrlAltShift, isAltShiftBoth, isCtrlShiftBoth, isCtrlAltBoth,
shortcut_key, shortcut_title, shortcut_accesskey_title,
};

View File

@ -57,17 +57,17 @@ function modifyAlertifyAnimation(pgBrowser) {
if(enableAcitreeAnimation) {
$(document).find('link#alertify-no-animation')
.attr('disabled', 'disabled');
.attr('disabled', 'disabled');
_.each(document.getElementsByTagName('iframe'), function(frame) {
$(frame.contentDocument).find('link#alertify-no-animation')
.attr('disabled', 'disabled');
.attr('disabled', 'disabled');
});
} else {
$(document).find('link#alertify-no-animation')
.removeAttr('disabled', 'disabled');
.removeAttr('disabled', 'disabled');
_.each(document.getElementsByTagName('iframe'), function(frame) {
$(frame.contentDocument).find('link#alertify-no-animation')
.removeAttr('disabled', 'disabled');
.removeAttr('disabled', 'disabled');
});
}
}

View File

@ -53,7 +53,7 @@ import JSONBigNumber from 'json-bignumber';
$('<button class=\'btn ' + button_type + ' long_text_editor pg-alertify-button\' data-label="'+label+'">' +
'<span class="fa '+ button_icon +' pg-alertify-button"></span>&nbsp;'+ label +
'</button>')
.appendTo($buttons);
.appendTo($buttons);
if (editable) {
$('<button class=\'btn btn-primary long_text_editor\' data-label="Save">'+

View File

@ -97,7 +97,7 @@ class ExecuteQuery {
}).catch(function (error) {
self.onExecuteHTTPError(error);
}
);
);
}
generateURLReconnectionFlag(shouldReconnect) {

View File

@ -14,7 +14,7 @@ import Alertify from 'pgadmin.alertifyjs';
import pgAdmin from 'sources/pgadmin';
import Backform from 'pgadmin.backform';
import axios from 'axios';
import queryToolActions from 'sources/sqleditor/query_tool_actions';
var queryToolActions = require('sources/sqleditor/query_tool_actions');
import filterDialogModel from 'sources/sqleditor/filter_dialog_model';
import {handleQueryToolAjaxError} from 'sources/sqleditor/query_tool_http_error_handler';
@ -40,89 +40,89 @@ let FilterDialog = {
'Cache-Control' : 'no-cache',
},
})
.done(function (res) {
let response = res.data.result;
.done(function (res) {
let response = res.data.result;
// Check the alertify dialog already loaded then delete it to clear
// the cache
if (Alertify.filterDialog) {
delete Alertify.filterDialog;
}
// Check the alertify dialog already loaded then delete it to clear
// the cache
if (Alertify.filterDialog) {
delete Alertify.filterDialog;
}
// Create Dialog
Alertify.dialog('filterDialog', function factory() {
let $container = $('<div class=\'data_sorting_dialog\'></div>');
return {
main: function() {
this.set('title', gettext('Sort/Filter options'));
},
build: function() {
this.elements.content.appendChild($container.get(0));
Alertify.pgDialogBuild.apply(this);
},
setup: function() {
return {
buttons: [{
text: '',
key: 112,
className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button',
attrs: {
name: 'dialog_help',
type: 'button',
label: gettext('Help'),
url: url_for('help.static', {
'filename': 'editgrid.html',
}),
},
}, {
text: gettext('Cancel'),
key: 27,
className: 'btn btn-secondary fa fa-times pg-alertify-button',
'data-btn-name': 'cancel',
}, {
text: gettext('OK'),
className: 'btn btn-primary fa fa-check pg-alertify-button',
'data-btn-name': 'ok',
}],
// Set options for dialog
options: {
title: title,
//disable both padding and overflow control.
padding: !1,
overflow: !1,
model: 0,
resizable: true,
maximizable: true,
pinnable: false,
closableByDimmer: false,
modal: false,
autoReset: false,
},
};
},
hooks: {
// triggered when the dialog is closed
onclose: function() {
if (this.view) {
this.filterCollectionModel.stopSession();
this.view.model.stopSession();
this.view.remove({
data: true,
internal: true,
silent: true,
});
}
// Create Dialog
Alertify.dialog('filterDialog', function factory() {
let $container = $('<div class=\'data_sorting_dialog\'></div>');
return {
main: function() {
this.set('title', gettext('Sort/Filter options'));
},
},
prepare: function() {
let self = this;
$container.html('');
// Disable Ok button
this.__internal.buttons[2].element.disabled = true;
build: function() {
this.elements.content.appendChild($container.get(0));
Alertify.pgDialogBuild.apply(this);
},
setup: function() {
return {
buttons: [{
text: '',
key: 112,
className: 'btn btn-secondary pull-left fa fa-question pg-alertify-icon-button',
attrs: {
name: 'dialog_help',
type: 'button',
label: gettext('Help'),
url: url_for('help.static', {
'filename': 'editgrid.html',
}),
},
}, {
text: gettext('Cancel'),
key: 27,
className: 'btn btn-secondary fa fa-times pg-alertify-button',
'data-btn-name': 'cancel',
}, {
text: gettext('OK'),
className: 'btn btn-primary fa fa-check pg-alertify-button',
'data-btn-name': 'ok',
}],
// Set options for dialog
options: {
title: title,
//disable both padding and overflow control.
padding: !1,
overflow: !1,
model: 0,
resizable: true,
maximizable: true,
pinnable: false,
closableByDimmer: false,
modal: false,
autoReset: false,
},
};
},
hooks: {
// triggered when the dialog is closed
onclose: function() {
if (this.view) {
this.filterCollectionModel.stopSession();
this.view.model.stopSession();
this.view.remove({
data: true,
internal: true,
silent: true,
});
}
},
},
prepare: function() {
let self = this;
$container.html('');
// Disable Ok button
this.__internal.buttons[2].element.disabled = true;
// Status bar
this.statusBar = $(
'<div class=\'pg-prop-status-bar pg-el-xs-12 d-none\'>' +
// Status bar
this.statusBar = $(
'<div class=\'pg-prop-status-bar pg-el-xs-12 d-none\'>' +
' <div class="error-in-footer"> ' +
' <div class="d-flex px-2 py-1"> ' +
' <div class="pr-2"> ' +
@ -133,144 +133,144 @@ let FilterDialog = {
' </div> ' +
'</div>').appendTo($container);
// To show progress on filter Saving/Updating on AJAX
this.showFilterProgress = $(
`<div id="show_filter_progress" class="pg-sp-container sql-editor-busy-fetching d-none">
// To show progress on filter Saving/Updating on AJAX
this.showFilterProgress = $(
`<div id="show_filter_progress" class="pg-sp-container sql-editor-busy-fetching d-none">
<div class="pg-sp-content">
<div class="row"><div class="col-12 pg-sp-icon sql-editor-busy-icon"></div></div>
<div class="row"><div class="col-12 pg-sp-text sql-editor-busy-text">${gettext('Loading data...')}</div></div>
</div>
</div>`
).appendTo($container);
$(
self.showFilterProgress[0]
).removeClass('d-none');
self.filterCollectionModel = filterDialogModel(response);
let fields = Backform.generateViewSchema(
null, self.filterCollectionModel, 'create', null, null, true
);
let view = this.view = new Backform.Dialog({
el: '<div></div>',
model: self.filterCollectionModel,
schema: fields,
});
$(this.elements.body.childNodes[0]).addClass(
'alertify_tools_dialog_properties obj_properties'
);
$container.append(view.render().$el);
// Enable/disable save button and show/hide statusbar based on session
view.listenTo(view.model, 'pgadmin-session:start', function() {
view.listenTo(view.model, 'pgadmin-session:invalid', function(msg) {
self.statusBar.removeClass('d-none');
$(self.statusBar.find('.alert-text')).html(msg);
// Disable Okay button
self.__internal.buttons[2].element.disabled = true;
});
view.listenTo(view.model, 'pgadmin-session:valid', function() {
self.statusBar.addClass('d-none');
$(self.statusBar.find('.alert-text')).html('');
// Enable Okay button
self.__internal.buttons[2].element.disabled = false;
});
});
view.listenTo(view.model, 'pgadmin-session:stop', function() {
view.stopListening(view.model, 'pgadmin-session:invalid');
view.stopListening(view.model, 'pgadmin-session:valid');
});
// Starts monitoring changes to model
view.model.startNewSession();
// Set data in collection
let viewDataSortingModel = view.model.get('data_sorting');
viewDataSortingModel.add(response['data_sorting']);
// Hide Progress ...
$(
self.showFilterProgress[0]
).addClass('d-none');
},
// Callback functions when click on the buttons of the Alertify dialogs
callback: function(e) {
let self = this;
if (e.button.element.name == 'dialog_help') {
e.cancel = true;
pgAdmin.Browser.showHelp(e.button.element.name, e.button.element.getAttribute('url'),
null, null);
return;
} else if (e.button['data-btn-name'] === 'ok') {
e.cancel = true; // Do not close dialog
let filterCollectionModel = this.filterCollectionModel.toJSON();
// Show Progress ...
$(
self.showFilterProgress[0]
).removeClass('d-none');
axios.put(
url_for('sqleditor.set_filter_data', {
'trans_id': handler.transId,
}),
filterCollectionModel
).then(function (result) {
// Hide Progress ...
self.filterCollectionModel = filterDialogModel(response);
let fields = Backform.generateViewSchema(
null, self.filterCollectionModel, 'create', null, null, true
);
let view = this.view = new Backform.Dialog({
el: '<div></div>',
model: self.filterCollectionModel,
schema: fields,
});
$(this.elements.body.childNodes[0]).addClass(
'alertify_tools_dialog_properties obj_properties'
);
$container.append(view.render().$el);
// Enable/disable save button and show/hide statusbar based on session
view.listenTo(view.model, 'pgadmin-session:start', function() {
view.listenTo(view.model, 'pgadmin-session:invalid', function(msg) {
self.statusBar.removeClass('d-none');
$(self.statusBar.find('.alert-text')).html(msg);
// Disable Okay button
self.__internal.buttons[2].element.disabled = true;
});
view.listenTo(view.model, 'pgadmin-session:valid', function() {
self.statusBar.addClass('d-none');
$(self.statusBar.find('.alert-text')).html('');
// Enable Okay button
self.__internal.buttons[2].element.disabled = false;
});
});
view.listenTo(view.model, 'pgadmin-session:stop', function() {
view.stopListening(view.model, 'pgadmin-session:invalid');
view.stopListening(view.model, 'pgadmin-session:valid');
});
// Starts monitoring changes to model
view.model.startNewSession();
// Set data in collection
let viewDataSortingModel = view.model.get('data_sorting');
viewDataSortingModel.add(response['data_sorting']);
// Hide Progress ...
$(
self.showFilterProgress[0]
).addClass('d-none');
},
// Callback functions when click on the buttons of the Alertify dialogs
callback: function(e) {
let self = this;
if (e.button.element.name == 'dialog_help') {
e.cancel = true;
pgAdmin.Browser.showHelp(e.button.element.name, e.button.element.getAttribute('url'),
null, null);
return;
} else if (e.button['data-btn-name'] === 'ok') {
e.cancel = true; // Do not close dialog
let filterCollectionModel = this.filterCollectionModel.toJSON();
// Show Progress ...
$(
self.showFilterProgress[0]
).addClass('d-none');
).removeClass('d-none');
let response = result.data.data;
axios.put(
url_for('sqleditor.set_filter_data', {
'trans_id': handler.transId,
}),
filterCollectionModel
).then(function (result) {
// Hide Progress ...
$(
self.showFilterProgress[0]
).addClass('d-none');
if (response.status) {
setTimeout(
function() {
self.close(); // Close the dialog now
Alertify.success(gettext('Filter updated successfully'));
queryToolActions.executeQuery(handler);
}, 10
);
} else {
Alertify.alert(
let response = result.data.data;
if (response.status) {
setTimeout(
function() {
self.close(); // Close the dialog now
Alertify.success(gettext('Filter updated successfully'));
queryToolActions.executeQuery(handler);
}, 10
);
} else {
Alertify.alert(
gettext('Validation Error'),
response.result
);
}
);
}
}).catch(function (error) {
}).catch(function (error) {
// Hide Progress ...
$(
self.showFilterProgress[0]
).addClass('d-none');
handler.onExecuteHTTPError(error);
$(
self.showFilterProgress[0]
).addClass('d-none');
handler.onExecuteHTTPError(error);
setTimeout(
function() {
Alertify.error(error);
}, 10
);
});
} else {
self.close();
}
},
};
setTimeout(
function() {
Alertify.error(error);
}, 10
);
});
} else {
self.close();
}
},
};
});
Alertify.filterDialog(title).resizeTo(pgAdmin.Browser.stdW.md,pgAdmin.Browser.stdH.md);
})
.fail(function(e) {
handleQueryToolAjaxError(pgAdmin, handler, e, '_show_filter', [], true);
});
Alertify.filterDialog(title).resizeTo(pgAdmin.Browser.stdW.md,pgAdmin.Browser.stdH.md);
})
.fail(function(e) {
handleQueryToolAjaxError(pgAdmin, handler, e, '_show_filter', [], true);
});
},
};

View File

@ -13,7 +13,7 @@ import pgAdmin from 'sources/pgadmin';
import Backgrid from 'pgadmin.backgrid';
import Backform from 'pgadmin.backform';
let initModel = function(response) {
export default function filterDialogModel(response) {
let order_mapping = {
'asc': gettext('ASC'),
@ -135,7 +135,4 @@ let initModel = function(response) {
let model = new FilterCollectionModel();
return model;
};
module.exports = initModel;
}

View File

@ -106,9 +106,9 @@ export default class QueryHistoryDetails {
`<div class='metadata'>
${itemTemplate(this.formatDate(this.entry.start_time), 'Date')}
${itemTemplate(
this.entry.row_affected.toLocaleString(),
'Rows Affected'
)}
this.entry.row_affected.toLocaleString(),
'Rows Affected'
)}
${itemTemplate(this.entry.total_time, 'Duration')}
</div>`
);
@ -126,8 +126,8 @@ export default class QueryHistoryDetails {
this.$errMsgBlock.empty().append(
`<div class='history-error-text'>
<span>Error Message</span> ${this.parseErrorMessage(
this.entry.message
)}
this.entry.message
)}
</div>`
);
} else {

View File

@ -75,10 +75,10 @@ export class QueryHistoryItem {
</div>
</li>`
)
.data('entrydata', this.entry)
.on('click', e => {
this.onClickHandler($(e.currentTarget));
});
.data('entrydata', this.entry)
.on('click', e => {
this.onClickHandler($(e.currentTarget));
});
}
}

View File

@ -78,7 +78,7 @@ function updateUIPreferences(sqlEditor) {
.find('i')
.attr('title',
shortcut_accesskey_title('Connection status (click for details)',
preferences.btn_conn_status));
preferences.btn_conn_status));
/* Accessed using ctrl,atl,shift and key */
$el.find('#btn-flash')
@ -152,8 +152,8 @@ function updateUIPreferences(sqlEditor) {
// Calling it again in specified interval
sqlEditor.connIntervalId = setInterval(
SqlEditorUtils.fetchConnectionStatus.bind(null, sqlEditor.handler, $conn_status, $status_el),
preferences.connection_status_fetch_time * 1000
SqlEditorUtils.fetchConnectionStatus.bind(null, sqlEditor.handler, $conn_status, $status_el),
preferences.connection_status_fetch_time * 1000
);
}
else {

View File

@ -19,8 +19,8 @@ define(['jquery', 'sources/gettext', 'sources/url_for'],
var hexDigits = '0123456789abcdef';
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(
Math.floor(Math.random() * 0x10), 1
);
Math.floor(Math.random() * 0x10), 1
);
}
// bits 12-15 of the time_hi_and_version field to 0010
s[14] = '4';
@ -46,7 +46,7 @@ define(['jquery', 'sources/gettext', 'sources/url_for'],
// Create a temporary element with given label, append to body
// calculate its width and remove the element.
$('body').append(
'<span id="pg_text" style="visibility: hidden;">'+ text + '</span>'
'<span id="pg_text" style="visibility: hidden;">'+ text + '</span>'
);
var width = $('#pg_text').width() + 23;
$('#pg_text').remove(); // remove element
@ -80,102 +80,102 @@ define(['jquery', 'sources/gettext', 'sources/url_for'],
url: url,
method: 'GET',
})
.done(function (res) {
if(res && res.data) {
var status = res.data.status,
msg = res.data.message,
is_status_changed = false;
.done(function (res) {
if(res && res.data) {
var status = res.data.status,
msg = res.data.message,
is_status_changed = false;
// Raise notify messages comes from database server.
sqleditor_obj.update_notifications(res.data.notifies);
// Raise notify messages comes from database server.
sqleditor_obj.update_notifications(res.data.notifies);
// Inject CSS as required
switch(status) {
// Busy
case 1:
// if received busy status more than once then only
if(status == sqlEditorUtils.previousStatus &&
// Inject CSS as required
switch(status) {
// Busy
case 1:
// if received busy status more than once then only
if(status == sqlEditorUtils.previousStatus &&
!$status_el.hasClass('fa-hourglass-half')) {
$status_el.removeClass()
.addClass('fa fa-hourglass-half');
is_status_changed = true;
}
break;
$status_el.removeClass()
.addClass('fa fa-hourglass-half');
is_status_changed = true;
}
break;
// Idle in transaction
case 2:
if(sqlEditorUtils.previousStatus != status &&
case 2:
if(sqlEditorUtils.previousStatus != status &&
!$status_el.hasClass('fa-clock-o')) {
$status_el.removeClass()
.addClass('fa fa-clock-o');
is_status_changed = true;
}
break;
$status_el.removeClass()
.addClass('fa fa-clock-o');
is_status_changed = true;
}
break;
// Failed in transaction
case 3:
if(sqlEditorUtils.previousStatus != status &&
case 3:
if(sqlEditorUtils.previousStatus != status &&
!$status_el.hasClass('fa-exclamation-circle')) {
$status_el.removeClass()
.addClass('fa fa-exclamation-circle');
is_status_changed = true;
}
break;
$status_el.removeClass()
.addClass('fa fa-exclamation-circle');
is_status_changed = true;
}
break;
// Failed in transaction with unknown server side error
case 4:
if(sqlEditorUtils.previousStatus != status &&
case 4:
if(sqlEditorUtils.previousStatus != status &&
!$status_el.hasClass('fa-exclamation-triangle')) {
$status_el.removeClass()
.addClass('fa fa-exclamation-triangle');
is_status_changed = true;
}
break;
default:
if(sqlEditorUtils.previousStatus != status &&
$status_el.removeClass()
.addClass('fa fa-exclamation-triangle');
is_status_changed = true;
}
break;
default:
if(sqlEditorUtils.previousStatus != status &&
!$status_el.hasClass('fa-query_tool_connected')) {
$status_el.removeClass()
.addClass('fa-custom fa-query-tool-connected');
is_status_changed = true;
$status_el.removeClass()
.addClass('fa-custom fa-query-tool-connected');
is_status_changed = true;
}
}
}
sqlEditorUtils.previousStatus = status;
// Set bootstrap popover message
if(is_status_changed) {
$el.popover('hide');
$el.attr('data-content', msg);
}
} else {
sqlEditorUtils.previousStatus = status;
// Set bootstrap popover message
if(is_status_changed) {
$el.popover('hide');
$el.attr('data-content', msg);
}
} else {
// We come here means we did not receive expected response
// from server, we need to error out
sqlEditorUtils.previousStatus = -99;
msg = gettext('An unexpected error occurred - ' +
sqlEditorUtils.previousStatus = -99;
msg = gettext('An unexpected error occurred - ' +
'ensure you are logged into the application.');
$el.attr('data-content', msg);
if(!$status_el.hasClass('fa-query-tool-disconnected')) {
$el.popover('hide');
$status_el.removeClass()
.addClass('fa-custom fa-query-tool-disconnected');
}
}
})
.fail(function (e) {
sqlEditorUtils.previousStatus = -1;
var msg = gettext('Transaction status check failed.');
if (e.readyState == 0) {
msg = gettext('Not connected to the server or the connection to ' +
'the server has been closed.');
} else if (e.responseJSON && e.responseJSON.errormsg) {
msg = e.responseJSON.errormsg;
}
// Set bootstrap popover
$el.attr('data-content', msg);
// Add error class
if(!$status_el.hasClass('fa-query-tool-disconnected')) {
$el.popover('hide');
$status_el.removeClass()
.addClass('fa-custom fa-query-tool-disconnected');
.addClass('fa-custom fa-query-tool-disconnected');
}
}
})
.fail(function (e) {
sqlEditorUtils.previousStatus = -1;
var msg = gettext('Transaction status check failed.');
if (e.readyState == 0) {
msg = gettext('Not connected to the server or the connection to ' +
'the server has been closed.');
} else if (e.responseJSON && e.responseJSON.errormsg) {
msg = e.responseJSON.errormsg;
}
// Set bootstrap popover
$el.attr('data-content', msg);
// Add error class
if(!$status_el.hasClass('fa-query-tool-disconnected')) {
$el.popover('hide');
$status_el.removeClass()
.addClass('fa-custom fa-query-tool-disconnected');
}
});
});
},
// Updates the flag for connection status poll

View File

@ -13,10 +13,10 @@ import url_for from 'sources/url_for';
import gettext from 'sources/gettext';
import pgAdmin from 'sources/pgadmin';
const pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {};
export const pgBrowser = pgAdmin.Browser = pgAdmin.Browser || {};
const browserTreeState = pgBrowser.browserTreeState = pgBrowser.browserTreeState || {};
export const browserTreeState = pgBrowser.browserTreeState = pgBrowser.browserTreeState || {};
_.extend(pgBrowser.browserTreeState, {
@ -74,20 +74,20 @@ _.extend(pgBrowser.browserTreeState, {
url: url_for('settings.reset_tree_state'),
type: 'DELETE',
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
}
}
}
console.warn(
gettext('Error resetting the tree saved state."'), msg);
});
console.warn(
gettext('Error resetting the tree saved state."'), msg);
});
}
},
@ -103,23 +103,23 @@ _.extend(pgBrowser.browserTreeState, {
contentType: 'application/json',
data: JSON.stringify(self.current_state),
})
.done(function() {
self.last_state = JSON.stringify(self.current_state);
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
.done(function() {
self.last_state = JSON.stringify(self.current_state);
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
}
}
}
console.warn(
gettext('Error saving the tree state."'), msg);
});
console.warn(
gettext('Error saving the tree state."'), msg);
});
},
fetch_state: function() {
@ -131,23 +131,23 @@ _.extend(pgBrowser.browserTreeState, {
dataType: 'json',
contentType: 'application/json',
})
.done(function(res) {
self.stored_state = res;
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
.done(function(res) {
self.stored_state = res;
})
.fail(function(jqx) {
var msg = jqx.responseText;
/* Error from the server */
if (jqx.status == 417 || jqx.status == 410 || jqx.status == 500) {
try {
var data = JSON.parse(jqx.responseText);
msg = data.errormsg;
} catch (e) {
console.warn(e.stack || e);
}
}
}
console.warn(
gettext('Error fetching the tree state."'), msg);
});
console.warn(
gettext('Error fetching the tree state."'), msg);
});
},
update_cache: function(item) {
@ -390,5 +390,3 @@ _.extend(pgBrowser.browserTreeState, {
}
},
});
export {pgBrowser, browserTreeState};

View File

@ -16,7 +16,7 @@ import {DialogWrapper} from '../../../../static/js/alertify/dialog_wrapper';
export class BackupDialogWrapper extends DialogWrapper {
constructor(dialogContainerSelector, dialogTitle, typeOfDialog,
jquery, pgBrowser, alertify, dialogModel, backform) {
jquery, pgBrowser, alertify, dialogModel, backform) {
super(dialogContainerSelector, dialogTitle, jquery,
pgBrowser, alertify, dialogModel, backform);
this.typeOfDialog = typeOfDialog;

View File

@ -68,7 +68,7 @@ define('pgadmin.datagrid', [
'foreign_table', 'catalog_object', 'partition',
],
/* Enable/disable View data menu in tools based
/* Enable/disable View data menu in tools based
* on node selected. if selected node is present
* in supported_nodes, menu will be enabled
* otherwise disabled.
@ -86,7 +86,7 @@ define('pgadmin.datagrid', [
return isEnabled;
},
/* Enable/disable Query tool menu in tools based
/* Enable/disable Query tool menu in tools based
* on node selected. if selected node is present
* in unsupported_nodes, menu will be disabled
* otherwise enabled.
@ -350,25 +350,25 @@ define('pgadmin.datagrid', [
contentType: 'application/json',
data: JSON.stringify(sql),
})
.done(function(res) {
if (res.data.status) {
.done(function(res) {
if (res.data.status) {
// Initialize the data grid.
self.create_transaction(that.baseUrl, null, 'false', parentData.server.server_type, '', grid_title, sql, false);
that.close(); // Close the dialog
}
else {
self.create_transaction(that.baseUrl, null, 'false', parentData.server.server_type, '', grid_title, sql, false);
that.close(); // Close the dialog
}
else {
alertify.alert(
gettext('Validation Error'),
res.data.result
);
}
})
.fail(function(e) {
alertify.alert(
gettext('Validation Error'),
res.data.result
e
);
}
})
.fail(function(e) {
alertify.alert(
gettext('Validation Error'),
e
);
});
});
}
},
};
@ -378,7 +378,7 @@ define('pgadmin.datagrid', [
$.get(url_for('datagrid.filter'),
function(data) {
alertify.filterDialog('Data Filter', data, baseUrl, validateUrl)
.resizeTo(pgBrowser.stdW.sm,pgBrowser.stdH.sm);
.resizeTo(pgBrowser.stdW.sm,pgBrowser.stdH.sm);
}
);
},
@ -413,35 +413,35 @@ define('pgadmin.datagrid', [
data: reqData,
contentType: 'application/json',
})
.done(function(res) {
res.data.is_query_tool = is_query_tool;
res.data.server_type = server_type;
res.data.sURL = sURL;
res.data.panel_title = panel_title;
target.trigger('pgadmin-datagrid:transaction:created', res.data);
})
.fail(function(xhr) {
if (target !== self) {
if(xhr.status == 503 && xhr.responseJSON.info != undefined &&
.done(function(res) {
res.data.is_query_tool = is_query_tool;
res.data.server_type = server_type;
res.data.sURL = sURL;
res.data.panel_title = panel_title;
target.trigger('pgadmin-datagrid:transaction:created', res.data);
})
.fail(function(xhr) {
if (target !== self) {
if(xhr.status == 503 && xhr.responseJSON.info != undefined &&
xhr.responseJSON.info == 'CONNECTION_LOST') {
setTimeout(function() {
target.handle_connection_lost(true, xhr);
});
return;
setTimeout(function() {
target.handle_connection_lost(true, xhr);
});
return;
}
}
}
try {
var err = JSON.parse(xhr.responseText);
alertify.alert(gettext('Query Tool initialization error'),
err.errormsg
);
} catch (e) {
alertify.alert(gettext('Query Tool initialization error'),
e.statusText
);
}
});
try {
var err = JSON.parse(xhr.responseText);
alertify.alert(gettext('Query Tool initialization error'),
err.errormsg
);
} catch (e) {
alertify.alert(gettext('Query Tool initialization error'),
e.statusText
);
}
});
},
launch_grid: function(trans_obj) {
var self = this,
@ -470,7 +470,7 @@ define('pgadmin.datagrid', [
}
}
// Open the panel if frame is initialized
// Open the panel if frame is initialized
let titileForURLObj = sqlEditorUtils.removeSlashInTheString(grid_title);
var url_params = {
'trans_id': trans_obj.gridTransId,

View File

@ -35,7 +35,7 @@ function hasServerInformations(parentData) {
}
export function showQueryTool(datagrid, pgBrowser, alertify, url,
aciTreeIdentifier, panelTitle) {
aciTreeIdentifier, panelTitle) {
const sURL = url || '';
const queryToolTitle = panelTitle || '';

View File

@ -313,19 +313,19 @@ define([
url: _url,
cache: false,
})
.done(function() {
self.start_global_debugger();
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
if (err.success == 0) {
Alertify.alert(gettext('Debugger Error'), err.errormsg);
.done(function() {
self.start_global_debugger();
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
if (err.success == 0) {
Alertify.alert(gettext('Debugger Error'), err.errormsg);
}
} catch (e) {
console.warn(e.stack || e);
}
} catch (e) {
console.warn(e.stack || e);
}
});
});
},
//Callback function when user start the indirect debugging ( Listen to another session to invoke the target )
@ -419,52 +419,52 @@ define([
url: baseUrl,
method: 'GET',
})
.done(function(res) {
var url = url_for('debugger.direct', {
'trans_id': res.data.debuggerTransId,
});
if (self.preferences.debugger_new_browser_tab) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
'pgadmin-browser:frame:urlloaded:frm_debugger',
function(frame) {
frame.openURL(url);
});
// Create the debugger panel as per the data received from user input dialog.
var dashboardPanel = pgBrowser.docker.findPanels(
'properties'
),
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
panel.focus();
// Panel Closed event
panel.on(wcDocker.EVENT.CLOSED, function() {
var closeUrl = url_for('debugger.close', {
'trans_id': res.data.debuggerTransId,
});
$.ajax({
url: closeUrl,
method: 'DELETE',
});
.done(function(res) {
var url = url_for('debugger.direct', {
'trans_id': res.data.debuggerTransId,
});
}
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
if (err.success == 0) {
Alertify.alert(gettext('Debugger Error'), err.errormsg);
if (self.preferences.debugger_new_browser_tab) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
'pgadmin-browser:frame:urlloaded:frm_debugger',
function(frame) {
frame.openURL(url);
});
// Create the debugger panel as per the data received from user input dialog.
var dashboardPanel = pgBrowser.docker.findPanels(
'properties'
),
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
panel.focus();
// Panel Closed event
panel.on(wcDocker.EVENT.CLOSED, function() {
var closeUrl = url_for('debugger.close', {
'trans_id': res.data.debuggerTransId,
});
$.ajax({
url: closeUrl,
method: 'DELETE',
});
});
}
} catch (e) {
console.warn(e.stack || e);
}
});
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
if (err.success == 0) {
Alertify.alert(gettext('Debugger Error'), err.errormsg);
}
} catch (e) {
console.warn(e.stack || e);
}
});
},
/*
@ -489,107 +489,107 @@ define([
url: _url,
cache: false,
})
.done(function(res) {
.done(function(res) {
// Open Alertify the dialog to take the input arguments from user if function having input arguments
if (res.data[0]['require_input']) {
get_function_arguments(res.data[0], 0, is_edb_proc);
} else {
// Open Alertify the dialog to take the input arguments from user if function having input arguments
if (res.data[0]['require_input']) {
get_function_arguments(res.data[0], 0, is_edb_proc);
} else {
// Initialize the target and create asynchronous connection and unique transaction ID
// If there is no arguments to the functions then we should not ask for for function arguments and
// Directly open the panel
var t = pgBrowser.tree,
i = t.selected(),
d = i && i.length == 1 ? t.itemData(i) : undefined,
node = d && pgBrowser.Nodes[d._type];
var t = pgBrowser.tree,
i = t.selected(),
d = i && i.length == 1 ? t.itemData(i) : undefined,
node = d && pgBrowser.Nodes[d._type];
if (!d)
return;
if (!d)
return;
var treeInfo = node.getTreeNodeHierarchy.apply(node, [i]),
baseUrl;
var treeInfo = node.getTreeNodeHierarchy.apply(node, [i]),
baseUrl;
if (d._type == 'function') {
baseUrl = url_for(
'debugger.initialize_target_for_function', {
'debug_type': 'direct',
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.function._id,
}
);
} else {
baseUrl = url_for(
'debugger.initialize_target_for_function', {
'debug_type': 'direct',
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': debuggerUtils.getProcedureId(treeInfo),
}
);
}
$.ajax({
url: baseUrl,
method: 'GET',
})
.done(function(res) {
var url = url_for('debugger.direct', {
'trans_id': res.data.debuggerTransId,
});
if (self.preferences.debugger_new_browser_tab) {
window.open(url, '_blank');
if (d._type == 'function') {
baseUrl = url_for(
'debugger.initialize_target_for_function', {
'debug_type': 'direct',
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.function._id,
}
);
} else {
pgBrowser.Events.once(
'pgadmin-browser:frame:urlloaded:frm_debugger',
function(frame) {
frame.openURL(url);
});
baseUrl = url_for(
'debugger.initialize_target_for_function', {
'debug_type': 'direct',
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': debuggerUtils.getProcedureId(treeInfo),
}
);
}
// Create the debugger panel as per the data received from user input dialog.
var dashboardPanel = pgBrowser.docker.findPanels(
'properties'
),
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
$.ajax({
url: baseUrl,
method: 'GET',
})
.done(function(res) {
panel.focus();
// Register Panel Closed event
panel.on(wcDocker.EVENT.CLOSED, function() {
var closeUrl = url_for('debugger.close', {
var url = url_for('debugger.direct', {
'trans_id': res.data.debuggerTransId,
});
$.ajax({
url: closeUrl,
method: 'DELETE',
});
if (self.preferences.debugger_new_browser_tab) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
'pgadmin-browser:frame:urlloaded:frm_debugger',
function(frame) {
frame.openURL(url);
});
// Create the debugger panel as per the data received from user input dialog.
var dashboardPanel = pgBrowser.docker.findPanels(
'properties'
),
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
panel.focus();
// Register Panel Closed event
panel.on(wcDocker.EVENT.CLOSED, function() {
var closeUrl = url_for('debugger.close', {
'trans_id': res.data.debuggerTransId,
});
$.ajax({
url: closeUrl,
method: 'DELETE',
});
});
}
})
.fail(function(e) {
Alertify.alert(
gettext('Debugger Target Initialization Error'),
e.responseJSON.errormsg
);
});
}
})
.fail(function(e) {
Alertify.alert(
gettext('Debugger Target Initialization Error'),
e.responseJSON.errormsg
);
});
}
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
if (err.success == 0) {
Alertify.alert(gettext('Debugger Error'), err.errormsg);
}
} catch (e) {
console.warn(e.stack || e);
}
});
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
if (err.success == 0) {
Alertify.alert(gettext('Debugger Error'), err.errormsg);
}
} catch (e) {
console.warn(e.stack || e);
}
});
},
};

View File

@ -66,7 +66,7 @@ define([
case 'cid':
case 'xid':
case 'tid':
// As we are getting this value as text from sqlite database so we need to type cast it.
// As we are getting this value as text from sqlite database so we need to type cast it.
if (model.get('value') != undefined) {
model.set({
'value': parseInt(model.get('value')),
@ -80,7 +80,7 @@ define([
case 'numeric':
case 'double precision':
case 'decimal':
// As we are getting this value as text from sqlite database so we need to type cast it.
// As we are getting this value as text from sqlite database so we need to type cast it.
if (model.get('value') != undefined) {
model.set({
'value': parseFloat(model.get('value')),
@ -240,26 +240,26 @@ define([
method: 'GET',
async: false,
})
.done(function(res) {
if (res.data.args_count != 0) {
for (i = 0; i < res.data.result.length; i++) {
.done(function(res) {
if (res.data.args_count != 0) {
for (i = 0; i < res.data.result.length; i++) {
// Below will format the data to be stored in sqlite database
func_args_data.push({
'arg_id': res.data.result[i]['arg_id'],
'is_null': res.data.result[i]['is_null'],
'is_expression': res.data.result[i]['is_expression'],
'use_default': res.data.result[i]['use_default'],
'value': res.data.result[i]['value'],
});
func_args_data.push({
'arg_id': res.data.result[i]['arg_id'],
'is_null': res.data.result[i]['is_null'],
'is_expression': res.data.result[i]['is_expression'],
'use_default': res.data.result[i]['use_default'],
'value': res.data.result[i]['value'],
});
}
}
}
})
.fail(function() {
Alertify.alert(
gettext('Debugger Error'),
gettext('Unable to fetch the arguments from server')
);
});
})
.fail(function() {
Alertify.alert(
gettext('Debugger Error'),
gettext('Unable to fetch the arguments from server')
);
});
var argname, argtype, argmode, default_args_count, default_args, arg_cnt;
@ -744,97 +744,97 @@ define([
'data': JSON.stringify(args_value_list),
},
})
.done(function(res) {
.done(function(res) {
var url = url_for(
'debugger.direct', {
'trans_id': res.data.debuggerTransId,
}
);
if (self.preferences.debugger_new_browser_tab) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
'pgadmin-browser:frame:urlloaded:frm_debugger',
function(frame) {
frame.openURL(url);
});
// Create the debugger panel as per the data received from user input dialog.
var dashboardPanel = pgBrowser.docker.findPanels('properties'),
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
panel.focus();
// Panel Closed event
panel.on(wcDocker.EVENT.CLOSED, function() {
var closeUrl = url_for('debugger.close', {
var url = url_for(
'debugger.direct', {
'trans_id': res.data.debuggerTransId,
});
$.ajax({
url: closeUrl,
method: 'DELETE',
});
});
}
var _Url;
}
);
if (d._type == 'function') {
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.function._id,
});
} else if (d._type == 'procedure') {
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.procedure._id,
});
} else if (d._type == 'edbfunc') {
// Get the existing function parameters available from sqlite database
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.edbfunc._id,
});
} else if (d._type == 'edbproc') {
// Get the existing function parameters available from sqlite database
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.edbproc._id,
});
}
if (self.preferences.debugger_new_browser_tab) {
window.open(url, '_blank');
} else {
pgBrowser.Events.once(
'pgadmin-browser:frame:urlloaded:frm_debugger',
function(frame) {
frame.openURL(url);
});
$.ajax({
url: _Url,
method: 'POST',
data: {
'data': JSON.stringify(sqlite_func_args_list),
},
// Create the debugger panel as per the data received from user input dialog.
var dashboardPanel = pgBrowser.docker.findPanels('properties'),
panel = pgBrowser.docker.addPanel(
'frm_debugger', wcDocker.DOCK.STACKED, dashboardPanel[0]
);
panel.focus();
// Panel Closed event
panel.on(wcDocker.EVENT.CLOSED, function() {
var closeUrl = url_for('debugger.close', {
'trans_id': res.data.debuggerTransId,
});
$.ajax({
url: closeUrl,
method: 'DELETE',
});
});
}
var _Url;
if (d._type == 'function') {
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.function._id,
});
} else if (d._type == 'procedure') {
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.procedure._id,
});
} else if (d._type == 'edbfunc') {
// Get the existing function parameters available from sqlite database
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.edbfunc._id,
});
} else if (d._type == 'edbproc') {
// Get the existing function parameters available from sqlite database
_Url = url_for('debugger.set_arguments', {
'sid': treeInfo.server._id,
'did': treeInfo.database._id,
'scid': treeInfo.schema._id,
'func_id': treeInfo.edbproc._id,
});
}
$.ajax({
url: _Url,
method: 'POST',
data: {
'data': JSON.stringify(sqlite_func_args_list),
},
})
.done(function() {})
.fail(function() {
Alertify.alert(
gettext('Debugger Error'),
gettext('Unable to set the arguments on the server')
);
});
})
.done(function() {})
.fail(function() {
.fail(function(e) {
Alertify.alert(
gettext('Debugger Error'),
gettext('Unable to set the arguments on the server')
gettext('Debugger Target Initialization Error'),
e.responseJSON.errormsg
);
});
})
.fail(function(e) {
Alertify.alert(
gettext('Debugger Target Initialization Error'),
e.responseJSON.errormsg
);
});
} else {
// If the debugging is started again then we should only set the
// arguments and start the listener again
@ -849,13 +849,13 @@ define([
'data': JSON.stringify(args_value_list),
},
})
.done(function() {})
.fail(function(e) {
Alertify.alert(
gettext('Debugger Listener Startup Error'),
e.responseJSON.errormsg
);
});
.done(function() {})
.fail(function(e) {
Alertify.alert(
gettext('Debugger Listener Startup Error'),
e.responseJSON.errormsg
);
});
// Set the new input arguments given by the user during debugging
var _Url = url_for('debugger.set_arguments', {
@ -871,13 +871,13 @@ define([
'data': JSON.stringify(sqlite_func_args_list),
},
})
.done(function() {})
.fail(function() {
Alertify.alert(
gettext('Debugger Error'),
gettext('Unable to set the arguments on the server')
);
});
.done(function() {})
.fail(function() {
Alertify.alert(
gettext('Debugger Error'),
gettext('Unable to set the arguments on the server')
);
});
}
@ -913,37 +913,37 @@ define([
debug button.
*/
this.grid.listenTo(this.debuggerInputArgsColl, 'backgrid:edited',
(function(obj) {
(function(obj) {
return function() {
return function() {
var enable_btn = false;
var enable_btn = false;
for (var i = 0; i < this.collection.length; i++) {
for (var i = 0; i < this.collection.length; i++) {
if (this.collection.models[i].get('is_null')) {
obj.__internal.buttons[1].element.disabled = false;
enable_btn = true;
continue;
}
// TODO: Need to check the "Expression" column value to
// enable/disable the "Debug" button
if (this.collection.models[i].get('value') == null ||
if (this.collection.models[i].get('is_null')) {
obj.__internal.buttons[1].element.disabled = false;
enable_btn = true;
continue;
}
// TODO: Need to check the "Expression" column value to
// enable/disable the "Debug" button
if (this.collection.models[i].get('value') == null ||
this.collection.models[i].get('value') == undefined) {
enable_btn = true;
enable_btn = true;
if (this.collection.models[i].get('use_default')) {
obj.__internal.buttons[1].element.disabled = false;
} else {
obj.__internal.buttons[1].element.disabled = true;
break;
}
if (this.collection.models[i].get('use_default')) {
obj.__internal.buttons[1].element.disabled = false;
} else {
obj.__internal.buttons[1].element.disabled = true;
break;
}
}
if (!enable_btn)
obj.__internal.buttons[1].element.disabled = false;
};
})(this)
}
if (!enable_btn)
obj.__internal.buttons[1].element.disabled = false;
};
})(this)
);
this.grid.listenTo(this.debuggerInputArgsColl, 'backgrid:error',

File diff suppressed because it is too large Load Diff

View File

@ -101,8 +101,8 @@ define([
cell: Backgrid.Extension.SelectRowCell.extend({
render: function() {
// Do not use parent's render function. It set's tabindex to -1 on
// checkboxes.
// Do not use parent's render function. It set's tabindex to -1 on
// checkboxes.
this.$el.empty().append('<input type="checkbox" />');
this.delegateEvents();

View File

@ -15,7 +15,7 @@ define([
'pgadmin.backform', 'pgadmin.backgrid', 'pgadmin.browser.node.ui',
], function(
gettext, url_for, $, _, S, Alertify, pgAdmin, pgBrowser, Backbone, Backgrid,
Backform, commonUtils, supportedNodes
Backform, commonUtils, supportedNodes
) {
pgAdmin = pgAdmin || window.pgAdmin || {};
@ -542,28 +542,28 @@ Backform, commonUtils, supportedNodes
'data': JSON.stringify(this.view.model.toJSON()),
},
})
.done(function(res) {
if (res.success) {
Alertify.success(gettext('Import/export job created.'), 5);
pgBrowser.Events.trigger('pgadmin-bgprocess:created', self);
} else {
Alertify.alert(
gettext('Import/export job creation failed.'),
res.errormsg
);
}
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
Alertify.alert(
gettext('Import/export job failed.'),
err.errormsg
);
} catch (e) {
console.warn(e.stack || e);
}
});
.done(function(res) {
if (res.success) {
Alertify.success(gettext('Import/export job created.'), 5);
pgBrowser.Events.trigger('pgadmin-bgprocess:created', self);
} else {
Alertify.alert(
gettext('Import/export job creation failed.'),
res.errormsg
);
}
})
.fail(function(xhr) {
try {
var err = JSON.parse(xhr.responseText);
Alertify.alert(
gettext('Import/export job failed.'),
err.errormsg
);
} catch (e) {
console.warn(e.stack || e);
}
});
}
},
@ -675,29 +675,29 @@ Backform, commonUtils, supportedNodes
url: baseUrl,
type:'GET',
})
.done(function(res) {
if (!res.success) {
.done(function(res) {
if (!res.success) {
Alertify.alert(
gettext('Utility not found'),
res.errormsg
);
return;
}
// Open the Alertify dialog for the import/export module
Alertify.ImportDialog(
S(
gettext('Import/Export data - table \'%s\'')
).sprintf(treeInfo.table.label).value(), node, i, d
).set('resizable', true).resizeTo(pgAdmin.Browser.stdW.md,pgAdmin.Browser.stdH.lg);
})
.fail(function() {
Alertify.alert(
gettext('Utility not found'),
res.errormsg
gettext('Failed to fetch Utility information')
);
return;
}
// Open the Alertify dialog for the import/export module
Alertify.ImportDialog(
S(
gettext('Import/Export data - table \'%s\'')
).sprintf(treeInfo.table.label).value(), node, i, d
).set('resizable', true).resizeTo(pgAdmin.Browser.stdW.md,pgAdmin.Browser.stdH.lg);
})
.fail(function() {
Alertify.alert(
gettext('Utility not found'),
gettext('Failed to fetch Utility information')
);
return;
});
});
},
};

View File

@ -391,23 +391,23 @@ define([
'data': JSON.stringify(this.view.model.toJSON()),
},
})
.done(function(res) {
if (res.data && res.data.status) {
.done(function(res) {
if (res.data && res.data.status) {
//Do nothing as we are creating the job and exiting from the main dialog
Alertify.success(res.data.info);
pgBrowser.Events.trigger('pgadmin-bgprocess:created', self);
} else {
Alertify.success(res.data.info);
pgBrowser.Events.trigger('pgadmin-bgprocess:created', self);
} else {
Alertify.alert(
gettext('Maintenance job creation failed.'),
res.errormsg
);
}
})
.fail(function() {
Alertify.alert(
gettext('Maintenance job creation failed.'),
res.errormsg
gettext('Maintenance job creation failed.')
);
}
})
.fail(function() {
Alertify.alert(
gettext('Maintenance job creation failed.')
);
});
});
}
},
build: function() {
@ -484,25 +484,25 @@ define([
url: baseUrl,
type:'GET',
})
.done(function(res) {
if (!res.success) {
.done(function(res) {
if (!res.success) {
Alertify.alert(
gettext('Utility not found'),
res.errormsg
);
return;
}
// Open the Alertify dialog
Alertify.MaintenanceDialog(gettext('Maintenance...')).set('resizable', true)
.resizeTo(pgAdmin.Browser.stdW.md,pgAdmin.Browser.stdH.md);
})
.fail(function() {
Alertify.alert(
gettext('Utility not found'),
res.errormsg
gettext('Failed to fetch Utility information')
);
return;
}
// Open the Alertify dialog
Alertify.MaintenanceDialog(gettext('Maintenance...')).set('resizable', true)
.resizeTo(pgAdmin.Browser.stdW.md,pgAdmin.Browser.stdH.md);
})
.fail(function() {
Alertify.alert(
gettext('Utility not found'),
gettext('Failed to fetch Utility information')
);
return;
});
});
},
};

View File

@ -16,7 +16,7 @@ define('tools.restore', [
'tools/restore/static/js/restore_dialog',
], function(
gettext, url_for, $, _, Backbone, S, alertify, pgBrowser, Backgrid, Backform,
commonUtils, menuUtils, supportedNodes, restoreDialog
commonUtils, menuUtils, supportedNodes, restoreDialog
) {
// if module is already initialized, refer to that.

View File

@ -16,7 +16,7 @@ import {DialogWrapper} from '../../../../static/js/alertify/dialog_wrapper';
export class RestoreDialogWrapper extends DialogWrapper {
constructor(dialogContainerSelector, dialogTitle, typeOfDialog,
jquery, pgBrowser, alertify, dialogModel, backform) {
jquery, pgBrowser, alertify, dialogModel, backform) {
super(dialogContainerSelector, dialogTitle, jquery,
pgBrowser, alertify, dialogModel, backform);
}

File diff suppressed because it is too large Load Diff

View File

@ -785,17 +785,17 @@ define([
method: 'GET',
async: false,
})
.done(function(res) {
Roles = res;
})
.fail(function() {
setTimeout(function() {
alertify.alert(
gettext('Error'),
gettext('Cannot load user roles.')
);
}, 100);
});
.done(function(res) {
Roles = res;
})
.fail(function() {
setTimeout(function() {
alertify.alert(
gettext('Error'),
gettext('Cannot load user roles.')
);
}, 100);
});
var view = this.view = new Backgrid.Grid({
row: UserRow,

View File

@ -63,8 +63,12 @@ def getEncoding(key):
"""
:param key: Database Encoding
:return:
[Postgres_encoding, Python_encoding] - Postgres and Python encoding
[Postgres_encoding, Python_encoding, typecast_encoding] -
Postgres encoding, Python encoding, type cast encoding
"""
#
# Reference: https://www.postgresql.org/docs/11/multibyte.html
return encode_dict.get(key, ['UNICODE', 'utf-8', 'utf-8'])

View File

@ -12,52 +12,50 @@ import gettext from 'sources/gettext';
describe('alertify_wrapper', function () {
describe('success', function () {
var env = jasmine.getEnv();
env.allowRespy(true);
describe('alertify_success', function () {
it('calls the success function from alertify and adds the checkmark to the element', function () {
spyOn(alertify, 'orig_success');
let spyObj = spyOn(alertify, 'orig_success').and.callThrough();
alertify.success('Yay, congrats!', 1);
var calledWithMessage = alertify.orig_success.calls.mostRecent().args[0];
expect(calledWithMessage).toContain('Yay, congrats!');
expect(calledWithMessage).toContain('class="fa fa-check text-success"');
expect(spyObj).toHaveBeenCalled();
expect(spyObj.calls.mostRecent().args[0]).toContain('Yay, congrats!');
expect(spyObj.calls.mostRecent().args[0]).toContain('class="fa fa-check text-success"');
});
});
describe('error', function () {
it('calls the error function from alertify and adds the warning symbol to the element', function () {
spyOn(alertify, 'orig_error');
describe('alertify_error calls the error function', function() {
it('and adds the warning symbol to the element', function () {
let spyOrigError = spyOn(alertify, 'orig_error').and.callThrough();
alertify.error('bad, very bad', 1);
var calledWithMessage = alertify.orig_error.calls.mostRecent().args[0];
expect(calledWithMessage).toContain('bad, very bad');
expect(calledWithMessage).toContain('class="fa fa-exclamation-triangle text-danger"');
expect(spyOrigError).toHaveBeenCalled();
expect(spyOrigError.calls.mostRecent().args[0]).toContain('bad, very bad');
expect(spyOrigError.calls.mostRecent().args[0]).toContain('class="fa fa-exclamation-triangle text-danger"');
});
});
describe('pgRespErrorNotify', () => {
it('calls error notifier which alertifies response error for ajax calls', () => {
describe('alertify_error calls pgRespErrorNotify notifier', function() {
it('which alertifies response error for ajax calls', () => {
$.ajax({
url: 'http://some/dummy/url',
dataType: 'json',
error: function(xhr, status, error) {
spyOn(alertify, 'orig_error').and.callThrough();
spyOn(alertify, 'notify').and.callThrough();
let spyOrigError = spyOn(alertify, 'orig_error').and.callThrough(),
spyNotify = spyOn(alertify, 'notify').and.callThrough();
/*When connection lost*/
xhr.status = 0;
alertify.pgRespErrorNotify(xhr, error);
expect(alertify.orig_error).toHaveBeenCalled();
expect(alertify.orig_error.calls.mostRecent().args[0]).toContain(
expect(spyOrigError).toHaveBeenCalled();
expect(spyOrigError.calls.mostRecent().args[0]).toContain(
gettext('Connection to the server has been lost.')
);
/*When some exception occurs at back end*/
xhr.status = 4;
var orig_getResponseHeader = xhr.getResponseHeader;
@ -70,12 +68,11 @@ describe('alertify_wrapper', function () {
else {
return orig_getResponseHeader(header);
}
};
xhr.responseText = '{"errormsg":"Exception XYZ"}';
alertify.pgRespErrorNotify(xhr, error);
expect(alertify.orig_error).toHaveBeenCalled();
expect(alertify.orig_error.calls.mostRecent().args[0]).toContain(
expect(spyOrigError).toHaveBeenCalled();
expect(spyOrigError.calls.mostRecent().args[0]).toContain(
gettext('Exception XYZ')
);
@ -90,8 +87,8 @@ describe('alertify_wrapper', function () {
};
xhr.responseText = '<p>Some Exception Occurred</p>';
alertify.pgRespErrorNotify(xhr, error);
expect(alertify.notify).toHaveBeenCalled();
expect(alertify.notify.calls.mostRecent().args[0]).toContain(
expect(spyNotify).toHaveBeenCalled();
expect(spyNotify.calls.mostRecent().args[0]).toContain(
gettext('INTERNAL SERVER ERROR')
);
@ -106,8 +103,8 @@ describe('alertify_wrapper', function () {
};
xhr.responseText = '{"errormsg":"Exception XYZ"}';
alertify.pgRespErrorNotify(xhr, error, gettext('Some prefix message'));
expect(alertify.orig_error).toHaveBeenCalled();
expect(alertify.orig_error.calls.mostRecent().args[0]).toContain(
expect(spyOrigError).toHaveBeenCalled();
expect(spyOrigError.calls.mostRecent().args[0]).toContain(
gettext('Some prefix message')
);
},

View File

@ -58,7 +58,7 @@ define([
it('keyboard shortcut control should be rendered with inner fields', function () {
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.$el.find('input:checkbox[name="alt_option"]')[0].checked).toBeTruthy();
@ -78,7 +78,7 @@ define([
it('when model "key" value changes UI and innerModel should update new "key" value', function (done) {
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.innerModel.get('key')).toEqual({
'key_code': 73,
'char': 'I',
@ -98,7 +98,7 @@ define([
// wait until UI updates.
setTimeout(function() {
// this should change
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('A');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('A');
expect(control.innerModel.get('key')).toEqual({
'key_code': 65,
'char': 'A',
@ -142,7 +142,7 @@ define([
expect(control.$el.find('input:checkbox[name="alt_option"]')[0].checked).toBeTruthy();
expect(control.innerModel.get('alt_option')).toBeTruthy();
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.innerModel.get('key')).toEqual({
'key_code': 73,
'char': 'I',
@ -179,7 +179,7 @@ define([
expect(control.$el.find('input:checkbox[name="alt_option"]')[0].checked).toBeTruthy();
expect(control.innerModel.get('alt_option')).toBeTruthy();
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.innerModel.get('key')).toEqual({
'key_code': 73,
'char': 'I',
@ -216,7 +216,7 @@ define([
expect(control.$el.find('input:checkbox[name="shift"]')[0].checked).toBeFalsy();
expect(control.innerModel.get('shift')).toBeFalsy();
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.innerModel.get('key')).toEqual({
'key_code': 73,
'char': 'I',
@ -241,7 +241,7 @@ define([
it('when innerModel "key" value changes UI and model should update new "key" value', function (done) {
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(model.get(field.get('name'))).toEqual({
'control': true,
'shift': false,
@ -262,7 +262,7 @@ define([
// wait until UI updates.
setTimeout(function() {
// this should change
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('A');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('A');
expect(model.get(field.get('name'))).toEqual({
'control': true,
'shift': false,
@ -317,7 +317,7 @@ define([
// below three should not change.
expect(control.$el.find('input:checkbox[name="alt_option"]')[0].checked).toBeTruthy();
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.$el.find('input:checkbox[name="shift"]')[0].checked).toBeFalsy();
@ -358,7 +358,7 @@ define([
// below three should not change.
expect(control.$el.find('input:checkbox[name="alt_option"]')[0].checked).toBeTruthy();
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.$el.find('input:checkbox[name="control"]')[0].checked).toBeTruthy();
@ -399,7 +399,7 @@ define([
// below three should not change.
expect(control.$el.find('input:checkbox[name="shift"]')[0].checked).toBeFalsy();
expect(control.$el.find('input:text[name="key"]')[0].value).toBe('I');
expect(control.$el.find('input:text[name="key"]')[0].value).toEqual('I');
expect(control.$el.find('input:checkbox[name="control"]')[0].checked).toBeTruthy();
@ -424,7 +424,7 @@ define([
expect(control.cleanup).toHaveBeenCalled();
expect(control.controls.length).toBe(0);
expect(control.controls.length).toEqual(0);
});

View File

@ -75,7 +75,7 @@ define([
// wait until UI updates.
setTimeout(function() {
expect(control.$el.find('input')[0].value).toBe('A');
expect(control.$el.find('input')[0].value).toEqual('A');
done();
}, 100);
@ -101,7 +101,7 @@ define([
// wait until UI updates.
setTimeout(function() {
expect(control.$el.find('input')[0].value).toBe('B');
expect(control.$el.find('input')[0].value).toEqual('B');
done();
}, 100);
@ -139,7 +139,7 @@ define([
// wait until UI updates.
setTimeout(function() {
expect(control.$el.find('input')[0].value).toBe('A');
expect(control.$el.find('input')[0].value).toEqual('A');
done();
}, 100);
@ -162,7 +162,7 @@ define([
// wait until UI updates.
setTimeout(function() {
expect(control.$el.find('input')[0].value).toBe('A');
expect(control.$el.find('input')[0].value).toEqual('A');
done();
}, 100);
@ -178,7 +178,7 @@ define([
it('when model changes UI should update', function (done) {
expect(control.$el.find('input')[0].value).toBe('A');
expect(control.$el.find('input')[0].value).toEqual('A');
model.set('key', {
'key_code': 67,
@ -187,7 +187,7 @@ define([
// wait until UI updates.
setTimeout(function() {
expect(control.$el.find('input')[0].value).toBe('C');
expect(control.$el.find('input')[0].value).toEqual('C');
done();
}, 100);
@ -196,4 +196,4 @@ define([
});
});
});
});

View File

@ -96,12 +96,12 @@ describe('BackupDialogWrapper', () => {
return backupNodeChildNodeSpy;
}
});
alertifySpy = jasmine.createSpyObj('alertify', ['alert', 'dialog']);
});
describe('#prepare', () => {
beforeEach(() => {
alertifySpy = jasmine.createSpyObj('alertify', ['alert', 'dialog']);
backupDialogWrapper = new BackupDialogWrapper(
'<div class=\'backup_dialog\'></div>',
'backupDialogTitle',
@ -385,11 +385,11 @@ describe('BackupDialogWrapper', () => {
beforeEach(() => {
pgBrowser.Events = jasmine.createSpyObj('Events', ['trigger']);
alertifySpy.success = jasmine.createSpy('success');
networkMock.onPost('/backup/job/10').reply((request) => {
dataSentToServer = request.data;
return [200, {'success': 1}];
});
});
it('creates a success alert box', (done) => {
@ -436,7 +436,7 @@ describe('BackupDialogWrapper', () => {
});
backupDialogWrapper.callback(event);
setTimeout(() => {
setTimeout( () => {
expect(alertifySpy.alert).toHaveBeenCalledWith(
'Backup job failed.',
'some-error-message'
@ -550,7 +550,7 @@ describe('BackupDialogWrapper', () => {
});
});
describe('#setExtraParameters', () => {
xdescribe('#setExtraParameters', () => {
let selectedTreeNode;
let treeInfo;
let model;

View File

@ -16,19 +16,19 @@ describe('backup.menuUtils', () => {
describe('#menuEnabledServer', () => {
context('provided node data is undefined', () => {
it('returns false', () => {
expect(menuEnabledServer(undefined)).toBe(false);
expect(menuEnabledServer(undefined)).toEqual(false);
});
});
context('provided node data is null', () => {
it('returns false', () => {
expect(menuEnabledServer(null)).toBe(false);
expect(menuEnabledServer(null)).toEqual(false);
});
});
context('current node type is not of the type server', () => {
it('returns false', () => {
expect(menuEnabledServer({_type: 'schema'})).toBe(false);
expect(menuEnabledServer({_type: 'schema'})).toEqual(false);
});
});
@ -38,7 +38,7 @@ describe('backup.menuUtils', () => {
expect(menuEnabledServer({
_type: 'server',
connected: true,
})).toBe(true);
})).toEqual(true);
});
});
context('is not connected', () => {
@ -46,7 +46,7 @@ describe('backup.menuUtils', () => {
expect(menuEnabledServer({
_type: 'server',
connected: false,
})).toBe(false);
})).toEqual(false);
});
});
});

View File

@ -139,7 +139,7 @@ describe('preferences related functions test', function() {
expect($.fn.css).toHaveBeenCalledWith('font-size', '1.46em');
let setOptionCalls = pgBrowser.editor.setOption.calls;
expect(setOptionCalls.count()).toBe(Object.keys(editorOptions).length);
expect(setOptionCalls.count()).toEqual(Object.keys(editorOptions).length);
for(let i = 0; i < Object.keys(editorOptions).length; i++) {
let option = Object.keys(editorOptions)[i];

View File

@ -36,7 +36,7 @@ describe('when external tables is loaded', () => {
});
it('returns the not updated version of pgBrowser', () => {
expect(result).toBe(pgBrowser);
expect(result).toEqual(pgBrowser);
});
});

Some files were not shown because too many files have changed in this diff Show More