cartodb-4.42/lib/assets/javascripts/cartodb/models/organization_groups.js
2024-04-06 05:25:13 +00:00

43 lines
1.2 KiB
JavaScript

/**
* 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;
}
});