diff --git a/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js
index aa868537c..999ac7cd7 100644
--- a/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js
+++ b/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js
@@ -398,14 +398,15 @@
defaults: _.defaults({
select2: {},
opt: {
- text: null,
+ label: null,
value: null,
selected: false
}
}, Backgrid.SelectCell.prototype.defaults),
enterEditMode: function() {
- this.$el.addClass('editor');
+ if (!this.$el.hasClass('editor'))
+ this.$el.addClass('editor');
this.$select.select2('focus');
this.$select.on('blur', this.exitEditMode);
},
@@ -413,10 +414,11 @@
exitEditMode: function() {
this.$select.off('blur', this.exitEditMode);
this.$el.removeClass('editor');
- this.$select.select2('blur');
},
events: {
+ "select2:open": "enterEditMode",
+ "select2:close": "exitEditMode",
"change": "onSave",
"select2:unselect": "onSave"
},
@@ -424,7 +426,7 @@
template: _.template([
''].join(''),
+ '<%- label %>'].join(''),
null,{
variable: null
}),
@@ -432,6 +434,8 @@
initialize: function() {
Backgrid.SelectCell.prototype.initialize.apply(this, arguments);
this.onSave = this.onSave.bind(this);
+ this.enterEditMode = this.enterEditMode.bind(this);
+ this.exitEditMode = this.exitEditMode.bind(this);
},
render: function () {
@@ -447,7 +451,6 @@
if (this.$select) {
this.$select.select2('destroy');
- this.$select.off('change', this.onSave);
}
this.$el.empty();
@@ -467,30 +470,29 @@
selectedValues = model.get(this.column.get("name"));
delete this.$select;
-
- selectedValues = model.get(this.column.get("name")),
- self = this,
- $select = self.$select = $('').appendTo(this.$el);
+ self = this,
+ $select = self.$select = $('').appendTo(this.$el);
for (var i = 0; i < optionValues.length; i++) {
var opt = optionValues[i];
if (_.isArray(opt)) {
+
optionText = opt[0];
optionValue = opt[1];
$select.append(
self.template({
- text: optionText,
+ label: optionText,
value: optionValue,
selected: (selectedValues == optionValue) ||
(_.indexOf(selectedValues, optionValue) > -1)
}));
} else {
- opt = _.defaults(opt, {
+ opt = _.defaults({}, opt, {
selected: ((selectedValues == opt.value) ||
- (_.indexOf(selectedValues, opt.value) > -1))
- }, self.defaults.opt);
+ (_.indexOf(selectedValues, opt.value) > -1)),
+ }, self.defaults.opt);
$select.append(self.template(opt));
}
}
@@ -508,11 +510,11 @@
_.extend(select2_opts, {disabled: !editable});
}
- // Initialize select2 control.
- this.$select.select2(select2_opts).on('change', self.onSave);
-
this.delegateEvents();
+ // Initialize select2 control.
+ this.$select.select2(select2_opts);
+
return this;
},