mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Integrate the new mechanism for the data session management in the
variable control, privilege control, which specifies the keys - which helps identify the data from the collection. Also, resolved an version compatibility issue with the variable control.
This commit is contained in:
parent
586b81b162
commit
3a06758b94
@ -59,6 +59,7 @@
|
||||
grantor: undefined,
|
||||
privileges: undefined
|
||||
},
|
||||
keys: ['grantee', 'grantor'],
|
||||
/*
|
||||
* Each of the database object needs to extend this model, which should
|
||||
* provide the type of privileges (it supports).
|
||||
@ -67,7 +68,7 @@
|
||||
|
||||
schema: [{
|
||||
id: 'grantee', label:'Grantee', type:'text', group: null, cell: 'string',
|
||||
disabled: true, cellHeaderClasses: 'width_percent_40'
|
||||
disabled: false, cellHeaderClasses: 'width_percent_40'
|
||||
}, {
|
||||
id: 'privileges', label:'Privileges',
|
||||
type: 'collection', model: PrivilegeModel, group: null,
|
||||
@ -93,7 +94,8 @@
|
||||
privileges = new (pgNode.Collection)(
|
||||
models, {
|
||||
model: PrivilegeModel,
|
||||
handler: this.handler || this,
|
||||
top: this.top || this,
|
||||
handler: this,
|
||||
silent: true,
|
||||
parse: false
|
||||
});
|
||||
|
@ -38,10 +38,11 @@
|
||||
var VariableModel = pgNode.VariableModel = pgNode.Model.extend({
|
||||
defaults: {
|
||||
name: undefined,
|
||||
value: undefined,
|
||||
value: '',
|
||||
role: undefined,
|
||||
database: undefined,
|
||||
},
|
||||
keys: ['name', 'role', 'database'],
|
||||
schema: [
|
||||
{id: 'name', label:'Name', type:'text', editable: false, cellHeaderClasses: 'width_percent_30'},
|
||||
{
|
||||
@ -57,7 +58,7 @@
|
||||
// Remove not defined values from model values.
|
||||
// i.e.
|
||||
// role, database
|
||||
if (_.isUndefined(d.database)) {
|
||||
if (_.isUndefined(d.database) || _.isNull(d.database)) {
|
||||
delete d.database;
|
||||
}
|
||||
|
||||
@ -66,6 +67,20 @@
|
||||
}
|
||||
|
||||
return d;
|
||||
},
|
||||
validate: function() {
|
||||
if (_.isUndefined(this.get('value')) ||
|
||||
String(this.get('value')).replace(/^\s+|\s+$/g, '') == '') {
|
||||
var msg = 'Please enter some value!';
|
||||
|
||||
this.errorModel.set('value', msg);
|
||||
|
||||
return msg;
|
||||
} else {
|
||||
this.errorModel.unset('value');
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
@ -306,7 +321,10 @@
|
||||
url = this.field.get('url'),
|
||||
m = self.model;
|
||||
|
||||
if (this.field.get('version_compitible') && url && !m.isNew()) {
|
||||
if (!this.field.get('version_compitible'))
|
||||
return;
|
||||
|
||||
if (url && !m.isNew()) {
|
||||
var node = self.field.get('node'),
|
||||
node_data = self.field.get('node_data'),
|
||||
node_info = self.field.get('node_info'),
|
||||
@ -314,9 +332,14 @@
|
||||
node, [
|
||||
null, url, node_data, true, node_info
|
||||
]),
|
||||
data;
|
||||
data,
|
||||
isTracking = self.collection.trackChanges;
|
||||
|
||||
if (isTracking) {
|
||||
self.collection.stopSession();
|
||||
}
|
||||
m.trigger('pgadmin-view:fetching', m, self.field);
|
||||
|
||||
m.trigger('pgadmin:view:fetching', m, self.field);
|
||||
$.ajax({
|
||||
async: false,
|
||||
url: full_url,
|
||||
@ -324,19 +347,20 @@
|
||||
data = res.data;
|
||||
},
|
||||
error: function() {
|
||||
m.trigger('pgadmin:view:fetch:error', m, self.field);
|
||||
m.trigger('pgadmin-view:fetch:error', m, self.field);
|
||||
}
|
||||
});
|
||||
m.trigger('pgadmin:view:fetched', 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
|
||||
*/
|
||||
}
|
||||
/*
|
||||
* Make sure - new data will be taken care by the session management
|
||||
*/
|
||||
if (isTracking) {
|
||||
self.collection.startNewSession();
|
||||
}
|
||||
} else {
|
||||
}
|
||||
},
|
||||
|
||||
@ -417,11 +441,8 @@
|
||||
},
|
||||
|
||||
events: _.extend(
|
||||
{},
|
||||
Backform.UniqueColCollectionControl.prototype.events,
|
||||
{
|
||||
'click button.add': 'addVariable'
|
||||
}
|
||||
{}, Backform.UniqueColCollectionControl.prototype.events,
|
||||
{'click button.add': 'addVariable'}
|
||||
),
|
||||
|
||||
showGridControl: function(data) {
|
||||
@ -481,8 +502,10 @@
|
||||
|
||||
var self = this,
|
||||
m = new (self.field.get('model'))(
|
||||
self.headerData.toJSON(), {silent: true}
|
||||
),
|
||||
self.headerData.toJSON(), {
|
||||
silent: true, top: self.collection.top,
|
||||
handler: self.collection
|
||||
}),
|
||||
coll = self.model.get(self.field.get('name'));
|
||||
|
||||
coll.add(m);
|
||||
|
@ -69,7 +69,7 @@ function($, _, pgAdmin, Backbone, Backform, Alertify, Node) {
|
||||
*/
|
||||
var self = this,
|
||||
url = self.field.get('url') || self.defaults.url,
|
||||
m = self.model.handler || self.model;
|
||||
m = self.model.top || self.model;
|
||||
|
||||
// Hmm - we found the url option.
|
||||
// That means - we needs to fetch the options from that node.
|
||||
|
@ -149,7 +149,7 @@
|
||||
attrArr = d.split('.');
|
||||
name = attrArr.shift();
|
||||
|
||||
self.stopListening(that.model, "change:" + name, self.render);
|
||||
self.stopListening(self.model, "change:" + name, self.render);
|
||||
});
|
||||
}
|
||||
|
||||
@ -451,11 +451,11 @@
|
||||
'hidden.bs.tab', function() {
|
||||
self.hidden_tab = $(this).data('tabIndex');
|
||||
}).on('shown.bs.tab', function() {
|
||||
var that = this;
|
||||
self.shown_tab = $(that).data('tabIndex');
|
||||
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': that
|
||||
'tab': self
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -650,7 +650,8 @@
|
||||
{
|
||||
model: self.field.get('model'),
|
||||
silent: true,
|
||||
handler: self.model.handler || self.model
|
||||
handler: self.model.handler || self.model,
|
||||
attrName: self.field.get('name')
|
||||
});
|
||||
self.model.set(self.field.get('name'), collection, {silent: true});
|
||||
}
|
||||
@ -664,8 +665,8 @@
|
||||
var self = this;
|
||||
|
||||
if (this.field.get('version_compitible')) {
|
||||
self.stopListening(collection, "add", self.collectionChanged);
|
||||
self.stopListening(collection, "change", self.collectionChanged);
|
||||
self.stopListening(self.collection, "add", self.collectionChanged);
|
||||
self.stopListening(self.collection, "change", self.collectionChanged);
|
||||
}
|
||||
|
||||
Backform.Control.prototype.remove.apply(this, arguments);
|
||||
@ -1084,13 +1085,13 @@
|
||||
this.sqlTab = sqlTab;
|
||||
return this;
|
||||
},
|
||||
onTabChange: function() {
|
||||
onTabChange: function(obj) {
|
||||
|
||||
// Fetch the information only if the SQL tab is visible at the moment.
|
||||
if (this.dialog && this.dialog.shown_tab == this.tabIndex) {
|
||||
if (this.dialog && obj.shown == this.tabIndex) {
|
||||
|
||||
// We will send request to sever only if something is changed in model
|
||||
if(_.size(this.model.sessAttrs)) {
|
||||
if(this.model.sessChanged()) {
|
||||
|
||||
var self = this,
|
||||
node = self.field.get('schema_node'),
|
||||
|
Loading…
Reference in New Issue
Block a user