aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/utils
diff options
context:
space:
mode:
authorandre.schmid <andre.schmid@est.tech>2022-09-08 18:55:08 +0100
committerMichael Morris <michael.morris@est.tech>2022-09-19 08:38:43 +0000
commit0d38a72c022fa93dba0bf052f893e51fb73d3552 (patch)
tree25f49242e6c6666c39e32abae66e4950fe4e18ed /catalog-ui/src/app/utils
parent2fe3d879319a34e9802d0bc172fa11fefe771df3 (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.ts83
-rw-r--r--catalog-ui/src/app/utils/tosca-function-helper.ts64
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);
+ }
+
+}