diff options
author | andre.schmid <andre.schmid@est.tech> | 2022-08-10 14:50:08 +0100 |
---|---|---|
committer | Vasyl Razinkov <vasyl.razinkov@est.tech> | 2022-09-08 18:24:44 +0000 |
commit | 92b18f188105d5ba4b2c469cdfaedc7d2953d593 (patch) | |
tree | df7c7562faa99a76b0e6b5bc079de8d514b35006 /catalog-ui/src/app/models/tosca-get-function.ts | |
parent | c0c2637f201f488a74cb1916f05eece0cc207e9d (diff) |
Support TOSCA functions in Node Filters
Adds support to use tosca functions as value in the node property
filters and substitution filters
Change-Id: Id242691cc9ddd233245b58f052b9f0e2c7bbd66b
Issue-ID: SDC-4128
Signed-off-by: André Schmid <andre.schmid@est.tech>
Diffstat (limited to 'catalog-ui/src/app/models/tosca-get-function.ts')
-rw-r--r-- | catalog-ui/src/app/models/tosca-get-function.ts | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/catalog-ui/src/app/models/tosca-get-function.ts b/catalog-ui/src/app/models/tosca-get-function.ts index 2386338c98..7e6c5ad739 100644 --- a/catalog-ui/src/app/models/tosca-get-function.ts +++ b/catalog-ui/src/app/models/tosca-get-function.ts @@ -23,8 +23,9 @@ import {PropertySource} from "./property-source"; import {ToscaGetFunctionType} from "./tosca-get-function-type"; import {ToscaFunction} from "./tosca-function"; import {ToscaFunctionType} from "./tosca-function-type.enum"; +import {ToscaFunctionParameter} from "./tosca-function-parameter"; -export class ToscaGetFunction implements ToscaFunction { +export class ToscaGetFunction implements ToscaFunction, ToscaFunctionParameter { type: ToscaFunctionType; propertyUniqueId: string; propertyName: string; @@ -39,6 +40,8 @@ export class ToscaGetFunction implements ToscaFunction { if (!toscaGetFunction) { return; } + this.type = toscaGetFunction.type; + this.value = toscaGetFunction.value; this.propertyUniqueId = toscaGetFunction.propertyUniqueId; this.propertyName = toscaGetFunction.propertyName; this.propertySource = toscaGetFunction.propertySource; @@ -50,4 +53,38 @@ export class ToscaGetFunction implements ToscaFunction { } } + public buildValueString(): string { + return JSON.stringify(this.buildValueObject()); + } + + public buildValueObject(): Object { + if (this.functionType == ToscaGetFunctionType.GET_PROPERTY || this.functionType == ToscaGetFunctionType.GET_ATTRIBUTE) { + return this.buildFunctionValueWithPropertySource(); + } + if (this.functionType == ToscaGetFunctionType.GET_INPUT) { + return this.buildGetInputFunctionValue(); + } + return undefined; + } + + private buildGetInputFunctionValue(): Object { + if (this.propertyPathFromSource.length === 1) { + return {[this.functionType.toLowerCase()]: this.propertyPathFromSource[0]}; + } + return {[this.functionType.toLowerCase()]: this.propertyPathFromSource}; + } + + private buildFunctionValueWithPropertySource(): Object { + if (this.propertySource == PropertySource.SELF) { + return { + [this.functionType.toLowerCase()]: [PropertySource.SELF, ...this.propertyPathFromSource] + }; + } + if (this.propertySource == PropertySource.INSTANCE) { + return { + [this.functionType.toLowerCase()]: [this.sourceName, ...this.propertyPathFromSource] + }; + } + } + }
\ No newline at end of file |