public inbox for [email protected]
help / color / mirror / Atom feedFrom: Murtuza Zabuawala <[email protected]>
To: pgadmin-hackers <[email protected]>
Subject: PATCH: Added canAddRow/canEditRow/canDeleteRow functionality for grid
Date: Wed, 13 Apr 2016 18:05:45 +0530
Message-ID: <CAKKotZSVM2jnVMgpgpFLwbo-f=wgdshNQ5Y4V3fZV13+=DLtTQ@mail.gmail.com> (raw)
List-Unsubscribe: <mailto:[email protected]?body=unsub%20pgadmin-hackers>
Hi,
PFA minor patch which will add canAddRow/canEditRow/canDeleteRow
functionality for Backgrid.
This will allow user to check condition on individual
opration(add/edit/delete row) rather than only while rendering the control.
--
Regards,
Murtuza Zabuawala
EnterpriseDB: 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:
[application/octet-stream] added_canAddRow_canEditRow_canDeleteRow.patch (5.4K, 3-added_canAddRow_canEditRow_canDeleteRow.patch)
download | inline diff:
diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js
index aca7bc2..f18fceb 100644
--- a/web/pgadmin/static/js/backform.pgadmin.js
+++ b/web/pgadmin/static/js/backform.pgadmin.js
@@ -899,7 +899,9 @@
},
render: function() {
// Clean up existing elements
+
this.undelegateEvents();
+ this.$el.empty();
var field = _.defaults(this.field.toJSON(), this.defaults),
attributes = this.model.toJSON(),
@@ -927,6 +929,7 @@
canAdd: (field.version_compatible &&
evalF.apply(this.field, [data.canAdd, data, this.model])
),
+ canAddRow: data.canAddRow,
canDelete: evalF.apply(this.field, [data.canDelete, data, this.model]),
canEdit: evalF.apply(this.field, [data.canEdit, data, this.model])
});
@@ -978,7 +981,8 @@
gridSchema.columns.unshift({
name: "pg-backform-delete", label: "",
cell: Backgrid.Extension.DeleteCell,
- editable: false, cell_priority: -1
+ editable: false, cell_priority: -1,
+ canDeleteRow: data.canDeleteRow
});
}
@@ -990,7 +994,7 @@
gridSchema.columns.unshift({
name: "pg-backform-edit", label: "", cell : editCell,
- cell_priority: -2
+ cell_priority: -2, canEditRow: data.canEditRow
});
}
@@ -1041,7 +1045,9 @@
if (!(data.disabled || data.canAdd == false)) {
$dialog.find('button.add').first().click(function(e) {
e.preventDefault();
-
+ var canAddRow = _.isFunction(data.canAddRow) ?
+ data.canAddRow.apply(self, [self.model]) : true;
+ if(canAddRow) {
// Close any existing expanded row before adding new one.
_.each(grid.body.rows, function(row){
var editCell = row.$el.find(".subnode-edit-in-process").parent();
@@ -1089,6 +1095,7 @@
$(newRow).pgMakeVisible('backform-tab');
return false;
+ }
});
}
@@ -1143,6 +1150,7 @@
visible: evalF(data.visible, data, this.model),
required: evalF(data.required, data, this.model),
canAdd: evalF(data.canAdd, data, this.model),
+ canAddRow: data.canAddRow,
canEdit: evalF(data.canEdit, data, this.model),
canDelete: evalF(data.canDelete, data, this.model)
});
@@ -1200,7 +1208,8 @@
gridSchema.columns.unshift({
name: "pg-backform-delete", label: "",
cell: Backgrid.Extension.DeleteCell,
- editable: false, cell_priority: -1
+ editable: false, cell_priority: -1,
+ canDeleteRow: data.canDeleteRow
});
}
@@ -1214,7 +1223,8 @@
gridSchema.columns.unshift({
name: "pg-backform-edit", label: "", cell : editCell,
- cell_priority: -2, editable: canEdit
+ cell_priority: -2, editable: canEdit,
+ canEditRow: data.canEditRow
});
}
@@ -1272,25 +1282,29 @@
// Add button callback
$dialog.find('button.add').click(function(e) {
- e.preventDefault();
- // Close any existing expanded row before adding new one.
- _.each(grid.body.rows, function(row){
- var editCell = row.$el.find(".subnode-edit-in-process").parent();
- // Only close row if it's open.
- if (editCell.length > 0){
- var event = new Event('click');
- editCell[0].dispatchEvent(event);
- }
- });
+ e.preventDefault();
+ var canAddRow = _.isFunction(data.canAddRow) ?
+ data.canAddRow.apply(self, [self.model]) : true;
+ if(canAddRow) {
+ // Close any existing expanded row before adding new one.
+ _.each(grid.body.rows, function(row){
+ var editCell = row.$el.find(".subnode-edit-in-process").parent();
+ // Only close row if it's open.
+ if (editCell.length > 0){
+ var event = new Event('click');
+ editCell[0].dispatchEvent(event);
+ }
+ });
- grid.insertRow({});
+ grid.insertRow({});
- var newRow = $(grid.body.rows[collection.length - 1].$el);
- newRow.attr("class", "new").click(function(e) {
- $(this).attr("class", "editable");
- });
- $(newRow).pgMakeVisible('backform-tab');
- return false;
+ var newRow = $(grid.body.rows[collection.length - 1].$el);
+ newRow.attr("class", "new").click(function(e) {
+ $(this).attr("class", "editable");
+ });
+ $(newRow).pgMakeVisible('backform-tab');
+ return false;
+ }
});
return $dialog;
@@ -1662,8 +1676,11 @@
subnode: ((_.isString(s.model) && s.model in pgBrowser.Nodes) ?
pgBrowser.Nodes[s.model].model : s.model),
canAdd: (disabled ? false : evalASFunc(s.canAdd)),
+ canAddRow: (disabled ? false : evalASFunc(s.canAddRow)),
canEdit: (disabled ? false : evalASFunc(s.canEdit)),
canDelete: (disabled ? false : evalASFunc(s.canDelete)),
+ canEditRow: (disabled ? false : evalASFunc(s.canEditRow)),
+ canDeleteRow: (disabled ? false : evalASFunc(s.canDeleteRow)),
transform: evalASFunc(s.transform),
mode: mode,
control: control,
view thread (2+ 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]
Subject: Re: PATCH: Added canAddRow/canEditRow/canDeleteRow functionality for grid
In-Reply-To: <CAKKotZSVM2jnVMgpgpFLwbo-f=wgdshNQ5Y4V3fZV13+=DLtTQ@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