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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user