ui/lib/shared/addon/components/form-auth-cloud-credential/component.js

62 lines
1.8 KiB
JavaScript

import Component from '@ember/component';
import layout from './template';
import { get, set } from '@ember/object';
import { next } from '@ember/runloop';
import { isEmpty } from '@ember/utils';
export default Component.extend({
layout,
showAddCloudCredential: null,
region: null, // only used a passthrough for the amazon region so the region selection can happen in cloud creds rather than have the markup on both pages
hideSave: false,
cloudCredentials: null,
driverName: null,
primaryResource: null,
finishAndSelectCloudCredential: null,
progressStep: null,
cancel: null,
createLabel: 'saveCancel.create',
savingLabel: 'generic.loading',
mode: 'new',
init() {
this._super(...arguments);
this.initSingleOrAddCredential();
},
actions: {
doneSavingCloudCredential(cred) {
if (cred) {
get(this, 'finishAndSelectCloudCredential')(cred)
set(this, 'showAddCloudCredential', false);
}
},
addCloudCredential() {
set(this, 'showAddCloudCredential', true);
},
cancleNewCloudCredential() {
set(this, 'showAddCloudCredential', false);
},
},
initSingleOrAddCredential() {
let { cloudCredentials = [], primaryResource } = this;
let singleCloudCredentialId = get((cloudCredentials || []), 'firstObject.id') || null;
if (isEmpty(get(this, 'cloudCredentials'))) {
next(() => {
set(this, 'showAddCloudCredential', true);
});
}
next(() => {
if (primaryResource && !primaryResource.cloudCredentialId) {
set(this, 'primaryResource.cloudCredentialId', singleCloudCredentialId);
}
});
},
});