/** * A collection that holds a set of organization groups */ cdb.admin.OrganizationGroups = Backbone.Collection.extend({ model: cdb.admin.Group, url: function(method) { var version = cdb.config.urlVersion('organizationGroups', method); return '/api/' + version + '/organization/' + this.organization.id + '/groups'; }, initialize: function(models, opts) { if (!opts.organization) throw new Error('organization is required'); this.organization = opts.organization; }, parse: function(response) { this.total_entries = response.total_entries; return response.groups; }, // @return {Object} A instance of cdb.admin.Group. If group wasn't already present a new model with id and collection // set will be returned, i.e. group.fetch() will be required to get the data or handle the err case (e.g. non-existing) newGroupById: function(id) { var group = this.get(id); if (!group) { group = new this.model({ id: id }); // collection set on model, but not added to collection yet group.collection = this; } return group; }, // @return {Number, undefined} may be undefined until a first fetch is done totalCount: function() { return this.total_entries; } });