extract VfModulePopupServiceBase
[vid.git] / vid-webpack-master / src / app / shared / components / genericFormPopup / genericFormServices / vfModuleUpgrade / vfModule.upgrade.popuop.service.ts
1 import {Injectable} from "@angular/core";
2 import {ITreeNode} from "angular-tree-component/dist/defs/api";
3 import {FormGroup} from "@angular/forms";
4 import {VfModulePopupServiceBase} from "../vfModule/vfModule.popuop.service";
5 import {updateVFModuleField, upgradeVFModule} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
6 import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
7 import {NgRedux} from "@angular-redux/store";
8 import {AppState} from "../../../../store/reducers";
9 import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
10 import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
11 import {IframeService} from "../../../../utils/iframe.service";
12 import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
13 import {AaiService} from "../../../../services/aaiService/aai.service";
14 import {BasicPopupService} from "../basic.popup.service";
15 import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
16 import {CheckboxFormControl} from "../../../../models/formControlModels/checkboxFormControl.model";
17 import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
18
19 export enum UpgradeFormControlNames {
20   RETAIN_VOLUME_GROUPS = 'retainVolumeGroups',
21   RETAIN_ASSIGNMENTS = 'retainAssignments',
22 }
23
24 @Injectable()
25 export class VfModuleUpgradePopupService extends VfModulePopupServiceBase {
26   constructor(protected _basicControlGenerator: BasicControlGenerator,
27               protected _vfModuleControlGenerator: VfModuleControlGenerator,
28               protected _iframeService: IframeService,
29               protected _defaultDataGeneratorService: DefaultDataGeneratorService,
30               protected _aaiService: AaiService,
31               protected _basicPopupService : BasicPopupService,
32               protected _store: NgRedux<AppState>,
33               private _sharedTreeService : SharedTreeService){
34     super(_basicControlGenerator, _vfModuleControlGenerator, _iframeService, _defaultDataGeneratorService, _aaiService, _basicPopupService,_store);
35   }
36   node: ITreeNode;
37
38   getDynamicInputs = () => [];
39
40   getControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, isUpdateMode: boolean)  {
41     let result: FormControlModel[] = [];
42     result.push(this.getRetainVolumeGroupsControl());
43     result.push(this.getRetainAssignmentsControl());
44     return result;
45   };
46
47   getTitle = (): string => 'Upgrade Module';
48
49   onSubmit(that, form: FormGroup) {
50     const node = that.uuidData.vfModule;
51     const serviceInstanceId: string = that.uuidData.serviceId;
52
53     this._store.dispatch(upgradeVFModule(node.data.modelName,  node.parent.data.vnfStoreKey, serviceInstanceId ,node.data.dynamicModelName));
54     this._sharedTreeService.upgradeBottomUp(node, serviceInstanceId);
55
56     this.updateVFModuleField(UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,node, serviceInstanceId, form);
57     this.updateVFModuleField(UpgradeFormControlNames.RETAIN_ASSIGNMENTS,node, serviceInstanceId, form);
58
59     this.postSubmitIframeMessage(that);
60     this.onCancel(that, form);
61   }
62
63   private updateVFModuleField(fieldName: string, node, serviceInstanceId: string, form: FormGroup) {
64     this._store.dispatch(updateVFModuleField(node.data.modelName, node.parent.data.vnfStoreKey, serviceInstanceId, node.data.dynamicModelName, fieldName, form.controls[fieldName].value));
65   }
66
67
68   getRetainVolumeGroupsControl = (): CheckboxFormControl => {
69     return new CheckboxFormControl({
70       type: FormControlType.CHECKBOX,
71       controlName: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
72       displayName: 'Retain Volume Groups',
73       dataTestId: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
74       value: true,
75       validations: []
76     })
77   };
78
79   getRetainAssignmentsControl = (): CheckboxFormControl => {
80     return new CheckboxFormControl({
81       type: FormControlType.CHECKBOX,
82       controlName: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
83       displayName: 'Retain Assignments',
84       dataTestId: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
85       value: true,
86       validations: []
87     })
88   };
89
90 }