Initial commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
const Backbone = require('backbone');
|
||||
const GroupModel = require('dashboard/data/group-model');
|
||||
const checkAndBuildOpts = require('builder/helpers/required-opts');
|
||||
|
||||
const REQUIRED_OPTS = [
|
||||
'configModel'
|
||||
];
|
||||
|
||||
/**
|
||||
* A collection that holds a set of organization groups
|
||||
*/
|
||||
module.exports = Backbone.Collection.extend({
|
||||
|
||||
model: function (attrs, { collection }) {
|
||||
return new GroupModel(attrs, {
|
||||
collection,
|
||||
configModel: collection._configModel
|
||||
});
|
||||
},
|
||||
|
||||
url: function (method) {
|
||||
var version = this._configModel.urlVersion('organizationGroups', method);
|
||||
return '/api/' + version + '/organization/' + this.organization.id + '/groups';
|
||||
},
|
||||
|
||||
initialize: function (models, opts) {
|
||||
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
|
||||
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 GroupModel({
|
||||
id: id
|
||||
}, { configModel: this._configModel, collection: this });
|
||||
}
|
||||
return group;
|
||||
},
|
||||
|
||||
// @return {Number, undefined} may be undefined until a first fetch is done
|
||||
totalCount: function () {
|
||||
return this.total_entries;
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user