mirror of https://github.com/rancher/ui.git
81 lines
2.0 KiB
JavaScript
81 lines
2.0 KiB
JavaScript
import Resource from '@rancher/ember-api-store/models/resource';
|
|
import { get, set, computed, setProperties } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import { reference } from '@rancher/ember-api-store/utils/denormalize';
|
|
import { next } from '@ember/runloop';
|
|
|
|
export default Resource.extend({
|
|
router: service(),
|
|
scope: service(),
|
|
|
|
multiClusterApp: reference('multiClusterAppId', 'multiClusterApp'),
|
|
|
|
target: computed('multiClusterAppId', 'projectIds.[]', function() {
|
|
// returns either a single multiClusterAppId or an array of project target ids
|
|
const out = {
|
|
type: null,
|
|
data: null,
|
|
};
|
|
|
|
const multiClusterAppId = this.multiClusterAppId;
|
|
const projectIds = this.projectIds;
|
|
|
|
if (multiClusterAppId && !projectIds) {
|
|
setProperties(out, {
|
|
type: 'single',
|
|
data: multiClusterAppId
|
|
});
|
|
} else if (projectIds && projectIds.length && !multiClusterAppId) {
|
|
setProperties(out, {
|
|
type: 'multi',
|
|
data: projectIds
|
|
});
|
|
}
|
|
|
|
return out;
|
|
}),
|
|
|
|
|
|
linkedProjects: computed('projectIds.[]', 'scope.allProjects.@each.id', function() {
|
|
const allProjects = get(this, 'scope.allProjects') || [];
|
|
const projectIds = this.projectIds || [];
|
|
|
|
const myProjects = [];
|
|
|
|
projectIds.forEach( (projectId) => {
|
|
let match = allProjects.findBy('id', projectId);
|
|
|
|
if (match) {
|
|
next(() => {
|
|
set(match, 'accessible', true);
|
|
myProjects.pushObject(match);
|
|
});
|
|
} else {
|
|
next(() => {
|
|
myProjects.pushObject({
|
|
id: projectId,
|
|
accessible: false,
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
return myProjects;
|
|
}),
|
|
|
|
canEdit: computed('links.update', function() {
|
|
return !!get(this, 'links.update');
|
|
}),
|
|
|
|
canRemove: computed('links.remove', function() {
|
|
return !!get(this, 'links.remove');
|
|
}),
|
|
|
|
actions: {
|
|
edit() {
|
|
this.router.transitionTo('global-admin.global-dns.entries.new', { queryParams: { id: this.id } } );
|
|
}
|
|
},
|
|
|
|
});
|