X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-ui%2Fsrc%2Fapp%2Fng2%2Fpages%2Fcomposition%2Finterface-operatons%2Finterface-operations.component.ts;h=dfdaa77e21ec0a8a9f77a94eadb4d338775aef47;hb=db333a620e4b8dec6c58009162561b32c83d6bd9;hp=c17c130d927598e615270b98826a0c4ceb10813a;hpb=4aff8f5eafb6fbd6cc2c764fa1a5a676fa05c89c;p=sdc.git diff --git a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/interface-operations.component.ts b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/interface-operations.component.ts index c17c130d92..dfdaa77e21 100644 --- a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/interface-operations.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/interface-operations.component.ts @@ -25,11 +25,12 @@ import { } from '../../../services/component-services/topology-template.service'; import {TranslateService} from "../../../shared/translator/translate.service"; import {ModalService} from 'app/ng2/services/modal.service'; +import {CompositionService} from "app/ng2/pages/composition/composition.service"; import {ModalComponent} from 'app/ng2/components/ui/modal/modal.component'; import {Component as TopologyTemplate} from "../../../../models/components/component"; import {PluginsService} from "app/ng2/services/plugins.service"; import {SelectedComponentType} from "../common/store/graph.actions"; - +import {InstanceFeDetails} from "../../../../models/instance-fe-details"; import {WorkspaceService} from "../../workspace/workspace.service"; import { ComponentInterfaceDefinitionModel, @@ -93,12 +94,12 @@ class ModalTranslation { CLOSE_BUTTON: string; SAVE_BUTTON: string; - constructor(private TranslateService: TranslateService) { - this.TranslateService.languageChangedObservable.subscribe(lang => { - this.EDIT_TITLE = this.TranslateService.translate('INTERFACE_EDIT_TITLE'); - this.CANCEL_BUTTON = this.TranslateService.translate("INTERFACE_CANCEL_BUTTON"); - this.CLOSE_BUTTON = this.TranslateService.translate("INTERFACE_CLOSE_BUTTON"); - this.SAVE_BUTTON = this.TranslateService.translate("INTERFACE_SAVE_BUTTON"); + constructor(private translateService: TranslateService) { + this.translateService.languageChangedObservable.subscribe(lang => { + this.EDIT_TITLE = this.translateService.translate('INTERFACE_EDIT_TITLE'); + this.CANCEL_BUTTON = this.translateService.translate("INTERFACE_CANCEL_BUTTON"); + this.CLOSE_BUTTON = this.translateService.translate("INTERFACE_CLOSE_BUTTON"); + this.SAVE_BUTTON = this.translateService.translate("INTERFACE_SAVE_BUTTON"); }); } } @@ -139,6 +140,10 @@ export class InterfaceOperationsComponent { deploymentArtifactsFilePath: Array = []; toscaArtifactTypes: Array = []; + componentInstanceMap: Map = new Map(); + validImplementationProps: boolean = true; + validMilestoneActivities: boolean = true; + validMilestoneFilters: boolean = true; @Input() component: ComponentInstance; @Input() isViewOnly: boolean; @@ -148,15 +153,16 @@ export class InterfaceOperationsComponent { constructor( - private TranslateService: TranslateService, - private PluginsService: PluginsService, + private translateService: TranslateService, + private pluginsService: PluginsService, private topologyTemplateService: TopologyTemplateService, private toscaArtifactService: ToscaArtifactService, private modalServiceNg2: ModalService, + private compositionService: CompositionService, private workspaceService: WorkspaceService, @Inject("Notification") private Notification: any, ) { - this.modalTranslation = new ModalTranslation(TranslateService); + this.modalTranslation = new ModalTranslation(translateService); } ngOnInit(): void { @@ -214,8 +220,27 @@ export class InterfaceOperationsComponent { ).length === 0; } - private enableOrDisableSaveButton = (): boolean => { - return this.isViewOnly; + private disableSaveButton = (): boolean => { + let disable:boolean = true; + if(this.isViewOnly) { + return disable; + } + + const validMilestoneFilters = this.modalInstance.instance.dynamicContent.instance.validMilestoneFilters; + const validMilestoneActivities = this.modalInstance.instance.dynamicContent.instance.validMilestoneActivities; + if (!validMilestoneActivities || !validMilestoneFilters) { + return disable; + } + let enableAddArtifactImplementation = this.modalInstance.instance.dynamicContent.instance.enableAddArtifactImplementation; + if(enableAddArtifactImplementation) { + const validImplementationProps = this.modalInstance.instance.dynamicContent.instance.validImplementationProps; + const toscaArtifactTypeSelected = this.modalInstance.instance.dynamicContent.instance.toscaArtifactTypeSelected; + const isToscaArtifactType:boolean = !(typeof toscaArtifactTypeSelected == 'undefined' || _.isEmpty(toscaArtifactTypeSelected)); + disable = !isToscaArtifactType || !validImplementationProps; + return disable; + } + disable = false; + return disable; } onSelectInterfaceOperation(interfaceModel: UIInterfaceModel, operation: InterfaceOperationModel) { @@ -226,7 +251,7 @@ export class InterfaceOperationsComponent { buttonList.push(closeButton); } else { const saveButton: ButtonModel = new ButtonModel(this.modalTranslation.SAVE_BUTTON, 'blue', () => - this.updateInterfaceOperation(), this.enableOrDisableSaveButton); + this.updateInterfaceOperation(), this.disableSaveButton); const cancelButton: ButtonModel = new ButtonModel(this.modalTranslation.CANCEL_BUTTON, 'outline white', this.cancelAndCloseModal); buttonList.push(saveButton); buttonList.push(cancelButton); @@ -234,16 +259,31 @@ export class InterfaceOperationsComponent { const modalModel: ModalModel = new ModalModel('l', this.modalTranslation.EDIT_TITLE, '', buttonList, 'custom'); this.modalInstance = this.modalServiceNg2.createCustomModal(modalModel); + const componentInstances = this.compositionService.getComponentInstances() + if (componentInstances) { + componentInstances.forEach(value => { + this.componentInstanceMap.set(value.uniqueId, { + name: value.name + }); + }); + } + this.modalServiceNg2.addDynamicContentToModal( this.modalInstance, InterfaceOperationHandlerComponent, { deploymentArtifactsFilePath: this.deploymentArtifactsFilePath, + componentInstanceMap: this.componentInstanceMap, toscaArtifactTypes: this.toscaArtifactTypes, selectedInterface: interfaceModel ? interfaceModel : new UIInterfaceModel(), selectedInterfaceOperation: operation ? operation : new InterfaceOperationModel(), - validityChangedCallback: this.enableOrDisableSaveButton, - isViewOnly: this.isViewOnly + validityChangedCallback: this.disableSaveButton, + isViewOnly: this.isViewOnly, + validImplementationProps: this.validImplementationProps, + validMilestoneActivities: this.validMilestoneActivities, + validMilestoneFilters: this.validMilestoneFilters, + isEdit: true, + modelName: this.componentMetaData.model } ); this.modalInstance.instance.open(); @@ -255,14 +295,21 @@ export class InterfaceOperationsComponent { } private updateInterfaceOperation() { - this.isLoading = true; + this.modalServiceNg2.currentModal.instance.dynamicContent.instance.isLoading = true; const interfaceOperationHandlerComponentInstance: InterfaceOperationHandlerComponent = this.modalInstance.instance.dynamicContent.instance; const operationUpdated: InterfaceOperationModel = interfaceOperationHandlerComponentInstance.operationToUpdate; + let timeout = null; + if (operationUpdated.implementation && operationUpdated.implementation.timeout != null) { + timeout = operationUpdated.implementation.timeout; + } const isArtifactChecked = interfaceOperationHandlerComponentInstance.enableAddArtifactImplementation; if (!isArtifactChecked) { let artifactName = interfaceOperationHandlerComponentInstance.artifactName; artifactName = artifactName === undefined ? '' : artifactName; - operationUpdated.implementation = new ArtifactModel({'artifactName': artifactName} as ArtifactModel); + operationUpdated.implementation = new ArtifactModel({'artifactName': artifactName, 'artifactVersion': ''} as ArtifactModel); + } + if (timeout != null) { + operationUpdated.implementation.timeout = timeout; } this.topologyTemplateService.updateComponentInstanceInterfaceOperation( this.componentMetaData.uniqueId, @@ -272,9 +319,12 @@ export class InterfaceOperationsComponent { .subscribe((updatedComponentInstance: ComponentInstance) => { this.componentInstanceSelected = new ComponentInstance(updatedComponentInstance); this.initComponentInstanceInterfaceOperations(); + this.modalServiceNg2.currentModal.instance.dynamicContent.instance.isLoading = false; + this.modalServiceNg2.closeCurrentModal(); + }, () => { + this.modalServiceNg2.currentModal.instance.dynamicContent.instance.isLoading = false; + this.modalServiceNg2.closeCurrentModal(); }); - this.modalServiceNg2.closeCurrentModal(); - this.isLoading = false; } loadDeployedArtifacts() {