1 import { Injectable } from '@angular/core';
2 import { Store } from '@ngxs/store';
3 import { SdcUiCommon, SdcUiComponents, SdcUiServices } from 'onap-ui-angular';
4 import { ArtifactModel } from '../../../../models';
5 import { ArtifactGroupType, ArtifactType } from '../../../../utils/constants';
6 import { TopologyTemplateService } from '../../../services/component-services/topology-template.service';
7 import { TranslateService } from '../../../shared/translator/translate.service';
8 import { CreateOrUpdateArtifactAction, DeleteArtifactAction } from '../../../store/actions/artifacts.action';
9 import { EnvParamsComponent } from '../env-params/env-params.component';
10 import { ArtifactFormComponent } from './artifact-form.component';
13 CreateInstanceArtifactAction,
14 DeleteInstanceArtifactAction,
15 UpdateInstanceArtifactAction
16 } from '../../../store/actions/instance-artifacts.actions';
19 export class ArtifactsService {
21 constructor(private serviceLoader: SdcUiServices.LoaderService,
22 private modalService: SdcUiServices.ModalService,
23 private topologyTemplateService: TopologyTemplateService,
24 private translateService: TranslateService,
25 private store: Store) {
28 public dispatchArtifactAction = (componentId: string, componentType: string, artifact: ArtifactModel, artifactType: ArtifactGroupType, instanceId: string) => {
36 // Create or update instance artifact
38 if (!artifact.uniqueId) {
39 // create instance artifact
40 return this.store.dispatch(new CreateInstanceArtifactAction(artifactObj));
42 // update instance artifact
43 return this.store.dispatch(new UpdateInstanceArtifactAction(artifactObj));
46 // Create or update artifact
47 return this.store.dispatch(new CreateOrUpdateArtifactAction(artifactObj));
51 public openArtifactModal = (componentId: string, componentType: string, artifact: ArtifactModel, artifactType: ArtifactGroupType, isViewOnly?: boolean, instanceId?: string) => {
55 const onOkPressed = () => {
56 const updatedArtifact = modalInstance.innerModalContent.instance.artifact;
57 this.serviceLoader.activate();
58 this.dispatchArtifactAction(componentId, componentType, updatedArtifact, artifactType, instanceId)
59 .subscribe().add(() => this.serviceLoader.deactivate());
62 const addOrUpdateArtifactModalConfig = {
63 title: (artifact && artifact.uniqueId) ? 'Update Artifact' : 'Create Artifact',
65 type: SdcUiCommon.ModalType.custom,
66 testId: 'upgradeVspModal',
76 {text: 'CANCEL', size: 'sm', closeModal: true, type: 'secondary'}
77 ] as SdcUiCommon.IModalButtonComponent[]
78 } as SdcUiCommon.IModalConfig;
80 modalInstance = this.modalService.openCustomModal(addOrUpdateArtifactModalConfig, ArtifactFormComponent, {
81 artifact: new ArtifactModel(artifact),
89 modalInstance.innerModalContent.instance.onValidationChange.subscribe((isValid) => {
90 modalInstance.getButtonById('done').disabled = !isValid;
95 public openViewEnvParams(componentType: string, componentId: string, artifact: ArtifactModel, instanceId?: string) {
96 const envParamsModal = {
97 title: artifact.artifactDisplayName,
99 type: SdcUiCommon.ModalType.custom,
100 testId: 'viewEnvParams',
102 } as SdcUiCommon.IModalConfig;
104 this.modalService.openCustomModal(envParamsModal, EnvParamsComponent, {
105 isInstanceSelected: !!instanceId, // equals to instanceId ? true : false
106 artifact: new ArtifactModel(artifact),
111 public openUpdateEnvParams(componentType: string, componentId: string, artifact: ArtifactModel, instanceId?: string) {
113 const onOkPressed = () => {
114 const updatedArtifact = modalInstance.innerModalContent.instance.artifact;
115 this.serviceLoader.activate();
116 this.dispatchArtifactAction(componentId, componentType, updatedArtifact, ArtifactType.DEPLOYMENT, instanceId)
117 .subscribe().add(() => this.serviceLoader.deactivate());
120 const envParamsModal = {
121 title: artifact.artifactDisplayName,
123 type: SdcUiCommon.ModalType.custom,
130 spinner_position: 'left',
132 callback: onOkPressed,
135 {text: 'Cancel', size: 'sm', closeModal: true, type: 'secondary'}
136 ] as SdcUiCommon.IModalButtonComponent[]
137 } as SdcUiCommon.IModalConfig;
139 modalInstance = this.modalService.openCustomModal(envParamsModal, EnvParamsComponent, {
140 isInstanceSelected: !!instanceId, // equals to instanceId ? true : false
141 artifact: new ArtifactModel(artifact)
144 modalInstance.innerModalContent.instance.onValidationChange.subscribe((isValid) => {
145 modalInstance.getButtonById('save').disabled = !isValid;
149 public deleteArtifact = (componentType: string, componentId: string, artifact: ArtifactModel, instanceId?: string) => {
151 const artifactObject = {
158 const onOkPressed: Function = () => {
159 this.serviceLoader.activate();
160 this.store.dispatch((instanceId) ? new DeleteInstanceArtifactAction(artifactObject) : new DeleteArtifactAction(artifactObject))
161 .subscribe().add(() => this.serviceLoader.deactivate());
164 const title = this.translateService.translate('ARTIFACT_VIEW_DELETE_MODAL_TITLE');
165 const text = this.translateService.translate('ARTIFACT_VIEW_DELETE_MODAL_TEXT', {name: artifact.artifactDisplayName});
169 type: SdcUiCommon.ButtonType.warning,
170 callback: onOkPressed,
172 } as SdcUiComponents.ModalButtonComponent;
173 this.modalService.openWarningModal(title, text, 'delete-information-artifact-modal', [okButton]);