summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function')
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.html38
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.less43
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.ts120
-rw-r--r--catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.module.ts48
4 files changed, 249 insertions, 0 deletions
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.html b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.html
new file mode 100644
index 0000000000..ea52f20e91
--- /dev/null
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.html
@@ -0,0 +1,38 @@
+<!--
+ ~ ============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=========================================================
+ -->
+
+<div class="tosca-function">
+ <loader [display]="isLoading" [loaderDelay]="500" [relative]="true" [size]="'large'"></loader>
+ <form class="w-sdc-form">
+ <div class="i-sdc-form-item">
+ <label class="i-sdc-form-label required">TOSCA function</label>
+ <select [(ngModel)]="selectToscaFunction" (change)="onToscaFunctionChange()" name="selectToscaFunction">
+ <option *ngFor="let toscaFunction of toscaFunctions"
+ [ngValue]="toscaFunction">{{toscaFunction}}</option>
+ </select>
+ </div>
+ <div *ngIf="selectToscaFunction" class="i-sdc-form-item">
+ <label class="i-sdc-form-label required">{{dropdownValuesLabel}}</label>
+ <select [(ngModel)]="selectValue" name="selectValue">
+ <option *ngFor="let value of dropdownValues"
+ [ngValue]="value">{{value.name}}</option>
+ </select>
+ </div>
+ </form>
+</div>
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.less b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.less
new file mode 100644
index 0000000000..e1e9b0d20d
--- /dev/null
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.component.less
@@ -0,0 +1,43 @@
+/*
+ * ============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 '../../../../../assets/styles/variables.less';
+
+.input-list {
+ font-family: @font-opensans-regular;
+ user-select: none;
+ padding-top: 12px;
+ padding-bottom: 20px;
+
+ .i-sdc-form-label {
+ font-size: 12px;
+ }
+
+ .w-sdc-form .i-sdc-form-item {
+ margin-bottom: 15px;
+ }
+
+ .side-by-side {
+ display: flex;
+
+ .i-sdc-form-item {
+ flex-basis: 100%;
+ }
+ }
+}
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);
+ }
+ });
+ }
+ }
+}
diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.module.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.module.ts
new file mode 100644
index 0000000000..efe45c3d27
--- /dev/null
+++ b/catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function/tosca-function.module.ts
@@ -0,0 +1,48 @@
+/*
+ * ============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 { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+import { FormsModule } from '@angular/forms';
+import { FormElementsModule } from 'app/ng2/components/ui/form-components/form-elements.module';
+import { UiElementsModule } from 'app/ng2/components/ui/ui-elements.module';
+import { TranslateModule } from '../../../shared/translator/translate.module';
+import { ToscaFunctionComponent } from './tosca-function.component';
+import { SdcUiComponentsModule } from 'onap-ui-angular';
+
+@NgModule({
+ declarations: [
+ ToscaFunctionComponent,
+ ],
+ imports: [
+ CommonModule,
+ FormsModule,
+ FormElementsModule,
+ UiElementsModule,
+ TranslateModule,
+ SdcUiComponentsModule
+ ],
+ exports: [],
+ entryComponents: [
+ ToscaFunctionComponent
+ ],
+ providers: []
+})
+
+export class ToscaFunctionModule {}