From ed64b5edff15e702493df21aa3230b81593e6133 Mon Sep 17 00:00:00 2001 From: Michael Lando Date: Fri, 9 Jun 2017 03:19:04 +0300 Subject: [SDC-29] catalog 1707 rebase commit. Change-Id: I43c3dc5cf44abf5da817649bc738938a3e8388c1 Signed-off-by: Michael Lando --- .../app/models/instance-inputs-properties-map.ts | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 catalog-ui/src/app/models/instance-inputs-properties-map.ts (limited to 'catalog-ui/src/app/models/instance-inputs-properties-map.ts') diff --git a/catalog-ui/src/app/models/instance-inputs-properties-map.ts b/catalog-ui/src/app/models/instance-inputs-properties-map.ts new file mode 100644 index 0000000000..47b99dfffd --- /dev/null +++ b/catalog-ui/src/app/models/instance-inputs-properties-map.ts @@ -0,0 +1,67 @@ +/** + * Created by obarda on 9/12/2016. + */ +'use strict'; +import {InputPropertyBase} from "./input-property-base"; +import {PropertyModel} from "./properties"; +import {InputModel} from "./inputs"; + +export class InstancesInputsOrPropertiesMapData { + [instanceId:string]:Array; +} + +export class InstancesInputsPropertiesMap { + componentInstanceProperties:InstancesInputsOrPropertiesMapData; + componentInstanceInputsMap:InstancesInputsOrPropertiesMapData; + + constructor(componentInstanceInputsMapData:InstancesInputsOrPropertiesMapData, componentInstanceInputsPropertiesMapData:InstancesInputsOrPropertiesMapData) { + this.componentInstanceInputsMap = componentInstanceInputsMapData; + this.componentInstanceProperties = componentInstanceInputsPropertiesMapData; + } + + private removeUnnecessaryData = (properties:Array, instanceId:string, mapData:any) => { + mapData[instanceId] = []; + if (properties && properties.length > 0) { + _.forEach(properties, (propertyOrInput:InputPropertyBase) => { + if (propertyOrInput instanceof PropertyModel) { // Handle Properties + if (propertyOrInput && !propertyOrInput.isAlreadySelected) { + mapData[instanceId].push(propertyOrInput); + } + } + if (propertyOrInput instanceof InputModel) { // Handle Inputs + if (propertyOrInput && !propertyOrInput.isAlreadySelected) { + mapData[instanceId].push(propertyOrInput); + } + } + }); + if (mapData[instanceId].length === 0) { + delete mapData[instanceId]; + } + } else { + delete mapData[instanceId]; + } + } + + /* + In the toJson we remove all inputs and property already selected (The check box selected but they are disable) + also we remove empty array in order to prevent Backend error + */ + + public cleanUnnecessaryDataBeforeSending = ():InstancesInputsPropertiesMap => { + + let map:InstancesInputsPropertiesMap = new InstancesInputsPropertiesMap(new InstancesInputsOrPropertiesMapData(), new InstancesInputsOrPropertiesMapData()); + angular.copy(this, map); + + //Removing unnecessary data from inputs map + _.forEach(map.componentInstanceInputsMap, (inputs:Array, instanceId:string) => { + this.removeUnnecessaryData(inputs, instanceId, map.componentInstanceInputsMap); + }); + + //Removing unnecessary data from properties map + _.forEach(map.componentInstanceProperties, (properties:Array, instanceId:string) => { + this.removeUnnecessaryData(properties, instanceId, map.componentInstanceProperties); + }); + + return map; + }; +} -- cgit 1.2.3-korg