@itwin/grouping-mapping-widget 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/test/GroupPropertyUtils.test.js +61 -1
- package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
- package/lib/cjs/widget/components/GroupPropertyUtils.js +2 -1
- package/lib/cjs/widget/components/GroupPropertyUtils.js.map +1 -1
- package/lib/esm/test/GroupPropertyUtils.test.js +61 -1
- package/lib/esm/test/GroupPropertyUtils.test.js.map +1 -1
- package/lib/esm/widget/components/GroupPropertyUtils.js +2 -1
- package/lib/esm/widget/components/GroupPropertyUtils.js.map +1 -1
- package/package.json +2 -2
|
@@ -301,7 +301,7 @@ describe("Group properties utilities", () => {
|
|
|
301
301
|
const structPropertyClass = PropertyFieldsHelpers_1.createTestPropertyInfo({ classInfo: { id: "0", label: "", name: "Struct:Class" } });
|
|
302
302
|
const structContentFieldDescription = {
|
|
303
303
|
valueFormat: presentation_common_1.PropertyValueFormat.Struct,
|
|
304
|
-
typeName: "
|
|
304
|
+
typeName: "StructType",
|
|
305
305
|
members: [{
|
|
306
306
|
name: "prop1",
|
|
307
307
|
label: "prop one",
|
|
@@ -329,6 +329,66 @@ describe("Group properties utilities", () => {
|
|
|
329
329
|
];
|
|
330
330
|
chai_1.assert.deepEqual(result, expectedResult);
|
|
331
331
|
});
|
|
332
|
+
it("handle simple nested structs correctly", () => {
|
|
333
|
+
const structPropertyClass = PropertyFieldsHelpers_1.createTestPropertyInfo({ classInfo: { id: "0", label: "", name: "Struct:Class" } });
|
|
334
|
+
const structContentFieldDescription = {
|
|
335
|
+
valueFormat: presentation_common_1.PropertyValueFormat.Struct,
|
|
336
|
+
typeName: "StructType",
|
|
337
|
+
members: [{
|
|
338
|
+
name: "prop1",
|
|
339
|
+
label: "prop one",
|
|
340
|
+
type: {
|
|
341
|
+
typeName: "string",
|
|
342
|
+
valueFormat: presentation_common_1.PropertyValueFormat.Primitive,
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
name: "struct1",
|
|
347
|
+
label: "struct1",
|
|
348
|
+
type: {
|
|
349
|
+
typeName: "string",
|
|
350
|
+
valueFormat: presentation_common_1.PropertyValueFormat.Struct,
|
|
351
|
+
members: [{
|
|
352
|
+
name: "prop2",
|
|
353
|
+
label: "prop 2",
|
|
354
|
+
type: {
|
|
355
|
+
typeName: "string",
|
|
356
|
+
valueFormat: presentation_common_1.PropertyValueFormat.Primitive,
|
|
357
|
+
},
|
|
358
|
+
}],
|
|
359
|
+
},
|
|
360
|
+
}],
|
|
361
|
+
};
|
|
362
|
+
const simpleStructField = PropertyFieldsHelpers_1.createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });
|
|
363
|
+
const result = GroupPropertyUtils_1.convertPresentationFields([simpleStructField]);
|
|
364
|
+
const expectedResult = [
|
|
365
|
+
{
|
|
366
|
+
displayLabel: "prop one",
|
|
367
|
+
sourceSchema: "*",
|
|
368
|
+
sourceClassName: "*",
|
|
369
|
+
ecPropertyTraversal: ["PropertyName", "prop1"],
|
|
370
|
+
propertyType: insights_client_1.DataType.String,
|
|
371
|
+
primitiveNavigationClass: "",
|
|
372
|
+
actualECClassName: "Struct:Class",
|
|
373
|
+
parentPropertyClassName: undefined,
|
|
374
|
+
key: "undefined|Struct:Class|PropertyName|prop1",
|
|
375
|
+
categoryLabel: "Test Category",
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
displayLabel: "prop 2",
|
|
379
|
+
sourceSchema: "*",
|
|
380
|
+
sourceClassName: "*",
|
|
381
|
+
ecPropertyTraversal: ["PropertyName", "struct1", "prop2"],
|
|
382
|
+
propertyType: insights_client_1.DataType.String,
|
|
383
|
+
primitiveNavigationClass: "",
|
|
384
|
+
actualECClassName: "Struct:Class",
|
|
385
|
+
parentPropertyClassName: undefined,
|
|
386
|
+
key: "undefined|Struct:Class|PropertyName|struct1|prop2",
|
|
387
|
+
categoryLabel: "Test Category",
|
|
388
|
+
},
|
|
389
|
+
];
|
|
390
|
+
chai_1.assert.deepEqual(result, expectedResult);
|
|
391
|
+
});
|
|
332
392
|
it("handle primitive navigation (Model)", () => {
|
|
333
393
|
const modelClassInfo = PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:Element", label: "Element" });
|
|
334
394
|
const navigationClassInfo = PropertyFieldsHelpers_1.createTestECClassInfo({ name: "BisCore:ModelContainsElements", label: "ModelContainsElements" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupPropertyUtils.test.js","sourceRoot":"","sources":["../../../src/test/GroupPropertyUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type { PropertyMetaData } from \"../widget/components/GroupPropertyUtils\";\nimport { convertPresentationFields, convertToECProperties, findProperties} from \"../widget/components/GroupPropertyUtils\";\nimport { createTestECClassInfo, createTestNestedContentField, createTestPropertiesContentField, createTestPropertyInfo, createTestRelatedClassInfo } from \"./PropertyFieldsHelpers\";\nimport { assert, expect } from \"chai\";\nimport type { NavigationPropertyInfo, StructTypeDescription } from \"@itwin/presentation-common\";\nimport { PropertyValueFormat, RelationshipMeaning } from \"@itwin/presentation-common\";\n\ndescribe(\"Group properties utilities\", () => {\n it(\"one primitive string property\", () => {\n const propertyFields = [createTestPropertiesContentField({ properties: [{ property: createTestPropertyInfo() }] })];\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"multiple primitive properies of different types\", () => {\n const testProperties = [createTestPropertyInfo({ name: \"propString\" }),\n createTestPropertyInfo({ name: \"propInt\", type: \"int\" }),\n createTestPropertyInfo({ name: \"propBool\", type: \"boolean\" }),\n createTestPropertyInfo({ name: \"propEnum\", type: \"enum\" }),\n createTestPropertyInfo({ name: \"propLong\", type: \"long\" }),\n createTestPropertyInfo({ name: \"propNumber\", type: \"number\" }),\n ];\n const propertyFields = testProperties.map((p) => createTestPropertiesContentField({ properties: [{ property: p }] }));\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propBool\"],\n propertyType: DataType.Boolean,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propBool\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propEnum\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propEnum\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propLong\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propLong\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propNumber\"],\n propertyType: DataType.Number,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propNumber\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"one BisCore:ElementOwnsUniqueAspect nested property\", () => {\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:UniqueAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsUniqueAspect\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:ElementOwnsMultiAspects nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:MultiAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:GeometricElement3dHasTypeDefinition nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.RelatedInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Schema:SomeType\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:GeometricElement3dHasTypeDefinition\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n actualECClassName: \"SchemaName:ClassName\",\n categoryLabel: \"Test Category\",\n displayLabel: \"Properties Field\",\n ecPropertyTraversal: [\"TypeDefinition\", \"prop1\"],\n key: \"SchemaName:ClassName|SchemaName:ClassName|TypeDefinition|prop1\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n primitiveNavigationClass: \"\",\n propertyType: DataType.String,\n sourceClassName: \"*\",\n sourceSchema: \"*\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"generate proper external source metadata\", () => {\n\n const propertyName = createTestPropertyInfo({ name: \"name\" });\n const propertyPath = createTestPropertyInfo({ name: \"path\" });\n const repositoryProperties = createTestPropertiesContentField({\n properties: [{ property: propertyName }, { property: propertyPath }],\n });\n\n const nestedExternalSource = createTestNestedContentField({\n nestedFields: [repositoryProperties],\n contentClassInfo: { name: \"BisCore:RepositoryLink\", id: \"\", label: \"\" },\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceIsInRepository\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:RepositoryLink\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ElementIsFromSource\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"Identifier\" }) }],\n });\n\n const nestedSourceAspectField = createTestNestedContentField({\n nestedFields: [propertiesField, nestedExternalSource],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedSourceAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Identifier\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|Identifier\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"name\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|name\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"path\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|path\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"handle simple structs correctly\", () => {\n const structPropertyClass = createTestPropertyInfo({ classInfo: { id: \"0\", label: \"\", name: \"Struct:Class\" } });\n\n const structContentFieldDescription: StructTypeDescription = {\n valueFormat: PropertyValueFormat.Struct,\n typeName: \"NestedContentFieldType\",\n members: [{\n name: \"prop1\",\n label: \"prop one\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n }],\n };\n const simpleStructField = createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });\n\n const result = convertPresentationFields([simpleStructField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"prop one\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"handle primitive navigation (Model)\", () => {\n const modelClassInfo = createTestECClassInfo({ name: \"BisCore:Element\", label: \"Element\" });\n const navigationClassInfo = createTestECClassInfo({ name: \"BisCore:ModelContainsElements\", label: \"ModelContainsElements\" });\n\n const navigationPropertyInfo: NavigationPropertyInfo = {\n classInfo: navigationClassInfo,\n isForwardRelationship: false,\n // Target class does not matter\n targetClassInfo: createTestECClassInfo(),\n isTargetPolymorphic: true,\n\n };\n\n const modelPropertyInfo = createTestPropertyInfo({ name: \"Model\", classInfo: modelClassInfo, type: \"long\", navigationPropertyInfo });\n\n const simpleModelField = createTestPropertiesContentField({ label: \"Model\", properties: [{ property: modelPropertyInfo }] });\n\n const result = convertPresentationFields([simpleModelField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"Model\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n parentPropertyClassName: undefined,\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"convert PropertyMetaData non primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"A Property\",\n sourceSchema: \"Schema\",\n sourceClassName: \"Class\",\n ecPropertyTraversal: [\"PropertyName\", \"SecondProperty\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"Schema\",\n ecClassName: \"Class\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PropertyName.SecondProperty\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Model PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Category PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Category\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Category\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:GeometricElement3dIsInCategory\",\n actualECClassName: \"BisCore:GeometricElement3d\",\n key: \"undefined|BisCore:GeometricElement3d|Category\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Physical Material PropertyMetaData primitive navigation into an ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Physical Material\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"PhysicalMaterial\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:PhysicalElementIsOfPhysicalMaterial\",\n actualECClassName: \"BisCore:PhysicalElement\",\n key: \"undefined|BisCore:PhysicalElement|PhysicalMaterial\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"find properties correctly\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"propString\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.Integer,\n ecPropertyName: \"propInt\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"can find properties generated from a single property\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"cannot find properties generated from a single property in the wrong order\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n expect(result).to.be.of.length(0);\n });\n\n});\n"]}
|
|
1
|
+
{"version":3,"file":"GroupPropertyUtils.test.js","sourceRoot":"","sources":["../../../src/test/GroupPropertyUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type { PropertyMetaData } from \"../widget/components/GroupPropertyUtils\";\nimport { convertPresentationFields, convertToECProperties, findProperties } from \"../widget/components/GroupPropertyUtils\";\nimport { createTestECClassInfo, createTestNestedContentField, createTestPropertiesContentField, createTestPropertyInfo, createTestRelatedClassInfo } from \"./PropertyFieldsHelpers\";\nimport { assert, expect } from \"chai\";\nimport type { NavigationPropertyInfo, StructTypeDescription } from \"@itwin/presentation-common\";\nimport { PropertyValueFormat, RelationshipMeaning } from \"@itwin/presentation-common\";\n\ndescribe(\"Group properties utilities\", () => {\n it(\"one primitive string property\", () => {\n const propertyFields = [createTestPropertiesContentField({ properties: [{ property: createTestPropertyInfo() }] })];\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"multiple primitive properies of different types\", () => {\n const testProperties = [createTestPropertyInfo({ name: \"propString\" }),\n createTestPropertyInfo({ name: \"propInt\", type: \"int\" }),\n createTestPropertyInfo({ name: \"propBool\", type: \"boolean\" }),\n createTestPropertyInfo({ name: \"propEnum\", type: \"enum\" }),\n createTestPropertyInfo({ name: \"propLong\", type: \"long\" }),\n createTestPropertyInfo({ name: \"propNumber\", type: \"number\" }),\n ];\n const propertyFields = testProperties.map((p) => createTestPropertiesContentField({ properties: [{ property: p }] }));\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propBool\"],\n propertyType: DataType.Boolean,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propBool\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propEnum\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propEnum\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propLong\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propLong\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propNumber\"],\n propertyType: DataType.Number,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propNumber\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"one BisCore:ElementOwnsUniqueAspect nested property\", () => {\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:UniqueAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsUniqueAspect\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:ElementOwnsMultiAspects nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:MultiAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:GeometricElement3dHasTypeDefinition nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.RelatedInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Schema:SomeType\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:GeometricElement3dHasTypeDefinition\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n actualECClassName: \"SchemaName:ClassName\",\n categoryLabel: \"Test Category\",\n displayLabel: \"Properties Field\",\n ecPropertyTraversal: [\"TypeDefinition\", \"prop1\"],\n key: \"SchemaName:ClassName|SchemaName:ClassName|TypeDefinition|prop1\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n primitiveNavigationClass: \"\",\n propertyType: DataType.String,\n sourceClassName: \"*\",\n sourceSchema: \"*\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"generate proper external source metadata\", () => {\n\n const propertyName = createTestPropertyInfo({ name: \"name\" });\n const propertyPath = createTestPropertyInfo({ name: \"path\" });\n const repositoryProperties = createTestPropertiesContentField({\n properties: [{ property: propertyName }, { property: propertyPath }],\n });\n\n const nestedExternalSource = createTestNestedContentField({\n nestedFields: [repositoryProperties],\n contentClassInfo: { name: \"BisCore:RepositoryLink\", id: \"\", label: \"\" },\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceIsInRepository\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:RepositoryLink\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ElementIsFromSource\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"Identifier\" }) }],\n });\n\n const nestedSourceAspectField = createTestNestedContentField({\n nestedFields: [propertiesField, nestedExternalSource],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedSourceAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Identifier\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|Identifier\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"name\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|name\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"path\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|path\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"handle simple structs correctly\", () => {\n const structPropertyClass = createTestPropertyInfo({ classInfo: { id: \"0\", label: \"\", name: \"Struct:Class\" } });\n\n const structContentFieldDescription: StructTypeDescription = {\n valueFormat: PropertyValueFormat.Struct,\n typeName: \"StructType\",\n members: [{\n name: \"prop1\",\n label: \"prop one\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n }],\n };\n const simpleStructField = createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });\n\n const result = convertPresentationFields([simpleStructField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"prop one\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"handle simple nested structs correctly\", () => {\n const structPropertyClass = createTestPropertyInfo({ classInfo: { id: \"0\", label: \"\", name: \"Struct:Class\" } });\n\n const structContentFieldDescription: StructTypeDescription = {\n valueFormat: PropertyValueFormat.Struct,\n typeName: \"StructType\",\n members: [{\n name: \"prop1\",\n label: \"prop one\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n },\n {\n name: \"struct1\",\n label: \"struct1\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Struct,\n members: [{\n name: \"prop2\",\n label: \"prop 2\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n }],\n },\n }],\n };\n\n const simpleStructField = createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });\n\n const result = convertPresentationFields([simpleStructField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"prop one\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|prop1\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"prop 2\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"struct1\", \"prop2\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|struct1|prop2\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"handle primitive navigation (Model)\", () => {\n const modelClassInfo = createTestECClassInfo({ name: \"BisCore:Element\", label: \"Element\" });\n const navigationClassInfo = createTestECClassInfo({ name: \"BisCore:ModelContainsElements\", label: \"ModelContainsElements\" });\n\n const navigationPropertyInfo: NavigationPropertyInfo = {\n classInfo: navigationClassInfo,\n isForwardRelationship: false,\n // Target class does not matter\n targetClassInfo: createTestECClassInfo(),\n isTargetPolymorphic: true,\n\n };\n\n const modelPropertyInfo = createTestPropertyInfo({ name: \"Model\", classInfo: modelClassInfo, type: \"long\", navigationPropertyInfo });\n\n const simpleModelField = createTestPropertiesContentField({ label: \"Model\", properties: [{ property: modelPropertyInfo }] });\n\n const result = convertPresentationFields([simpleModelField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"Model\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n parentPropertyClassName: undefined,\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"convert PropertyMetaData non primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"A Property\",\n sourceSchema: \"Schema\",\n sourceClassName: \"Class\",\n ecPropertyTraversal: [\"PropertyName\", \"SecondProperty\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"Schema\",\n ecClassName: \"Class\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PropertyName.SecondProperty\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Model PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Category PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Category\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Category\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:GeometricElement3dIsInCategory\",\n actualECClassName: \"BisCore:GeometricElement3d\",\n key: \"undefined|BisCore:GeometricElement3d|Category\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Physical Material PropertyMetaData primitive navigation into an ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Physical Material\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"PhysicalMaterial\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:PhysicalElementIsOfPhysicalMaterial\",\n actualECClassName: \"BisCore:PhysicalElement\",\n key: \"undefined|BisCore:PhysicalElement|PhysicalMaterial\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"find properties correctly\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"propString\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.Integer,\n ecPropertyName: \"propInt\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"can find properties generated from a single property\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"cannot find properties generated from a single property in the wrong order\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n expect(result).to.be.of.length(0);\n });\n\n});\n"]}
|
|
@@ -68,7 +68,8 @@ const extractPrimitiveStructProperties = (propertyTraversal, members, categoryLa
|
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
else if (member.type.valueFormat === presentation_common_1.PropertyValueFormat.Struct) {
|
|
71
|
-
|
|
71
|
+
const structName = member.name;
|
|
72
|
+
return extractPrimitiveStructProperties([...propertyTraversal, structName], member.type.members, categoryLabel, actualECClassName, parentPropertyClassName);
|
|
72
73
|
}
|
|
73
74
|
return [];
|
|
74
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupPropertyUtils.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupPropertyUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type {\n ContentDescriptorRequestOptions,\n Field,\n KeySet,\n NestedContentField,\n PropertiesField,\n Ruleset,\n RulesetVariable,\n StructFieldMemberDescription,\n} from \"@itwin/presentation-common\";\nimport {\n ContentSpecificationTypes,\n DefaultContentDisplayTypes,\n PropertyValueFormat,\n RelationshipMeaning,\n RuleTypes,\n} from \"@itwin/presentation-common\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { deepEqual } from \"fast-equals\";\n\nexport interface PropertyMetaData {\n displayLabel: string;\n sourceSchema: string;\n sourceClassName: string;\n categoryLabel: string;\n propertyType: DataType;\n actualECClassName: string;\n parentPropertyClassName: string | undefined;\n ecPropertyTraversal: string[];\n primitiveNavigationClass: string;\n key: string;\n}\n\nconst convertType = (type: string): DataType => {\n switch (type) {\n case \"int\":\n case \"enum\":\n case \"long\":\n return DataType.Integer;\n case \"boolean\":\n return DataType.Boolean;\n case \"double\":\n return DataType.Double;\n case \"number\":\n return DataType.Number;\n default:\n return DataType.String;\n }\n};\n\nconst extractPrimitives = (\n propertyTraversal: string[],\n propertyField: PropertiesField\n): PropertyMetaData[] => propertyField.properties.map((property) => {\n const propertyName = property.property.name;\n const displayLabel = propertyField.label;\n // It belongs to this parent class\n const parentPropertyClassName = propertyField.parent?.contentClassInfo.name;\n const primitiveNavigationClass = property.property.navigationPropertyInfo?.classInfo.name ?? \"\";\n /* Presentation assigns primitive navigations properties as a long type due to how it stores the\n ECInstanceId of the class in the meta.ECClassDef table on the C++ layer.\n We are handling this special case.\n */\n const propertyType = primitiveNavigationClass ? DataType.String : convertType(property.property.type);\n const actualECClassName = property.property.classInfo.name;\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return (\n {\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass,\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel: propertyField.category.label,\n }\n );\n});\n\nconst extractPrimitiveStructProperties = (\n propertyTraversal: string[],\n members: StructFieldMemberDescription[],\n categoryLabel: string,\n actualECClassName: string,\n parentPropertyClassName?: string,\n): PropertyMetaData[] => members.flatMap((member) => {\n if (member.type.valueFormat === PropertyValueFormat.Primitive) {\n const propertyName = member.name;\n const displayLabel = member.label;\n const propertyType = convertType(member.type.typeName);\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return ({\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass: \"\",\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel,\n });\n\n } else if (member.type.valueFormat === PropertyValueFormat.Struct) {\n return extractPrimitiveStructProperties(\n propertyTraversal,\n member.type.members,\n categoryLabel,\n actualECClassName,\n parentPropertyClassName\n );\n }\n\n return [];\n});\n\nconst extractStruct = (property: Field) => {\n if (property.type.valueFormat !== PropertyValueFormat.Struct) {\n return [];\n }\n\n const columnName = (property as PropertiesField).properties[0]\n .property.name;\n const actualECClassName = (property as PropertiesField).properties[0].property.classInfo.name;\n return extractPrimitiveStructProperties(\n [columnName],\n property.type.members,\n property.category.label,\n actualECClassName\n );\n};\n\nconst extractNested = (propertyTraversal: string[], propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n return extractPrimitives([...propertyTraversal], property as PropertiesField);\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n // Hardcoded navigation to external source repository metadata.\n if (nestedContentField.contentClassInfo.name === \"BisCore:RepositoryLink\") {\n return extractNested([...propertyTraversal, \"Source\", \"Repository\"], nestedContentField.nestedFields);\n }\n break;\n }\n\n switch (nestedContentField.relationshipMeaning) {\n // Aspects are not looked at again. Extraction does not support aspects within navigations.\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([...propertyTraversal, \"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertPresentationFields = (propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n const extractedPrimitives = extractPrimitives([], property as PropertiesField);\n for (const extractedPrimitive of extractedPrimitives) {\n extractedPrimitive.sourceSchema = \"*\";\n extractedPrimitive.sourceClassName = \"*\";\n return extractedPrimitive;\n }\n break;\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n break;\n }\n switch (nestedContentField.relationshipMeaning) {\n case RelationshipMeaning.SameInstance: {\n // Check for aspects.\n if (\n (nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsUniqueAspect\" ||\n nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsMultiAspects\")\n ) {\n const fullClassName = nestedContentField.contentClassInfo.name;\n const sourceSchema = fullClassName.split(\":\")[0];\n const sourceClassName = fullClassName.split(\":\")[1];\n const extractedNested = extractNested([], nestedContentField.nestedFields);\n const aspectExtractedNested = extractedNested.map((ecProperty) => ({ ...ecProperty, sourceSchema, sourceClassName }));\n return aspectExtractedNested;\n }\n break;\n }\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([\"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertToECProperties = (property: PropertyMetaData): ECProperty[] => {\n const ecProperty: ECProperty = {\n ecSchemaName: property.sourceSchema,\n ecClassName: property.sourceClassName,\n ecPropertyType: property.propertyType,\n ecPropertyName: \"\",\n };\n switch (property.primitiveNavigationClass) {\n // Hardcode Models navigation path and label behavior\n case \"BisCore:ModelContainsElements\": {\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n }\n // Hardcode Category and Physical Material navigation path and label behavior\n case \"BisCore:GeometricElement3dIsInCategory\":\n case \"BisCore:PhysicalElementIsOfPhysicalMaterial\":\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n default: {\n return [\n {\n ...ecProperty,\n ecPropertyName: property.ecPropertyTraversal.join(\".\"),\n },\n ];\n }\n }\n};\n\nexport const findProperties = (ecProperties: ECProperty[], propertiesMetaData: PropertyMetaData[]) => {\n let ecPropertiesCopy = [...ecProperties];\n const propertiesMetaDataResult: PropertyMetaData[] = new Array<PropertyMetaData>();\n let notFound = false;\n while (ecPropertiesCopy.length !== 0) {\n for (let i = 0; i < propertiesMetaData.length; i++) {\n const generatedProperty = convertToECProperties(propertiesMetaData[i]);\n const slicedEcProperties = ecPropertiesCopy.slice(0, generatedProperty.length);\n if (deepEqual(generatedProperty, slicedEcProperties)) {\n propertiesMetaDataResult.push(propertiesMetaData[i]);\n ecPropertiesCopy = ecPropertiesCopy.slice(generatedProperty.length);\n break;\n }\n if (i === propertiesMetaData.length - 1) {\n notFound = true;\n }\n }\n if (notFound)\n break;\n }\n return notFound ? [] : propertiesMetaDataResult;\n};\n\nexport const fetchPresentationDescriptor = async (iModelConnection: IModelConnection, keySet: KeySet) => {\n const ruleSet: Ruleset = {\n id: \"gmw-element-properties\",\n rules: [\n {\n ruleType: RuleTypes.Content,\n specifications: [\n {\n specType: ContentSpecificationTypes.SelectedNodeInstances,\n },\n ],\n }],\n };\n const requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable> = {\n imodel: iModelConnection,\n keys: keySet,\n rulesetOrId: ruleSet,\n displayType: DefaultContentDisplayTypes.PropertyPane,\n };\n const descriptor = await Presentation.presentation.getContentDescriptor(\n requestOptions\n );\n return descriptor;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"GroupPropertyUtils.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupPropertyUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type {\n ContentDescriptorRequestOptions,\n Field,\n KeySet,\n NestedContentField,\n PropertiesField,\n Ruleset,\n RulesetVariable,\n StructFieldMemberDescription,\n} from \"@itwin/presentation-common\";\nimport {\n ContentSpecificationTypes,\n DefaultContentDisplayTypes,\n PropertyValueFormat,\n RelationshipMeaning,\n RuleTypes,\n} from \"@itwin/presentation-common\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { deepEqual } from \"fast-equals\";\n\nexport interface PropertyMetaData {\n displayLabel: string;\n sourceSchema: string;\n sourceClassName: string;\n categoryLabel: string;\n propertyType: DataType;\n actualECClassName: string;\n parentPropertyClassName: string | undefined;\n ecPropertyTraversal: string[];\n primitiveNavigationClass: string;\n key: string;\n}\n\nconst convertType = (type: string): DataType => {\n switch (type) {\n case \"int\":\n case \"enum\":\n case \"long\":\n return DataType.Integer;\n case \"boolean\":\n return DataType.Boolean;\n case \"double\":\n return DataType.Double;\n case \"number\":\n return DataType.Number;\n default:\n return DataType.String;\n }\n};\n\nconst extractPrimitives = (\n propertyTraversal: string[],\n propertyField: PropertiesField\n): PropertyMetaData[] => propertyField.properties.map((property) => {\n const propertyName = property.property.name;\n const displayLabel = propertyField.label;\n // It belongs to this parent class\n const parentPropertyClassName = propertyField.parent?.contentClassInfo.name;\n const primitiveNavigationClass = property.property.navigationPropertyInfo?.classInfo.name ?? \"\";\n /* Presentation assigns primitive navigations properties as a long type due to how it stores the\n ECInstanceId of the class in the meta.ECClassDef table on the C++ layer.\n We are handling this special case.\n */\n const propertyType = primitiveNavigationClass ? DataType.String : convertType(property.property.type);\n const actualECClassName = property.property.classInfo.name;\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return (\n {\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass,\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel: propertyField.category.label,\n }\n );\n});\n\nconst extractPrimitiveStructProperties = (\n propertyTraversal: string[],\n members: StructFieldMemberDescription[],\n categoryLabel: string,\n actualECClassName: string,\n parentPropertyClassName?: string,\n): PropertyMetaData[] => members.flatMap((member) => {\n if (member.type.valueFormat === PropertyValueFormat.Primitive) {\n const propertyName = member.name;\n const displayLabel = member.label;\n const propertyType = convertType(member.type.typeName);\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return ({\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass: \"\",\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel,\n });\n\n } else if (member.type.valueFormat === PropertyValueFormat.Struct) {\n const structName = member.name;\n return extractPrimitiveStructProperties(\n [...propertyTraversal, structName],\n member.type.members,\n categoryLabel,\n actualECClassName,\n parentPropertyClassName\n );\n }\n\n return [];\n});\n\nconst extractStruct = (property: Field) => {\n if (property.type.valueFormat !== PropertyValueFormat.Struct) {\n return [];\n }\n\n const columnName = (property as PropertiesField).properties[0]\n .property.name;\n const actualECClassName = (property as PropertiesField).properties[0].property.classInfo.name;\n return extractPrimitiveStructProperties(\n [columnName],\n property.type.members,\n property.category.label,\n actualECClassName\n );\n};\n\nconst extractNested = (propertyTraversal: string[], propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n return extractPrimitives([...propertyTraversal], property as PropertiesField);\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n // Hardcoded navigation to external source repository metadata.\n if (nestedContentField.contentClassInfo.name === \"BisCore:RepositoryLink\") {\n return extractNested([...propertyTraversal, \"Source\", \"Repository\"], nestedContentField.nestedFields);\n }\n break;\n }\n\n switch (nestedContentField.relationshipMeaning) {\n // Aspects are not looked at again. Extraction does not support aspects within navigations.\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([...propertyTraversal, \"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertPresentationFields = (propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n const extractedPrimitives = extractPrimitives([], property as PropertiesField);\n for (const extractedPrimitive of extractedPrimitives) {\n extractedPrimitive.sourceSchema = \"*\";\n extractedPrimitive.sourceClassName = \"*\";\n return extractedPrimitive;\n }\n break;\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n break;\n }\n switch (nestedContentField.relationshipMeaning) {\n case RelationshipMeaning.SameInstance: {\n // Check for aspects.\n if (\n (nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsUniqueAspect\" ||\n nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsMultiAspects\")\n ) {\n const fullClassName = nestedContentField.contentClassInfo.name;\n const sourceSchema = fullClassName.split(\":\")[0];\n const sourceClassName = fullClassName.split(\":\")[1];\n const extractedNested = extractNested([], nestedContentField.nestedFields);\n const aspectExtractedNested = extractedNested.map((ecProperty) => ({ ...ecProperty, sourceSchema, sourceClassName }));\n return aspectExtractedNested;\n }\n break;\n }\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([\"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertToECProperties = (property: PropertyMetaData): ECProperty[] => {\n const ecProperty: ECProperty = {\n ecSchemaName: property.sourceSchema,\n ecClassName: property.sourceClassName,\n ecPropertyType: property.propertyType,\n ecPropertyName: \"\",\n };\n switch (property.primitiveNavigationClass) {\n // Hardcode Models navigation path and label behavior\n case \"BisCore:ModelContainsElements\": {\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n }\n // Hardcode Category and Physical Material navigation path and label behavior\n case \"BisCore:GeometricElement3dIsInCategory\":\n case \"BisCore:PhysicalElementIsOfPhysicalMaterial\":\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n default: {\n return [\n {\n ...ecProperty,\n ecPropertyName: property.ecPropertyTraversal.join(\".\"),\n },\n ];\n }\n }\n};\n\nexport const findProperties = (ecProperties: ECProperty[], propertiesMetaData: PropertyMetaData[]) => {\n let ecPropertiesCopy = [...ecProperties];\n const propertiesMetaDataResult: PropertyMetaData[] = new Array<PropertyMetaData>();\n let notFound = false;\n while (ecPropertiesCopy.length !== 0) {\n for (let i = 0; i < propertiesMetaData.length; i++) {\n const generatedProperty = convertToECProperties(propertiesMetaData[i]);\n const slicedEcProperties = ecPropertiesCopy.slice(0, generatedProperty.length);\n if (deepEqual(generatedProperty, slicedEcProperties)) {\n propertiesMetaDataResult.push(propertiesMetaData[i]);\n ecPropertiesCopy = ecPropertiesCopy.slice(generatedProperty.length);\n break;\n }\n if (i === propertiesMetaData.length - 1) {\n notFound = true;\n }\n }\n if (notFound)\n break;\n }\n return notFound ? [] : propertiesMetaDataResult;\n};\n\nexport const fetchPresentationDescriptor = async (iModelConnection: IModelConnection, keySet: KeySet) => {\n const ruleSet: Ruleset = {\n id: \"gmw-element-properties\",\n rules: [\n {\n ruleType: RuleTypes.Content,\n specifications: [\n {\n specType: ContentSpecificationTypes.SelectedNodeInstances,\n },\n ],\n }],\n };\n const requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable> = {\n imodel: iModelConnection,\n keys: keySet,\n rulesetOrId: ruleSet,\n displayType: DefaultContentDisplayTypes.PropertyPane,\n };\n const descriptor = await Presentation.presentation.getContentDescriptor(\n requestOptions\n );\n return descriptor;\n};\n"]}
|
|
@@ -299,7 +299,7 @@ describe("Group properties utilities", () => {
|
|
|
299
299
|
const structPropertyClass = createTestPropertyInfo({ classInfo: { id: "0", label: "", name: "Struct:Class" } });
|
|
300
300
|
const structContentFieldDescription = {
|
|
301
301
|
valueFormat: PropertyValueFormat.Struct,
|
|
302
|
-
typeName: "
|
|
302
|
+
typeName: "StructType",
|
|
303
303
|
members: [{
|
|
304
304
|
name: "prop1",
|
|
305
305
|
label: "prop one",
|
|
@@ -327,6 +327,66 @@ describe("Group properties utilities", () => {
|
|
|
327
327
|
];
|
|
328
328
|
assert.deepEqual(result, expectedResult);
|
|
329
329
|
});
|
|
330
|
+
it("handle simple nested structs correctly", () => {
|
|
331
|
+
const structPropertyClass = createTestPropertyInfo({ classInfo: { id: "0", label: "", name: "Struct:Class" } });
|
|
332
|
+
const structContentFieldDescription = {
|
|
333
|
+
valueFormat: PropertyValueFormat.Struct,
|
|
334
|
+
typeName: "StructType",
|
|
335
|
+
members: [{
|
|
336
|
+
name: "prop1",
|
|
337
|
+
label: "prop one",
|
|
338
|
+
type: {
|
|
339
|
+
typeName: "string",
|
|
340
|
+
valueFormat: PropertyValueFormat.Primitive,
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
name: "struct1",
|
|
345
|
+
label: "struct1",
|
|
346
|
+
type: {
|
|
347
|
+
typeName: "string",
|
|
348
|
+
valueFormat: PropertyValueFormat.Struct,
|
|
349
|
+
members: [{
|
|
350
|
+
name: "prop2",
|
|
351
|
+
label: "prop 2",
|
|
352
|
+
type: {
|
|
353
|
+
typeName: "string",
|
|
354
|
+
valueFormat: PropertyValueFormat.Primitive,
|
|
355
|
+
},
|
|
356
|
+
}],
|
|
357
|
+
},
|
|
358
|
+
}],
|
|
359
|
+
};
|
|
360
|
+
const simpleStructField = createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });
|
|
361
|
+
const result = convertPresentationFields([simpleStructField]);
|
|
362
|
+
const expectedResult = [
|
|
363
|
+
{
|
|
364
|
+
displayLabel: "prop one",
|
|
365
|
+
sourceSchema: "*",
|
|
366
|
+
sourceClassName: "*",
|
|
367
|
+
ecPropertyTraversal: ["PropertyName", "prop1"],
|
|
368
|
+
propertyType: DataType.String,
|
|
369
|
+
primitiveNavigationClass: "",
|
|
370
|
+
actualECClassName: "Struct:Class",
|
|
371
|
+
parentPropertyClassName: undefined,
|
|
372
|
+
key: "undefined|Struct:Class|PropertyName|prop1",
|
|
373
|
+
categoryLabel: "Test Category",
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
displayLabel: "prop 2",
|
|
377
|
+
sourceSchema: "*",
|
|
378
|
+
sourceClassName: "*",
|
|
379
|
+
ecPropertyTraversal: ["PropertyName", "struct1", "prop2"],
|
|
380
|
+
propertyType: DataType.String,
|
|
381
|
+
primitiveNavigationClass: "",
|
|
382
|
+
actualECClassName: "Struct:Class",
|
|
383
|
+
parentPropertyClassName: undefined,
|
|
384
|
+
key: "undefined|Struct:Class|PropertyName|struct1|prop2",
|
|
385
|
+
categoryLabel: "Test Category",
|
|
386
|
+
},
|
|
387
|
+
];
|
|
388
|
+
assert.deepEqual(result, expectedResult);
|
|
389
|
+
});
|
|
330
390
|
it("handle primitive navigation (Model)", () => {
|
|
331
391
|
const modelClassInfo = createTestECClassInfo({ name: "BisCore:Element", label: "Element" });
|
|
332
392
|
const navigationClassInfo = createTestECClassInfo({ name: "BisCore:ModelContainsElements", label: "ModelContainsElements" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupPropertyUtils.test.js","sourceRoot":"","sources":["../../../src/test/GroupPropertyUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type { PropertyMetaData } from \"../widget/components/GroupPropertyUtils\";\nimport { convertPresentationFields, convertToECProperties, findProperties} from \"../widget/components/GroupPropertyUtils\";\nimport { createTestECClassInfo, createTestNestedContentField, createTestPropertiesContentField, createTestPropertyInfo, createTestRelatedClassInfo } from \"./PropertyFieldsHelpers\";\nimport { assert, expect } from \"chai\";\nimport type { NavigationPropertyInfo, StructTypeDescription } from \"@itwin/presentation-common\";\nimport { PropertyValueFormat, RelationshipMeaning } from \"@itwin/presentation-common\";\n\ndescribe(\"Group properties utilities\", () => {\n it(\"one primitive string property\", () => {\n const propertyFields = [createTestPropertiesContentField({ properties: [{ property: createTestPropertyInfo() }] })];\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"multiple primitive properies of different types\", () => {\n const testProperties = [createTestPropertyInfo({ name: \"propString\" }),\n createTestPropertyInfo({ name: \"propInt\", type: \"int\" }),\n createTestPropertyInfo({ name: \"propBool\", type: \"boolean\" }),\n createTestPropertyInfo({ name: \"propEnum\", type: \"enum\" }),\n createTestPropertyInfo({ name: \"propLong\", type: \"long\" }),\n createTestPropertyInfo({ name: \"propNumber\", type: \"number\" }),\n ];\n const propertyFields = testProperties.map((p) => createTestPropertiesContentField({ properties: [{ property: p }] }));\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propBool\"],\n propertyType: DataType.Boolean,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propBool\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propEnum\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propEnum\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propLong\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propLong\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propNumber\"],\n propertyType: DataType.Number,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propNumber\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"one BisCore:ElementOwnsUniqueAspect nested property\", () => {\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:UniqueAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsUniqueAspect\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:ElementOwnsMultiAspects nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:MultiAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:GeometricElement3dHasTypeDefinition nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.RelatedInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Schema:SomeType\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:GeometricElement3dHasTypeDefinition\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n actualECClassName: \"SchemaName:ClassName\",\n categoryLabel: \"Test Category\",\n displayLabel: \"Properties Field\",\n ecPropertyTraversal: [\"TypeDefinition\", \"prop1\"],\n key: \"SchemaName:ClassName|SchemaName:ClassName|TypeDefinition|prop1\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n primitiveNavigationClass: \"\",\n propertyType: DataType.String,\n sourceClassName: \"*\",\n sourceSchema: \"*\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"generate proper external source metadata\", () => {\n\n const propertyName = createTestPropertyInfo({ name: \"name\" });\n const propertyPath = createTestPropertyInfo({ name: \"path\" });\n const repositoryProperties = createTestPropertiesContentField({\n properties: [{ property: propertyName }, { property: propertyPath }],\n });\n\n const nestedExternalSource = createTestNestedContentField({\n nestedFields: [repositoryProperties],\n contentClassInfo: { name: \"BisCore:RepositoryLink\", id: \"\", label: \"\" },\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceIsInRepository\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:RepositoryLink\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ElementIsFromSource\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"Identifier\" }) }],\n });\n\n const nestedSourceAspectField = createTestNestedContentField({\n nestedFields: [propertiesField, nestedExternalSource],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedSourceAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Identifier\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|Identifier\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"name\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|name\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"path\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|path\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"handle simple structs correctly\", () => {\n const structPropertyClass = createTestPropertyInfo({ classInfo: { id: \"0\", label: \"\", name: \"Struct:Class\" } });\n\n const structContentFieldDescription: StructTypeDescription = {\n valueFormat: PropertyValueFormat.Struct,\n typeName: \"NestedContentFieldType\",\n members: [{\n name: \"prop1\",\n label: \"prop one\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n }],\n };\n const simpleStructField = createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });\n\n const result = convertPresentationFields([simpleStructField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"prop one\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"handle primitive navigation (Model)\", () => {\n const modelClassInfo = createTestECClassInfo({ name: \"BisCore:Element\", label: \"Element\" });\n const navigationClassInfo = createTestECClassInfo({ name: \"BisCore:ModelContainsElements\", label: \"ModelContainsElements\" });\n\n const navigationPropertyInfo: NavigationPropertyInfo = {\n classInfo: navigationClassInfo,\n isForwardRelationship: false,\n // Target class does not matter\n targetClassInfo: createTestECClassInfo(),\n isTargetPolymorphic: true,\n\n };\n\n const modelPropertyInfo = createTestPropertyInfo({ name: \"Model\", classInfo: modelClassInfo, type: \"long\", navigationPropertyInfo });\n\n const simpleModelField = createTestPropertiesContentField({ label: \"Model\", properties: [{ property: modelPropertyInfo }] });\n\n const result = convertPresentationFields([simpleModelField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"Model\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n parentPropertyClassName: undefined,\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"convert PropertyMetaData non primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"A Property\",\n sourceSchema: \"Schema\",\n sourceClassName: \"Class\",\n ecPropertyTraversal: [\"PropertyName\", \"SecondProperty\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"Schema\",\n ecClassName: \"Class\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PropertyName.SecondProperty\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Model PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Category PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Category\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Category\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:GeometricElement3dIsInCategory\",\n actualECClassName: \"BisCore:GeometricElement3d\",\n key: \"undefined|BisCore:GeometricElement3d|Category\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Physical Material PropertyMetaData primitive navigation into an ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Physical Material\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"PhysicalMaterial\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:PhysicalElementIsOfPhysicalMaterial\",\n actualECClassName: \"BisCore:PhysicalElement\",\n key: \"undefined|BisCore:PhysicalElement|PhysicalMaterial\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"find properties correctly\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"propString\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.Integer,\n ecPropertyName: \"propInt\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"can find properties generated from a single property\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"cannot find properties generated from a single property in the wrong order\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n expect(result).to.be.of.length(0);\n });\n\n});\n"]}
|
|
1
|
+
{"version":3,"file":"GroupPropertyUtils.test.js","sourceRoot":"","sources":["../../../src/test/GroupPropertyUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type { PropertyMetaData } from \"../widget/components/GroupPropertyUtils\";\nimport { convertPresentationFields, convertToECProperties, findProperties } from \"../widget/components/GroupPropertyUtils\";\nimport { createTestECClassInfo, createTestNestedContentField, createTestPropertiesContentField, createTestPropertyInfo, createTestRelatedClassInfo } from \"./PropertyFieldsHelpers\";\nimport { assert, expect } from \"chai\";\nimport type { NavigationPropertyInfo, StructTypeDescription } from \"@itwin/presentation-common\";\nimport { PropertyValueFormat, RelationshipMeaning } from \"@itwin/presentation-common\";\n\ndescribe(\"Group properties utilities\", () => {\n it(\"one primitive string property\", () => {\n const propertyFields = [createTestPropertiesContentField({ properties: [{ property: createTestPropertyInfo() }] })];\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"multiple primitive properies of different types\", () => {\n const testProperties = [createTestPropertyInfo({ name: \"propString\" }),\n createTestPropertyInfo({ name: \"propInt\", type: \"int\" }),\n createTestPropertyInfo({ name: \"propBool\", type: \"boolean\" }),\n createTestPropertyInfo({ name: \"propEnum\", type: \"enum\" }),\n createTestPropertyInfo({ name: \"propLong\", type: \"long\" }),\n createTestPropertyInfo({ name: \"propNumber\", type: \"number\" }),\n ];\n const propertyFields = testProperties.map((p) => createTestPropertiesContentField({ properties: [{ property: p }] }));\n\n const result = convertPresentationFields(propertyFields);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propBool\"],\n propertyType: DataType.Boolean,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propBool\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propEnum\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propEnum\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propLong\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propLong\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propNumber\"],\n propertyType: DataType.Number,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propNumber\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"one BisCore:ElementOwnsUniqueAspect nested property\", () => {\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:UniqueAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsUniqueAspect\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:ElementOwnsMultiAspects nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Some:MultiAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"one BisCore:GeometricElement3dHasTypeDefinition nested property\", () => {\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"prop1\" }) }],\n });\n\n const nestedAspectField = createTestNestedContentField({\n nestedFields: [propertiesField],\n relationshipMeaning: RelationshipMeaning.RelatedInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"Schema:SomeType\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:GeometricElement3dHasTypeDefinition\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n actualECClassName: \"SchemaName:ClassName\",\n categoryLabel: \"Test Category\",\n displayLabel: \"Properties Field\",\n ecPropertyTraversal: [\"TypeDefinition\", \"prop1\"],\n key: \"SchemaName:ClassName|SchemaName:ClassName|TypeDefinition|prop1\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n primitiveNavigationClass: \"\",\n propertyType: DataType.String,\n sourceClassName: \"*\",\n sourceSchema: \"*\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"generate proper external source metadata\", () => {\n\n const propertyName = createTestPropertyInfo({ name: \"name\" });\n const propertyPath = createTestPropertyInfo({ name: \"path\" });\n const repositoryProperties = createTestPropertiesContentField({\n properties: [{ property: propertyName }, { property: propertyPath }],\n });\n\n const nestedExternalSource = createTestNestedContentField({\n nestedFields: [repositoryProperties],\n contentClassInfo: { name: \"BisCore:RepositoryLink\", id: \"\", label: \"\" },\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceIsInRepository\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:RepositoryLink\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ElementIsFromSource\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ExternalSource\" }),\n targetClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const propertiesField = createTestPropertiesContentField({\n properties: [{ property: createTestPropertyInfo({ name: \"Identifier\" }) }],\n });\n\n const nestedSourceAspectField = createTestNestedContentField({\n nestedFields: [propertiesField, nestedExternalSource],\n relationshipMeaning: RelationshipMeaning.SameInstance,\n pathToPrimaryClass: [\n createTestRelatedClassInfo({\n sourceClassInfo: createTestECClassInfo({ name: \"BisCore:ExternalSourceAspect\" }),\n relationshipInfo: createTestECClassInfo({ name: \"BisCore:ElementOwnsMultiAspects\" }),\n targetClassInfo: createTestECClassInfo({ name: \"Schema:Class\" }),\n isForwardRelationship: false,\n isPolymorphicRelationship: true,\n }),\n ],\n });\n\n const result = convertPresentationFields([nestedSourceAspectField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Identifier\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"SchemaName:ClassName\",\n key: \"SchemaName:ClassName|SchemaName:ClassName|Identifier\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"name\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|name\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"SchemaName\",\n sourceClassName: \"ClassName\",\n ecPropertyTraversal: [\"Source\", \"Repository\", \"path\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: \"BisCore:RepositoryLink\",\n key: \"BisCore:RepositoryLink|SchemaName:ClassName|Source|Repository|path\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n\n });\n\n it(\"handle simple structs correctly\", () => {\n const structPropertyClass = createTestPropertyInfo({ classInfo: { id: \"0\", label: \"\", name: \"Struct:Class\" } });\n\n const structContentFieldDescription: StructTypeDescription = {\n valueFormat: PropertyValueFormat.Struct,\n typeName: \"StructType\",\n members: [{\n name: \"prop1\",\n label: \"prop one\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n }],\n };\n const simpleStructField = createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });\n\n const result = convertPresentationFields([simpleStructField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"prop one\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|prop1\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"handle simple nested structs correctly\", () => {\n const structPropertyClass = createTestPropertyInfo({ classInfo: { id: \"0\", label: \"\", name: \"Struct:Class\" } });\n\n const structContentFieldDescription: StructTypeDescription = {\n valueFormat: PropertyValueFormat.Struct,\n typeName: \"StructType\",\n members: [{\n name: \"prop1\",\n label: \"prop one\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n },\n {\n name: \"struct1\",\n label: \"struct1\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Struct,\n members: [{\n name: \"prop2\",\n label: \"prop 2\",\n type: {\n typeName: \"string\",\n valueFormat: PropertyValueFormat.Primitive,\n },\n }],\n },\n }],\n };\n\n const simpleStructField = createTestPropertiesContentField({ properties: [{ property: structPropertyClass }], type: structContentFieldDescription });\n\n const result = convertPresentationFields([simpleStructField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"prop one\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"prop1\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|prop1\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"prop 2\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"PropertyName\", \"struct1\", \"prop2\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"Struct:Class\",\n parentPropertyClassName: undefined,\n key: \"undefined|Struct:Class|PropertyName|struct1|prop2\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"handle primitive navigation (Model)\", () => {\n const modelClassInfo = createTestECClassInfo({ name: \"BisCore:Element\", label: \"Element\" });\n const navigationClassInfo = createTestECClassInfo({ name: \"BisCore:ModelContainsElements\", label: \"ModelContainsElements\" });\n\n const navigationPropertyInfo: NavigationPropertyInfo = {\n classInfo: navigationClassInfo,\n isForwardRelationship: false,\n // Target class does not matter\n targetClassInfo: createTestECClassInfo(),\n isTargetPolymorphic: true,\n\n };\n\n const modelPropertyInfo = createTestPropertyInfo({ name: \"Model\", classInfo: modelClassInfo, type: \"long\", navigationPropertyInfo });\n\n const simpleModelField = createTestPropertiesContentField({ label: \"Model\", properties: [{ property: modelPropertyInfo }] });\n\n const result = convertPresentationFields([simpleModelField]);\n\n const expectedResult: PropertyMetaData[] = [\n {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"Model\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n parentPropertyClassName: undefined,\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n }\n );\n\n it(\"convert PropertyMetaData non primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"A Property\",\n sourceSchema: \"Schema\",\n sourceClassName: \"Class\",\n ecPropertyTraversal: [\"PropertyName\", \"SecondProperty\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|PropertyName\",\n categoryLabel: \"Test Category\",\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"Schema\",\n ecClassName: \"Class\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PropertyName.SecondProperty\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Model PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Category PropertyMetaData primitive navigation into ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Category\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Category\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:GeometricElement3dIsInCategory\",\n actualECClassName: \"BisCore:GeometricElement3d\",\n key: \"undefined|BisCore:GeometricElement3d|Category\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Category.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"convert Physical Material PropertyMetaData primitive navigation into an ECProperty\", () => {\n const propertyMetaData: PropertyMetaData = {\n displayLabel: \"Physical Material\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"PhysicalMaterial\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:PhysicalElementIsOfPhysicalMaterial\",\n actualECClassName: \"BisCore:PhysicalElement\",\n key: \"undefined|BisCore:PhysicalElement|PhysicalMaterial\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n };\n\n const result = convertToECProperties(propertyMetaData);\n\n const expectedResult: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"PhysicalMaterial.CodeValue\",\n },\n ];\n\n assert.deepEqual(result, expectedResult);\n });\n\n it(\"find properties correctly\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propString\"],\n propertyType: DataType.String,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propString\",\n categoryLabel: \"Test Category\",\n },\n {\n displayLabel: \"Properties Field\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\"propInt\"],\n propertyType: DataType.Integer,\n primitiveNavigationClass: \"\",\n actualECClassName: \"SchemaName:ClassName\",\n parentPropertyClassName: undefined,\n key: \"undefined|SchemaName:ClassName|propInt\",\n categoryLabel: \"Test Category\",\n },\n ];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"propString\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.Integer,\n ecPropertyName: \"propInt\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"can find properties generated from a single property\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n assert.deepEqual(result, propertiesMetaData);\n\n });\n\n it(\"cannot find properties generated from a single property in the wrong order\", () => {\n\n const propertiesMetaData: PropertyMetaData[] = [{\n displayLabel: \"Model\",\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: [\n \"Model\",\n ],\n propertyType: DataType.String,\n primitiveNavigationClass: \"BisCore:ModelContainsElements\",\n actualECClassName: \"BisCore:Element\",\n key: \"undefined|BisCore:Element|Model\",\n categoryLabel: \"Selected Item\",\n parentPropertyClassName: undefined,\n }];\n\n const ecProperties: ECProperty[] = [\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.CodeValue\",\n },\n {\n ecSchemaName: \"*\",\n ecClassName: \"*\",\n ecPropertyType: DataType.String,\n ecPropertyName: \"Model.ModeledElement.UserLabel\",\n },\n ];\n\n const result = findProperties(ecProperties, propertiesMetaData);\n expect(result).to.be.of.length(0);\n });\n\n});\n"]}
|
|
@@ -65,7 +65,8 @@ const extractPrimitiveStructProperties = (propertyTraversal, members, categoryLa
|
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
else if (member.type.valueFormat === PropertyValueFormat.Struct) {
|
|
68
|
-
|
|
68
|
+
const structName = member.name;
|
|
69
|
+
return extractPrimitiveStructProperties([...propertyTraversal, structName], member.type.members, categoryLabel, actualECClassName, parentPropertyClassName);
|
|
69
70
|
}
|
|
70
71
|
return [];
|
|
71
72
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupPropertyUtils.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupPropertyUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type {\n ContentDescriptorRequestOptions,\n Field,\n KeySet,\n NestedContentField,\n PropertiesField,\n Ruleset,\n RulesetVariable,\n StructFieldMemberDescription,\n} from \"@itwin/presentation-common\";\nimport {\n ContentSpecificationTypes,\n DefaultContentDisplayTypes,\n PropertyValueFormat,\n RelationshipMeaning,\n RuleTypes,\n} from \"@itwin/presentation-common\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { deepEqual } from \"fast-equals\";\n\nexport interface PropertyMetaData {\n displayLabel: string;\n sourceSchema: string;\n sourceClassName: string;\n categoryLabel: string;\n propertyType: DataType;\n actualECClassName: string;\n parentPropertyClassName: string | undefined;\n ecPropertyTraversal: string[];\n primitiveNavigationClass: string;\n key: string;\n}\n\nconst convertType = (type: string): DataType => {\n switch (type) {\n case \"int\":\n case \"enum\":\n case \"long\":\n return DataType.Integer;\n case \"boolean\":\n return DataType.Boolean;\n case \"double\":\n return DataType.Double;\n case \"number\":\n return DataType.Number;\n default:\n return DataType.String;\n }\n};\n\nconst extractPrimitives = (\n propertyTraversal: string[],\n propertyField: PropertiesField\n): PropertyMetaData[] => propertyField.properties.map((property) => {\n const propertyName = property.property.name;\n const displayLabel = propertyField.label;\n // It belongs to this parent class\n const parentPropertyClassName = propertyField.parent?.contentClassInfo.name;\n const primitiveNavigationClass = property.property.navigationPropertyInfo?.classInfo.name ?? \"\";\n /* Presentation assigns primitive navigations properties as a long type due to how it stores the\n ECInstanceId of the class in the meta.ECClassDef table on the C++ layer.\n We are handling this special case.\n */\n const propertyType = primitiveNavigationClass ? DataType.String : convertType(property.property.type);\n const actualECClassName = property.property.classInfo.name;\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return (\n {\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass,\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel: propertyField.category.label,\n }\n );\n});\n\nconst extractPrimitiveStructProperties = (\n propertyTraversal: string[],\n members: StructFieldMemberDescription[],\n categoryLabel: string,\n actualECClassName: string,\n parentPropertyClassName?: string,\n): PropertyMetaData[] => members.flatMap((member) => {\n if (member.type.valueFormat === PropertyValueFormat.Primitive) {\n const propertyName = member.name;\n const displayLabel = member.label;\n const propertyType = convertType(member.type.typeName);\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return ({\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass: \"\",\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel,\n });\n\n } else if (member.type.valueFormat === PropertyValueFormat.Struct) {\n return extractPrimitiveStructProperties(\n propertyTraversal,\n member.type.members,\n categoryLabel,\n actualECClassName,\n parentPropertyClassName\n );\n }\n\n return [];\n});\n\nconst extractStruct = (property: Field) => {\n if (property.type.valueFormat !== PropertyValueFormat.Struct) {\n return [];\n }\n\n const columnName = (property as PropertiesField).properties[0]\n .property.name;\n const actualECClassName = (property as PropertiesField).properties[0].property.classInfo.name;\n return extractPrimitiveStructProperties(\n [columnName],\n property.type.members,\n property.category.label,\n actualECClassName\n );\n};\n\nconst extractNested = (propertyTraversal: string[], propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n return extractPrimitives([...propertyTraversal], property as PropertiesField);\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n // Hardcoded navigation to external source repository metadata.\n if (nestedContentField.contentClassInfo.name === \"BisCore:RepositoryLink\") {\n return extractNested([...propertyTraversal, \"Source\", \"Repository\"], nestedContentField.nestedFields);\n }\n break;\n }\n\n switch (nestedContentField.relationshipMeaning) {\n // Aspects are not looked at again. Extraction does not support aspects within navigations.\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([...propertyTraversal, \"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertPresentationFields = (propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n const extractedPrimitives = extractPrimitives([], property as PropertiesField);\n for (const extractedPrimitive of extractedPrimitives) {\n extractedPrimitive.sourceSchema = \"*\";\n extractedPrimitive.sourceClassName = \"*\";\n return extractedPrimitive;\n }\n break;\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n break;\n }\n switch (nestedContentField.relationshipMeaning) {\n case RelationshipMeaning.SameInstance: {\n // Check for aspects.\n if (\n (nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsUniqueAspect\" ||\n nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsMultiAspects\")\n ) {\n const fullClassName = nestedContentField.contentClassInfo.name;\n const sourceSchema = fullClassName.split(\":\")[0];\n const sourceClassName = fullClassName.split(\":\")[1];\n const extractedNested = extractNested([], nestedContentField.nestedFields);\n const aspectExtractedNested = extractedNested.map((ecProperty) => ({ ...ecProperty, sourceSchema, sourceClassName }));\n return aspectExtractedNested;\n }\n break;\n }\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([\"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertToECProperties = (property: PropertyMetaData): ECProperty[] => {\n const ecProperty: ECProperty = {\n ecSchemaName: property.sourceSchema,\n ecClassName: property.sourceClassName,\n ecPropertyType: property.propertyType,\n ecPropertyName: \"\",\n };\n switch (property.primitiveNavigationClass) {\n // Hardcode Models navigation path and label behavior\n case \"BisCore:ModelContainsElements\": {\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n }\n // Hardcode Category and Physical Material navigation path and label behavior\n case \"BisCore:GeometricElement3dIsInCategory\":\n case \"BisCore:PhysicalElementIsOfPhysicalMaterial\":\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n default: {\n return [\n {\n ...ecProperty,\n ecPropertyName: property.ecPropertyTraversal.join(\".\"),\n },\n ];\n }\n }\n};\n\nexport const findProperties = (ecProperties: ECProperty[], propertiesMetaData: PropertyMetaData[]) => {\n let ecPropertiesCopy = [...ecProperties];\n const propertiesMetaDataResult: PropertyMetaData[] = new Array<PropertyMetaData>();\n let notFound = false;\n while (ecPropertiesCopy.length !== 0) {\n for (let i = 0; i < propertiesMetaData.length; i++) {\n const generatedProperty = convertToECProperties(propertiesMetaData[i]);\n const slicedEcProperties = ecPropertiesCopy.slice(0, generatedProperty.length);\n if (deepEqual(generatedProperty, slicedEcProperties)) {\n propertiesMetaDataResult.push(propertiesMetaData[i]);\n ecPropertiesCopy = ecPropertiesCopy.slice(generatedProperty.length);\n break;\n }\n if (i === propertiesMetaData.length - 1) {\n notFound = true;\n }\n }\n if (notFound)\n break;\n }\n return notFound ? [] : propertiesMetaDataResult;\n};\n\nexport const fetchPresentationDescriptor = async (iModelConnection: IModelConnection, keySet: KeySet) => {\n const ruleSet: Ruleset = {\n id: \"gmw-element-properties\",\n rules: [\n {\n ruleType: RuleTypes.Content,\n specifications: [\n {\n specType: ContentSpecificationTypes.SelectedNodeInstances,\n },\n ],\n }],\n };\n const requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable> = {\n imodel: iModelConnection,\n keys: keySet,\n rulesetOrId: ruleSet,\n displayType: DefaultContentDisplayTypes.PropertyPane,\n };\n const descriptor = await Presentation.presentation.getContentDescriptor(\n requestOptions\n );\n return descriptor;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"GroupPropertyUtils.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupPropertyUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ECProperty } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\nimport type {\n ContentDescriptorRequestOptions,\n Field,\n KeySet,\n NestedContentField,\n PropertiesField,\n Ruleset,\n RulesetVariable,\n StructFieldMemberDescription,\n} from \"@itwin/presentation-common\";\nimport {\n ContentSpecificationTypes,\n DefaultContentDisplayTypes,\n PropertyValueFormat,\n RelationshipMeaning,\n RuleTypes,\n} from \"@itwin/presentation-common\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { deepEqual } from \"fast-equals\";\n\nexport interface PropertyMetaData {\n displayLabel: string;\n sourceSchema: string;\n sourceClassName: string;\n categoryLabel: string;\n propertyType: DataType;\n actualECClassName: string;\n parentPropertyClassName: string | undefined;\n ecPropertyTraversal: string[];\n primitiveNavigationClass: string;\n key: string;\n}\n\nconst convertType = (type: string): DataType => {\n switch (type) {\n case \"int\":\n case \"enum\":\n case \"long\":\n return DataType.Integer;\n case \"boolean\":\n return DataType.Boolean;\n case \"double\":\n return DataType.Double;\n case \"number\":\n return DataType.Number;\n default:\n return DataType.String;\n }\n};\n\nconst extractPrimitives = (\n propertyTraversal: string[],\n propertyField: PropertiesField\n): PropertyMetaData[] => propertyField.properties.map((property) => {\n const propertyName = property.property.name;\n const displayLabel = propertyField.label;\n // It belongs to this parent class\n const parentPropertyClassName = propertyField.parent?.contentClassInfo.name;\n const primitiveNavigationClass = property.property.navigationPropertyInfo?.classInfo.name ?? \"\";\n /* Presentation assigns primitive navigations properties as a long type due to how it stores the\n ECInstanceId of the class in the meta.ECClassDef table on the C++ layer.\n We are handling this special case.\n */\n const propertyType = primitiveNavigationClass ? DataType.String : convertType(property.property.type);\n const actualECClassName = property.property.classInfo.name;\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return (\n {\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass,\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel: propertyField.category.label,\n }\n );\n});\n\nconst extractPrimitiveStructProperties = (\n propertyTraversal: string[],\n members: StructFieldMemberDescription[],\n categoryLabel: string,\n actualECClassName: string,\n parentPropertyClassName?: string,\n): PropertyMetaData[] => members.flatMap((member) => {\n if (member.type.valueFormat === PropertyValueFormat.Primitive) {\n const propertyName = member.name;\n const displayLabel = member.label;\n const propertyType = convertType(member.type.typeName);\n const newPropertyTraversal = [...propertyTraversal, propertyName];\n\n return ({\n displayLabel,\n sourceSchema: \"*\",\n sourceClassName: \"*\",\n ecPropertyTraversal: newPropertyTraversal,\n propertyType,\n primitiveNavigationClass: \"\",\n actualECClassName,\n parentPropertyClassName,\n key: `${parentPropertyClassName}|${actualECClassName}|${newPropertyTraversal.join(\"|\")}`,\n categoryLabel,\n });\n\n } else if (member.type.valueFormat === PropertyValueFormat.Struct) {\n const structName = member.name;\n return extractPrimitiveStructProperties(\n [...propertyTraversal, structName],\n member.type.members,\n categoryLabel,\n actualECClassName,\n parentPropertyClassName\n );\n }\n\n return [];\n});\n\nconst extractStruct = (property: Field) => {\n if (property.type.valueFormat !== PropertyValueFormat.Struct) {\n return [];\n }\n\n const columnName = (property as PropertiesField).properties[0]\n .property.name;\n const actualECClassName = (property as PropertiesField).properties[0].property.classInfo.name;\n return extractPrimitiveStructProperties(\n [columnName],\n property.type.members,\n property.category.label,\n actualECClassName\n );\n};\n\nconst extractNested = (propertyTraversal: string[], propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n return extractPrimitives([...propertyTraversal], property as PropertiesField);\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n // Hardcoded navigation to external source repository metadata.\n if (nestedContentField.contentClassInfo.name === \"BisCore:RepositoryLink\") {\n return extractNested([...propertyTraversal, \"Source\", \"Repository\"], nestedContentField.nestedFields);\n }\n break;\n }\n\n switch (nestedContentField.relationshipMeaning) {\n // Aspects are not looked at again. Extraction does not support aspects within navigations.\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([...propertyTraversal, \"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertPresentationFields = (propertyFields: Field[]): PropertyMetaData[] =>\n propertyFields.flatMap((property) => {\n // Generate base ECProperty\n switch (property.type.valueFormat) {\n case PropertyValueFormat.Primitive: {\n const extractedPrimitives = extractPrimitives([], property as PropertiesField);\n for (const extractedPrimitive of extractedPrimitives) {\n extractedPrimitive.sourceSchema = \"*\";\n extractedPrimitive.sourceClassName = \"*\";\n return extractedPrimitive;\n }\n break;\n }\n // Get structs\n case PropertyValueFormat.Struct: {\n const nestedContentField = property as NestedContentField;\n // Only handling single path and not handling nested content fields within navigations\n if (\n nestedContentField.pathToPrimaryClass &&\n nestedContentField.pathToPrimaryClass.length > 1\n ) {\n break;\n }\n switch (nestedContentField.relationshipMeaning) {\n case RelationshipMeaning.SameInstance: {\n // Check for aspects.\n if (\n (nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsUniqueAspect\" ||\n nestedContentField.pathToPrimaryClass[0].relationshipInfo\n .name === \"BisCore:ElementOwnsMultiAspects\")\n ) {\n const fullClassName = nestedContentField.contentClassInfo.name;\n const sourceSchema = fullClassName.split(\":\")[0];\n const sourceClassName = fullClassName.split(\":\")[1];\n const extractedNested = extractNested([], nestedContentField.nestedFields);\n const aspectExtractedNested = extractedNested.map((ecProperty) => ({ ...ecProperty, sourceSchema, sourceClassName }));\n return aspectExtractedNested;\n }\n break;\n }\n // Navigation properties\n case RelationshipMeaning.RelatedInstance: {\n if (\n // Deal with a TypeDefinition\n nestedContentField.pathToPrimaryClass[0].relationshipInfo.name ===\n \"BisCore:GeometricElement3dHasTypeDefinition\"\n ) {\n return extractNested([\"TypeDefinition\"], nestedContentField.nestedFields);\n }\n break;\n }\n default: {\n // Some elements don't have a path to primary class or relationship meaning..\n // Most likely a simple struct property\n if (!nestedContentField.pathToPrimaryClass) {\n return extractStruct(property);\n }\n }\n }\n }\n }\n return [];\n });\n\nexport const convertToECProperties = (property: PropertyMetaData): ECProperty[] => {\n const ecProperty: ECProperty = {\n ecSchemaName: property.sourceSchema,\n ecClassName: property.sourceClassName,\n ecPropertyType: property.propertyType,\n ecPropertyName: \"\",\n };\n switch (property.primitiveNavigationClass) {\n // Hardcode Models navigation path and label behavior\n case \"BisCore:ModelContainsElements\": {\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"ModeledElement\",\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n }\n // Hardcode Category and Physical Material navigation path and label behavior\n case \"BisCore:GeometricElement3dIsInCategory\":\n case \"BisCore:PhysicalElementIsOfPhysicalMaterial\":\n return [\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"UserLabel\",\n ].join(\".\"),\n },\n {\n ...ecProperty,\n ecPropertyName: [\n ...property.ecPropertyTraversal,\n \"CodeValue\",\n ].join(\".\"),\n },\n ];\n default: {\n return [\n {\n ...ecProperty,\n ecPropertyName: property.ecPropertyTraversal.join(\".\"),\n },\n ];\n }\n }\n};\n\nexport const findProperties = (ecProperties: ECProperty[], propertiesMetaData: PropertyMetaData[]) => {\n let ecPropertiesCopy = [...ecProperties];\n const propertiesMetaDataResult: PropertyMetaData[] = new Array<PropertyMetaData>();\n let notFound = false;\n while (ecPropertiesCopy.length !== 0) {\n for (let i = 0; i < propertiesMetaData.length; i++) {\n const generatedProperty = convertToECProperties(propertiesMetaData[i]);\n const slicedEcProperties = ecPropertiesCopy.slice(0, generatedProperty.length);\n if (deepEqual(generatedProperty, slicedEcProperties)) {\n propertiesMetaDataResult.push(propertiesMetaData[i]);\n ecPropertiesCopy = ecPropertiesCopy.slice(generatedProperty.length);\n break;\n }\n if (i === propertiesMetaData.length - 1) {\n notFound = true;\n }\n }\n if (notFound)\n break;\n }\n return notFound ? [] : propertiesMetaDataResult;\n};\n\nexport const fetchPresentationDescriptor = async (iModelConnection: IModelConnection, keySet: KeySet) => {\n const ruleSet: Ruleset = {\n id: \"gmw-element-properties\",\n rules: [\n {\n ruleType: RuleTypes.Content,\n specifications: [\n {\n specType: ContentSpecificationTypes.SelectedNodeInstances,\n },\n ],\n }],\n };\n const requestOptions: ContentDescriptorRequestOptions<IModelConnection, KeySet, RulesetVariable> = {\n imodel: iModelConnection,\n keys: keySet,\n rulesetOrId: ruleSet,\n displayType: DefaultContentDisplayTypes.PropertyPane,\n };\n const descriptor = await Presentation.presentation.getContentDescriptor(\n requestOptions\n );\n return descriptor;\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/grouping-mapping-widget",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "An iTwin.js 3D Viewer Widget that interfaces with the iTwin Reporting Platform.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Bentley",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"copy:cjs": "cpx \"./src/**/*.scss\" ./lib/cjs",
|
|
132
132
|
"copy:esm": "cpx \"./src/**/*.scss\" ./lib/esm",
|
|
133
133
|
"copy:public": "cpx \"./public/**/*\" ./lib/public",
|
|
134
|
-
"cover": "",
|
|
134
|
+
"cover": "npm test -- --coverage",
|
|
135
135
|
"dual-build": "npm run -s build:cjs && npm run -s build:esm",
|
|
136
136
|
"lint": "eslint -f visualstudio \"./src/**/*.{ts,tsx}\" 1>&2",
|
|
137
137
|
"lint:fix": "npm run lint -- --fix",
|