diff options
author | KrupaNagabhushan <krupa.nagabhushan@est.tech> | 2022-05-09 20:03:56 +0100 |
---|---|---|
committer | Michael Morris <michael.morris@est.tech> | 2022-05-17 08:24:08 +0000 |
commit | ca30916132c62fa6488b8f891776d262c3eac529 (patch) | |
tree | ec39790bfcf821c03cbd75bd30eaf3d60ee8204f /catalog-ui/src/app/ng2/pages/properties-assignment/tosca-function | |
parent | 61e8668899051e1df738093d1700564fbc22a428 (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')
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 {} |