@itwin/presentation-shared 2.0.0-alpha.1 → 2.0.0-alpha.11
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/CHANGELOG.md +296 -1
- package/README.md +27 -9
- package/lib/cjs/presentation-shared.d.ts +18 -10
- package/lib/cjs/presentation-shared.d.ts.map +1 -1
- package/lib/cjs/presentation-shared.js +11 -6
- package/lib/cjs/presentation-shared.js.map +1 -1
- package/lib/cjs/shared/ConcatenatedValue.d.ts +1 -1
- package/lib/cjs/shared/ConcatenatedValue.d.ts.map +1 -1
- package/lib/cjs/shared/ECSqlCore.d.ts +7 -2
- package/lib/cjs/shared/ECSqlCore.d.ts.map +1 -1
- package/lib/cjs/shared/Event.d.ts +20 -2
- package/lib/cjs/shared/Event.d.ts.map +1 -1
- package/lib/cjs/shared/Formatting.d.ts +1 -1
- package/lib/cjs/shared/Formatting.d.ts.map +1 -1
- package/lib/cjs/shared/Formatting.js +10 -6
- package/lib/cjs/shared/Formatting.js.map +1 -1
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.d.ts +5 -65
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.d.ts.map +1 -1
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js +0 -136
- package/lib/cjs/shared/InstanceLabelSelectClauseFactory.js.map +1 -1
- package/lib/cjs/shared/Logging.js +2 -1
- package/lib/cjs/shared/Logging.js.map +1 -1
- package/lib/cjs/shared/MappedTypes.d.ts +3 -13
- package/lib/cjs/shared/MappedTypes.d.ts.map +1 -1
- package/lib/cjs/shared/Metadata.d.ts +225 -11
- package/lib/cjs/shared/Metadata.d.ts.map +1 -1
- package/lib/cjs/shared/Metadata.js +4 -1
- package/lib/cjs/shared/Metadata.js.map +1 -1
- package/lib/cjs/shared/Utils.d.ts +12 -1
- package/lib/cjs/shared/Utils.d.ts.map +1 -1
- package/lib/cjs/shared/Utils.js +37 -11
- package/lib/cjs/shared/Utils.js.map +1 -1
- package/lib/cjs/shared/Values.d.ts +27 -13
- package/lib/cjs/shared/Values.d.ts.map +1 -1
- package/lib/cjs/shared/Values.js +13 -51
- package/lib/cjs/shared/Values.js.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +20 -5
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js +56 -25
- package/lib/cjs/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +12 -3
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js +21 -6
- package/lib/cjs/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/index.d.ts +1 -1
- package/lib/cjs/shared/ecsql-snippets/index.d.ts.map +1 -1
- package/lib/cjs/shared/ecsql-snippets/index.js +2 -1
- package/lib/cjs/shared/ecsql-snippets/index.js.map +1 -1
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +17 -0
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +54 -0
- package/lib/cjs/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +39 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +63 -0
- package/lib/cjs/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +12 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +40 -0
- package/lib/cjs/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +198 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +10 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +34 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +336 -0
- package/lib/cjs/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts +7 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.d.ts.map +1 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.js +26 -0
- package/lib/cjs/shared/instance-label-factory-impls/Utils.js.map +1 -0
- package/lib/esm/presentation-shared.d.ts +18 -10
- package/lib/esm/presentation-shared.d.ts.map +1 -1
- package/lib/esm/presentation-shared.js +7 -4
- package/lib/esm/presentation-shared.js.map +1 -1
- package/lib/esm/shared/ConcatenatedValue.d.ts +1 -1
- package/lib/esm/shared/ConcatenatedValue.d.ts.map +1 -1
- package/lib/esm/shared/ECSqlCore.d.ts +7 -2
- package/lib/esm/shared/ECSqlCore.d.ts.map +1 -1
- package/lib/esm/shared/Event.d.ts +20 -2
- package/lib/esm/shared/Event.d.ts.map +1 -1
- package/lib/esm/shared/Formatting.d.ts +1 -1
- package/lib/esm/shared/Formatting.d.ts.map +1 -1
- package/lib/esm/shared/Formatting.js +10 -6
- package/lib/esm/shared/Formatting.js.map +1 -1
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts +5 -65
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.d.ts.map +1 -1
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.js +0 -133
- package/lib/esm/shared/InstanceLabelSelectClauseFactory.js.map +1 -1
- package/lib/esm/shared/Logging.js +2 -1
- package/lib/esm/shared/Logging.js.map +1 -1
- package/lib/esm/shared/MappedTypes.d.ts +3 -13
- package/lib/esm/shared/MappedTypes.d.ts.map +1 -1
- package/lib/esm/shared/Metadata.d.ts +225 -11
- package/lib/esm/shared/Metadata.d.ts.map +1 -1
- package/lib/esm/shared/Metadata.js +4 -1
- package/lib/esm/shared/Metadata.js.map +1 -1
- package/lib/esm/shared/Utils.d.ts +12 -1
- package/lib/esm/shared/Utils.d.ts.map +1 -1
- package/lib/esm/shared/Utils.js +36 -11
- package/lib/esm/shared/Utils.js.map +1 -1
- package/lib/esm/shared/Values.d.ts +27 -13
- package/lib/esm/shared/Values.d.ts.map +1 -1
- package/lib/esm/shared/Values.js +13 -51
- package/lib/esm/shared/Values.js.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts +20 -5
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.d.ts.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js +56 -25
- package/lib/esm/shared/ecsql-snippets/ECSqlJoinSnippets.js.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts +12 -3
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.d.ts.map +1 -1
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js +20 -6
- package/lib/esm/shared/ecsql-snippets/ECSqlValueSelectorSnippets.js.map +1 -1
- package/lib/esm/shared/ecsql-snippets/index.d.ts +1 -1
- package/lib/esm/shared/ecsql-snippets/index.d.ts.map +1 -1
- package/lib/esm/shared/ecsql-snippets/index.js +1 -1
- package/lib/esm/shared/ecsql-snippets/index.js.map +1 -1
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts +17 -0
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js +51 -0
- package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts +39 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js +60 -0
- package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts +12 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js +37 -0
- package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts +198 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js +9 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.Rules.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts +34 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js +333 -0
- package/lib/esm/shared/instance-label-factory-impls/IModelInstanceLabelSelectClauseFactory.js.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.d.ts +7 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.d.ts.map +1 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.js +21 -0
- package/lib/esm/shared/instance-label-factory-impls/Utils.js.map +1 -0
- package/package.json +16 -24
|
@@ -7,6 +7,12 @@ import { createRawPropertyValueSelector } from "./ECSqlValueSelectorSnippets.js"
|
|
|
7
7
|
/**
|
|
8
8
|
* Creates an ECSQL JOIN snippet for given relationships' path.
|
|
9
9
|
*
|
|
10
|
+
* When a step specifies `instanceFilter`, its resolved expression is appended as an `AND`
|
|
11
|
+
* condition to the target class JOIN's `ON` clause. In the outer-join case the condition also
|
|
12
|
+
* appears on the `INNER JOIN` inside the subquery so the pre-joined subquery is already
|
|
13
|
+
* filtered. Bindings declared in `instanceFilter.bindings` across all steps are collected
|
|
14
|
+
* and returned alongside the SQL string.
|
|
15
|
+
*
|
|
10
16
|
* Possible results:
|
|
11
17
|
* - When the relationship is represented by a navigation property on either source or target:
|
|
12
18
|
* ```SQL
|
|
@@ -14,33 +20,48 @@ import { createRawPropertyValueSelector } from "./ECSqlValueSelectorSnippets.js"
|
|
|
14
20
|
* ```
|
|
15
21
|
* - When outer joining through a non-navigation-property relationship:
|
|
16
22
|
* ```SQL
|
|
17
|
-
*
|
|
23
|
+
* OUTER JOIN (
|
|
18
24
|
* SELECT [relationship_alias].*
|
|
19
25
|
* FROM [relationship_schema_name].[relationship_class_name] [relationship_alias]
|
|
20
26
|
* INNER JOIN [target_schema_name].[target_class_name] [target_alias] ON [target_alias].[ECInstanceId] = [relationship_alias].[TargetECInstanceId]
|
|
21
|
-
* ) [relationship_alias]
|
|
22
|
-
*
|
|
27
|
+
* ) [relationship_alias] ON [relationship_alias].[SourceECInstanceId] = [source_alias].[ECInstanceId]
|
|
28
|
+
* OUTER JOIN [target_schema_name].[target_class_name] [target_alias] ON [target_alias].[ECInstanceId] = [relationship_alias].[TargetECInstanceId]
|
|
23
29
|
* ```
|
|
24
30
|
* - When inner joining through a non-navigation-property relationship:
|
|
25
31
|
* ```SQL
|
|
26
32
|
* INNER JOIN [relationship_schema_name].[relationship_class_name] [relationship_alias] ON [relationship_alias].[SourceECInstanceId] = [source_alias].[ECInstanceId]
|
|
27
33
|
* INNER JOIN [target_schema_name].[target_class_name] [target_alias] ON [target_alias].[ECInstanceId] = [relationship_alias].[TargetECInstanceId]
|
|
28
34
|
* ```
|
|
35
|
+
*
|
|
36
|
+
* @returns An object containing:
|
|
37
|
+
* - `joins`: the ECSQL JOIN clause string to embed in a query.
|
|
38
|
+
* - `bindings`: ECSQL parameter bindings collected from `instanceFilter.bindings` across all steps,
|
|
39
|
+
* or `undefined` if no step specified any bindings.
|
|
29
40
|
* @public
|
|
30
41
|
*/
|
|
31
42
|
export async function createRelationshipPathJoinClause(props) {
|
|
32
43
|
if (props.path.length === 0) {
|
|
33
|
-
return "";
|
|
44
|
+
return { joins: "" };
|
|
34
45
|
}
|
|
35
46
|
let prev = {
|
|
36
47
|
alias: props.path[0].sourceAlias,
|
|
37
48
|
joinPropertyName: "ECInstanceId",
|
|
38
49
|
className: props.path[0].sourceClassName,
|
|
39
50
|
};
|
|
40
|
-
let
|
|
51
|
+
let joins = "";
|
|
52
|
+
const bindings = {};
|
|
41
53
|
for (const stepDef of props.path) {
|
|
42
54
|
const step = await getRelationshipPathStepClasses(props.schemaProvider, stepDef);
|
|
43
55
|
const navigationProperty = await getNavigationProperty(step);
|
|
56
|
+
const filterCondition = resolveInstanceFilterCondition(step);
|
|
57
|
+
if (step.instanceFilter?.bindings) {
|
|
58
|
+
for (const [key, value] of Object.entries(step.instanceFilter.bindings)) {
|
|
59
|
+
if (key in bindings) {
|
|
60
|
+
throw new Error(`Binding key "${key}" is used in multiple steps of the relationship path. Each binding key must be unique across all steps.`);
|
|
61
|
+
}
|
|
62
|
+
bindings[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
44
65
|
if (navigationProperty) {
|
|
45
66
|
const isNavigationPropertyForward = navigationProperty.direction === "Forward";
|
|
46
67
|
const relationshipJoinPropertyNames = isNavigationPropertyForward === !step.relationshipReverse
|
|
@@ -52,53 +73,57 @@ export async function createRelationshipPathJoinClause(props) {
|
|
|
52
73
|
this: createRawPropertyValueSelector(step.targetAlias, navigationProperty.name, "Id"),
|
|
53
74
|
next: createRawPropertyValueSelector(prev.alias, prev.joinPropertyName),
|
|
54
75
|
};
|
|
55
|
-
|
|
76
|
+
joins += `
|
|
56
77
|
${getJoinClause(step.joinType)} ${getClassSelectClause(step.target, step.targetAlias)}
|
|
57
|
-
ON ${relationshipJoinPropertyNames.this} = ${relationshipJoinPropertyNames.next}
|
|
78
|
+
ON ${relationshipJoinPropertyNames.this} = ${relationshipJoinPropertyNames.next}${filterCondition}
|
|
58
79
|
`;
|
|
59
|
-
prev = {
|
|
60
|
-
alias: step.targetAlias,
|
|
61
|
-
className: step.target.fullName,
|
|
62
|
-
joinPropertyName: "ECInstanceId",
|
|
63
|
-
};
|
|
80
|
+
prev = { alias: step.targetAlias, className: step.target.fullName, joinPropertyName: "ECInstanceId" };
|
|
64
81
|
}
|
|
65
82
|
else {
|
|
66
83
|
const relationshipJoinPropertyNames = !step.relationshipReverse
|
|
67
84
|
? { this: "SourceECInstanceId", next: "TargetECInstanceId" }
|
|
68
85
|
: { this: "TargetECInstanceId", next: "SourceECInstanceId" };
|
|
69
86
|
if (step.joinType === "outer") {
|
|
70
|
-
|
|
87
|
+
joins += `
|
|
71
88
|
${getJoinClause("outer")} (
|
|
72
89
|
SELECT [${step.relationshipAlias}].*
|
|
73
90
|
FROM ${getClassSelectClause(step.relationship, step.relationshipAlias)}
|
|
74
91
|
${getJoinClause("inner")} ${getClassSelectClause(step.target, step.targetAlias)}
|
|
75
92
|
ON ${createRawPropertyValueSelector(step.targetAlias, "ECInstanceId")}
|
|
76
|
-
= ${createRawPropertyValueSelector(step.relationshipAlias, relationshipJoinPropertyNames.next)}
|
|
93
|
+
= ${createRawPropertyValueSelector(step.relationshipAlias, relationshipJoinPropertyNames.next)}${filterCondition}
|
|
77
94
|
) [${step.relationshipAlias}]
|
|
78
95
|
ON ${createRawPropertyValueSelector(step.relationshipAlias, relationshipJoinPropertyNames.this)}
|
|
79
96
|
= ${createRawPropertyValueSelector(prev.alias, prev.joinPropertyName)}
|
|
80
97
|
`;
|
|
81
98
|
}
|
|
82
99
|
else {
|
|
83
|
-
|
|
100
|
+
joins += `
|
|
84
101
|
${getJoinClause("inner")} ${getClassSelectClause(step.relationship, step.relationshipAlias)}
|
|
85
102
|
ON ${createRawPropertyValueSelector(step.relationshipAlias, relationshipJoinPropertyNames.this)}
|
|
86
103
|
= ${createRawPropertyValueSelector(prev.alias, prev.joinPropertyName)}
|
|
87
104
|
`;
|
|
88
105
|
}
|
|
89
|
-
|
|
106
|
+
joins += `
|
|
90
107
|
${getJoinClause(step.joinType)} ${getClassSelectClause(step.target, step.targetAlias)}
|
|
91
108
|
ON ${createRawPropertyValueSelector(step.targetAlias, "ECInstanceId")}
|
|
92
|
-
= ${createRawPropertyValueSelector(step.relationshipAlias, relationshipJoinPropertyNames.next)}
|
|
109
|
+
= ${createRawPropertyValueSelector(step.relationshipAlias, relationshipJoinPropertyNames.next)}${filterCondition}
|
|
93
110
|
`;
|
|
94
|
-
prev = {
|
|
95
|
-
alias: step.targetAlias,
|
|
96
|
-
className: step.target.fullName,
|
|
97
|
-
joinPropertyName: "ECInstanceId",
|
|
98
|
-
};
|
|
111
|
+
prev = { alias: step.targetAlias, className: step.target.fullName, joinPropertyName: "ECInstanceId" };
|
|
99
112
|
}
|
|
100
113
|
}
|
|
101
|
-
return
|
|
114
|
+
return { joins, bindings: Object.keys(bindings).length > 0 ? bindings : undefined };
|
|
115
|
+
}
|
|
116
|
+
function resolveInstanceFilterCondition(step) {
|
|
117
|
+
if (!step.instanceFilter) {
|
|
118
|
+
return "";
|
|
119
|
+
}
|
|
120
|
+
const { expression, targetAlias = "this", relationshipAlias = "rel" } = step.instanceFilter;
|
|
121
|
+
const resolvedExpression = expression
|
|
122
|
+
.replaceAll(`[${targetAlias}].`, `[${step.targetAlias}].`)
|
|
123
|
+
.replaceAll(`${targetAlias}.`, `[${step.targetAlias}].`)
|
|
124
|
+
.replaceAll(`[${relationshipAlias}].`, `[${step.relationshipAlias}].`)
|
|
125
|
+
.replaceAll(`${relationshipAlias}.`, `[${step.relationshipAlias}].`);
|
|
126
|
+
return ` AND (${resolvedExpression})`;
|
|
102
127
|
}
|
|
103
128
|
async function getRelationshipPathStepClasses(schemaProvider, step) {
|
|
104
129
|
const { sourceClassName, relationshipName, targetClassName, ...rest } = step;
|
|
@@ -113,12 +138,18 @@ async function getNavigationProperty(step) {
|
|
|
113
138
|
const source = !step.relationshipReverse ? step.source : step.target;
|
|
114
139
|
const target = !step.relationshipReverse ? step.target : step.source;
|
|
115
140
|
for (const prop of await source.getProperties()) {
|
|
116
|
-
|
|
141
|
+
/* v8 ignore else -- @preserve */
|
|
142
|
+
if (prop.isNavigation() &&
|
|
143
|
+
prop.direction === "Forward" &&
|
|
144
|
+
(await prop.relationshipClass).fullName === step.relationship.fullName) {
|
|
117
145
|
return prop;
|
|
118
146
|
}
|
|
119
147
|
}
|
|
120
148
|
for (const prop of await target.getProperties()) {
|
|
121
|
-
|
|
149
|
+
/* v8 ignore else -- @preserve */
|
|
150
|
+
if (prop.isNavigation() &&
|
|
151
|
+
prop.direction === "Backward" &&
|
|
152
|
+
(await prop.relationshipClass).fullName === step.relationship.fullName) {
|
|
122
153
|
return prop;
|
|
123
154
|
}
|
|
124
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECSqlJoinSnippets.js","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/ECSqlJoinSnippets.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,
|
|
1
|
+
{"version":3,"file":"ECSqlJoinSnippets.js","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/ECSqlJoinSnippets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { PrimitiveValue } from "../Values.js";
|
|
2
|
+
import type { EC, ECSchemaProvider, PrimitiveValueType } from "../Metadata.js";
|
|
3
|
+
import type { TypedPrimitiveValue } from "../Values.js";
|
|
3
4
|
/**
|
|
4
5
|
* Props for selecting a `TypedPrimitiveValue` using given ECSQL selector.
|
|
5
6
|
* @public
|
|
@@ -37,7 +38,7 @@ export declare function createPrimitivePropertyValueSelectorProps({ schemaProvid
|
|
|
37
38
|
/** Access to schema information. */
|
|
38
39
|
schemaProvider: ECSchemaProvider;
|
|
39
40
|
/** Full class name of the property. Format: `SchemaName.ClassName`. */
|
|
40
|
-
propertyClassName:
|
|
41
|
+
propertyClassName: EC.FullClassName;
|
|
41
42
|
/** Query alias of the class that contains the property. */
|
|
42
43
|
propertyClassAlias: string;
|
|
43
44
|
/** Name of the property to create `TypedPrimitiveValue` for. */
|
|
@@ -60,6 +61,14 @@ export declare function createRawPropertyValueSelector(classAlias: string, prope
|
|
|
60
61
|
* @public
|
|
61
62
|
*/
|
|
62
63
|
export declare function createRawPrimitiveValueSelector(value: PrimitiveValue | undefined): string;
|
|
64
|
+
/**
|
|
65
|
+
* Converts a full class name (`SchemaName.ClassName` or `SchemaName:ClassName`) into a
|
|
66
|
+
* bracket-quoted ECSQL class selector: `[SchemaName].[ClassName]`.
|
|
67
|
+
*
|
|
68
|
+
* @throws Error if the provided full class name is not valid.
|
|
69
|
+
* @public
|
|
70
|
+
*/
|
|
71
|
+
export declare function createClassSelector(fullClassName: EC.FullClassName): string;
|
|
63
72
|
/**
|
|
64
73
|
* Creates an ECSQL selector that results in a stringified `InstanceKey` object.
|
|
65
74
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECSqlValueSelectorSnippets.d.ts","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/ECSqlValueSelectorSnippets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ECSqlValueSelectorSnippets.d.ts","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/ECSqlValueSelectorSnippets.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,EAAE,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD;;;GAGG;AACH,KAAK,gCAAgC,GAAG;IACtC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,CACA;IACE,+CAA+C;IAC/C,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAC3F,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,GAAG,gCAAgC,CAAC;AAEjG,cAAc;AAEd,yBAAiB,2BAA2B,CAAC;IAC3C,SAAgB,gBAAgB,CAAC,KAAK,EAAE,2BAA2B,GAAG,KAAK,IAAI,mBAAmB,CAEjG;IACD,SAAgB,wBAAwB,CACtC,KAAK,EAAE,2BAA2B,GACjC,KAAK,IAAI,gCAAgC,CAE3C;CACF;AAED;;;;GAIG;AACH,wBAAsB,yCAAyC,CAAC,EAC9D,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,EAAE;IACD,oCAAoC;IACpC,cAAc,EAAE,gBAAgB,CAAC;IACjC,uEAAuE;IACvE,iBAAiB,EAAE,EAAE,CAAC,aAAa,CAAC;IACpC,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAsD5C;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAMR;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,UAqBhF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,GAAG,MAAM,CAG3E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,UAIjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEtG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,2BAA2B,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,UAMnH;AA2CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,2BAA2B,EAAE,EACxC,aAAa,CAAC,EAAE,MAAM,UASvB"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { Id64 } from "@itwin/core-bentley";
|
|
6
6
|
import { getClass } from "../Metadata.js";
|
|
7
|
+
import { parseFullClassName } from "../Utils.js";
|
|
7
8
|
import { PrimitiveValue } from "../Values.js";
|
|
8
9
|
/** @public */
|
|
9
10
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
@@ -50,27 +51,27 @@ export async function createPrimitivePropertyValueSelectorProps({ schemaProvider
|
|
|
50
51
|
return {
|
|
51
52
|
selector: `json_object('x', ${propertySelector}.[x], 'y', ${propertySelector}.[y])`,
|
|
52
53
|
type: "Point2d",
|
|
53
|
-
...(extendedType ? { extendedType } : /*
|
|
54
|
+
...(extendedType ? { extendedType } : /* v8 ignore next */ {}),
|
|
54
55
|
};
|
|
55
56
|
case "Point3d":
|
|
56
57
|
return {
|
|
57
58
|
selector: `json_object('x', ${propertySelector}.[x], 'y', ${propertySelector}.[y], 'z', ${propertySelector}.[z])`,
|
|
58
59
|
type: "Point3d",
|
|
59
|
-
...(extendedType ? { extendedType } : /*
|
|
60
|
+
...(extendedType ? { extendedType } : /* v8 ignore next */ {}),
|
|
60
61
|
};
|
|
61
62
|
case "Double":
|
|
62
63
|
const koqName = (await property.kindOfQuantity)?.fullName;
|
|
63
64
|
return {
|
|
64
65
|
selector: propertySelector,
|
|
65
66
|
type: "Double",
|
|
66
|
-
...(extendedType ? { extendedType } : /*
|
|
67
|
-
...(koqName ? { koqName } : /*
|
|
67
|
+
...(extendedType ? { extendedType } : /* v8 ignore next */ {}),
|
|
68
|
+
...(koqName ? { koqName } : /* v8 ignore next */ {}),
|
|
68
69
|
};
|
|
69
70
|
}
|
|
70
71
|
return {
|
|
71
72
|
selector: propertySelector,
|
|
72
73
|
type: propertyValueType,
|
|
73
|
-
...(extendedType ? { extendedType } : /*
|
|
74
|
+
...(extendedType ? { extendedType } : /* v8 ignore next */ {}),
|
|
74
75
|
};
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
@@ -117,6 +118,17 @@ export function createRawPrimitiveValueSelector(value) {
|
|
|
117
118
|
return value ? "TRUE" : "FALSE";
|
|
118
119
|
}
|
|
119
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Converts a full class name (`SchemaName.ClassName` or `SchemaName:ClassName`) into a
|
|
123
|
+
* bracket-quoted ECSQL class selector: `[SchemaName].[ClassName]`.
|
|
124
|
+
*
|
|
125
|
+
* @throws Error if the provided full class name is not valid.
|
|
126
|
+
* @public
|
|
127
|
+
*/
|
|
128
|
+
export function createClassSelector(fullClassName) {
|
|
129
|
+
const { schemaName, className } = parseFullClassName(fullClassName);
|
|
130
|
+
return `[${schemaName}].[${className}]`;
|
|
131
|
+
}
|
|
120
132
|
/**
|
|
121
133
|
* Creates an ECSQL selector that results in a stringified `InstanceKey` object.
|
|
122
134
|
* @public
|
|
@@ -223,7 +235,9 @@ function createPrimitiveValueJsonSelector(value) {
|
|
|
223
235
|
* @public
|
|
224
236
|
*/
|
|
225
237
|
export function createConcatenatedValueStringSelector(selectors, checkSelector) {
|
|
226
|
-
const combinedSelectors = selectors.length
|
|
238
|
+
const combinedSelectors = selectors.length
|
|
239
|
+
? selectors.map((sel) => createTypedValueStringSelector(sel)).join(" || ")
|
|
240
|
+
: "''";
|
|
227
241
|
if (checkSelector) {
|
|
228
242
|
return createNullableSelector({ checkSelector, valueSelector: combinedSelectors });
|
|
229
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECSqlValueSelectorSnippets.js","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/ECSqlValueSelectorSnippets.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"ECSqlValueSelectorSnippets.js","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/ECSqlValueSelectorSnippets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
|
|
1
|
+
export { createClassSelector, createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
|
|
2
2
|
export { createRelationshipPathJoinClause } from "./ECSqlJoinSnippets.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
export { createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
|
|
5
|
+
export { createClassSelector, createRawPropertyValueSelector, createRawPrimitiveValueSelector, createNullableSelector, createConcatenatedValueJsonSelector, createConcatenatedValueStringSelector, createInstanceKeySelector, createPrimitivePropertyValueSelectorProps, } from "./ECSqlValueSelectorSnippets.js";
|
|
6
6
|
export { createRelationshipPathJoinClause } from "./ECSqlJoinSnippets.js";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/ecsql-snippets/index.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,yCAAyC,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IInstanceLabelSelectClauseFactory } from "../InstanceLabelSelectClauseFactory.js";
|
|
2
|
+
import type { ECClassHierarchyInspector } from "../Metadata.js";
|
|
3
|
+
/**
|
|
4
|
+
* Props for `createBisInstanceLabelSelectClauseFactory`.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
interface BisInstanceLabelSelectClauseFactoryProps {
|
|
8
|
+
classHierarchyInspector: ECClassHierarchyInspector;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Creates a label select clause according to BIS instance label rules.
|
|
12
|
+
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
export declare function createBisInstanceLabelSelectClauseFactory(props: BisInstanceLabelSelectClauseFactoryProps): IInstanceLabelSelectClauseFactory;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=BisInstanceLabelSelectClauseFactory.d.ts.map
|
package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BisInstanceLabelSelectClauseFactory.d.ts","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAGhE;;;GAGG;AACH,UAAU,wCAAwC;IAChD,uBAAuB,EAAE,yBAAyB,CAAC;CACpD;AAED;;;;GAIG;AACH,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,wCAAwC,GAC9C,iCAAiC,CA6CnC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { createRawPropertyValueSelector } from "../ecsql-snippets/ECSqlValueSelectorSnippets.js";
|
|
6
|
+
import { createClassBasedInstanceLabelSelectClauseFactory } from "./ClassBasedInstanceLabelSelectClauseFactory.js";
|
|
7
|
+
import { ALIAS_PREFIX, concatenate, createECInstanceIdSuffixSelectors } from "./Utils.js";
|
|
8
|
+
/**
|
|
9
|
+
* Creates a label select clause according to BIS instance label rules.
|
|
10
|
+
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export function createBisInstanceLabelSelectClauseFactory(props) {
|
|
14
|
+
const clauses = [];
|
|
15
|
+
const factory = createClassBasedInstanceLabelSelectClauseFactory({
|
|
16
|
+
classHierarchyInspector: props.classHierarchyInspector,
|
|
17
|
+
clauses,
|
|
18
|
+
});
|
|
19
|
+
clauses.push({
|
|
20
|
+
className: "BisCore.GeometricElement",
|
|
21
|
+
clause: async ({ classAlias, ...rest }) => `
|
|
22
|
+
COALESCE(
|
|
23
|
+
${createRawPropertyValueSelector(classAlias, "CodeValue")},
|
|
24
|
+
${concatenate(rest, [
|
|
25
|
+
{ selector: createRawPropertyValueSelector(classAlias, "UserLabel") },
|
|
26
|
+
...createECInstanceIdSuffixSelectors(classAlias),
|
|
27
|
+
], `${createRawPropertyValueSelector(classAlias, "UserLabel")} IS NOT NULL`)}
|
|
28
|
+
)
|
|
29
|
+
`,
|
|
30
|
+
}, {
|
|
31
|
+
className: "BisCore.Element",
|
|
32
|
+
clause: async ({ classAlias }) => `
|
|
33
|
+
COALESCE(
|
|
34
|
+
${createRawPropertyValueSelector(classAlias, "UserLabel")},
|
|
35
|
+
${createRawPropertyValueSelector(classAlias, "CodeValue")}
|
|
36
|
+
)
|
|
37
|
+
`,
|
|
38
|
+
}, {
|
|
39
|
+
className: "BisCore.Model",
|
|
40
|
+
clause: async ({ classAlias, ...rest }) => {
|
|
41
|
+
const elementAlias = `${ALIAS_PREFIX}e`;
|
|
42
|
+
return `(
|
|
43
|
+
SELECT ${await factory.createSelectClause({ ...rest, classAlias: elementAlias, className: "BisCore.Element" })}
|
|
44
|
+
FROM [bis].[Element] AS ${elementAlias}
|
|
45
|
+
WHERE ${elementAlias}.[ECInstanceId] = ${createRawPropertyValueSelector(classAlias, "ModeledElement", "Id")}
|
|
46
|
+
)`;
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
return factory;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=BisInstanceLabelSelectClauseFactory.js.map
|
package/lib/esm/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BisInstanceLabelSelectClauseFactory.js","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/BisInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,gDAAgD,EAAE,MAAM,iDAAiD,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAc1F;;;;GAIG;AACH,MAAM,UAAU,yCAAyC,CACvD,KAA+C;IAE/C,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,gDAAgD,CAAC;QAC/D,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;QACtD,OAAO;KACR,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CACV;QACE,SAAS,EAAE,0BAA0B;QACrC,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;;YAErC,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC;YACvD,WAAW,CACX,IAAI,EACJ;YACE,EAAE,QAAQ,EAAE,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;YACrE,GAAG,iCAAiC,CAAC,UAAU,CAAC;SACjD,EACD,GAAG,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC,cAAc,CACzE;;OAEJ;KACF,EACD;QACE,SAAS,EAAE,iBAAiB;QAC5B,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;;YAE5B,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC;YACvD,8BAA8B,CAAC,UAAU,EAAE,WAAW,CAAC;;OAE5D;KACF,EACD;QACE,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;YACxC,MAAM,YAAY,GAAG,GAAG,YAAY,GAAG,CAAC;YACxC,OAAO;iBACE,MAAM,OAAO,CAAC,kBAAkB,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;kCACpF,YAAY;gBAC9B,YAAY,qBAAqB,8BAA8B,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC;QAC3G,CAAC;QACH,CAAC;KACF,CACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { CreateInstanceLabelSelectClauseProps, IInstanceLabelSelectClauseFactory } from "../InstanceLabelSelectClauseFactory.js";
|
|
2
|
+
import type { EC, ECClassHierarchyInspector } from "../Metadata.js";
|
|
3
|
+
/**
|
|
4
|
+
* An association of a class and an instance label select clause factory method.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export interface ClassBasedLabelSelectClause {
|
|
8
|
+
/** Full class name */
|
|
9
|
+
className: EC.FullClassName;
|
|
10
|
+
/** A factory method to create an instance label select clause */
|
|
11
|
+
clause: (props: CreateInstanceLabelSelectClauseProps) => Promise<string>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Props for `createClassBasedInstanceLabelSelectClauseFactory`.
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
export interface ClassBasedInstanceLabelSelectClauseFactoryProps {
|
|
18
|
+
/** Access to ECClass hierarchy in the iModel. */
|
|
19
|
+
classHierarchyInspector: ECClassHierarchyInspector;
|
|
20
|
+
/**
|
|
21
|
+
* A prioritized list of instance label selectors associated to classes they should be applied to.
|
|
22
|
+
*
|
|
23
|
+
* Because the list may contain clauses for classes in the same class hierarchy, and the factory
|
|
24
|
+
* handles them in given order, the order of clauses should be from the most specific class to the
|
|
25
|
+
* most general one.
|
|
26
|
+
*/
|
|
27
|
+
clauses: ClassBasedLabelSelectClause[];
|
|
28
|
+
/**
|
|
29
|
+
* A fallback label clause factory for when class-based factory doesn't produce a label.
|
|
30
|
+
* Defaults to the result of `createDefaultInstanceLabelSelectClauseFactory`.
|
|
31
|
+
*/
|
|
32
|
+
defaultClauseFactory?: IInstanceLabelSelectClauseFactory;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates an instance label select clause based on its class.
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
export declare function createClassBasedInstanceLabelSelectClauseFactory(props: ClassBasedInstanceLabelSelectClauseFactoryProps): IInstanceLabelSelectClauseFactory;
|
|
39
|
+
//# sourceMappingURL=ClassBasedInstanceLabelSelectClauseFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassBasedInstanceLabelSelectClauseFactory.d.ts","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,oCAAoC,EACpC,iCAAiC,EAClC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,EAAE,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,sBAAsB;IACtB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC;IAC5B,iEAAiE;IACjE,MAAM,EAAE,CAAC,KAAK,EAAE,oCAAoC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1E;AAED;;;GAGG;AACH,MAAM,WAAW,+CAA+C;IAC9D,iDAAiD;IACjD,uBAAuB,EAAE,yBAAyB,CAAC;IAEnD;;;;;;OAMG;IACH,OAAO,EAAE,2BAA2B,EAAE,CAAC;IAEvC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,iCAAiC,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAgB,gDAAgD,CAC9D,KAAK,EAAE,+CAA+C,GACrD,iCAAiC,CAyDnC"}
|
package/lib/esm/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { createRawPropertyValueSelector } from "../ecsql-snippets/ECSqlValueSelectorSnippets.js";
|
|
6
|
+
import { createDefaultInstanceLabelSelectClauseFactory } from "./DefaultInstanceLabelSelectClauseFactory.js";
|
|
7
|
+
/**
|
|
8
|
+
* Creates an instance label select clause based on its class.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export function createClassBasedInstanceLabelSelectClauseFactory(props) {
|
|
12
|
+
const { classHierarchyInspector, clauses: labelClausesByClass } = props;
|
|
13
|
+
const defaultClauseFactory = props.defaultClauseFactory ?? createDefaultInstanceLabelSelectClauseFactory();
|
|
14
|
+
async function getLabelClausesForClass(queryClassName) {
|
|
15
|
+
const matchingLabelClauses = await Promise.all(labelClausesByClass.map(async (entry) => {
|
|
16
|
+
if (await classHierarchyInspector.classDerivesFrom(entry.className, queryClassName)) {
|
|
17
|
+
// label selector is intended for a more specific class than we're selecting from - need to include it
|
|
18
|
+
// as query results (on polymorphic select) are going to include more specific class instances too
|
|
19
|
+
return entry;
|
|
20
|
+
}
|
|
21
|
+
if (await classHierarchyInspector.classDerivesFrom(queryClassName, entry.className)) {
|
|
22
|
+
// label selector is intended for a base class of what query is selecting - need to include it as
|
|
23
|
+
// we want base class label selectors to apply to subclass instances
|
|
24
|
+
return entry;
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}));
|
|
28
|
+
function filterNotUndefined(x) {
|
|
29
|
+
return !!x;
|
|
30
|
+
}
|
|
31
|
+
return matchingLabelClauses.filter(filterNotUndefined);
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
async createSelectClause(clauseProps) {
|
|
35
|
+
if (labelClausesByClass.length === 0) {
|
|
36
|
+
return defaultClauseFactory.createSelectClause(clauseProps);
|
|
37
|
+
}
|
|
38
|
+
const labelClausePromises = clauseProps.className
|
|
39
|
+
? await getLabelClausesForClass(clauseProps.className)
|
|
40
|
+
: labelClausesByClass;
|
|
41
|
+
if (labelClausePromises.length === 0) {
|
|
42
|
+
return defaultClauseFactory.createSelectClause(clauseProps);
|
|
43
|
+
}
|
|
44
|
+
const labelClauses = await Promise.all(labelClausePromises.map(async ({ className, clause }) => ({ className, clause: await clause(clauseProps) })));
|
|
45
|
+
return `COALESCE(
|
|
46
|
+
${labelClauses
|
|
47
|
+
.map(({ className, clause }) => `
|
|
48
|
+
IIF(
|
|
49
|
+
${createRawPropertyValueSelector(clauseProps.classAlias, "ECClassId")} IS (${className}),
|
|
50
|
+
${clause.trim()},
|
|
51
|
+
NULL
|
|
52
|
+
)
|
|
53
|
+
`.trim())
|
|
54
|
+
.join(", ")},
|
|
55
|
+
${await defaultClauseFactory.createSelectClause(clauseProps)}
|
|
56
|
+
)`;
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ClassBasedInstanceLabelSelectClauseFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassBasedInstanceLabelSelectClauseFactory.js","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/ClassBasedInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,6CAA6C,EAAE,MAAM,8CAA8C,CAAC;AA2C7G;;;GAGG;AACH,MAAM,UAAU,gDAAgD,CAC9D,KAAsD;IAEtD,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;IACxE,MAAM,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,IAAI,6CAA6C,EAAE,CAAC;IAC3G,KAAK,UAAU,uBAAuB,CAAC,cAAgC;QACrE,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5C,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACtC,IAAI,MAAM,uBAAuB,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;gBACpF,sGAAsG;gBACtG,kGAAkG;gBAClG,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,MAAM,uBAAuB,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpF,iGAAiG;gBACjG,oEAAoE;gBACpE,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;QACF,SAAS,kBAAkB,CAAI,CAAgB;YAC7C,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;QACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACzD,CAAC;IACD,OAAO;QACL,KAAK,CAAC,kBAAkB,CAAC,WAAiD;YACxE,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS;gBAC/C,CAAC,CAAC,MAAM,uBAAuB,CAAC,WAAW,CAAC,SAAS,CAAC;gBACtD,CAAC,CAAC,mBAAmB,CAAC;YACxB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,oBAAoB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAC7G,CAAC;YAEF,OAAO;UACH,YAAY;iBACX,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAC7B;;kBAEM,8BAA8B,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,SAAS;kBACpF,MAAM,CAAC,IAAI,EAAE;;;aAGlB,CAAC,IAAI,EAAE,CACT;iBACA,IAAI,CAAC,IAAI,CAAC;UACX,MAAM,oBAAoB,CAAC,kBAAkB,CAAC,WAAW,CAAC;QAC5D,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IInstanceLabelSelectClauseFactory } from "../InstanceLabelSelectClauseFactory.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a label select clause in a format `Class label [base36(briefcase id)-base36(local id)]`, where
|
|
4
|
+
* local and briefcase IDs are calculated based on ECInstance ID:
|
|
5
|
+
* - `{briefcase id} = ECInstanceId >> 40`
|
|
6
|
+
* - `{local id} = ECInstanceId & (1 << 40 - 1)`
|
|
7
|
+
*
|
|
8
|
+
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export declare function createDefaultInstanceLabelSelectClauseFactory(): IInstanceLabelSelectClauseFactory;
|
|
12
|
+
//# sourceMappingURL=DefaultInstanceLabelSelectClauseFactory.d.ts.map
|
package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultInstanceLabelSelectClauseFactory.d.ts","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAEhG;;;;;;;;GAQG;AACH,wBAAgB,6CAA6C,IAAI,iCAAiC,CAoBjG"}
|
package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { createRawPropertyValueSelector } from "../ecsql-snippets/ECSqlValueSelectorSnippets.js";
|
|
6
|
+
import { ALIAS_PREFIX, concatenate, createECInstanceIdSuffixSelectors } from "./Utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* Creates a label select clause in a format `Class label [base36(briefcase id)-base36(local id)]`, where
|
|
9
|
+
* local and briefcase IDs are calculated based on ECInstance ID:
|
|
10
|
+
* - `{briefcase id} = ECInstanceId >> 40`
|
|
11
|
+
* - `{local id} = ECInstanceId & (1 << 40 - 1)`
|
|
12
|
+
*
|
|
13
|
+
* @see https://www.itwinjs.org/presentation/advanced/defaultbisrules/#label-overrides
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export function createDefaultInstanceLabelSelectClauseFactory() {
|
|
17
|
+
const alias = `${ALIAS_PREFIX}c`;
|
|
18
|
+
return {
|
|
19
|
+
async createSelectClause(props) {
|
|
20
|
+
return `(
|
|
21
|
+
SELECT
|
|
22
|
+
${concatenate(props, [
|
|
23
|
+
{
|
|
24
|
+
selector: `COALESCE(
|
|
25
|
+
${createRawPropertyValueSelector(alias, "DisplayLabel")},
|
|
26
|
+
${createRawPropertyValueSelector(alias, "Name")}
|
|
27
|
+
)`,
|
|
28
|
+
},
|
|
29
|
+
...createECInstanceIdSuffixSelectors(props.classAlias),
|
|
30
|
+
])}
|
|
31
|
+
FROM [meta].[ECClassDef] AS ${alias}
|
|
32
|
+
WHERE ${alias}.[ECInstanceId] = ${createRawPropertyValueSelector(props.classAlias, "ECClassId")}
|
|
33
|
+
)`;
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=DefaultInstanceLabelSelectClauseFactory.js.map
|
package/lib/esm/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultInstanceLabelSelectClauseFactory.js","sourceRoot":"","sources":["../../../../src/shared/instance-label-factory-impls/DefaultInstanceLabelSelectClauseFactory.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAI1F;;;;;;;;GAQG;AACH,MAAM,UAAU,6CAA6C;IAC3D,MAAM,KAAK,GAAG,GAAG,YAAY,GAAG,CAAC;IACjC,OAAO;QACL,KAAK,CAAC,kBAAkB,CAAC,KAAK;YAC5B,OAAO;;YAED,WAAW,CAAC,KAAK,EAAE;gBACnB;oBACE,QAAQ,EAAE;kBACN,8BAA8B,CAAC,KAAK,EAAE,cAAc,CAAC;kBACrD,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC/C;iBACH;gBACD,GAAG,iCAAiC,CAAC,KAAK,CAAC,UAAU,CAAC;aACvD,CAAC;sCAC0B,KAAK;gBAC3B,KAAK,qBAAqB,8BAA8B,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC;QAC/F,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|