mirror of https://github.com/rancher/ui.git
72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
import Ember from 'ember';
|
|
import C from 'ui/utils/constants';
|
|
import Cattle from 'ui/utils/cattle';
|
|
import Util from 'ui/utils/util';
|
|
|
|
export default Ember.Mixin.create(Cattle.NewOrEditMixin, {
|
|
actions: {
|
|
checkMember: function(obj) {
|
|
var member = Ember.Object.create({
|
|
externalId: obj.get('id'),
|
|
externalIdType: C.PROJECT.FROM_GITHUB[ obj.get('type') ],
|
|
role: C.PROJECT.ROLE_MEMBER
|
|
});
|
|
|
|
var existing = this.get('members')
|
|
.filterProperty('externalIdType', member.get('externalIdType'))
|
|
.filterProperty('externalId', member.get('externalId'));
|
|
|
|
if ( existing.get('length') )
|
|
{
|
|
this.send('error','Member is already in the list');
|
|
return;
|
|
}
|
|
|
|
this.send('error',null);
|
|
this.get('members').pushObject(member);
|
|
},
|
|
|
|
removeMember: function(item) {
|
|
this.get('members').removeObject(item);
|
|
},
|
|
},
|
|
|
|
roleOptions: function() {
|
|
return this.get('store').getById('schema','projectmember').get('resourceFields.role.options').map((role) => {
|
|
return {
|
|
label: Util.ucFirst(role),
|
|
value: role
|
|
};
|
|
});
|
|
}.property(),
|
|
|
|
hasOwner: function() {
|
|
return this.get('members').filterProperty('role', C.PROJECT.ROLE_OWNER).get('length') > 0;
|
|
}.property('members.@each.role'),
|
|
|
|
validate: function() {
|
|
this._super();
|
|
var errors = this.get('errors')||[];
|
|
|
|
if ( !this.get('hasOwner') )
|
|
{
|
|
errors.push('You must add at least one owner');
|
|
}
|
|
|
|
if ( errors.length )
|
|
{
|
|
this.set('errors', errors);
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
},
|
|
|
|
doneSaving: function() {
|
|
var out = this._super();
|
|
this.transitionToRoute('projects');
|
|
this.send('refreshProjectDropdown');
|
|
return out;
|
|
},
|
|
});
|