public inbox for [email protected]
help / color / mirror / Atom feedFrom: Harshal Dhumal <[email protected]>
To: Ashesh Vashi <[email protected]>
Cc: Dave Page <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Subject: Re: patch for issue RM1260 [pgAdmin4]
Date: Wed, 27 Jul 2016 19:37:34 +0530
Message-ID: <CAFiP3vyzfYCUqCmZLX1=SoGUE=Sb+JbXOtFYyaWUg2D1_-UNbQ@mail.gmail.com> (raw)
In-Reply-To: <CAG7mmozGBsrvNjK7e2UzZXEEWJes2LMeisHrkaDTX=mk_cjCJg@mail.gmail.com>
References: <CAFiP3vzHR2j6y-8FP5fQFpJD3XNbyOVb=rbRzBwtKzPnv4nJhQ@mail.gmail.com>
<CAFiP3vw7wCLMnj1NyoSh8pUVedYxLX_su9xM9zO5iRo+wgZr3w@mail.gmail.com>
<CAFiP3vwQesWW+HXfTi+MgTbYEi1zBQC+fdNZNe32wzr5RfrHHw@mail.gmail.com>
<CAG7mmoxAcFK3K-Oj-0nMcFkuq_dVQA0OeVa4cSCqU7tVX3pHjw@mail.gmail.com>
<CAFiP3vyCapVsJf0dmJeFxjUwC6muh3pmZ+QaVp7eywzU2jg2uQ@mail.gmail.com>
<CA+OCxoweOqqW45t48D9XZDcQVU80rBmHt0x4ZYbXsqao4h4eOg@mail.gmail.com>
<CAG7mmozviFw1eEJz04icjDSbpQwz98PjvcsSxHYV+UeLutawiA@mail.gmail.com>
<CAFiP3vx1vasV3LO1k8x8-YGToDuMhrmj+hs-SLqHGCsgotcY4Q@mail.gmail.com>
<CAFiP3vxfUTNYr=t8Z8j=jjVB0tzOcoCxgG-9B4e_XHvoZfu68Q@mail.gmail.com>
<CAG7mmozGBsrvNjK7e2UzZXEEWJes2LMeisHrkaDTX=mk_cjCJg@mail.gmail.com>
List-Unsubscribe: <mailto:[email protected]?body=unsub%20pgadmin-hackers>
Hi,
PFA updated patch for RM1260 (V4).
Fixed create and delete operations for foreign table.
--
*Harshal Dhumal*
*Software Engineer*
EnterpriseDB India: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
On Wed, Jul 27, 2016 at 6:53 PM, Ashesh Vashi <[email protected]
> wrote:
> Hi Harshal,
>
> During testing, I found that create, and delete operation on foreign table
> is not working.
> Foreign table node uses, it's own version of Select2 Control, which should
> have used maximum functionalities from the original NodeAjaxOptionsControl
> for consistency reason.
> Hence - I have made the changes.
>
> Can you please take a look at the create, and delete operations, and
> submit combined patch for all those problems?
>
> --
>
> Thanks & Regards,
>
> Ashesh Vashi
> EnterpriseDB INDIA: Enterprise PostgreSQL Company
> <http://www.enterprisedb.com;
>
>
> *http://www.linkedin.com/in/asheshvashi*
> <http://www.linkedin.com/in/asheshvashi;
>
> On Wed, Jul 27, 2016 at 3:54 PM, Harshal Dhumal <
> [email protected]> wrote:
>
>> and patch file
>>
>> --
>> *Harshal Dhumal*
>> *Software Engineer*
>>
>> EnterpriseDB India: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>> On Wed, Jul 27, 2016 at 3:49 PM, Harshal Dhumal <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> PFA updated patch for RM1260.
>>>
>>> In addition to RM1260 issue I have added following changes in this patch.
>>> 1] datamodel.js: Added option check against undefined.
>>> 2] foreign key: fixed first empty option issue.
>>>
>>> --
>>> *Harshal Dhumal*
>>> *Software Engineer*
>>>
>>> EnterpriseDB India: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>> On Thu, Jul 7, 2016 at 5:08 PM, Ashesh Vashi <
>>> [email protected]> wrote:
>>>
>>>> Sure - I will do.
>>>>
>>>> --
>>>>
>>>> Thanks & Regards,
>>>>
>>>> Ashesh Vashi
>>>> EnterpriseDB INDIA: Enterprise PostgreSQL Company
>>>> <http://www.enterprisedb.com;
>>>>
>>>>
>>>> *http://www.linkedin.com/in/asheshvashi*
>>>> <http://www.linkedin.com/in/asheshvashi;
>>>>
>>>> On Thu, Jul 7, 2016 at 2:33 PM, Dave Page <[email protected]> wrote:
>>>>
>>>>> Ashesh, can you review/commit please?
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Thu, Jul 7, 2016 at 7:50 AM, Harshal Dhumal <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> By mistake I deleted a line which was not supposed to be deleted, and
>>>>>> that line of code was initialization of select2.
>>>>>>
>>>>>> --
>>>>>> *Harshal Dhumal*
>>>>>> *Software Engineer*
>>>>>>
>>>>>> EnterpriseDB India: http://www.enterprisedb.com
>>>>>> The Enterprise PostgreSQL Company
>>>>>>
>>>>>> On Thu, Jul 7, 2016 at 12:13 PM, Ashesh Vashi <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi Harshal,
>>>>>>>
>>>>>>> Can you please explain - what was missing in the last patch?
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Thanks & Regards,
>>>>>>>
>>>>>>> Ashesh Vashi
>>>>>>> EnterpriseDB INDIA: Enterprise PostgreSQL Company
>>>>>>> <http://www.enterprisedb.com;
>>>>>>>
>>>>>>>
>>>>>>> *http://www.linkedin.com/in/asheshvashi*
>>>>>>> <http://www.linkedin.com/in/asheshvashi;
>>>>>>>
>>>>>>> On Thu, Jul 7, 2016 at 12:12 PM, Harshal Dhumal <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> PFA updated patch for issue RM1260
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Harshal Dhumal*
>>>>>>>> *Software Engineer*
>>>>>>>>
>>>>>>>> EnterpriseDB India: http://www.enterprisedb.com
>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>
>>>>>>>> On Thu, Jul 7, 2016 at 12:04 PM, Harshal Dhumal <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>> Please ignore this patch as this has some minor issue. I'll sent
>>>>>>>>> updated one.
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> *Harshal Dhumal*
>>>>>>>>> *Software Engineer*
>>>>>>>>>
>>>>>>>>> EnterpriseDB India: http://www.enterprisedb.com
>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>
>>>>>>>>> On Wed, Jul 6, 2016 at 5:30 PM, Harshal Dhumal <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> PFA patch for issue RM1260.
>>>>>>>>>>
>>>>>>>>>> Changes: Issue wasn't related to foreign table but was due the
>>>>>>>>>> Select2 control. Now I have improved select2 control to handle null value
>>>>>>>>>> in multi-select mode. Initial it was returning "null" instead it should
>>>>>>>>>> return [] (empty array).
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Harshal Dhumal*
>>>>>>>>>> *Software Engineer*
>>>>>>>>>>
>>>>>>>>>> EnterpriseDB India: http://www.enterprisedb.com
>>>>>>>>>> The Enterprise PostgreSQL Company
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Sent via pgadmin-hackers mailing list (
>>>>>>>> [email protected])
>>>>>>>> To make changes to your subscription:
>>>>>>>> http://www.postgresql.org/mailpref/pgadmin-hackers
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>
>>
>
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Attachments:
[text/x-patch] RM1260_V4.patch (16.8K, 3-RM1260_V4.patch)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py
index 2665b62..98182fc 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/__init__.py
@@ -668,7 +668,8 @@ AND relkind != 'c'))"""
if not status:
return internal_server_error(errormsg=res)
- foid, scid = res['rows'][0]
+ foid = res['rows'][0]['oid']
+ scid = res['rows'][0]['scid']
return jsonify(
node=self.blueprint.generate_browser_node(
@@ -718,7 +719,8 @@ AND relkind != 'c'))"""
)
)
- name, basensp = res['rows'][0]
+ name = res['rows'][0]['name']
+ basensp = res['rows'][0]['basensp']
SQL = render_template("/".join([self.template_path,
'delete.sql']),
@@ -1103,13 +1105,6 @@ AND relkind != 'c'))"""
if cols and 'rows' in cols:
data['columns'] = cols['rows']
- data['strcolumn'] = ''
- str_cols = []
- if 'columns' in data:
- for c in data['columns']:
- str_cols.append(c['strcolumn'])
- data['strcolumn'] = ', '.join(str_cols)
-
# Get Inherited table names from their OID
if inherits:
if 'inherits' in data and data['inherits']:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/js/foreign_tables.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/js/foreign_tables.js
index a4b5a27..230b6c2 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/js/foreign_tables.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/js/foreign_tables.js
@@ -241,22 +241,6 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
toJSON: Backbone.Model.prototype.toJSON
});
- var formatNode = function(opt) {
- if (!opt.id) {
- return opt.text;
- }
-
- var optimage = $(opt.element).data('image');
-
- if(!optimage){
- return opt.text;
- } else {
- return $(
- '<span><span class="wcTabIcon ' + optimage + '"/>' + opt.text + '</span>'
- );
- }
- };
-
/* NodeAjaxOptionsMultipleControl is for multiple selection of Combobox.
* This control is used to select Multiple Parent Tables to be inherited.
@@ -264,83 +248,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
* To populates the column, it calls the server and fetch the columns data
* for the selected table.
*/
-
- var NodeAjaxOptionsMultipleControl = Backform.NodeAjaxOptionsMultipleControl = Backform.NodeAjaxOptionsControl.extend({
- template: _.template([
- '<label class="<%=Backform.controlLabelClassName%>"><%=label%></label>',
- '<div class="<%=Backform.controlsClassName%> <%=extraClasses.join(\' \')%>">',
- ' <select class="pgadmin-node-select form-control" name="<%=name%>" style="width:100%;" value=<%-value%> <%=disabled ? "disabled" : ""%> <%=required ? "required" : ""%> >',
- ' </select>',
- '</div>'].join("\n")),
- defaults: _.extend(
- {}, Backform.NodeAjaxOptionsControl.prototype.defaults,
- {
- select2: {
- allowClear: true,
- placeholder: 'Select from the list',
- width: 'style',
- templateResult: formatNode,
- templateSelection: formatNode
- }
- }),
- render: function() {
- var field = _.defaults(this.field.toJSON(), this.defaults),
- attributes = this.model.toJSON(),
- attrArr = field.name.split('.'),
- name = attrArr.shift(),
- path = attrArr.join('.'),
- rawValue = this.keyPathAccessor(attributes[name], path),
- data = _.extend(field, {
- rawValue: rawValue,
- value: this.formatter.fromRaw(rawValue, this.model),
- attributes: attributes,
- formatter: this.formatter
- }),
- evalF = function(f, d, m) {
- return (_.isFunction(f) ? !!f.apply(d, [m]) : !!f);
- };
-
- // Evaluate the disabled, visible, and required option
- _.extend(data, {
- disabled: evalF(data.disabled, data, this.model),
- visible: evalF(data.visible, data, this.model),
- required: evalF(data.required, data, this.model)
- });
-
- if (field.node_info.server.version < field.min_version) {
- field.version_compatible = false
- return this;
- }
- else {
- // Evaluation the options
- if (_.isFunction(data.options)) {
- try {
- data.options = data.options.apply(this)
- } catch(e) {
- // Do nothing
- data.options = []
- this.model.trigger('pgadmin-view:transform:error', self.model, self.field, e);
- }
- }
-
- // Clean up first
- this.$el.removeClass(Backform.hiddenClassname);
- this.$el.html(this.template(data)).addClass(field.name);
-
- if (!data.visible) {
- this.$el.addClass(Backform.hiddenClassname);
- } else {
- var opts = _.extend(
- {}, this.defaults.select2, data.select2,
- {
- 'data': data.options
- });
- this.$el.find("select").select2(opts).val(data.rawValue).trigger("change");
- this.updateInvalid();
- }
- }
- return this;
- },
+ var NodeAjaxOptionsMultipleControl = Backform.NodeAjaxOptionsControl.extend({
onChange: function(e) {
var model = this.model,
$el = $(e.target),
@@ -370,7 +278,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
// Remove Columns if inherit option is deselected from the combobox
if(_.size(value) < _.size(inherits)) {
- var dif = _.difference(inherits, JSON.parse(value));
+ var dif = _.difference(inherits, value);
var rmv_columns = columns.where({inheritedid: parseInt(dif[0])});
columns.remove(rmv_columns);
}
@@ -600,7 +508,6 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
basensp: undefined,
description: undefined,
ftsrvname: undefined,
- strcolumn: undefined,
strftoptions: undefined,
inherits: [],
columns: [],
@@ -632,7 +539,7 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
type: 'text', group: 'Definition', url: 'get_foreign_servers', disabled: function(m) { return !m.isNew(); }
},{
id: 'inherits', label:'{{ _('Inherits') }}', group: 'Definition',
- type: 'array', min_version: 90500, control: 'node-ajax-options-multiple',
+ type: 'array', min_version: 90500, control: NodeAjaxOptionsMultipleControl,
url: 'get_tables', select2: {multiple: true},
'cache_level': 'database',
transform: function(d, self){
@@ -646,9 +553,6 @@ function($, _, S, pgAdmin, pgBrowser, alertify) {
return d;
}
},{
- id: 'strcolumn', label:'{{ _('Columns') }}', cell: 'string', group: 'Definition',
- type: 'text', min_version: 90500, mode: ['properties']
- },{
id: 'columns', label:'{{ _('Columns') }}', cell: 'string',
type: 'collection', group: 'Columns', visible: false, mode: ['edit', 'create'],
model: ColumnsModel, canAdd: true, canDelete: true, canEdit: true,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.1_plus/get_columns.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.1_plus/get_columns.sql
index 4bf5e17..0733a3c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.1_plus/get_columns.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.1_plus/get_columns.sql
@@ -1,13 +1,7 @@
SELECT
attname, attndims, atttypmod, format_type(t.oid,NULL) AS datatype,
format_type(t.oid, att.atttypmod) AS fulltype, attnotnull, attnum,
- (SELECT COUNT(1) from pg_type t2 WHERE t2.typname=t.typname) > 1 AS isdup,
- (
- attname || ' ' || format_type(t.oid, att.atttypmod) || ' ' ||
- (CASE WHEN attnotnull='true'
- THEN 'NOT NULL' ELSE 'NULL'
- END)
- ) as strcolumn
+ (SELECT COUNT(1) from pg_type t2 WHERE t2.typname=t.typname) > 1 AS isdup
FROM
pg_attribute att
JOIN
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.2_plus/get_columns.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.2_plus/get_columns.sql
index 4270058..ab5ee75 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.2_plus/get_columns.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.2_plus/get_columns.sql
@@ -4,25 +4,7 @@ SELECT
CASE WHEN length(cn.nspname) > 0 AND length(cl.collname) > 0 THEN
concat(cn.nspname, '."', cl.collname,'"') ELSE '' END AS collname,
(SELECT COUNT(1) from pg_type t2 WHERE t2.typname=t.typname) > 1 AS isdup,
- pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS typdefault,
- (
- attname || ' ' || format_type(t.oid, att.atttypmod) || ' ' ||
- (
- CASE WHEN array_length(attfdwoptions, 1)>0
- THEN concat('OPTIONS (', array_to_string(attfdwoptions, ', '), ')') ELSE ''
- END
- ) || ' ' ||
- (
- CASE WHEN attnotnull='true'
- THEN 'NOT NULL' ELSE 'NULL'
- END
- ) || ' ' ||
- (
- CASE WHEN pg_catalog.pg_get_expr(def.adbin, def.adrelid)<>''
- THEN 'DEFAULT ' || pg_catalog.pg_get_expr(def.adbin, def.adrelid)
- ELSE '' END
- )
- ) as strcolumn
+ pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS typdefault
FROM
pg_attribute att
JOIN
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_columns.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_columns.sql
index 64d6d13..3417208 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_columns.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_columns.sql
@@ -20,25 +20,6 @@ SELECT INH.inheritedfrom, INH.inheritedid, att.attoptions, attfdwoptions,
concat(cn.nspname, '."', cl.collname,'"')
ELSE '' END AS collname,
pg_catalog.pg_get_expr(def.adbin, def.adrelid) AS typdefault,
- (
- att.attname || ' ' || format_type(t.oid, att.atttypmod) || ' ' ||
- (
- CASE WHEN array_length(attfdwoptions, 1)>0
- THEN concat('OPTIONS (', array_to_string(attfdwoptions, ', '), ')') ELSE ''
- END
- ) || ' ' ||
- (
- CASE WHEN attnotnull='true'
- THEN 'NOT NULL' ELSE 'NULL'
- END
- ) || ' ' ||
- (
- CASE WHEN pg_catalog.pg_get_expr(def.adbin, def.adrelid)<>''
- THEN 'DEFAULT ' || pg_catalog.pg_get_expr(def.adbin, def.adrelid)
- ELSE '' END
- )
- ) as strcolumn,
-
(SELECT COUNT(1) from pg_type t2 WHERE t2.typname=t.typname) > 1 AS isdup
FROM
pg_attribute att
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_tables.sql b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_tables.sql
index 83445a2..38f9ce4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_tables.sql
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/foreign_tables/templates/foreign_tables/sql/9.5_plus/get_tables.sql
@@ -9,7 +9,7 @@ WHERE
{% else %}
SELECT
- c.oid AS id, quote_ident(n.nspname) || '.' || quote_ident(c.relname) as text
+ c.oid AS value, quote_ident(n.nspname) || '.' || quote_ident(c.relname) as label
FROM
pg_class c, pg_namespace n
WHERE
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js
index 3ffa6ef..d7c947f 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/templates/foreign_key/js/foreign_key.js
@@ -21,6 +21,7 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) {
headerSelectControlTemplate = _.template([
'<div class="<%=Backform.controlsClassName%> <%=extraClasses.join(\' \')%>">',
' <select class="pgadmin-node-select form-control" name="<%=name%>" style="width:100%;" value="<%-value%>" <%=disabled ? "disabled" : ""%> <%=required ? "required" : ""%> >',
+ ' <%=select2.first_empty ? " <option></option>" : ""%>',
' <% for (var i=0; i < options.length; i++) { %>',
' <% var option = options[i]; %>',
' <option <% if (option.image) { %> data-image=<%= option.image %> <% } %> value=<%= formatter.fromRaw(option.value) %> <%=option.value === rawValue ? "selected=\'selected\'" : "" %>><%-option.label%></option>',
@@ -134,8 +135,9 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) {
}),
select2: {
allowClear: false, width: 'style',
- placeholder: 'Select column'
- }, first_empty: !_.isUndefined(self.model.get('oid')),
+ placeholder: '{{ _('Select column') }}',
+ first_empty: !_.isUndefined(self.model.get('oid'))
+ },
version_compatible: self.field.get('version_compatible'),
disabled: function(m) {
return !_.isUndefined(self.model.get('oid'));
@@ -234,10 +236,11 @@ function($, _, S, pgAdmin, pgBrowser, Alertify) {
Backform.Select2Control.prototype.render.apply(this, arguments);
return this;
}
- }), url: 'get_columns', first_empty: true,
+ }), url: 'get_columns',
select2: {
+ allowClear: false,
width: "style",
- placeholder: 'Select column',
+ placeholder: '{{ _('Select column') }}',
templateResult: formatNode,
templateSelection: formatNode
},
diff --git a/web/pgadmin/browser/static/js/datamodel.js b/web/pgadmin/browser/static/js/datamodel.js
index 8cb7034..7b379ce 100644
--- a/web/pgadmin/browser/static/js/datamodel.js
+++ b/web/pgadmin/browser/static/js/datamodel.js
@@ -124,7 +124,7 @@ function(_, pgAdmin, $, Backbone) {
var self = this;
self._previous_key_values = {};
- if ('on_server' in options && options.on_server) {
+ if (!_.isUndefined(options) && 'on_server' in options && options.on_server) {
self.on_server = true;
}
diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js
index 2530db9..e27ea2d 100644
--- a/web/pgadmin/static/js/backform.pgadmin.js
+++ b/web/pgadmin/static/js/backform.pgadmin.js
@@ -1804,7 +1804,11 @@
if (_.isArray(formattedData)) {
return _.map(formattedData, decodeURIComponent);
} else {
- return decodeURIComponent(formattedData);
+ if(!_.isNull(formattedData) && !_.isUndefined(formattedData)) {
+ return decodeURIComponent(formattedData);
+ } else {
+ return null;
+ }
}
}
});
@@ -1915,9 +1919,15 @@
return this;
},
getValueFromDOM: function() {
- return Backform.SelectControl.prototype.getValueFromDOM.apply(
- this, arguments
- );
+ var val = Backform.SelectControl.prototype.getValueFromDOM.apply(
+ this, arguments
+ ),
+ select2Opts = _.extend({}, this.field.get("select2") || this.defaults.select2);
+
+ if (select2Opts.multiple && val == null) {
+ return [];
+ }
+ return val;
}
});
view thread (13+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: patch for issue RM1260 [pgAdmin4]
In-Reply-To: <CAFiP3vyzfYCUqCmZLX1=SoGUE=Sb+JbXOtFYyaWUg2D1_-UNbQ@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox