@itwin/tree-widget-react 0.1.2 → 0.3.0
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/README.md +30 -1
- package/lib/cjs/components/IconButton.scss +2 -2
- package/lib/cjs/components/TreeWidgetComponent.d.ts +1 -0
- package/lib/cjs/components/TreeWidgetComponent.scss +1 -1
- package/lib/cjs/components/header/TreeHeader.d.ts +1 -0
- package/lib/cjs/components/header/TreeHeader.scss +1 -1
- package/lib/cjs/components/rulesets/IModelContent.json +435 -0
- package/lib/cjs/components/search-bar/Popup.scss +1 -1
- package/lib/cjs/components/search-bar/SearchBar.scss +1 -1
- package/lib/cjs/components/search-bar/SearchBox.scss +1 -1
- package/lib/cjs/components/trees/CategoriesTree.d.ts +1 -0
- package/lib/cjs/components/trees/CategoriesTree.scss +1 -1
- package/lib/cjs/components/trees/ClassificationsTree.d.ts +1 -0
- package/lib/cjs/components/trees/IModelContentTree.d.ts +7 -0
- package/lib/cjs/components/trees/IModelContentTree.js +56 -0
- package/lib/cjs/components/trees/IModelContentTree.js.map +1 -0
- package/lib/cjs/components/trees/ModelsTree.d.ts +1 -0
- package/lib/cjs/components/trees/ModelsTree.scss +1 -1
- package/lib/cjs/components/trees/SpatialTree.d.ts +1 -0
- package/lib/cjs/components/trees/TreeWithRulesetTree.scss +1 -1
- package/lib/cjs/components/trees/index.d.ts +1 -0
- package/lib/cjs/components/trees/index.js +5 -4
- package/lib/cjs/components/trees/index.js.map +1 -1
- package/lib/esm/components/IconButton.scss +2 -2
- package/lib/esm/components/TreeWidgetComponent.d.ts +1 -0
- package/lib/esm/components/TreeWidgetComponent.scss +1 -1
- package/lib/esm/components/header/TreeHeader.d.ts +1 -0
- package/lib/esm/components/header/TreeHeader.scss +1 -1
- package/lib/esm/components/rulesets/IModelContent.json +435 -0
- package/lib/esm/components/search-bar/Popup.scss +1 -1
- package/lib/esm/components/search-bar/SearchBar.scss +1 -1
- package/lib/esm/components/search-bar/SearchBox.scss +1 -1
- package/lib/esm/components/trees/CategoriesTree.d.ts +1 -0
- package/lib/esm/components/trees/CategoriesTree.scss +1 -1
- package/lib/esm/components/trees/ClassificationsTree.d.ts +1 -0
- package/lib/esm/components/trees/IModelContentTree.d.ts +7 -0
- package/lib/esm/components/trees/IModelContentTree.js +30 -0
- package/lib/esm/components/trees/IModelContentTree.js.map +1 -0
- package/lib/esm/components/trees/ModelsTree.d.ts +1 -0
- package/lib/esm/components/trees/ModelsTree.scss +1 -1
- package/lib/esm/components/trees/SpatialTree.d.ts +1 -0
- package/lib/esm/components/trees/TreeWithRulesetTree.scss +1 -1
- package/lib/esm/components/trees/index.d.ts +1 -0
- package/lib/esm/components/trees/index.js +1 -0
- package/lib/esm/components/trees/index.js.map +1 -1
- package/package.json +25 -25
package/README.md
CHANGED
|
@@ -27,6 +27,35 @@ import { UiItemsManager } from "@itwin/appui-abstract";
|
|
|
27
27
|
import { TreeWidgetUiItemsProvider } from "@itwin/tree-widget-react";
|
|
28
28
|
...
|
|
29
29
|
UiItemsManager.register(
|
|
30
|
-
new TreeWidgetUiItemsProvider({ ...
|
|
30
|
+
new TreeWidgetUiItemsProvider({ ...TreeWidgetOptions })
|
|
31
31
|
);
|
|
32
32
|
```
|
|
33
|
+
|
|
34
|
+
### Additional trees avaialable
|
|
35
|
+
|
|
36
|
+
#### IModelContentTree
|
|
37
|
+
|
|
38
|
+
Component that displays a hierarchy with content of a given `IModelConnection`.
|
|
39
|
+
|
|
40
|
+
##### Resulting hierarchy
|
|
41
|
+
|
|
42
|
+
- Root Subject
|
|
43
|
+
- Child Subjects
|
|
44
|
+
- Target Model
|
|
45
|
+
- Spatial Categories of top-assemblies in the Model (if model is a GeometricModel3d)
|
|
46
|
+
- Top-assemblies in the model and category
|
|
47
|
+
- Child elements of the assembly
|
|
48
|
+
- Drawing Categories of top-assemblies in the Model (if model is a GeometricModel2d)
|
|
49
|
+
- Top-assemblies in the model and category
|
|
50
|
+
- Child elements of the assembly
|
|
51
|
+
- Top-assemblies in the Model (if model is neither GeometricModel3d nor GeometricModel2d)
|
|
52
|
+
- Child elements of the assembly
|
|
53
|
+
|
|
54
|
+
In addition, for every modeled element we show content of the model as children for the element's node.
|
|
55
|
+
|
|
56
|
+
More details about Subjects and Models can be found here:
|
|
57
|
+
|
|
58
|
+
- <https://www.imodeljs.org/bis/intro/information-hierarchy/>
|
|
59
|
+
- <https://www.imodeljs.org/bis/intro/organizing-models-and-elements/>
|
|
60
|
+
|
|
61
|
+
More details about the hierarchy can be found in the [presentation ruleset JSON file](./src/components/rulesets/IModelContent.json).
|
|
@@ -2,8 +2,8 @@
|
|
|
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
|
-
@import "~@itwin/core-react/lib/
|
|
6
|
-
@import "~@itwin/appui-layout-react/lib/
|
|
5
|
+
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
|
+
@import "~@itwin/appui-layout-react/lib/cjs/appui-layout-react/footer/_variables";
|
|
7
7
|
|
|
8
8
|
.tree-widget-icon-button {
|
|
9
9
|
display: inline-block;
|
|
@@ -2,7 +2,7 @@
|
|
|
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
|
-
@import "~@itwin/core-react/lib/
|
|
5
|
+
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
6
|
|
|
7
7
|
.tree-widget-visibility-widget {
|
|
8
8
|
padding: $uicore-s;
|
|
@@ -2,7 +2,7 @@
|
|
|
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
|
-
@import "~@itwin/core-react/lib/
|
|
5
|
+
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
6
|
|
|
7
7
|
.tree-widget-header-tree-search-bar {
|
|
8
8
|
margin-bottom: $uicore-s;
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../node_modules/@itwin/presentation-common/Ruleset.schema.json",
|
|
3
|
+
"id": "tree-widget-react/imodel-content",
|
|
4
|
+
"requiredSchemas": [
|
|
5
|
+
{
|
|
6
|
+
"name": "BisCore"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"rules": [
|
|
10
|
+
{
|
|
11
|
+
"ruleType": "RootNodes",
|
|
12
|
+
"autoExpand": true,
|
|
13
|
+
"specifications": [
|
|
14
|
+
{
|
|
15
|
+
"specType": "InstanceNodesOfSpecificClasses",
|
|
16
|
+
"classes": [
|
|
17
|
+
{
|
|
18
|
+
"schemaName": "BisCore",
|
|
19
|
+
"classNames": ["Subject"],
|
|
20
|
+
"arePolymorphic": false
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"instanceFilter": "this.Parent = NULL",
|
|
24
|
+
"groupByClass": false,
|
|
25
|
+
"groupByLabel": false
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"ruleType": "ChildNodes",
|
|
31
|
+
"condition": "ParentNode.IsOfClass(\"Subject\", \"BisCore\")",
|
|
32
|
+
"specifications": [
|
|
33
|
+
{
|
|
34
|
+
"specType": "RelatedInstanceNodes",
|
|
35
|
+
"relationshipPaths": [
|
|
36
|
+
{
|
|
37
|
+
"relationship": {
|
|
38
|
+
"schemaName": "BisCore",
|
|
39
|
+
"className": "SubjectOwnsSubjects"
|
|
40
|
+
},
|
|
41
|
+
"direction": "Forward",
|
|
42
|
+
"targetClass": {
|
|
43
|
+
"schemaName": "BisCore",
|
|
44
|
+
"className": "Subject"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"instanceFilter": "json_extract(this.JsonProperties, \"$.Subject.Job.Bridge\") <> NULL OR ifnull(json_extract(this.JsonProperties, \"$.Subject.Model.Type\"), \"\") = \"Hierarchy\"",
|
|
49
|
+
"hideNodesInHierarchy": true,
|
|
50
|
+
"groupByClass": false,
|
|
51
|
+
"groupByLabel": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"specType": "RelatedInstanceNodes",
|
|
55
|
+
"relationshipPaths": [
|
|
56
|
+
{
|
|
57
|
+
"relationship": {
|
|
58
|
+
"schemaName": "BisCore",
|
|
59
|
+
"className": "SubjectOwnsSubjects"
|
|
60
|
+
},
|
|
61
|
+
"direction": "Forward",
|
|
62
|
+
"targetClass": {
|
|
63
|
+
"schemaName": "BisCore",
|
|
64
|
+
"className": "Subject"
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"instanceFilter": "json_extract(this.JsonProperties, \"$.Subject.Job.Bridge\") = NULL AND ifnull(json_extract(this.JsonProperties, \"$.Subject.Model.Type\"), \"\") <> \"Hierarchy\"",
|
|
69
|
+
"groupByClass": false,
|
|
70
|
+
"groupByLabel": false
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"ruleType": "ChildNodes",
|
|
76
|
+
"condition": "ParentNode.IsOfClass(\"Subject\", \"BisCore\")",
|
|
77
|
+
"specifications": [
|
|
78
|
+
{
|
|
79
|
+
"specType": "InstanceNodesOfSpecificClasses",
|
|
80
|
+
"classes": {
|
|
81
|
+
"schemaName": "BisCore",
|
|
82
|
+
"classNames": ["Model"],
|
|
83
|
+
"arePolymorphic": true
|
|
84
|
+
},
|
|
85
|
+
"relatedInstances": [
|
|
86
|
+
{
|
|
87
|
+
"relationshipPath": {
|
|
88
|
+
"relationship": {
|
|
89
|
+
"schemaName": "BisCore",
|
|
90
|
+
"className": "ModelModelsElement"
|
|
91
|
+
},
|
|
92
|
+
"direction": "Forward",
|
|
93
|
+
"targetClass": {
|
|
94
|
+
"schemaName": "BisCore",
|
|
95
|
+
"className": "InformationPartitionElement"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"alias": "partition",
|
|
99
|
+
"isRequired": true
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"instanceFilter": "(parent.ECInstanceId = partition.Parent.Id OR json_extract(parent.JsonProperties, \"$.Subject.Model.TargetPartition\") = printf(\"0x%x\", partition.ECInstanceId)) AND NOT this.IsPrivate AND json_extract(partition.JsonProperties, \"$.PhysicalPartition.Model.Content\") = NULL AND json_extract(partition.JsonProperties, \"$.GraphicalPartition3d.Model.Content\") = NULL",
|
|
103
|
+
"groupByClass": false,
|
|
104
|
+
"groupByLabel": false
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"specType": "InstanceNodesOfSpecificClasses",
|
|
108
|
+
"classes": {
|
|
109
|
+
"schemaName": "BisCore",
|
|
110
|
+
"classNames": ["Model"],
|
|
111
|
+
"arePolymorphic": true
|
|
112
|
+
},
|
|
113
|
+
"relatedInstances": [
|
|
114
|
+
{
|
|
115
|
+
"relationshipPath": {
|
|
116
|
+
"relationship": {
|
|
117
|
+
"schemaName": "BisCore",
|
|
118
|
+
"className": "ModelModelsElement"
|
|
119
|
+
},
|
|
120
|
+
"direction": "Forward",
|
|
121
|
+
"targetClass": {
|
|
122
|
+
"schemaName": "BisCore",
|
|
123
|
+
"className": "InformationPartitionElement"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"alias": "partition",
|
|
127
|
+
"isRequired": true
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"instanceFilter": "(parent.ECInstanceId = partition.Parent.Id OR json_extract(parent.JsonProperties, \"$.Subject.Model.TargetPartition\") = printf(\"0x%x\", partition.ECInstanceId)) AND NOT this.IsPrivate AND (json_extract(partition.JsonProperties, \"$.PhysicalPartition.Model.Content\") <> NULL OR json_extract(partition.JsonProperties, \"$.GraphicalPartition3d.Model.Content\") <> NULL)",
|
|
131
|
+
"hideNodesInHierarchy": true,
|
|
132
|
+
"groupByClass": false,
|
|
133
|
+
"groupByLabel": false
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"ruleType": "ChildNodes",
|
|
139
|
+
"condition": "ParentNode.IsOfClass(\"ISubModeledElement\", \"BisCore\")",
|
|
140
|
+
"specifications": [
|
|
141
|
+
{
|
|
142
|
+
"specType": "RelatedInstanceNodes",
|
|
143
|
+
"relationshipPaths": [
|
|
144
|
+
{
|
|
145
|
+
"relationship": {
|
|
146
|
+
"schemaName": "BisCore",
|
|
147
|
+
"className": "ModelModelsElement"
|
|
148
|
+
},
|
|
149
|
+
"direction": "Backward"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"instanceFilter": "NOT this.IsPrivate",
|
|
153
|
+
"hideNodesInHierarchy": true,
|
|
154
|
+
"groupByClass": false,
|
|
155
|
+
"groupByLabel": false
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"ruleType": "ChildNodes",
|
|
161
|
+
"condition": "ParentNode.IsOfClass(\"GeometricModel3d\", \"BisCore\")",
|
|
162
|
+
"specifications": [
|
|
163
|
+
{
|
|
164
|
+
"specType": "RelatedInstanceNodes",
|
|
165
|
+
"relationshipPaths": [
|
|
166
|
+
[
|
|
167
|
+
{
|
|
168
|
+
"relationship": {
|
|
169
|
+
"schemaName": "BisCore",
|
|
170
|
+
"className": "ModelContainsElements"
|
|
171
|
+
},
|
|
172
|
+
"direction": "Forward"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"relationship": {
|
|
176
|
+
"schemaName": "BisCore",
|
|
177
|
+
"className": "GeometricElement3dIsInCategory"
|
|
178
|
+
},
|
|
179
|
+
"direction": "Forward"
|
|
180
|
+
}
|
|
181
|
+
]
|
|
182
|
+
],
|
|
183
|
+
"suppressSimilarAncestorsCheck": true,
|
|
184
|
+
"groupByClass": false,
|
|
185
|
+
"groupByLabel": false,
|
|
186
|
+
"nestedRules": [
|
|
187
|
+
{
|
|
188
|
+
"ruleType": "ChildNodes",
|
|
189
|
+
"condition": "ParentNode.IsOfClass(\"SpatialCategory\", \"BisCore\")",
|
|
190
|
+
"specifications": [
|
|
191
|
+
{
|
|
192
|
+
"specType": "RelatedInstanceNodes",
|
|
193
|
+
"relationshipPaths": [
|
|
194
|
+
{
|
|
195
|
+
"relationship": {
|
|
196
|
+
"schemaName": "BisCore",
|
|
197
|
+
"className": "GeometricElement3dIsInCategory"
|
|
198
|
+
},
|
|
199
|
+
"direction": "Backward"
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"instanceFilter": "this.Model.Id = parent.parent.ECInstanceId ANDALSO this.Parent = NULL",
|
|
203
|
+
"groupByClass": true,
|
|
204
|
+
"groupByLabel": false
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
}
|
|
208
|
+
]
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"specType": "RelatedInstanceNodes",
|
|
212
|
+
"relationshipPaths": [
|
|
213
|
+
{
|
|
214
|
+
"relationship": {
|
|
215
|
+
"schemaName": "BisCore",
|
|
216
|
+
"className": "ModelContainsElements"
|
|
217
|
+
},
|
|
218
|
+
"direction": "Forward",
|
|
219
|
+
"targetClass": {
|
|
220
|
+
"schemaName": "BisCore",
|
|
221
|
+
"className": "InformationContentElement"
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
"groupByClass": true,
|
|
226
|
+
"groupByLabel": false
|
|
227
|
+
}
|
|
228
|
+
]
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"ruleType": "ChildNodes",
|
|
232
|
+
"condition": "ParentNode.IsOfClass(\"GeometricModel2d\", \"BisCore\")",
|
|
233
|
+
"specifications": [
|
|
234
|
+
{
|
|
235
|
+
"specType": "RelatedInstanceNodes",
|
|
236
|
+
"relationshipPaths": [
|
|
237
|
+
[
|
|
238
|
+
{
|
|
239
|
+
"relationship": {
|
|
240
|
+
"schemaName": "BisCore",
|
|
241
|
+
"className": "ModelContainsElements"
|
|
242
|
+
},
|
|
243
|
+
"direction": "Forward"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"relationship": {
|
|
247
|
+
"schemaName": "BisCore",
|
|
248
|
+
"className": "GeometricElement2dIsInCategory"
|
|
249
|
+
},
|
|
250
|
+
"direction": "Forward"
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
],
|
|
254
|
+
"suppressSimilarAncestorsCheck": true,
|
|
255
|
+
"groupByClass": false,
|
|
256
|
+
"groupByLabel": false,
|
|
257
|
+
"nestedRules": [
|
|
258
|
+
{
|
|
259
|
+
"ruleType": "ChildNodes",
|
|
260
|
+
"condition": "ParentNode.IsOfClass(\"DrawingCategory\", \"BisCore\")",
|
|
261
|
+
"specifications": [
|
|
262
|
+
{
|
|
263
|
+
"specType": "RelatedInstanceNodes",
|
|
264
|
+
"relationshipPaths": [
|
|
265
|
+
{
|
|
266
|
+
"relationship": {
|
|
267
|
+
"schemaName": "BisCore",
|
|
268
|
+
"className": "GeometricElement2dIsInCategory"
|
|
269
|
+
},
|
|
270
|
+
"direction": "Backward"
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
"instanceFilter": "this.Model.Id = parent.parent.ECInstanceId ANDALSO this.Parent = NULL",
|
|
274
|
+
"groupByClass": true,
|
|
275
|
+
"groupByLabel": false
|
|
276
|
+
}
|
|
277
|
+
]
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"specType": "RelatedInstanceNodes",
|
|
283
|
+
"relationshipPaths": [
|
|
284
|
+
{
|
|
285
|
+
"relationship": {
|
|
286
|
+
"schemaName": "BisCore",
|
|
287
|
+
"className": "ModelContainsElements"
|
|
288
|
+
},
|
|
289
|
+
"direction": "Forward",
|
|
290
|
+
"targetClass": {
|
|
291
|
+
"schemaName": "BisCore",
|
|
292
|
+
"className": "InformationContentElement"
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
],
|
|
296
|
+
"groupByClass": true,
|
|
297
|
+
"groupByLabel": false
|
|
298
|
+
}
|
|
299
|
+
]
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"ruleType": "ChildNodes",
|
|
303
|
+
"condition": "ParentNode.IsOfClass(\"Model\", \"BisCore\")",
|
|
304
|
+
"onlyIfNotHandled": true,
|
|
305
|
+
"specifications": [
|
|
306
|
+
{
|
|
307
|
+
"specType": "RelatedInstanceNodes",
|
|
308
|
+
"relationshipPaths": [
|
|
309
|
+
[
|
|
310
|
+
{
|
|
311
|
+
"relationship": {
|
|
312
|
+
"schemaName": "BisCore",
|
|
313
|
+
"className": "ModelContainsElements"
|
|
314
|
+
},
|
|
315
|
+
"direction": "Forward"
|
|
316
|
+
}
|
|
317
|
+
]
|
|
318
|
+
],
|
|
319
|
+
"instanceFilter": "this.Parent = NULL",
|
|
320
|
+
"groupByClass": true,
|
|
321
|
+
"groupByLabel": false
|
|
322
|
+
}
|
|
323
|
+
]
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"ruleType": "ChildNodes",
|
|
327
|
+
"condition": "ParentNode.IsOfClass(\"GroupInformationElement\", \"BisCore\")",
|
|
328
|
+
"onlyIfNotHandled": true,
|
|
329
|
+
"specifications": [
|
|
330
|
+
{
|
|
331
|
+
"specType": "CustomNode",
|
|
332
|
+
"type": "T_CHILDREN",
|
|
333
|
+
"label": "Children",
|
|
334
|
+
"imageId": "icon-hierarchy-tree",
|
|
335
|
+
"hideIfNoChildren": true,
|
|
336
|
+
"nestedRules": [
|
|
337
|
+
{
|
|
338
|
+
"ruleType": "ChildNodes",
|
|
339
|
+
"specifications": [
|
|
340
|
+
{
|
|
341
|
+
"specType": "RelatedInstanceNodes",
|
|
342
|
+
"relationshipPaths": [
|
|
343
|
+
{
|
|
344
|
+
"relationship": {
|
|
345
|
+
"schemaName": "BisCore",
|
|
346
|
+
"className": "ElementOwnsChildElements"
|
|
347
|
+
},
|
|
348
|
+
"direction": "Forward"
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
"groupByClass": true,
|
|
352
|
+
"groupByLabel": false
|
|
353
|
+
}
|
|
354
|
+
]
|
|
355
|
+
}
|
|
356
|
+
]
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"specType": "CustomNode",
|
|
360
|
+
"type": "T_GROUPED_MEMBERS",
|
|
361
|
+
"label": "Members",
|
|
362
|
+
"imageId": "icon-group",
|
|
363
|
+
"hideIfNoChildren": true,
|
|
364
|
+
"nestedRules": [
|
|
365
|
+
{
|
|
366
|
+
"ruleType": "ChildNodes",
|
|
367
|
+
"specifications": [
|
|
368
|
+
{
|
|
369
|
+
"specType": "RelatedInstanceNodes",
|
|
370
|
+
"relationshipPaths": [
|
|
371
|
+
{
|
|
372
|
+
"relationship": {
|
|
373
|
+
"schemaName": "BisCore",
|
|
374
|
+
"className": "ElementGroupsMembers"
|
|
375
|
+
},
|
|
376
|
+
"direction": "Forward"
|
|
377
|
+
}
|
|
378
|
+
],
|
|
379
|
+
"groupByClass": true,
|
|
380
|
+
"groupByLabel": false
|
|
381
|
+
}
|
|
382
|
+
]
|
|
383
|
+
}
|
|
384
|
+
]
|
|
385
|
+
}
|
|
386
|
+
]
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"ruleType": "ChildNodes",
|
|
390
|
+
"condition": "ParentNode.IsOfClass(\"Element\", \"BisCore\")",
|
|
391
|
+
"onlyIfNotHandled": true,
|
|
392
|
+
"specifications": [
|
|
393
|
+
{
|
|
394
|
+
"specType": "RelatedInstanceNodes",
|
|
395
|
+
"relationshipPaths": [
|
|
396
|
+
{
|
|
397
|
+
"relationship": {
|
|
398
|
+
"schemaName": "BisCore",
|
|
399
|
+
"className": "ElementOwnsChildElements"
|
|
400
|
+
},
|
|
401
|
+
"direction": "Forward"
|
|
402
|
+
}
|
|
403
|
+
],
|
|
404
|
+
"groupByClass": true,
|
|
405
|
+
"groupByLabel": false
|
|
406
|
+
}
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"ruleType": "ImageIdOverride",
|
|
411
|
+
"condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Subject\", \"BisCore\")",
|
|
412
|
+
"imageIdExpression": "IIF(this.Parent.Id = NULL, \"icon-imodel-hollow-2\", \"icon-folder\")"
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
"ruleType": "ImageIdOverride",
|
|
416
|
+
"condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Model\", \"BisCore\")",
|
|
417
|
+
"imageIdExpression": "\"icon-model\""
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"ruleType": "ImageIdOverride",
|
|
421
|
+
"condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Category\", \"BisCore\")",
|
|
422
|
+
"imageIdExpression": "\"icon-layers\""
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"ruleType": "ImageIdOverride",
|
|
426
|
+
"condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Element\", \"BisCore\")",
|
|
427
|
+
"imageIdExpression": "\"icon-item\""
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"ruleType": "ImageIdOverride",
|
|
431
|
+
"condition": "ThisNode.IsClassGroupingNode",
|
|
432
|
+
"imageIdExpression": "\"icon-ec-class\""
|
|
433
|
+
}
|
|
434
|
+
]
|
|
435
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
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
|
-
@import "~@itwin/core-react/lib/
|
|
5
|
+
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
6
|
|
|
7
7
|
.tree-widget-search-popup {
|
|
8
8
|
display: block;
|
|
@@ -2,7 +2,7 @@
|
|
|
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
|
-
@import "~@itwin/core-react/lib/
|
|
5
|
+
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
6
|
|
|
7
7
|
.tree-widget-search-bar {
|
|
8
8
|
display: flex;
|
|
@@ -2,7 +2,7 @@
|
|
|
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
|
-
@import "~@itwin/core-react/lib/
|
|
5
|
+
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
6
|
|
|
7
7
|
.tree-widget-searchbox {
|
|
8
8
|
@include uicore-font-family;
|
|
@@ -2,7 +2,7 @@
|
|
|
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
|
-
@import "~@itwin/core-react/lib/
|
|
5
|
+
@import "~@itwin/core-react/lib/cjs/core-react/index";
|
|
6
6
|
|
|
7
7
|
.tree-widget-category-tree-search-bar {
|
|
8
8
|
margin-bottom: $uicore-s;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { IModelConnection } from "@itwin/core-frontend";
|
|
3
|
+
export interface IModelContentTreeProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, "children"> {
|
|
4
|
+
iModel: IModelConnection;
|
|
5
|
+
}
|
|
6
|
+
export declare const IModelContentTree: (props: IModelContentTreeProps) => JSX.Element;
|
|
7
|
+
//# sourceMappingURL=IModelContentTree.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.IModelContentTree = void 0;
|
|
26
|
+
/*---------------------------------------------------------------------------------------------
|
|
27
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
28
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
29
|
+
*--------------------------------------------------------------------------------------------*/
|
|
30
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
31
|
+
const react_1 = __importStar(require("react"));
|
|
32
|
+
const presentation_components_1 = require("@itwin/presentation-components");
|
|
33
|
+
const components_react_1 = require("@itwin/components-react");
|
|
34
|
+
const IModelContent_json_1 = __importDefault(require("../rulesets/IModelContent.json"));
|
|
35
|
+
const core_react_1 = require("@itwin/core-react");
|
|
36
|
+
const IModelContentTree = (props) => {
|
|
37
|
+
const { iModel, className, ...divProps } = props;
|
|
38
|
+
const [height, setHeight] = react_1.useState(0);
|
|
39
|
+
const [width, setWidth] = react_1.useState(0);
|
|
40
|
+
const handleResize = react_1.useCallback((w, h) => {
|
|
41
|
+
setHeight(h);
|
|
42
|
+
setWidth(w);
|
|
43
|
+
}, []);
|
|
44
|
+
const ref = core_react_1.useResizeObserver(handleResize);
|
|
45
|
+
const { nodeLoader } = presentation_components_1.usePresentationTreeNodeLoader({
|
|
46
|
+
imodel: iModel,
|
|
47
|
+
ruleset: IModelContent_json_1.default,
|
|
48
|
+
pagingSize: 20,
|
|
49
|
+
appendChildrenCountForGroupingNodes: true,
|
|
50
|
+
});
|
|
51
|
+
const eventHandler = components_react_1.useTreeEventsHandler(react_1.useMemo(() => ({ nodeLoader, modelSource: nodeLoader.modelSource, collapsedChildrenDisposalEnabled: true }), [nodeLoader]));
|
|
52
|
+
return (react_1.default.createElement("div", { ref: ref, style: { width: "100%", height: "100%" }, ...divProps, className: classnames_1.default("imodel-content-tree", className) },
|
|
53
|
+
react_1.default.createElement(components_react_1.ControlledTree, { width: width, height: height, nodeLoader: nodeLoader, selectionMode: components_react_1.SelectionMode.None, eventsHandler: eventHandler, model: components_react_1.useTreeModel(nodeLoader.modelSource), iconsEnabled: true })));
|
|
54
|
+
};
|
|
55
|
+
exports.IModelContentTree = IModelContentTree;
|
|
56
|
+
//# sourceMappingURL=IModelContentTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IModelContentTree.js","sourceRoot":"","sources":["../../../../src/components/trees/IModelContentTree.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,4DAAoC;AACpC,+CAA8D;AAG9D,4EAA+E;AAC/E,8DAA4G;AAC5G,wFAAoE;AACpE,kDAAsD;AAM/C,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,gBAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,gBAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,mBAAW,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACxD,SAAS,CAAC,CAAC,CAAC,CAAC;QACb,QAAQ,CAAC,CAAC,CAAC,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,GAAG,GAAG,8BAAiB,CAAiB,YAAY,CAAC,CAAC;IAE5D,MAAM,EAAE,UAAU,EAAE,GAAG,uDAA6B,CAAC;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,4BAAiC;QAC1C,UAAU,EAAE,EAAE;QACd,mCAAmC,EAAE,IAAI;KAC1C,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,uCAAoB,CAAC,eAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtK,OAAO,CACL,uCAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAM,QAAQ,EAAE,SAAS,EAAE,oBAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC;QAC5H,8BAAC,iCAAc,IACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,gCAAa,CAAC,IAAI,EACjC,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,+BAAY,CAAC,UAAU,CAAC,WAAW,CAAC,EAC3C,YAAY,EAAE,IAAI,GAClB,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,iBAAiB,qBAgC5B","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 classNames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { Ruleset } from \"@itwin/presentation-common\";\nimport { usePresentationTreeNodeLoader } from \"@itwin/presentation-components\";\nimport { ControlledTree, SelectionMode, useTreeEventsHandler, useTreeModel } from \"@itwin/components-react\";\nimport IMODEL_CONTENT_RULESET from \"../rulesets/IModelContent.json\";\nimport { useResizeObserver } from \"@itwin/core-react\";\n\nexport interface IModelContentTreeProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"children\"> {\n iModel: IModelConnection;\n}\n\nexport const IModelContentTree = (props: IModelContentTreeProps) => {\n const { iModel, className, ...divProps } = props;\n\n const [height, setHeight] = useState(0);\n const [width, setWidth] = useState(0);\n const handleResize = useCallback((w: number, h: number) => {\n setHeight(h);\n setWidth(w);\n }, []);\n const ref = useResizeObserver<HTMLDivElement>(handleResize);\n\n const { nodeLoader } = usePresentationTreeNodeLoader({\n imodel: iModel,\n ruleset: IMODEL_CONTENT_RULESET as Ruleset,\n pagingSize: 20,\n appendChildrenCountForGroupingNodes: true,\n });\n const eventHandler = useTreeEventsHandler(useMemo(() => ({ nodeLoader, modelSource: nodeLoader.modelSource, collapsedChildrenDisposalEnabled: true }), [nodeLoader]));\n\n return (\n <div ref={ref} style={{ width: \"100%\", height: \"100%\" }} {...divProps} className={classNames(\"imodel-content-tree\", className)}>\n <ControlledTree\n width={width}\n height={height}\n nodeLoader={nodeLoader}\n selectionMode={SelectionMode.None}\n eventsHandler={eventHandler}\n model={useTreeModel(nodeLoader.modelSource)}\n iconsEnabled={true}\n />\n </div>\n );\n};\n"]}
|