diff options
author | andre.schmid <andre.schmid@est.tech> | 2022-09-08 18:55:08 +0100 |
---|---|---|
committer | Michael Morris <michael.morris@est.tech> | 2022-09-19 08:38:43 +0000 |
commit | 0d38a72c022fa93dba0bf052f893e51fb73d3552 (patch) | |
tree | 25f49242e6c6666c39e32abae66e4950fe4e18ed /catalog-ui/src/app/utils | |
parent | 2fe3d879319a34e9802d0bc172fa11fefe771df3 (diff) |
Support TOSCA functions in Node Capability Filters
Adds support to use TOSCA functions as value in the node capability
filters.
Removes the current capability filter component to reuse, with a few
changes, the node property filters component.
Fixes problems with the edition and deletion of node capability
filters.
Change-Id: Ic91242d6cbc24e2ce0f60b84c63e104575bef8a9
Issue-ID: SDC-4173
Signed-off-by: André Schmid <andre.schmid@est.tech>
Diffstat (limited to 'catalog-ui/src/app/utils')
-rw-r--r-- | catalog-ui/src/app/utils/filter-constraint-helper.ts | 83 | ||||
-rw-r--r-- | catalog-ui/src/app/utils/tosca-function-helper.ts | 64 |
2 files changed, 106 insertions, 41 deletions
diff --git a/catalog-ui/src/app/utils/filter-constraint-helper.ts b/catalog-ui/src/app/utils/filter-constraint-helper.ts index bdb3f9ec7a..f1207084a7 100644 --- a/catalog-ui/src/app/utils/filter-constraint-helper.ts +++ b/catalog-ui/src/app/utils/filter-constraint-helper.ts @@ -1,37 +1,42 @@ +/* + * - + * ============LICENSE_START======================================================= + * Copyright (C) 2022 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 {FilterConstraint} from "../models/filter-constraint"; -import {ToscaFunctionType} from "../models/tosca-function-type.enum"; -import {ToscaConcatFunction} from "../models/tosca-concat-function"; -import {ToscaGetFunction} from "../models/tosca-get-function"; -import {YamlFunction} from "../models/yaml-function"; -import {CapabilityFilterConstraint} from "../models/capability-filter-constraint"; +import {ToscaFunctionHelper} from "./tosca-function-helper"; export class FilterConstraintHelper { - public static buildFilterConstraintLabel(constraint: FilterConstraint | CapabilityFilterConstraint): string { + public static buildFilterConstraintLabel(constraint: FilterConstraint): string { let value; - if (this.isValueToscaFunction(constraint.value)) { - switch (constraint.value.type) { - case ToscaFunctionType.CONCAT: - value = new ToscaConcatFunction(constraint.value).buildValueString(); - break; - case ToscaFunctionType.GET_PROPERTY: - case ToscaFunctionType.GET_INPUT: - case ToscaFunctionType.GET_ATTRIBUTE: - value = new ToscaGetFunction(constraint.value).buildValueString(); - break; - case ToscaFunctionType.YAML: - value = new YamlFunction(constraint.value).buildValueString(); - break; - case ToscaFunctionType.STRING: - value = constraint.value.value; - break; - default: - value = JSON.stringify(constraint.value, null, 4); + if (ToscaFunctionHelper.isValueToscaFunction(constraint.value)) { + const toscaFunction = ToscaFunctionHelper.convertObjectToToscaFunction(constraint.value); + if (toscaFunction) { + value = toscaFunction.buildValueString(); + } else { + value = JSON.stringify(constraint.value, null, 4); } } else { value = JSON.stringify(constraint.value, null, 4); } - if (constraint instanceof CapabilityFilterConstraint) { + if (constraint.capabilityName) { return `${constraint.capabilityName}: ${constraint.servicePropertyName} ${this.convertToSymbol(constraint.constraintOperator)} ${value}`; } @@ -40,25 +45,21 @@ export class FilterConstraintHelper { public static convertToSymbol(constraintOperator: string) { switch (constraintOperator) { - case OPERATOR_TYPES.LESS_THAN: return '<'; - case OPERATOR_TYPES.EQUAL: return '='; - case OPERATOR_TYPES.GREATER_THAN: return '>'; - case OPERATOR_TYPES.GREATER_OR_EQUAL: return '>='; - case OPERATOR_TYPES.LESS_OR_EQUAL: return '<='; + case ConstraintOperatorType.LESS_THAN: return '<'; + case ConstraintOperatorType.EQUAL: return '='; + case ConstraintOperatorType.GREATER_THAN: return '>'; + case ConstraintOperatorType.GREATER_OR_EQUAL: return '>='; + case ConstraintOperatorType.LESS_OR_EQUAL: return '<='; } } - private static isValueToscaFunction(value: any): boolean { - return value instanceof Object && 'type' in value && (<any>Object).values(ToscaFunctionType).includes(value.type); - } - } -export const OPERATOR_TYPES = { - EQUAL: 'equal', - GREATER_THAN: 'greater_than', - LESS_THAN: 'less_than', - GREATER_OR_EQUAL: 'greater_or_equal', - LESS_OR_EQUAL: 'less_or_equal' -}; +export enum ConstraintOperatorType { + EQUAL = 'equal', + GREATER_THAN = 'greater_than', + LESS_THAN = 'less_than', + GREATER_OR_EQUAL = 'greater_or_equal', + LESS_OR_EQUAL = 'less_or_equal' +} diff --git a/catalog-ui/src/app/utils/tosca-function-helper.ts b/catalog-ui/src/app/utils/tosca-function-helper.ts new file mode 100644 index 0000000000..714f22ef57 --- /dev/null +++ b/catalog-ui/src/app/utils/tosca-function-helper.ts @@ -0,0 +1,64 @@ +/* + * - + * ============LICENSE_START======================================================= + * Copyright (C) 2022 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 {ToscaFunctionType} from "../models/tosca-function-type.enum"; +import {ToscaConcatFunction} from "../models/tosca-concat-function"; +import {ToscaGetFunction} from "../models/tosca-get-function"; +import {YamlFunction} from "../models/yaml-function"; +import {ToscaFunction} from "../models/tosca-function"; + +export class ToscaFunctionHelper { + + public static convertObjectToToscaFunction(value: any): ToscaFunction { + if (!value || !this.isValueToscaFunction(value)) { + return undefined; + } + + switch (value.type) { + case ToscaFunctionType.CONCAT: + return new ToscaConcatFunction(value); + case ToscaFunctionType.GET_PROPERTY: + case ToscaFunctionType.GET_INPUT: + case ToscaFunctionType.GET_ATTRIBUTE: + return new ToscaGetFunction(value); + case ToscaFunctionType.YAML: + return new YamlFunction(value); + case ToscaFunctionType.STRING: + return <ToscaFunction> { + type: ToscaFunctionType.STRING, + value: value.value, + buildValueString(): string { + return this.value; + }, + buildValueObject(): Object { + return this.value; + } + }; + default: + return undefined; + } + } + + public static isValueToscaFunction(value: any): boolean { + return value instanceof Object && 'type' in value && (<any>Object).values(ToscaFunctionType).includes(value.type); + } + +} |