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,
|
grantor: undefined,
|
||||||
privileges: undefined
|
privileges: undefined
|
||||||
},
|
},
|
||||||
|
keys: ['grantee', 'grantor'],
|
||||||
/*
|
/*
|
||||||
* Each of the database object needs to extend this model, which should
|
* Each of the database object needs to extend this model, which should
|
||||||
* provide the type of privileges (it supports).
|
* provide the type of privileges (it supports).
|
||||||
@ -67,7 +68,7 @@
|
|||||||
|
|
||||||
schema: [{
|
schema: [{
|
||||||
id: 'grantee', label:'Grantee', type:'text', group: null, cell: 'string',
|
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',
|
id: 'privileges', label:'Privileges',
|
||||||
type: 'collection', model: PrivilegeModel, group: null,
|
type: 'collection', model: PrivilegeModel, group: null,
|
||||||
@ -93,7 +94,8 @@
|
|||||||
privileges = new (pgNode.Collection)(
|
privileges = new (pgNode.Collection)(
|
||||||
models, {
|
models, {
|
||||||
model: PrivilegeModel,
|
model: PrivilegeModel,
|
||||||
handler: this.handler || this,
|
top: this.top || this,
|
||||||
|
handler: this,
|
||||||
silent: true,
|
silent: true,
|
||||||
parse: false
|
parse: false
|
||||||
});
|
});
|
||||||
|
@ -38,10 +38,11 @@
|
|||||||
var VariableModel = pgNode.VariableModel = pgNode.Model.extend({
|
var VariableModel = pgNode.VariableModel = pgNode.Model.extend({
|
||||||
defaults: {
|
defaults: {
|
||||||
name: undefined,
|
name: undefined,
|
||||||
value: undefined,
|
value: '',
|
||||||
role: undefined,
|
role: undefined,
|
||||||
database: undefined,
|
database: undefined,
|
||||||
},
|
},
|
||||||
|
keys: ['name', 'role', 'database'],
|
||||||
schema: [
|
schema: [
|
||||||
{id: 'name', label:'Name', type:'text', editable: false, cellHeaderClasses: 'width_percent_30'},
|
{id: 'name', label:'Name', type:'text', editable: false, cellHeaderClasses: 'width_percent_30'},
|
||||||
{
|
{
|
||||||
@ -57,7 +58,7 @@
|
|||||||
// Remove not defined values from model values.
|
// Remove not defined values from model values.
|
||||||
// i.e.
|
// i.e.
|
||||||
// role, database
|
// role, database
|
||||||
if (_.isUndefined(d.database)) {
|
if (_.isUndefined(d.database) || _.isNull(d.database)) {
|
||||||
delete d.database;
|
delete d.database;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,6 +67,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return d;
|
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'),
|
url = this.field.get('url'),
|
||||||
m = self.model;
|
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'),
|
var node = self.field.get('node'),
|
||||||
node_data = self.field.get('node_data'),
|
node_data = self.field.get('node_data'),
|
||||||
node_info = self.field.get('node_info'),
|
node_info = self.field.get('node_info'),
|
||||||
@ -314,9 +332,14 @@
|
|||||||
node, [
|
node, [
|
||||||
null, url, node_data, true, node_info
|
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({
|
$.ajax({
|
||||||
async: false,
|
async: false,
|
||||||
url: full_url,
|
url: full_url,
|
||||||
@ -324,19 +347,20 @@
|
|||||||
data = res.data;
|
data = res.data;
|
||||||
},
|
},
|
||||||
error: function() {
|
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)) {
|
if (data && _.isArray(data)) {
|
||||||
self.collection.reset(data, {silent: true});
|
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();
|
self.collection.startNewSession();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -417,11 +441,8 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
events: _.extend(
|
events: _.extend(
|
||||||
{},
|
{}, Backform.UniqueColCollectionControl.prototype.events,
|
||||||
Backform.UniqueColCollectionControl.prototype.events,
|
{'click button.add': 'addVariable'}
|
||||||
{
|
|
||||||
'click button.add': 'addVariable'
|
|
||||||
}
|
|
||||||
),
|
),
|
||||||
|
|
||||||
showGridControl: function(data) {
|
showGridControl: function(data) {
|
||||||
@ -481,8 +502,10 @@
|
|||||||
|
|
||||||
var self = this,
|
var self = this,
|
||||||
m = new (self.field.get('model'))(
|
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 = self.model.get(self.field.get('name'));
|
||||||
|
|
||||||
coll.add(m);
|
coll.add(m);
|
||||||
|
@ -69,7 +69,7 @@ function($, _, pgAdmin, Backbone, Backform, Alertify, Node) {
|
|||||||
*/
|
*/
|
||||||
var self = this,
|
var self = this,
|
||||||
url = self.field.get('url') || self.defaults.url,
|
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.
|
// Hmm - we found the url option.
|
||||||
// That means - we needs to fetch the options from that node.
|
// That means - we needs to fetch the options from that node.
|
||||||
|
@ -149,7 +149,7 @@
|
|||||||
attrArr = d.split('.');
|
attrArr = d.split('.');
|
||||||
name = attrArr.shift();
|
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() {
|
'hidden.bs.tab', function() {
|
||||||
self.hidden_tab = $(this).data('tabIndex');
|
self.hidden_tab = $(this).data('tabIndex');
|
||||||
}).on('shown.bs.tab', function() {
|
}).on('shown.bs.tab', function() {
|
||||||
var that = this;
|
var self = this;
|
||||||
self.shown_tab = $(that).data('tabIndex');
|
self.shown_tab = $(self).data('tabIndex');
|
||||||
m.trigger('pg-property-tab-changed', {
|
m.trigger('pg-property-tab-changed', {
|
||||||
'model': m, 'shown': self.shown_tab, 'hidden': self.hidden_tab,
|
'model': m, 'shown': self.shown_tab, 'hidden': self.hidden_tab,
|
||||||
'tab': that
|
'tab': self
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -650,7 +650,8 @@
|
|||||||
{
|
{
|
||||||
model: self.field.get('model'),
|
model: self.field.get('model'),
|
||||||
silent: true,
|
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});
|
self.model.set(self.field.get('name'), collection, {silent: true});
|
||||||
}
|
}
|
||||||
@ -664,8 +665,8 @@
|
|||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (this.field.get('version_compitible')) {
|
if (this.field.get('version_compitible')) {
|
||||||
self.stopListening(collection, "add", self.collectionChanged);
|
self.stopListening(self.collection, "add", self.collectionChanged);
|
||||||
self.stopListening(collection, "change", self.collectionChanged);
|
self.stopListening(self.collection, "change", self.collectionChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
Backform.Control.prototype.remove.apply(this, arguments);
|
Backform.Control.prototype.remove.apply(this, arguments);
|
||||||
@ -1084,13 +1085,13 @@
|
|||||||
this.sqlTab = sqlTab;
|
this.sqlTab = sqlTab;
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
onTabChange: function() {
|
onTabChange: function(obj) {
|
||||||
|
|
||||||
// Fetch the information only if the SQL tab is visible at the moment.
|
// 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
|
// 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,
|
var self = this,
|
||||||
node = self.field.get('schema_node'),
|
node = self.field.get('schema_node'),
|
||||||
|
Loading…
Reference in New Issue
Block a user