aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts')
-rw-r--r--vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts184
1 files changed, 184 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts
new file mode 100644
index 000000000..dc83083cb
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/service/service.popup.service.ts
@@ -0,0 +1,184 @@
+import {Injectable} from "@angular/core";
+import {GenericPopupInterface} from "../generic-popup.interface";
+import {ServiceModel} from "../../../../models/serviceModel";
+import {ModelInformationItem} from "../../../model-information/model-information.component";
+import {Subject} from "rxjs";
+import {ITreeNode} from "angular-tree-component/dist/defs/api";
+import {FormPopupDetails, PopupType} from "../../../../models/formControlModels/formPopupDetails.model";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../../store/reducers";
+import {ServiceControlGenerator} from "../../../genericForm/formControlsServices/service.control.generator";
+import {FormGroup} from "@angular/forms";
+import {Constants} from "../../../../utils/constants";
+import {ServiceInstance} from "../../../../models/serviceInstance";
+import {ModelInfo} from "../../../../models/modelInfo";
+import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
+import {
+ ServiceActions,
+ createServiceInstance,
+ updateServiceInstance
+} from "../../../../storeUtil/utils/service/service.actions";
+import {ServiceInstanceActions} from "../../../../models/serviceInstanceActions";
+import * as _ from 'lodash';
+@Injectable()
+export class ServicePopupService implements GenericPopupInterface {
+ dynamicInputs: any;
+ instance: any;
+ model: any;
+ serviceModel: ServiceModel;
+ modelInformations: ModelInformationItem[] = [];
+ uuidData: Object;
+ closeDialogEvent: Subject<any> = new Subject<any>();
+ isUpdateMode: boolean;
+
+
+
+ constructor(private _basicControlGenerator: BasicControlGenerator,
+ private _serviceControlGenerator: ServiceControlGenerator,
+ private _iframeService: IframeService,
+ private _defaultDataGeneratorService: DefaultDataGeneratorService,
+ private _aaiService: AaiService,
+ private _basicPopupService : BasicPopupService,
+ private _store: NgRedux<AppState>) {
+
+ }
+
+ getGenericFormPopupDetails(serviceId: string, modelName: string, storeKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
+ this.uuidData = uuidData;
+ this.instance = this.getInstance(serviceId);
+ this.getModelInformation(serviceId);
+ return new FormPopupDetails(this,
+ PopupType.SERVICE,
+ uuidData,
+ this.getTitle(isUpdateMode),
+ this.getSubLeftTitle(),
+ this.getSubRightTitle(),
+ this.getControls(serviceId),
+ this.getDynamicInputs(serviceId),
+ this.modelInformations,
+ (that, form: FormGroup) => {that.onSubmit(that, form);},
+ (that: any, form: FormGroup) => {that.onCancel(that, form); }
+ );
+ }
+
+ getDynamicInputs(serviceId) : FormControlModel[]{
+ let dynamic = this._defaultDataGeneratorService.getArbitraryInputs(this._store.getState().service.serviceHierarchy[serviceId].service.inputs);
+ return this._basicControlGenerator.getServiceDynamicInputs(dynamic, serviceId);
+ }
+
+
+ getControls(serviceId: string) {
+ if(this._store.getState().service.serviceHierarchy[serviceId].service.instantiationType === 'Macro') {
+ return this._serviceControlGenerator.getMacroFormControls(serviceId, this.dynamicInputs);
+ }else {
+ return this._serviceControlGenerator.getAlaCartControls(serviceId, this.dynamicInputs);
+ }
+ }
+
+ getInstance(serviceId): ServiceInstance {
+ let result: ServiceInstance = null;
+ if(!_.isNil(this._store.getState().service.serviceInstance[serviceId])){
+ result = this._store.getState().service.serviceInstance[serviceId];
+ }
+ return result;
+ }
+
+ getModelInformation(serviceId: string): void {
+ this._aaiService.getServiceModelById(serviceId).subscribe((result: any) => {
+ this.serviceModel = new ServiceModel(result);
+
+ this.model = this._store.getState().service.serviceHierarchy[serviceId];
+ this.modelInformations = [
+ new ModelInformationItem("Model version", "modelVersion", [this.serviceModel.version], "", true),
+ new ModelInformationItem("Description", "description", [this.serviceModel.description]),
+ new ModelInformationItem("Category", "category", [this.serviceModel.category]),
+ new ModelInformationItem("UUID", "uuid", [this.serviceModel.uuid], Constants.ServicePopup.TOOLTIP_UUID, true),
+ new ModelInformationItem("Invariant UUID", "invariantUuid", [this.serviceModel.invariantUuid], Constants.ServicePopup.TOOLTIP_INVARIANT_UUID, true),
+ new ModelInformationItem("Service type", "serviceType", [this.serviceModel.serviceType]),
+ new ModelInformationItem("Service role", "serviceRole", [this.serviceModel.serviceRole])
+ ];
+ });
+ }
+
+ getSubLeftTitle(): string {
+ return this._store.getState().service.serviceHierarchy[this.uuidData['serviceId']].service.name;
+ }
+
+ getSubRightTitle(): string {
+ return "Service Instance Details";
+ }
+
+ getTitle(isUpdateMode: boolean): string {
+ return isUpdateMode ? "Edit service instance" : "Set a new service instance";
+ }
+
+ onCancel(that, form): void {
+ form.reset();
+ that._iframeService.removeClassCloseModal('content');
+ this.closeDialogEvent.next(that);
+ }
+
+ onSubmit(that, form: FormGroup, ...args): void {
+ form = that.updateExtraValues(that, form);
+ that.storeServiceInstance(form.value, args[0], [], new ModelInfo(that.serviceModel), that.serviceModel);
+ window.parent.postMessage( {
+ eventId: 'submitIframe',
+ data: {
+ serviceModelId: that.serviceModel.uuid
+ }
+ }, "*");
+ this.onCancel(that, form);
+ }
+
+ updateExtraValues = (that, form) : any => {
+ const service = that._store.getState().service;
+ form.value['bulkSize'] = that.uuidData['bulkSize'];
+ form.value['instanceParams'] = form.value['instanceParams'] && [form.value['instanceParams']];
+ form.value['aicZoneName'] = !_.isNil(form.value['aicZoneId']) ?this.getNameFromListById(service.aicZones, form.value['aicZoneId']) : null;
+ form.value['owningEntityName'] = !_.isNil(form.value['owningEntityId']) ?this.getNameFromListById(service.categoryParameters.owningEntityList, form.value['owningEntityId']) : null;
+ form.value['testApi'] = sessionStorage.getItem("msoRequestParametersTestApiValue");
+ form.value['tenantName'] = this.getNameFromListById(service.lcpRegionsAndTenants.lcpRegionsTenantsMap[form.value['lcpCloudRegionId']], form.value['tenantId']);
+ return form;
+ };
+
+ getNameFromListById(list, id) {
+ if(list && id) {
+ return list.find(item => item.id === id).name;
+ }
+ return null;
+ }
+
+ storeServiceInstance = (formValues:any, servicesQty:number, dynamicInputs:any, serviceModel:ModelInfo, serviceDetails: any ) => {
+ formValues.bulkSize = this.uuidData['bulkSize'];
+ formValues.modelInfo = serviceModel;
+ let instantiationType = this._store.getState().service.serviceHierarchy[serviceModel.modelVersionId].service.instantiationType;
+ this.setIsALaCarte(formValues, instantiationType);
+ this.setTestApi(formValues);
+ Object.assign(formValues, serviceDetails);
+ let isCreateMode: boolean = this._store.getState().service.serviceInstance[serviceModel.modelVersionId] == null;
+ if(isCreateMode){
+ this._store.dispatch(createServiceInstance(formValues, serviceModel.modelVersionId));
+ }else {
+ this._store.dispatch(updateServiceInstance(formValues, serviceModel.modelVersionId));
+ }
+
+ if (this._store.getState().global.flags['FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD'] && isCreateMode) {
+ this._defaultDataGeneratorService.updateReduxOnFirstSet(serviceModel.modelVersionId, formValues);
+ }
+ };
+
+ setIsALaCarte = (formValues: any, instantiationType) => {
+ formValues.isALaCarte = instantiationType === 'A-La-Carte';
+ };
+
+ setTestApi = (formValues: any) =>{
+ if (this._store.getState().global.flags['FLAG_ADD_MSO_TESTAPI_FIELD'] && formValues.isAlaCarte) {
+ formValues.testApi = sessionStorage.getItem("msoRequestParametersTestApiValue");
+ }
+ };
+}