aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts
diff options
context:
space:
mode:
authorKrupaNagabhushan <krupa.nagabhushan@est.tech>2022-05-09 20:03:56 +0100
committerMichael Morris <michael.morris@est.tech>2022-05-17 08:24:08 +0000
commitca30916132c62fa6488b8f891776d262c3eac529 (patch)
treeec39790bfcf821c03cbd75bd30eaf3d60ee8204f /catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts
parent61e8668899051e1df738093d1700564fbc22a428 (diff)
Generalise Select Input button in Properties Assignment view
Issue-ID: SDC-3996 Signed-off-by: KrupaNagabhushan <krupa.nagabhushan@est.tech> Change-Id: Idb7ff3552ffb68748c688c374625b216ac273499
Diffstat (limited to 'catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts')
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts120
1 files changed, 120 insertions, 0 deletions
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts
new file mode 100644
index 0000000000..22fb8cc358
--- /dev/null
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts
@@ -0,0 +1,120 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Nordix Foundation
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+import {Component} from '@angular/core';
+import {
+ ComponentMetadata, DataTypeModel, PropertyBEModel
+} from 'app/models';
+import {TopologyTemplateService} from "../../../services/component-services/topology-template.service";
+import {WorkspaceService} from "../../workspace/workspace.service";
+import {PropertiesService} from "../../../services/properties.service";
+import {PROPERTY_DATA} from "../../../../utils/constants";
+import {DataTypeService} from "../../../services/data-type.service";
+import {ToscaGetFunctionType} from "../../../../models/tosca-get-function-type.enum";
+import {TranslateService} from "../../../shared/translator/translate.service";
+
+@Component({
+ selector: 'tosca-function',
+ templateUrl: './tosca-function.component.html',
+ styleUrls: ['./tosca-function.component.less'],
+})
+
+export class ToscaFunctionComponent {
+
+ selectToscaFunction;
+ selectValue;
+ isLoading: boolean;
+ propertyType: string;
+ dropdownValues: Array<PropertyBEModel> = [];
+ toscaFunctions: Array<string> = [];
+ dropdownValuesLabel: string;
+
+ private dataTypeProperties: Array<PropertyBEModel> = [];
+ private componentMetadata: ComponentMetadata;
+
+ constructor(private topologyTemplateService: TopologyTemplateService,
+ private workspaceService: WorkspaceService,
+ private propertiesService: PropertiesService,
+ private dataTypeService: DataTypeService,
+ private translateService: TranslateService) {
+ }
+
+ ngOnInit() {
+ this.componentMetadata = this.workspaceService.metadata;
+ this.propertyType = this.propertiesService.getCheckedPropertyType();
+ this.loadToscaFunctions();
+ }
+
+ private loadToscaFunctions(): void {
+ this.toscaFunctions.push(ToscaGetFunctionType.GET_INPUT.toLowerCase());
+ }
+
+ onToscaFunctionChange(): void {
+ this.loadDropdownValueLabel();
+ this.loadDropdownValues();
+ }
+
+ private loadDropdownValueLabel(): void {
+ if (this.selectToscaFunction) {
+ if (this.selectToscaFunction === ToscaGetFunctionType.GET_INPUT.toLowerCase()) {
+ this.dropdownValuesLabel = this.translateService.translate('INPUT_DROPDOWN_LABEL');
+ }
+ }
+ }
+
+ private loadDropdownValues(): void {
+ if (this.selectToscaFunction) {
+ this.dropdownValues = [];
+ if (this.selectToscaFunction === ToscaGetFunctionType.GET_INPUT.toLowerCase()) {
+ this.loadInputValues(this.propertyType);
+ }
+ }
+ }
+
+ private loadInputValues(propertyType: string): void {
+ this.isLoading = true;
+ this.topologyTemplateService.getComponentInputsValues(this.componentMetadata.componentType, this.componentMetadata.uniqueId)
+ .subscribe((response) => {
+ response.inputs.forEach((inputProperty: any) => {
+ if (propertyType === inputProperty.type) {
+ this.dropdownValues.push(inputProperty);
+ } else if (PROPERTY_DATA.SIMPLE_TYPES.indexOf(inputProperty.type) === -1 && inputProperty.type !== propertyType) {
+ this.buildInputDataForComplexType(inputProperty, propertyType);
+ }
+ });
+ }, () => {
+ //error ignored
+ }, () => {
+ this.isLoading = false;
+ });
+ }
+
+ private buildInputDataForComplexType(inputProperty: PropertyBEModel, propertyType: string) {
+ let dataTypeFound: DataTypeModel = this.dataTypeService.getDataTypeByModelAndTypeName(this.componentMetadata.model, inputProperty.type);
+ if (dataTypeFound && dataTypeFound.properties) {
+ dataTypeFound.properties.forEach(dataTypeProperty => {
+ let inputData = inputProperty.name + "->" + dataTypeProperty.name;
+ dataTypeProperty.name = inputData;
+ if (this.dataTypeProperties.indexOf(dataTypeProperty) === -1 && dataTypeProperty.type === propertyType) {
+ this.dropdownValues.push(dataTypeProperty);
+ }
+ });
+ }
+ }
+}