Initial commit
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
const _ = require('underscore');
|
||||
const Backbone = require('backbone');
|
||||
const UserModel = require('dashboard/data/user-model');
|
||||
const checkAndBuildOpts = require('builder/helpers/required-opts');
|
||||
|
||||
const REQUIRED_OPTS = [
|
||||
'organization',
|
||||
'configModel'
|
||||
];
|
||||
|
||||
// helper to manage organization users
|
||||
module.exports = Backbone.Collection.extend({
|
||||
model: UserModel,
|
||||
|
||||
_DEFAULT_EXCLUDE_CURRENT_USER: true,
|
||||
|
||||
url: function () {
|
||||
return '/api/v1/organization/' + this.organization.id + '/users';
|
||||
},
|
||||
|
||||
initialize: function (models, options) {
|
||||
checkAndBuildOpts(options, REQUIRED_OPTS, this);
|
||||
|
||||
this.organization = this._organization;
|
||||
this.currentUserId = options.currentUserId;
|
||||
this._excludeCurrentUser = this._DEFAULT_EXCLUDE_CURRENT_USER;
|
||||
},
|
||||
|
||||
comparator: function (model) {
|
||||
return model.get('username');
|
||||
},
|
||||
|
||||
excludeCurrentUser: function (exclude) {
|
||||
exclude = !!exclude;
|
||||
this._excludeCurrentUser = exclude;
|
||||
if (exclude && !this.currentUserId) {
|
||||
console.error('set excludeCurrentUser to true, but there is no current user id set to exclude!');
|
||||
}
|
||||
},
|
||||
|
||||
restoreExcludeCurrentUser: function () {
|
||||
this.excludeCurrentUser(this._DEFAULT_EXCLUDE_CURRENT_USER);
|
||||
},
|
||||
|
||||
parse: function (r) {
|
||||
this.total_entries = r.total_entries;
|
||||
this.total_user_entries = r.total_user_entries;
|
||||
|
||||
return _.reduce(r.users, function (memo, user) {
|
||||
if (this._excludeCurrentUser && user.id === this.currentUserId) {
|
||||
this.total_user_entries--;
|
||||
this.total_entries--;
|
||||
} else {
|
||||
memo.push(user);
|
||||
}
|
||||
return memo;
|
||||
}, [], this);
|
||||
},
|
||||
|
||||
// @return {Number, undefined} may be undefined until a first fetch is done
|
||||
totalCount: function () {
|
||||
return this.total_user_entries;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user