From 9c2e8bbbd18d8081d85ac76d04f0b02727da14a2 Mon Sep 17 00:00:00 2001 From: Westly Wright Date: Wed, 11 Jul 2018 15:27:53 -0700 Subject: [PATCH] Clone Catalog --- app/models/catalog.js | 34 +++++++++++++++++++ .../modal-edit-catalog/component.js | 25 ++++++++++---- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/app/models/catalog.js b/app/models/catalog.js index 4b9815eff..3e666b5be 100644 --- a/app/models/catalog.js +++ b/app/models/catalog.js @@ -3,6 +3,7 @@ import { inject as service } from '@ember/service'; import { computed } from '@ember/object'; import { get } from '@ember/object'; import { ucFirst } from 'shared/utils/util'; +import C from 'ui/utils/constants'; export default Resource.extend({ displayKind: computed('kind', function() { @@ -10,6 +11,17 @@ export default Resource.extend({ return ucFirst(get(this, 'kind')); }), + + canClone: computed('actions.clone', function() { + + const name = get(this, 'name'); + const catalogNames = get(C, 'CATALOG'); + const builtIn = [get(catalogNames, 'LIBRARY_KEY'), get(catalogNames, 'HELM_STABLE_KEY'), get(catalogNames, 'HELM_INCUBATOR_KEY')]; + + return !builtIn.includes(name); + + }), + modalService: service('modal'), actions: { @@ -17,7 +29,29 @@ export default Resource.extend({ this.get('modalService').toggleModal('modal-edit-catalog', this); + }, + + clone() { + + debugger; + const clone = this.cloneForNew(); + + this.get('modalService').toggleModal('modal-edit-catalog', clone); + } }, + cloneForNew() { + + var copy = this.clone(); + + delete copy.id; + delete copy.name; + delete copy.actionLinks; + delete copy.links; + delete copy.uuid; + + return copy; + + }, }); diff --git a/lib/global-admin/addon/components/modal-edit-catalog/component.js b/lib/global-admin/addon/components/modal-edit-catalog/component.js index 8b0db1ec7..2e369a38c 100644 --- a/lib/global-admin/addon/components/modal-edit-catalog/component.js +++ b/lib/global-admin/addon/components/modal-edit-catalog/component.js @@ -8,6 +8,10 @@ import { } from '@ember/object'; import { later } from '@ember/runloop'; +const kindChoices = [ + {translationKey: 'catalogSettings.more.kind.helm', value: 'helm'}, +]; + export default Component.extend(ModalBase, NewOrEdit, { layout, classNames: ['medium-modal'], @@ -16,12 +20,21 @@ export default Component.extend(ModalBase, NewOrEdit, { allNamespaces: null, allProjects: null, - kindChoices: [ - { - translationKey: 'catalogSettings.more.kind.helm', - value: 'helm' - }, - ], + init() { + this._super(...arguments); + + var orig = this.get('originalModel'); + var clone = orig.clone(); + + set(clone, 'kind', 'helm'); + set(this, 'model', clone); + }, + + doneSaving: function() { + this.send('cancel'); + }, + + kindChoices: kindChoices, originalModel: alias('modalService.modalOpts'), editing: notEmpty('originalModel.id'),