mirror of https://github.com/rancher/ui.git
87 lines
2.1 KiB
JavaScript
87 lines
2.1 KiB
JavaScript
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import { computed, get, set } from '@ember/object';
|
|
import { scheduleOnce } from '@ember/runloop';
|
|
|
|
const MEMBERS_HEADERS = [
|
|
{
|
|
translationKey: 'formShareMember.table.headers.name',
|
|
name: 'name',
|
|
sort: ['userPrincipalId', 'groupPrincipalId'],
|
|
},
|
|
{
|
|
translationKey: 'formShareMember.table.headers.accessType',
|
|
name: 'accessType',
|
|
sort: ['accessType'],
|
|
},
|
|
];
|
|
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
|
|
membersHeaders: MEMBERS_HEADERS,
|
|
sortBy: '',
|
|
descending: false,
|
|
resource: null,
|
|
gotError: null,
|
|
users: null,
|
|
errors: null,
|
|
editing: false,
|
|
addPublicMember: false,
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
scheduleOnce('afterRender', this, 'setupPublicMember');
|
|
},
|
|
|
|
actions: {
|
|
addMember() {
|
|
this.addAuthorizedPrincipal({
|
|
type: 'member',
|
|
accessType: 'read-only',
|
|
});
|
|
},
|
|
sharePublic() {
|
|
this.addAuthorizedPrincipal({
|
|
type: 'member',
|
|
accessType: 'read-only',
|
|
groupPrincipalId: '*',
|
|
});
|
|
},
|
|
checkboxToggled() {
|
|
let { members = [] } = this.resource;
|
|
|
|
if (this.addPublicMember && members.findBy('groupPrincipalId', '*')) {
|
|
this.removeMember(members.findBy('groupPrincipalId', '*'));
|
|
} else {
|
|
this.send('sharePublic');
|
|
}
|
|
},
|
|
},
|
|
|
|
membersRows: computed('resource.members.[]', function() {
|
|
let { members = [] } = this.resource;
|
|
|
|
return ( members || [] ).filter((member) => get(member, 'groupPrincipalId') !== '*').sortBy('displayName');
|
|
}),
|
|
|
|
setupPublicMember() {
|
|
let { members = [] } = this.resource;
|
|
|
|
if (!this.addPublicMember && (members || []).findBy('groupPrincipalId', '*')) {
|
|
set(this, 'addPublicMember', true);
|
|
}
|
|
},
|
|
|
|
addAuthorizedPrincipal() {
|
|
throw new Error('add principal handler must be provided!!');
|
|
},
|
|
|
|
removeMember() {
|
|
throw new Error('removeMember is a required action!')
|
|
},
|
|
|
|
});
|