aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/view-models/workspace/tabs/inputs/service-input/service-inputs-view-model.ts
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/view-models/workspace/tabs/inputs/service-input/service-inputs-view-model.ts')
-rw-r--r--catalog-ui/src/app/view-models/workspace/tabs/inputs/service-input/service-inputs-view-model.ts758
1 files changed, 379 insertions, 379 deletions
diff --git a/catalog-ui/src/app/view-models/workspace/tabs/inputs/service-input/service-inputs-view-model.ts b/catalog-ui/src/app/view-models/workspace/tabs/inputs/service-input/service-inputs-view-model.ts
index bdbc0a4334..5e69f5bed6 100644
--- a/catalog-ui/src/app/view-models/workspace/tabs/inputs/service-input/service-inputs-view-model.ts
+++ b/catalog-ui/src/app/view-models/workspace/tabs/inputs/service-input/service-inputs-view-model.ts
@@ -17,382 +17,382 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
-'use strict';
-import * as _ from "lodash";
-import {IWorkspaceViewModelScope} from "app/view-models/workspace/workspace-view-model";
-import {ComponentInstance, InstancesInputsOrPropertiesMapData, Service, IAppMenu, InputModel, PropertyModel, InputPropertyBase} from "app/models";
-import {DataTypesService} from "app/services";
-import {ModalsHandler, ResourceType} from "app/utils";
-
-
-interface IServiceInputsViewModelScope extends IWorkspaceViewModelScope {
-
- vfInstancesList:Array<ComponentInstance>;
- instanceInputsMap:InstancesInputsOrPropertiesMapData; //this is tha map object that hold the selected inputs and the inputs we already used
- instancePropertiesMap:InstancesInputsOrPropertiesMapData;
- component:Service;
- sdcMenu:IAppMenu;
- isViewOnly:boolean;
- isArrowDisabled:boolean;
- onArrowPressed():void;
- checkArrowState():void;
- loadComponentInputs():void;
- loadInstanceInputs(instance:ComponentInstance):ng.IPromise<boolean> ;
- loadInstanceProperties(instance:ComponentInstance):ng.IPromise<boolean> ;
- loadInputPropertiesForInstance(instanceId:string, input:InputModel):ng.IPromise<boolean> ;
- loadInputInputs(input:InputModel):ng.IPromise<boolean>;
- deleteInput(input:InputModel):void
- openEditValueModal(input:InputModel):void;
- openSelectPropertyDataTypeViewModel(instanceId:string, property:PropertyModel):void;
- openEditPropertyDataTypeViewModel(property:PropertyModel):void;
- dataTypesService:DataTypesService;
-}
-
-export class ServiceInputsViewModel {
-
- static '$inject' = [
- '$scope',
- '$q',
- 'ModalsHandler',
- 'Sdc.Services.DataTypesService'
- ];
-
- constructor(private $scope:IServiceInputsViewModelScope,
- private $q:ng.IQService,
- private ModalsHandler:ModalsHandler,
- private DataTypesService:DataTypesService) {
- this.initScope();
- this.$scope.isViewOnly = this.$scope.isViewMode();
- }
-
-
- private getInputsOrPropertiesAlreadySelected = (instanceNormalizeName:string, arrayToFilter:Array<InputPropertyBase>):Array<any> => {
- let alreadySelectedInput = [];
- _.forEach(arrayToFilter, (inputOrProperty:InputPropertyBase) => {
- let expectedServiceInputName = instanceNormalizeName + '_' + inputOrProperty.name;
- let inputAlreadyInService = _.find(this.$scope.component.inputs, (serviceInput:InputModel) => {
- //Checking if the input prefix is the instance name + '_' + property/input name (prefix because we don't need to check full name for complex dataType)
- return serviceInput.name.substring(0, expectedServiceInputName.length) === expectedServiceInputName;
- });
- if (inputAlreadyInService) {
- inputOrProperty.isAlreadySelected = true;
- alreadySelectedInput.push(inputOrProperty);
- } else {
- inputOrProperty.isAlreadySelected = false;
- }
- });
- return alreadySelectedInput;
- };
-
-
- /*
- * When loading the screen again, we need to disabled the inputs that already created on the service,
- * we do that by comparing the service input name, to the instance name + '_' + the resource instance input name.
- */
- private disableEnableSelectedInputsOrPropertiesOnInit = (instance:ComponentInstance):void => {
-
- if (instance.originType === ResourceType.VF) {
- this.$scope.instanceInputsMap[instance.uniqueId] = this.getInputsOrPropertiesAlreadySelected(instance.normalizedName, instance.inputs);
- } else {
- this.$scope.instancePropertiesMap[instance.uniqueId] = this.getInputsOrPropertiesAlreadySelected(instance.normalizedName, instance.properties);
- }
- };
-
- /*
- * Enable Input/Property after delete
- */
- private enableInputsAfterDelete = (propertiesOrInputsDeletes:Array<InputPropertyBase>):void => {
-
- _.forEach(propertiesOrInputsDeletes, (deletedInputInput:InputPropertyBase) => { //Enable all component instance inputs deleted
-
- let inputOrPropertyDeleted:InputPropertyBase = _.find(this.$scope.instanceInputsMap[deletedInputInput.componentInstanceId], (inputOrProperty:InputPropertyBase) => {
- return inputOrProperty.uniqueId === deletedInputInput.uniqueId;
- });
- inputOrPropertyDeleted.isAlreadySelected = false;
- delete _.remove(this.$scope.instanceInputsMap[deletedInputInput.componentInstanceId], {uniqueId: inputOrPropertyDeleted.uniqueId})[0];
- });
- };
-
- /*
- * Enable Input/Property after delete
- */
- private enablePropertiesAfterDelete = (propertiesOrInputsDeletes:Array<InputPropertyBase>):void => {
-
- _.forEach(propertiesOrInputsDeletes, (deletedInputInput:InputPropertyBase) => { //Enable all component instance inputs deleted
- let componentInstance = _.find(this.$scope.vfInstancesList, (instance:ComponentInstance) => {
- return instance.uniqueId === deletedInputInput.componentInstanceId;
- });
- let inputOrPropertyDeleted:InputPropertyBase = _.find(this.$scope.instancePropertiesMap[deletedInputInput.componentInstanceId], (inputOrProperty:InputPropertyBase) => {
- return inputOrProperty.uniqueId === deletedInputInput.uniqueId;
- });
-
- let expectedName = componentInstance.normalizedName + '_' + inputOrPropertyDeleted.name;
- let isAnotherInputExist = _.find(this.$scope.component.inputs, (input:InputModel) => {
- return input.name.substring(0, expectedName.length) === expectedName;
- });
- if (!isAnotherInputExist) {
- inputOrPropertyDeleted.isAlreadySelected = false;
- delete _.remove(this.$scope.instancePropertiesMap[deletedInputInput.componentInstanceId], {uniqueId: inputOrPropertyDeleted.uniqueId})[0];
- }
- });
- };
-
- private initScope = ():void => {
-
- this.$scope.instanceInputsMap = new InstancesInputsOrPropertiesMapData();
- this.$scope.instancePropertiesMap = new InstancesInputsOrPropertiesMapData();
- this.$scope.isLoading = true;
- this.$scope.isArrowDisabled = true;
- // Why do we need this? we call this later.
- //this.$scope.component.getComponentInputs();
-
- let onSuccess = (componentInstances:Array<ComponentInstance>) => {
- console.log("component instances loaded: ", componentInstances);
- this.$scope.vfInstancesList = componentInstances;
- this.$scope.isLoading = false;
- };
-
- //This function will get al component instance for the left table - in
- // future the instances will be filter according to search text
- this.$scope.component.getComponentInstancesFilteredByInputsAndProperties().then(onSuccess);
-
- // This function will get the service inputs for the right table
- this.$scope.component.getComponentInputs();
-
- /*
- * When clicking on instance in the left table, this function will load all instance inputs
- */
- this.$scope.loadInstanceInputs = (instance:ComponentInstance):ng.IPromise<boolean> => {
- let deferred = this.$q.defer();
-
- let onSuccess = (inputs:Array<InputModel>) => {
- instance.inputs = inputs;
- this.disableEnableSelectedInputsOrPropertiesOnInit(instance);
- deferred.resolve(true);
- };
-
- let onError = () => {
- deferred.resolve(false);
- };
-
- if (!instance.inputs) {
- this.$scope.component.getComponentInstanceInputs(instance.uniqueId, instance.componentUid).then(onSuccess, onError);
- //this.disableEnableSelectedInputs(instance);
- } else {
- deferred.resolve(true);
- }
- return deferred.promise;
- };
-
-
- this.$scope.loadInstanceProperties = (instance:ComponentInstance):ng.IPromise<boolean> => {
- let deferred = this.$q.defer();
-
- let onSuccess = (properties:Array<PropertyModel>) => {
- instance.properties = properties;
- this.disableEnableSelectedInputsOrPropertiesOnInit(instance);
- deferred.resolve(true);
- };
-
- let onError = () => {
- deferred.resolve(false);
- };
-
- if (!instance.properties) {
- this.$scope.component.getComponentInstanceProperties(instance.uniqueId).then(onSuccess, onError);
- } else {
- deferred.resolve(true);
- }
- return deferred.promise;
- };
-
- /*
- * When clicking on instance input in the left or right table, this function will load all properties of the selected input
- */
- this.$scope.loadInputPropertiesForInstance = (instanceId:string, input:InputModel):ng.IPromise<boolean> => {
- let deferred = this.$q.defer();
-
- let onSuccess = (properties:Array<PropertyModel>) => {
- input.properties = properties;
- deferred.resolve(true);
- };
-
- let onError = () => {
- deferred.resolve(false)
- };
-
- if (!input.properties) {
- this.$scope.component.getComponentInstanceInputProperties(instanceId, input.uniqueId).then(onSuccess, onError);
- } else {
- deferred.resolve(true);
- }
- return deferred.promise;
- };
-
- /*
- * When clicking on input in the right table, this function will load all inputs of the selected input
- */
- this.$scope.loadInputInputs = (input:InputModel):ng.IPromise<boolean> => {
- let deferred = this.$q.defer();
-
- let onSuccess = () => {
- deferred.resolve(true);
- };
- let onError = () => {
- deferred.resolve(false);
- };
-
- if (!input.inputs) { // Caching, if exists do not get it.
- this.$scope.component.getServiceInputInputsAndProperties(input.uniqueId).then(onSuccess, onError);
- } else {
- deferred.resolve(true);
- }
- return deferred.promise;
- };
-
- /*
- * When pressing the arrow, we create service inputs from the inputs selected
- */
- this.$scope.onArrowPressed = ():void => {
- let onSuccess = (inputsCreated:Array<InputModel>) => {
-
- //disabled all the inputs in the left table
- _.forEach(this.$scope.instanceInputsMap, (inputs:Array<InputModel>, instanceId:string) => {
- _.forEach(inputs, (input:InputModel) => {
- input.isAlreadySelected = true;
- });
- });
- _.forEach(this.$scope.instancePropertiesMap, (properties:Array<PropertyModel>, instanceId:string) => {
- _.forEach(properties, (property:PropertyModel) => {
- property.isAlreadySelected = true;
- });
- });
- this.addColorToItems(inputsCreated);
- };
-
- let onFailed = (error:any) => {
- this.$scope.isArrowDisabled = false;
- console.log("Error declaring input/property");
- };
-
- this.$scope.isArrowDisabled = true;
- this.$scope.component.createInputsFormInstances(this.$scope.instanceInputsMap, this.$scope.instancePropertiesMap).then(onSuccess, onFailed);
- };
-
-
- /* Iterates through array of selected inputs and properties and returns true if there is at least one new selection on left */
- this.$scope.checkArrowState = ()=> {
-
- let newInputSelected:boolean = _.some(this.$scope.instanceInputsMap, (inputs:Array<InputModel>) => {
- return _.some(inputs, (input:InputModel)=> {
- return input.isAlreadySelected === false;
- });
- });
-
- let newPropSelected:boolean = _.some(this.$scope.instancePropertiesMap, (properties:Array<PropertyModel>) => {
- return _.some(properties, (property:PropertyModel) => {
- return property.isAlreadySelected === false;
- });
- });
-
- this.$scope.isArrowDisabled = !(newInputSelected || newPropSelected);
-
- };
-
- this.$scope.deleteInput = (inputToDelete:InputModel):void => {
-
- let onDelete = ():void => {
-
- let onSuccess = (deletedInput:InputModel):void => {
- if (deletedInput.inputs && deletedInput.inputs.length > 0) { // Enable input declared from input
- this.enableInputsAfterDelete(deletedInput.inputs);
- }
-
- if (deletedInput.properties && deletedInput.properties.length > 0) { // Enable properties
- this.enablePropertiesAfterDelete(deletedInput.properties);
- }
- deletedInput.isDeleteDisabled = false;
- this.$scope.checkArrowState();
-
- };
-
- let onFailed = (error:any):void => {
- console.log("Error deleting input");
- inputToDelete.isDeleteDisabled = false;
- };
-
- inputToDelete.isDeleteDisabled = true;
- this.addColorToItems([inputToDelete]);
- this.$scope.component.deleteServiceInput(inputToDelete.uniqueId).then((deletedInput:InputModel):void => {
- onSuccess(deletedInput);
- }, onFailed);
- };
-
- // Get confirmation modal text from menu.json
- let state = "deleteInput";
- let title:string = this.$scope.sdcMenu.alertMessages[state].title;
- let message:string = this.$scope.sdcMenu.alertMessages[state].message.format([inputToDelete.name]);
-
- // Open confirmation modal
- this.ModalsHandler.openAlertModal(title, message).then(onDelete);
- };
-
- this.$scope.openEditValueModal = (input:InputModel) => {
- this.ModalsHandler.openEditInputValueModal(input);
- };
-
- this.$scope.openSelectPropertyDataTypeViewModel = (instanceId:string, property:PropertyModel) => {
- //to open the select data type modal
- let selectedInstance = _.find(this.$scope.vfInstancesList, {uniqueId: instanceId});
- this.DataTypesService.selectedInstance = selectedInstance; //set the selected instance on the service for compering the input name on the service & the complex property
- this.DataTypesService.selectedComponentInputs = this.$scope.component.inputs; // set all the service inputs on the data type service
- let filteredPropertiesMap = _.filter(this.$scope.instancePropertiesMap[instanceId], (instanceProperty)=> {
- return instanceProperty.name == property.name;
- });//get all properties under the specific property
- this.DataTypesService.selectedPropertiesName = property.propertiesName;
-
- this.ModalsHandler.openSelectDataTypeModal(property, this.$scope.component, this.$scope.component.properties, filteredPropertiesMap).then((selectedProperty:PropertyModel)=> {
- if (selectedProperty && selectedProperty.propertiesName) {
- let propertyToUpdate:PropertyModel = _.find(selectedInstance.properties, {uniqueId: selectedProperty.uniqueId});
- let existingProperty:PropertyModel = (<PropertyModel>_.find(this.$scope.instancePropertiesMap[instanceId], {uniqueId: propertyToUpdate.uniqueId}));
-
- if (existingProperty) {
- existingProperty.propertiesName = selectedProperty.propertiesName;
- existingProperty.input = selectedProperty.input;
- existingProperty.isAlreadySelected = false;
- } else {
- propertyToUpdate.propertiesName = selectedProperty.propertiesName;
- propertyToUpdate.input = selectedProperty.input;
- this.$scope.instancePropertiesMap[instanceId].push(propertyToUpdate);
-
- }
- this.$scope.checkArrowState();
-
- }
- });
- };
-
-
- this.$scope.openEditPropertyDataTypeViewModel = (property:PropertyModel)=> {
- this.ModalsHandler.openEditPropertyModal(property, this.$scope.component, this.$scope.component.properties, false).then(() => {
- });
- }
- };
-
- private addColorToItems = (inputsCreated:Array<InputModel>):void => {
-
- // Adding color to the new inputs (right table)
- _.forEach(inputsCreated, (input) => {
- input.isNew = true;
- });
-
- // Removing color to the new inputs (right table)
- setTimeout(() => {
- _.forEach(inputsCreated, (input) => {
- input.isNew = false;
- });
- this.$scope.$apply();
- }, 3000);
- };
-}
+/***** DEPRECATED - replaced by prop assignments */
+// 'use strict';
+// import * as _ from "lodash";
+// import {IWorkspaceViewModelScope} from "app/view-models/workspace/workspace-view-model";
+// import {ComponentInstance, InstancesInputsOrPropertiesMapData, Service, IAppMenu, InputModel, PropertyModel, InputPropertyBase} from "app/models";
+// import {DataTypesService} from "app/services";
+// import {ModalsHandler, ResourceType} from "app/utils";
+
+
+// interface IServiceInputsViewModelScope extends IWorkspaceViewModelScope {
+
+// vfInstancesList:Array<ComponentInstance>;
+// instanceInputsMap:InstancesInputsOrPropertiesMapData; //this is tha map object that hold the selected inputs and the inputs we already used
+// instancePropertiesMap:InstancesInputsOrPropertiesMapData;
+// component:Service;
+// sdcMenu:IAppMenu;
+// isViewOnly:boolean;
+// isArrowDisabled:boolean;
+// onArrowPressed():void;
+// checkArrowState():void;
+// loadComponentInputs():void;
+// loadInstanceInputs(instance:ComponentInstance):ng.IPromise<boolean> ;
+// loadInstanceProperties(instance:ComponentInstance):ng.IPromise<boolean> ;
+// loadInputPropertiesForInstance(instanceId:string, input:InputModel):ng.IPromise<boolean> ;
+// loadInputInputs(input:InputModel):ng.IPromise<boolean>;
+// deleteInput(input:InputModel):void
+// openEditValueModal(input:InputModel):void;
+// openSelectPropertyDataTypeViewModel(instanceId:string, property:PropertyModel):void;
+// openEditPropertyDataTypeViewModel(property:PropertyModel):void;
+// dataTypesService:DataTypesService;
+// }
+
+// export class ServiceInputsViewModel {
+
+// static '$inject' = [
+// '$scope',
+// '$q',
+// 'ModalsHandler',
+// 'Sdc.Services.DataTypesService'
+// ];
+
+// constructor(private $scope:IServiceInputsViewModelScope,
+// private $q:ng.IQService,
+// private ModalsHandler:ModalsHandler,
+// private DataTypesService:DataTypesService) {
+// this.initScope();
+// this.$scope.isViewOnly = this.$scope.isViewMode();
+// }
+
+
+// private getInputsOrPropertiesAlreadySelected = (instanceNormalizeName:string, arrayToFilter:Array<InputPropertyBase>):Array<any> => {
+// let alreadySelectedInput = [];
+// _.forEach(arrayToFilter, (inputOrProperty:InputPropertyBase) => {
+// let expectedServiceInputName = instanceNormalizeName + '_' + inputOrProperty.name;
+// let inputAlreadyInService = _.find(this.$scope.component.inputs, (serviceInput:InputModel) => {
+// //Checking if the input prefix is the instance name + '_' + property/input name (prefix because we don't need to check full name for complex dataType)
+// return serviceInput.name.substring(0, expectedServiceInputName.length) === expectedServiceInputName;
+// });
+// if (inputAlreadyInService) {
+// inputOrProperty.isAlreadySelected = true;
+// alreadySelectedInput.push(inputOrProperty);
+// } else {
+// inputOrProperty.isAlreadySelected = false;
+// }
+// });
+// return alreadySelectedInput;
+// };
+
+
+// /*
+// * When loading the screen again, we need to disabled the inputs that already created on the service,
+// * we do that by comparing the service input name, to the instance name + '_' + the resource instance input name.
+// */
+// private disableEnableSelectedInputsOrPropertiesOnInit = (instance:ComponentInstance):void => {
+
+// if (instance.originType === ResourceType.VF) {
+// this.$scope.instanceInputsMap[instance.uniqueId] = this.getInputsOrPropertiesAlreadySelected(instance.normalizedName, instance.inputs);
+// } else {
+// this.$scope.instancePropertiesMap[instance.uniqueId] = this.getInputsOrPropertiesAlreadySelected(instance.normalizedName, instance.properties);
+// }
+// };
+
+// /*
+// * Enable Input/Property after delete
+// */
+// private enableInputsAfterDelete = (propertiesOrInputsDeletes:Array<InputPropertyBase>):void => {
+
+// _.forEach(propertiesOrInputsDeletes, (deletedInputInput:InputPropertyBase) => { //Enable all component instance inputs deleted
+
+// let inputOrPropertyDeleted:InputPropertyBase = _.find(this.$scope.instanceInputsMap[deletedInputInput.componentInstanceId], (inputOrProperty:InputPropertyBase) => {
+// return inputOrProperty.uniqueId === deletedInputInput.uniqueId;
+// });
+// inputOrPropertyDeleted.isAlreadySelected = false;
+// delete _.remove(this.$scope.instanceInputsMap[deletedInputInput.componentInstanceId], {uniqueId: inputOrPropertyDeleted.uniqueId})[0];
+// });
+// };
+
+// /*
+// * Enable Input/Property after delete
+// */
+// private enablePropertiesAfterDelete = (propertiesOrInputsDeletes:Array<InputPropertyBase>):void => {
+
+// _.forEach(propertiesOrInputsDeletes, (deletedInputInput:InputPropertyBase) => { //Enable all component instance inputs deleted
+// let componentInstance = _.find(this.$scope.vfInstancesList, (instance:ComponentInstance) => {
+// return instance.uniqueId === deletedInputInput.componentInstanceId;
+// });
+// let inputOrPropertyDeleted:InputPropertyBase = _.find(this.$scope.instancePropertiesMap[deletedInputInput.componentInstanceId], (inputOrProperty:InputPropertyBase) => {
+// return inputOrProperty.uniqueId === deletedInputInput.uniqueId;
+// });
+
+// let expectedName = componentInstance.normalizedName + '_' + inputOrPropertyDeleted.name;
+// let isAnotherInputExist = _.find(this.$scope.component.inputs, (input:InputModel) => {
+// return input.name.substring(0, expectedName.length) === expectedName;
+// });
+// if (!isAnotherInputExist) {
+// inputOrPropertyDeleted.isAlreadySelected = false;
+// delete _.remove(this.$scope.instancePropertiesMap[deletedInputInput.componentInstanceId], {uniqueId: inputOrPropertyDeleted.uniqueId})[0];
+// }
+// });
+// };
+
+// private initScope = ():void => {
+
+// this.$scope.instanceInputsMap = new InstancesInputsOrPropertiesMapData();
+// this.$scope.instancePropertiesMap = new InstancesInputsOrPropertiesMapData();
+// this.$scope.isLoading = true;
+// this.$scope.isArrowDisabled = true;
+// // Why do we need this? we call this later.
+// //this.$scope.component.getComponentInputs();
+
+// let onSuccess = (componentInstances:Array<ComponentInstance>) => {
+// console.log("component instances loaded: ", componentInstances);
+// this.$scope.vfInstancesList = componentInstances;
+// this.$scope.isLoading = false;
+// };
+
+// //This function will get al component instance for the left table - in
+// // future the instances will be filter according to search text
+// this.$scope.component.getComponentInstancesFilteredByInputsAndProperties().then(onSuccess);
+
+// // This function will get the service inputs for the right table
+// this.$scope.component.getComponentInputs();
+
+// /*
+// * When clicking on instance in the left table, this function will load all instance inputs
+// */
+// this.$scope.loadInstanceInputs = (instance:ComponentInstance):ng.IPromise<boolean> => {
+// let deferred = this.$q.defer<boolean>();
+
+// let onSuccess = (inputs:Array<InputModel>) => {
+// instance.inputs = inputs;
+// this.disableEnableSelectedInputsOrPropertiesOnInit(instance);
+// deferred.resolve(true);
+// };
+
+// let onError = () => {
+// deferred.resolve(false);
+// };
+
+// if (!instance.inputs) {
+// this.$scope.component.getComponentInstanceInputs(instance.uniqueId, instance.componentUid).then(onSuccess, onError);
+// //this.disableEnableSelectedInputs(instance);
+// } else {
+// deferred.resolve(true);
+// }
+// return deferred.promise;
+// };
+
+
+// this.$scope.loadInstanceProperties = (instance:ComponentInstance):ng.IPromise<boolean> => {
+// let deferred = this.$q.defer<boolean>();
+
+// let onSuccess = (properties:Array<PropertyModel>) => {
+// instance.properties = properties;
+// this.disableEnableSelectedInputsOrPropertiesOnInit(instance);
+// deferred.resolve(true);
+// };
+
+// let onError = () => {
+// deferred.resolve(false);
+// };
+
+// if (!instance.properties) {
+// this.$scope.component.getComponentInstanceProperties(instance.uniqueId).then(onSuccess, onError);
+// } else {
+// deferred.resolve(true);
+// }
+// return deferred.promise;
+// };
+
+// /*
+// * When clicking on instance input in the left or right table, this function will load all properties of the selected input
+// */
+// this.$scope.loadInputPropertiesForInstance = (instanceId:string, input:InputModel):ng.IPromise<boolean> => {
+// let deferred = this.$q.defer<boolean>();
+
+// let onSuccess = (properties:Array<PropertyModel>) => {
+// input.properties = properties;
+// deferred.resolve(true);
+// };
+
+// let onError = () => {
+// deferred.resolve(false)
+// };
+
+// if (!input.properties) {
+// this.$scope.component.getComponentInstanceInputProperties(instanceId, input.uniqueId).then(onSuccess, onError);
+// } else {
+// deferred.resolve(true);
+// }
+// return deferred.promise;
+// };
+
+// /*
+// * When clicking on input in the right table, this function will load all inputs of the selected input
+// */
+// this.$scope.loadInputInputs = (input:InputModel):ng.IPromise<boolean> => {
+// let deferred = this.$q.defer<boolean>();
+
+// let onSuccess = () => {
+// deferred.resolve(true);
+// };
+// let onError = () => {
+// deferred.resolve(false);
+// };
+
+// if (!input.inputs) { // Caching, if exists do not get it.
+// this.$scope.component.getServiceInputInputsAndProperties(input.uniqueId).then(onSuccess, onError);
+// } else {
+// deferred.resolve(true);
+// }
+// return deferred.promise;
+// };
+
+// /*
+// * When pressing the arrow, we create service inputs from the inputs selected
+// */
+// this.$scope.onArrowPressed = ():void => {
+// let onSuccess = (inputsCreated:Array<InputModel>) => {
+
+// //disabled all the inputs in the left table
+// _.forEach(this.$scope.instanceInputsMap, (inputs:Array<InputModel>, instanceId:string) => {
+// _.forEach(inputs, (input:InputModel) => {
+// input.isAlreadySelected = true;
+// });
+// });
+// _.forEach(this.$scope.instancePropertiesMap, (properties:Array<PropertyModel>, instanceId:string) => {
+// _.forEach(properties, (property:PropertyModel) => {
+// property.isAlreadySelected = true;
+// });
+// });
+// this.addColorToItems(inputsCreated);
+// };
+
+// let onFailed = (error:any) => {
+// this.$scope.isArrowDisabled = false;
+// console.log("Error declaring input/property");
+// };
+
+// this.$scope.isArrowDisabled = true;
+// this.$scope.component.createInputsFormInstances(this.$scope.instanceInputsMap, this.$scope.instancePropertiesMap).then(onSuccess, onFailed);
+// };
+
+
+// /* Iterates through array of selected inputs and properties and returns true if there is at least one new selection on left */
+// this.$scope.checkArrowState = ()=> {
+
+// let newInputSelected:boolean = _.some(this.$scope.instanceInputsMap, (inputs:Array<InputModel>) => {
+// return _.some(inputs, (input:InputModel)=> {
+// return input.isAlreadySelected === false;
+// });
+// });
+
+// let newPropSelected:boolean = _.some(this.$scope.instancePropertiesMap, (properties:Array<PropertyModel>) => {
+// return _.some(properties, (property:PropertyModel) => {
+// return property.isAlreadySelected === false;
+// });
+// });
+
+// this.$scope.isArrowDisabled = !(newInputSelected || newPropSelected);
+
+// };
+
+// this.$scope.deleteInput = (inputToDelete:InputModel):void => {
+
+// let onDelete = ():void => {
+
+// let onSuccess = (deletedInput:InputModel):void => {
+// if (deletedInput.inputs && deletedInput.inputs.length > 0) { // Enable input declared from input
+// this.enableInputsAfterDelete(deletedInput.inputs);
+// }
+
+// if (deletedInput.properties && deletedInput.properties.length > 0) { // Enable properties
+// this.enablePropertiesAfterDelete(deletedInput.properties);
+// }
+// deletedInput.isDeleteDisabled = false;
+// this.$scope.checkArrowState();
+
+// };
+
+// let onFailed = (error:any):void => {
+// console.log("Error deleting input");
+// inputToDelete.isDeleteDisabled = false;
+// };
+
+// inputToDelete.isDeleteDisabled = true;
+// this.addColorToItems([inputToDelete]);
+// this.$scope.component.deleteServiceInput(inputToDelete.uniqueId).then((deletedInput:InputModel):void => {
+// onSuccess(deletedInput);
+// }, onFailed);
+// };
+
+// // Get confirmation modal text from menu.json
+// let state = "deleteInput";
+// let title:string = this.$scope.sdcMenu.alertMessages[state].title;
+// let message:string = this.$scope.sdcMenu.alertMessages[state].message.format([inputToDelete.name]);
+
+// // Open confirmation modal
+// this.ModalsHandler.openAlertModal(title, message).then(onDelete);
+// };
+
+// this.$scope.openEditValueModal = (input:InputModel) => {
+// this.ModalsHandler.openEditInputValueModal(input);
+// };
+
+// this.$scope.openSelectPropertyDataTypeViewModel = (instanceId:string, property:PropertyModel) => {
+// //to open the select data type modal
+// let selectedInstance = _.find(this.$scope.vfInstancesList, {uniqueId: instanceId});
+// this.DataTypesService.selectedInstance = selectedInstance; //set the selected instance on the service for compering the input name on the service & the complex property
+// this.DataTypesService.selectedComponentInputs = this.$scope.component.inputs; // set all the service inputs on the data type service
+// let filteredPropertiesMap = _.filter(this.$scope.instancePropertiesMap[instanceId], (instanceProperty)=> {
+// return instanceProperty.name == property.name;
+// });//get all properties under the specific property
+// this.DataTypesService.selectedPropertiesName = property.propertiesName;
+
+// this.ModalsHandler.openSelectDataTypeModal(property, this.$scope.component, this.$scope.component.properties, filteredPropertiesMap).then((selectedProperty:PropertyModel)=> {
+// if (selectedProperty && selectedProperty.propertiesName) {
+// let propertyToUpdate:PropertyModel = _.find(selectedInstance.properties, {uniqueId: selectedProperty.uniqueId});
+// let existingProperty:PropertyModel = (<PropertyModel>_.find(this.$scope.instancePropertiesMap[instanceId], {uniqueId: propertyToUpdate.uniqueId}));
+
+// if (existingProperty) {
+// existingProperty.propertiesName = selectedProperty.propertiesName;
+// existingProperty.input = selectedProperty.input;
+// existingProperty.isAlreadySelected = false;
+// } else {
+// propertyToUpdate.propertiesName = selectedProperty.propertiesName;
+// propertyToUpdate.input = selectedProperty.input;
+// this.$scope.instancePropertiesMap[instanceId].push(propertyToUpdate);
+
+// }
+// this.$scope.checkArrowState();
+
+// }
+// });
+// };
+
+
+// this.$scope.openEditPropertyDataTypeViewModel = (property:PropertyModel)=> {
+// this.ModalsHandler.openEditPropertyModal(property, this.$scope.component, this.$scope.component.properties, false).then(() => {
+// });
+// }
+// };
+
+// private addColorToItems = (inputsCreated:Array<InputModel>):void => {
+
+// // Adding color to the new inputs (right table)
+// _.forEach(inputsCreated, (input) => {
+// input.isNew = true;
+// });
+
+// // Removing color to the new inputs (right table)
+// setTimeout(() => {
+// _.forEach(inputsCreated, (input) => {
+// input.isNew = false;
+// });
+// this.$scope.$apply();
+// }, 3000);
+// };
+// }