From 1bbecd7edbdd907a53812d303d378236d23d071e Mon Sep 17 00:00:00 2001 From: MichaelMorris Date: Wed, 25 Jan 2023 16:29:38 +0000 Subject: Fix datatype in model not found Signed-off-by: MichaelMorris Issue-ID: SDC-4348 Change-Id: I648ffd91d719982e55d5ddc786a471f641ece088 --- .../property-types/type-map/type-map-directive.ts | 36 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'catalog-ui/src/app/directives/property-types/type-map/type-map-directive.ts') diff --git a/catalog-ui/src/app/directives/property-types/type-map/type-map-directive.ts b/catalog-ui/src/app/directives/property-types/type-map/type-map-directive.ts index ce8b997035..20470be126 100644 --- a/catalog-ui/src/app/directives/property-types/type-map/type-map-directive.ts +++ b/catalog-ui/src/app/directives/property-types/type-map/type-map-directive.ts @@ -22,9 +22,9 @@ * Created by rcohen on 9/15/2016. */ 'use strict'; -import {ValidationUtils, PROPERTY_TYPES} from "app/utils"; +import {ValidationUtils, PROPERTY_TYPES, PROPERTY_DATA} from "app/utils"; import {DataTypesService} from "app/services"; -import {SchemaProperty, PropertyModel} from "app/models"; +import {SchemaProperty, PropertyModel, DataTypesMap} from "app/models"; import {InstanceFeDetails} from "app/models/instance-fe-details"; import {ToscaGetFunction} from "app/models/tosca-get-function"; import {SubPropertyToscaFunction} from "app/models/sub-property-tosca-function"; @@ -47,6 +47,7 @@ export interface ITypeMapScope extends ng.IScope { constraints:string[]; showAddBtn: boolean; showToscaFunction: Array; + types:DataTypesMap; getValidationPattern(type:string):RegExp; validateIntRange(value:string):boolean; @@ -80,7 +81,8 @@ export class TypeMapDirective implements ng.IDirective { maxLength: '=', constraints: '=', showAddBtn: '=?', - parentProperty: '=' + parentProperty: '=', + types: '=' }; restrict = 'E'; @@ -88,6 +90,32 @@ export class TypeMapDirective implements ng.IDirective { template = (): string => { return require('./type-map-directive.html'); }; + + private isDataTypeForSchemaType = (property:SchemaProperty, types:DataTypesMap):boolean=> { + property.simpleType = ""; + if (property.type && PROPERTY_DATA.TYPES.indexOf(property.type) > -1) { + return false; + } + let simpleType = this.getTypeForDataTypeDerivedFromSimple(property.type, types); + if (simpleType) { + property.simpleType = simpleType; + return false; + } + return true; + }; + + private getTypeForDataTypeDerivedFromSimple = (dataTypeName:string, types:DataTypesMap):string => { + if (!types[dataTypeName]) { + return 'string'; + } + if (types[dataTypeName].derivedFromName == "tosca.datatypes.Root" || types[dataTypeName].properties) { + return null; + } + if (PROPERTY_DATA.SIMPLE_TYPES.indexOf(types[dataTypeName].derivedFromName) > -1) { + return types[dataTypeName].derivedFromName + } + return this.getTypeForDataTypeDerivedFromSimple(types[dataTypeName].derivedFromName, types); + }; link = (scope:ITypeMapScope, element:any, $attr:any) => { scope.showAddBtn = angular.isDefined(scope.showAddBtn) ? scope.showAddBtn : true; @@ -110,7 +138,7 @@ export class TypeMapDirective implements ng.IDirective { //reset valueObjRef and mapKeys when schema type is changed scope.$watchCollection('schemaProperty.type', (newData:any):void => { - scope.isSchemaTypeDataType = this.DataTypesService.isDataTypeForSchemaType(scope.schemaProperty); + scope.isSchemaTypeDataType = this.isDataTypeForSchemaType(scope.schemaProperty, scope.types); if (scope.valueObjRef) { scope.mapKeys = Object.keys(scope.valueObjRef); //keeping another copy of the keys, as the mapKeys gets overridden sometimes -- cgit 1.2.3-korg