Hi Ashesh, Yes, agreed. This implementation limits us to use only String Cell. So, I have modified the patch as you suggested.
Please find the attachment for the same. Thanks, Khushboo On Fri, Apr 1, 2016 at 2:59 PM, Ashesh Vashi <ashesh.va...@enterprisedb.com> wrote: > Hi Khushboo, > > I am reluctant to use this code as it is. > I would prefer you create just helper functions (i.e. initialize, remove) > for the dependents in Backgrid.Cell, and then use them directly from the > different cell itself. > Because - this functionality limits us to us only with the string type. > > Anyway - we will be using the dependent functionality for very attributes. > > > You can extend them directly in the Node's model (schema). > > -- > > Thanks & Regards, > > Ashesh Vashi > EnterpriseDB INDIA: Enterprise PostgreSQL Company > <http://www.enterprisedb.com> > > > *http://www.linkedin.com/in/asheshvashi* > <http://www.linkedin.com/in/asheshvashi> > > On Wed, Mar 30, 2016 at 6:39 PM, Khushboo Vashi < > khushboo.va...@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached patch for the Backgrid *StringDepsCell.* >> >> The *StringDepsCell* displays HTML escaped strings and accepts anything >> typed in. >> Also, Listen to the dependent fields. >> >> >> Usage of the Backgrid Cell: >> >> If the Precision cell is dependent on the Datatype then: >> >> { >> id: 'precision', label:'{{ _('Precision') }}', type: 'test' >> cell: *Backgrid.Extension.StringDepsCell*, deps: ['datatype'] >> >> } >> >> >> Thanks, >> Khushboo >> >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> >> >
diff --git a/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js index 4b233d2..6ccea9a 100644 --- a/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js +++ b/web/pgadmin/static/js/backgrid/backgrid.pgadmin.js @@ -447,6 +447,48 @@ editor: TextareaCellEditor }); + /** + DependentCell can be used as a base class for any backgrid cell which is + dependent on another cell. It will listen to the dependent fields/cells. + + Need to Extend this cell whenever required and has to implement render_deps + function to listen to the dependent fields change event. + + @class Backgrid.Extension.DependentCell + @extends Backgrid.DependentCell + */ + var DependentCell = Backgrid.Extension.DependentCell = Backgrid.Cell.extend({ + initialize: function(){ + Backgrid.StringCell.prototype.initialize.apply(this, arguments); + + // Listen to the dependent fields in the model for any change + var deps = this.column.get('deps'); + var self = this; + + if (deps && _.isArray(deps)) { + _.each(deps, function(d) { + attrArr = d.split('.'); + name = attrArr.shift(); + self.listenTo(self.model, "change:" + name, self.render_deps); + }); + } + }, + remove: function() { + // Remove the events for the dependent fields in the model + var self = this, + deps = self.column.get('deps'); + + if (deps && _.isArray(deps)) { + _.each(deps, function(d) { + attrArr = d.split('.'); + name = attrArr.shift(); + self.stopListening(self.model, "change:" + name, self.render_deps); + }); + } + Backbone.View.prototype.remove.apply(self, arguments); + } + }); + return Backgrid; }));
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers