@itwin/core-backend 3.4.6 → 3.4.7
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 +6 -1
- package/lib/cjs/AliCloudStorageService.d.ts +23 -23
- package/lib/cjs/AliCloudStorageService.js +71 -71
- package/lib/cjs/AliCloudStorageService.js.map +1 -1
- package/lib/cjs/BackendHubAccess.d.ts +224 -224
- package/lib/cjs/BackendHubAccess.js +41 -41
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.d.ts +91 -91
- package/lib/cjs/BackendLoggerCategory.js +99 -99
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.d.ts +21 -21
- package/lib/cjs/BisCoreSchema.js +60 -60
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts +165 -165
- package/lib/cjs/BriefcaseManager.js +405 -405
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/Category.d.ts +153 -153
- package/lib/cjs/Category.js +243 -243
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
- package/lib/cjs/ChangeSummaryManager.js +445 -445
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.d.ts +99 -99
- package/lib/cjs/ChangedElementsDb.js +165 -165
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangedElementsManager.d.ts +39 -39
- package/lib/cjs/ChangedElementsManager.js +88 -88
- package/lib/cjs/ChangedElementsManager.js.map +1 -1
- package/lib/cjs/CheckpointManager.d.ts +120 -120
- package/lib/cjs/CheckpointManager.js +343 -343
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.d.ts +79 -79
- package/lib/cjs/ClassRegistry.js +249 -249
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +349 -349
- package/lib/cjs/CloudSqlite.js +151 -151
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CloudStorageBackend.d.ts +58 -58
- package/lib/cjs/CloudStorageBackend.js +173 -173
- package/lib/cjs/CloudStorageBackend.js.map +1 -1
- package/lib/cjs/CodeService.d.ts +396 -396
- package/lib/cjs/CodeService.js +63 -63
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.d.ts +50 -50
- package/lib/cjs/CodeSpecs.js +112 -112
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.d.ts +11 -11
- package/lib/cjs/ConcurrentQuery.js +30 -30
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
- package/lib/cjs/CustomViewState3dCreator.js +81 -81
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.d.ts +71 -71
- package/lib/cjs/DevTools.js +154 -154
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +106 -106
- package/lib/cjs/DisplayStyle.js +256 -256
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.d.ts +191 -191
- package/lib/cjs/ECDb.js +350 -350
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
- package/lib/cjs/ECSchemaXmlContext.js +41 -41
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.d.ts +466 -466
- package/lib/cjs/ECSqlStatement.js +791 -791
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.d.ts +1120 -1120
- package/lib/cjs/Element.js +1438 -1438
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +161 -161
- package/lib/cjs/ElementAspect.js +187 -187
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.d.ts +9 -9
- package/lib/cjs/ElementGraphics.js +41 -41
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts +162 -162
- package/lib/cjs/ElementTreeWalker.js +409 -409
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.d.ts +106 -106
- package/lib/cjs/Entity.js +134 -134
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.d.ts +45 -45
- package/lib/cjs/EntityReferences.js +91 -91
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.d.ts +317 -317
- package/lib/cjs/ExportGraphics.js +208 -208
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.d.ts +96 -96
- package/lib/cjs/ExternalSource.js +131 -131
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.d.ts +19 -19
- package/lib/cjs/GeoCoordConfig.js +82 -82
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeometrySummary.d.ts +4 -4
- package/lib/cjs/GeometrySummary.js +380 -380
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/HubMock.d.ts +93 -93
- package/lib/cjs/HubMock.js +190 -190
- package/lib/cjs/HubMock.js.map +1 -1
- package/lib/cjs/IModelCloneContext.d.ts +89 -89
- package/lib/cjs/IModelCloneContext.js +159 -159
- package/lib/cjs/IModelCloneContext.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +1180 -1180
- package/lib/cjs/IModelDb.js +2371 -2371
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +361 -361
- package/lib/cjs/IModelHost.js +489 -489
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelJsFs.d.ts +62 -62
- package/lib/cjs/IModelJsFs.js +140 -140
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/IpcHost.d.ts +98 -98
- package/lib/cjs/IpcHost.js +234 -234
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.d.ts +311 -311
- package/lib/cjs/LineStyle.js +295 -295
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.d.ts +162 -162
- package/lib/cjs/LocalHub.js +587 -587
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
- package/lib/cjs/LocalhostIpcHost.js +81 -81
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/Material.d.ts +103 -103
- package/lib/cjs/Material.js +147 -147
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.d.ts +392 -392
- package/lib/cjs/Model.js +485 -485
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.d.ts +51 -51
- package/lib/cjs/NativeAppStorage.js +202 -202
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.d.ts +52 -52
- package/lib/cjs/NativeHost.js +168 -168
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.d.ts +156 -156
- package/lib/cjs/NavigationRelationship.js +225 -225
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.d.ts +51 -51
- package/lib/cjs/PromiseMemoizer.js +101 -101
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.d.ts +132 -132
- package/lib/cjs/PropertyStore.js +11 -11
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +416 -416
- package/lib/cjs/Relationship.js +494 -494
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.d.ts +28 -28
- package/lib/cjs/RpcBackend.js +126 -126
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.d.ts +219 -219
- package/lib/cjs/SQLiteDb.js +214 -214
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.d.ts +55 -55
- package/lib/cjs/Schema.js +83 -83
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/ServerBasedLocks.d.ts +57 -57
- package/lib/cjs/ServerBasedLocks.js +168 -168
- package/lib/cjs/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/SqliteStatement.d.ts +283 -283
- package/lib/cjs/SqliteStatement.js +448 -448
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/Texture.d.ts +58 -58
- package/lib/cjs/Texture.js +82 -82
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.d.ts +18 -18
- package/lib/cjs/TileStorage.js +90 -90
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +202 -202
- package/lib/cjs/TxnManager.js +356 -356
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +439 -439
- package/lib/cjs/ViewDefinition.js +646 -646
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.d.ts +13 -13
- package/lib/cjs/ViewStateHydrator.js +103 -103
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
- package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
- package/lib/cjs/core-backend.d.ts +183 -183
- package/lib/cjs/core-backend.js +203 -203
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
- package/lib/cjs/domains/FunctionalElements.js +145 -145
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
- package/lib/cjs/domains/FunctionalSchema.js +40 -40
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.d.ts +177 -177
- package/lib/cjs/domains/GenericElements.js +263 -263
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.d.ts +10 -10
- package/lib/cjs/domains/GenericSchema.js +28 -28
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +46 -46
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +287 -287
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +202 -202
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +168 -168
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +43 -43
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
- package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
- package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.d.ts +186 -186
- package/lib/cjs/workspace/Settings.js +155 -155
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
- package/lib/cjs/workspace/SettingsSchemas.js +191 -191
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.d.ts +414 -414
- package/lib/cjs/workspace/Workspace.js +543 -543
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/package.json +13 -13
package/lib/cjs/Category.js
CHANGED
|
@@ -1,244 +1,244 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
/** @packageDocumentation
|
|
7
|
-
* @module Categories
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.SpatialCategory = exports.DrawingCategory = exports.Category = exports.SubCategory = void 0;
|
|
11
|
-
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
|
-
const core_common_1 = require("@itwin/core-common");
|
|
13
|
-
const Element_1 = require("./Element");
|
|
14
|
-
const IModelDb_1 = require("./IModelDb");
|
|
15
|
-
const NavigationRelationship_1 = require("./NavigationRelationship");
|
|
16
|
-
/** Defines the appearance for graphics in Geometric elements
|
|
17
|
-
* @public
|
|
18
|
-
*/
|
|
19
|
-
class SubCategory extends Element_1.DefinitionElement {
|
|
20
|
-
/** @internal */
|
|
21
|
-
constructor(props, iModel) {
|
|
22
|
-
super(props, iModel);
|
|
23
|
-
this.appearance = new core_common_1.SubCategoryAppearance(props.appearance);
|
|
24
|
-
this.description = core_bentley_1.JsonUtils.asString(props.description);
|
|
25
|
-
}
|
|
26
|
-
/** @internal */
|
|
27
|
-
static get className() { return "SubCategory"; }
|
|
28
|
-
/** @internal */
|
|
29
|
-
toJSON() {
|
|
30
|
-
const val = super.toJSON();
|
|
31
|
-
val.appearance = this.appearance.toJSON();
|
|
32
|
-
if (this.description && this.description.length > 0)
|
|
33
|
-
val.description = this.description;
|
|
34
|
-
return val;
|
|
35
|
-
}
|
|
36
|
-
/** Get the SubCategory's name (its Code value). */
|
|
37
|
-
getSubCategoryName() { return this.code.value; }
|
|
38
|
-
/** Get the Id of the SubCategory. */
|
|
39
|
-
getSubCategoryId() { return this.id; }
|
|
40
|
-
/** Get the Id of this SubCategory's parent Category. */
|
|
41
|
-
getCategoryId() { return this.parent ? this.parent.id : core_bentley_1.Id64.invalid; }
|
|
42
|
-
/** Check if this is the default SubCategory of its parent Category. */
|
|
43
|
-
get isDefaultSubCategory() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }
|
|
44
|
-
/** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.
|
|
45
|
-
* @param iModel The IModel
|
|
46
|
-
* @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.
|
|
47
|
-
* @param codeValue The name of the SubCategory
|
|
48
|
-
*/
|
|
49
|
-
static createCode(iModel, parentCategoryId, codeValue) {
|
|
50
|
-
const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.subCategory);
|
|
51
|
-
return new core_common_1.Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });
|
|
52
|
-
}
|
|
53
|
-
/** Create a new SubCategory
|
|
54
|
-
* @param iModelDb The iModel
|
|
55
|
-
* @param parentCategoryId Create the new SubCategory as a child of this [[Category]]
|
|
56
|
-
* @param name The name of the SubCategory
|
|
57
|
-
* @param appearance The appearance settings to use for this SubCategory
|
|
58
|
-
* @returns The newly constructed SubCategory element.
|
|
59
|
-
* @throws [[IModelError]] if unable to create the element.
|
|
60
|
-
*/
|
|
61
|
-
static create(iModelDb, parentCategoryId, name, appearance) {
|
|
62
|
-
if (appearance instanceof core_common_1.SubCategoryAppearance)
|
|
63
|
-
appearance = appearance.toJSON();
|
|
64
|
-
const parentCategory = iModelDb.elements.getElement(parentCategoryId);
|
|
65
|
-
const subCategoryProps = {
|
|
66
|
-
classFullName: this.classFullName,
|
|
67
|
-
model: parentCategory.model,
|
|
68
|
-
parent: new NavigationRelationship_1.CategoryOwnsSubCategories(parentCategoryId),
|
|
69
|
-
code: this.createCode(iModelDb, parentCategoryId, name),
|
|
70
|
-
appearance,
|
|
71
|
-
};
|
|
72
|
-
return new SubCategory(subCategoryProps, iModelDb);
|
|
73
|
-
}
|
|
74
|
-
/** Insert a new SubCategory
|
|
75
|
-
* @param iModelDb Insert into this iModel
|
|
76
|
-
* @param parentCategoryId Insert the new SubCategory as a child of this Category
|
|
77
|
-
* @param name The name of the SubCategory
|
|
78
|
-
* @param appearance The appearance settings to use for this SubCategory
|
|
79
|
-
* @returns The Id of the newly inserted SubCategory element.
|
|
80
|
-
* @throws [[IModelError]] if unable to insert the element.
|
|
81
|
-
*/
|
|
82
|
-
static insert(iModelDb, parentCategoryId, name, appearance) {
|
|
83
|
-
const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);
|
|
84
|
-
return iModelDb.elements.insertElement(subCategory.toJSON());
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
exports.SubCategory = SubCategory;
|
|
88
|
-
/** A Category element is the target of the `category` member of [[GeometricElement]].
|
|
89
|
-
* @public
|
|
90
|
-
*/
|
|
91
|
-
class Category extends Element_1.DefinitionElement {
|
|
92
|
-
/** @internal */
|
|
93
|
-
constructor(props, iModel) {
|
|
94
|
-
super(props, iModel);
|
|
95
|
-
this.rank = core_common_1.Rank.User;
|
|
96
|
-
this.rank = core_bentley_1.JsonUtils.asInt(props.rank);
|
|
97
|
-
this.description = core_bentley_1.JsonUtils.asString(props.description);
|
|
98
|
-
}
|
|
99
|
-
/** @internal */
|
|
100
|
-
static get className() { return "Category"; }
|
|
101
|
-
/** @internal */
|
|
102
|
-
toJSON() {
|
|
103
|
-
const val = super.toJSON();
|
|
104
|
-
val.rank = this.rank;
|
|
105
|
-
if (this.description && this.description.length > 0)
|
|
106
|
-
val.description = this.description;
|
|
107
|
-
return val;
|
|
108
|
-
}
|
|
109
|
-
/** Get the Id of the default SubCategory for this Category. */
|
|
110
|
-
myDefaultSubCategoryId() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.id); }
|
|
111
|
-
/** Set the appearance of the default SubCategory for this Category */
|
|
112
|
-
setDefaultAppearance(props) {
|
|
113
|
-
if (props instanceof core_common_1.SubCategoryAppearance)
|
|
114
|
-
props = props.toJSON();
|
|
115
|
-
const subCat = this.iModel.elements.getElement(this.myDefaultSubCategoryId());
|
|
116
|
-
subCat.appearance = new core_common_1.SubCategoryAppearance(props);
|
|
117
|
-
this.iModel.elements.updateElement(subCat.toJSON());
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.Category = Category;
|
|
121
|
-
/** Categorizes 2d GeometricElements.
|
|
122
|
-
* @public
|
|
123
|
-
*/
|
|
124
|
-
class DrawingCategory extends Category {
|
|
125
|
-
/** @internal */
|
|
126
|
-
static get className() { return "DrawingCategory"; }
|
|
127
|
-
/** Construct a DrawingCategory
|
|
128
|
-
* @param opts The properties of the new DrawingCategory
|
|
129
|
-
* @param iModel The IModelDb where the DrawingCategory may be inserted.
|
|
130
|
-
* @internal
|
|
131
|
-
*/
|
|
132
|
-
constructor(opts, iModel) { super(opts, iModel); }
|
|
133
|
-
/** Get the name of the CodeSpec that is used by DrawingCategory objects. */
|
|
134
|
-
static getCodeSpecName() { return core_common_1.BisCodeSpec.drawingCategory; }
|
|
135
|
-
/** Looks up the CategoryId of a DrawingCategory by model and name */
|
|
136
|
-
static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
|
|
137
|
-
const code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);
|
|
138
|
-
return iModel.elements.queryElementIdByCode(code);
|
|
139
|
-
}
|
|
140
|
-
/** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
|
|
141
|
-
* @param iModel The IModel
|
|
142
|
-
* @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.
|
|
143
|
-
* @param codeValue The name of the category
|
|
144
|
-
* @return A drawing category Code
|
|
145
|
-
*/
|
|
146
|
-
static createCode(iModel, scopeModelId, codeValue) {
|
|
147
|
-
const codeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());
|
|
148
|
-
return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
|
|
149
|
-
}
|
|
150
|
-
/** Create a new DrawingCategory
|
|
151
|
-
* @param iModelDb The iModel
|
|
152
|
-
* @param definitionModelId The [[DefinitionModel]]
|
|
153
|
-
* @param name The name of the DrawingCategory
|
|
154
|
-
* @returns The newly constructed DrawingCategory element.
|
|
155
|
-
* @throws [[IModelError]] if unable to create the element.
|
|
156
|
-
*/
|
|
157
|
-
static create(iModelDb, definitionModelId, name) {
|
|
158
|
-
const categoryProps = {
|
|
159
|
-
classFullName: this.classFullName,
|
|
160
|
-
model: definitionModelId,
|
|
161
|
-
code: this.createCode(iModelDb, definitionModelId, name),
|
|
162
|
-
isPrivate: false,
|
|
163
|
-
};
|
|
164
|
-
return new DrawingCategory(categoryProps, iModelDb);
|
|
165
|
-
}
|
|
166
|
-
/** Insert a new DrawingCategory
|
|
167
|
-
* @param iModelDb Insert into this iModel
|
|
168
|
-
* @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]
|
|
169
|
-
* @param name The name of the DrawingCategory
|
|
170
|
-
* @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory
|
|
171
|
-
* @returns The Id of the newly inserted DrawingCategory element.
|
|
172
|
-
* @throws [[IModelError]] if unable to insert the element.
|
|
173
|
-
*/
|
|
174
|
-
static insert(iModelDb, definitionModelId, name, defaultAppearance) {
|
|
175
|
-
const category = this.create(iModelDb, definitionModelId, name);
|
|
176
|
-
const elements = iModelDb.elements;
|
|
177
|
-
category.id = elements.insertElement(category.toJSON());
|
|
178
|
-
category.setDefaultAppearance(defaultAppearance);
|
|
179
|
-
return category.id;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
exports.DrawingCategory = DrawingCategory;
|
|
183
|
-
/** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).
|
|
184
|
-
* @public
|
|
185
|
-
*/
|
|
186
|
-
class SpatialCategory extends Category {
|
|
187
|
-
/** @internal */
|
|
188
|
-
static get className() { return "SpatialCategory"; }
|
|
189
|
-
/** Construct a SpatialCategory
|
|
190
|
-
* @param opts The properties of the new SpatialCategory
|
|
191
|
-
* @param iModel The IModelDb where the SpatialCategory may be inserted.
|
|
192
|
-
* @internal
|
|
193
|
-
*/
|
|
194
|
-
constructor(opts, iModel) { super(opts, iModel); }
|
|
195
|
-
/** Get the name of the CodeSpec that is used by SpatialCategory objects. */
|
|
196
|
-
static getCodeSpecName() { return core_common_1.BisCodeSpec.spatialCategory; }
|
|
197
|
-
/** Looks up the CategoryId of a SpatialCategory by model and name */
|
|
198
|
-
static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
|
|
199
|
-
const code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);
|
|
200
|
-
return iModel.elements.queryElementIdByCode(code);
|
|
201
|
-
}
|
|
202
|
-
/** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
|
|
203
|
-
* @param iModel The IModel
|
|
204
|
-
* @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.
|
|
205
|
-
* @param codeValue The name of the category
|
|
206
|
-
* @return A spatial category Code
|
|
207
|
-
*/
|
|
208
|
-
static createCode(iModel, scopeModelId, codeValue) {
|
|
209
|
-
const codeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());
|
|
210
|
-
return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
|
|
211
|
-
}
|
|
212
|
-
/** Create a new SpatialCategory
|
|
213
|
-
* @param iModelDb The iModel
|
|
214
|
-
* @param definitionModelId The [[DefinitionModel]]
|
|
215
|
-
* @param name The name/CodeValue of the SpatialCategory
|
|
216
|
-
* @returns The newly constructed SpatialCategory element.
|
|
217
|
-
* @throws [[IModelError]] if unable to create the element.
|
|
218
|
-
*/
|
|
219
|
-
static create(iModelDb, definitionModelId, name) {
|
|
220
|
-
const categoryProps = {
|
|
221
|
-
classFullName: this.classFullName,
|
|
222
|
-
model: definitionModelId,
|
|
223
|
-
code: this.createCode(iModelDb, definitionModelId, name),
|
|
224
|
-
isPrivate: false,
|
|
225
|
-
};
|
|
226
|
-
return new SpatialCategory(categoryProps, iModelDb);
|
|
227
|
-
}
|
|
228
|
-
/** Insert a new SpatialCategory
|
|
229
|
-
* @param iModelDb Insert into this iModel
|
|
230
|
-
* @param definitionModelId Insert the new SpatialCategory into this DefinitionModel
|
|
231
|
-
* @param name The name of the SpatialCategory
|
|
232
|
-
* @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory
|
|
233
|
-
* @returns The Id of the newly inserted SpatialCategory element.
|
|
234
|
-
* @throws [[IModelError]] if unable to insert the element.
|
|
235
|
-
*/
|
|
236
|
-
static insert(iModelDb, definitionModelId, name, defaultAppearance) {
|
|
237
|
-
const category = this.create(iModelDb, definitionModelId, name);
|
|
238
|
-
category.id = iModelDb.elements.insertElement(category.toJSON());
|
|
239
|
-
category.setDefaultAppearance(defaultAppearance);
|
|
240
|
-
return category.id;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
exports.SpatialCategory = SpatialCategory;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module Categories
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SpatialCategory = exports.DrawingCategory = exports.Category = exports.SubCategory = void 0;
|
|
11
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
|
+
const core_common_1 = require("@itwin/core-common");
|
|
13
|
+
const Element_1 = require("./Element");
|
|
14
|
+
const IModelDb_1 = require("./IModelDb");
|
|
15
|
+
const NavigationRelationship_1 = require("./NavigationRelationship");
|
|
16
|
+
/** Defines the appearance for graphics in Geometric elements
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
class SubCategory extends Element_1.DefinitionElement {
|
|
20
|
+
/** @internal */
|
|
21
|
+
constructor(props, iModel) {
|
|
22
|
+
super(props, iModel);
|
|
23
|
+
this.appearance = new core_common_1.SubCategoryAppearance(props.appearance);
|
|
24
|
+
this.description = core_bentley_1.JsonUtils.asString(props.description);
|
|
25
|
+
}
|
|
26
|
+
/** @internal */
|
|
27
|
+
static get className() { return "SubCategory"; }
|
|
28
|
+
/** @internal */
|
|
29
|
+
toJSON() {
|
|
30
|
+
const val = super.toJSON();
|
|
31
|
+
val.appearance = this.appearance.toJSON();
|
|
32
|
+
if (this.description && this.description.length > 0)
|
|
33
|
+
val.description = this.description;
|
|
34
|
+
return val;
|
|
35
|
+
}
|
|
36
|
+
/** Get the SubCategory's name (its Code value). */
|
|
37
|
+
getSubCategoryName() { return this.code.value; }
|
|
38
|
+
/** Get the Id of the SubCategory. */
|
|
39
|
+
getSubCategoryId() { return this.id; }
|
|
40
|
+
/** Get the Id of this SubCategory's parent Category. */
|
|
41
|
+
getCategoryId() { return this.parent ? this.parent.id : core_bentley_1.Id64.invalid; }
|
|
42
|
+
/** Check if this is the default SubCategory of its parent Category. */
|
|
43
|
+
get isDefaultSubCategory() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }
|
|
44
|
+
/** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.
|
|
45
|
+
* @param iModel The IModel
|
|
46
|
+
* @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.
|
|
47
|
+
* @param codeValue The name of the SubCategory
|
|
48
|
+
*/
|
|
49
|
+
static createCode(iModel, parentCategoryId, codeValue) {
|
|
50
|
+
const codeSpec = iModel.codeSpecs.getByName(core_common_1.BisCodeSpec.subCategory);
|
|
51
|
+
return new core_common_1.Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });
|
|
52
|
+
}
|
|
53
|
+
/** Create a new SubCategory
|
|
54
|
+
* @param iModelDb The iModel
|
|
55
|
+
* @param parentCategoryId Create the new SubCategory as a child of this [[Category]]
|
|
56
|
+
* @param name The name of the SubCategory
|
|
57
|
+
* @param appearance The appearance settings to use for this SubCategory
|
|
58
|
+
* @returns The newly constructed SubCategory element.
|
|
59
|
+
* @throws [[IModelError]] if unable to create the element.
|
|
60
|
+
*/
|
|
61
|
+
static create(iModelDb, parentCategoryId, name, appearance) {
|
|
62
|
+
if (appearance instanceof core_common_1.SubCategoryAppearance)
|
|
63
|
+
appearance = appearance.toJSON();
|
|
64
|
+
const parentCategory = iModelDb.elements.getElement(parentCategoryId);
|
|
65
|
+
const subCategoryProps = {
|
|
66
|
+
classFullName: this.classFullName,
|
|
67
|
+
model: parentCategory.model,
|
|
68
|
+
parent: new NavigationRelationship_1.CategoryOwnsSubCategories(parentCategoryId),
|
|
69
|
+
code: this.createCode(iModelDb, parentCategoryId, name),
|
|
70
|
+
appearance,
|
|
71
|
+
};
|
|
72
|
+
return new SubCategory(subCategoryProps, iModelDb);
|
|
73
|
+
}
|
|
74
|
+
/** Insert a new SubCategory
|
|
75
|
+
* @param iModelDb Insert into this iModel
|
|
76
|
+
* @param parentCategoryId Insert the new SubCategory as a child of this Category
|
|
77
|
+
* @param name The name of the SubCategory
|
|
78
|
+
* @param appearance The appearance settings to use for this SubCategory
|
|
79
|
+
* @returns The Id of the newly inserted SubCategory element.
|
|
80
|
+
* @throws [[IModelError]] if unable to insert the element.
|
|
81
|
+
*/
|
|
82
|
+
static insert(iModelDb, parentCategoryId, name, appearance) {
|
|
83
|
+
const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);
|
|
84
|
+
return iModelDb.elements.insertElement(subCategory.toJSON());
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.SubCategory = SubCategory;
|
|
88
|
+
/** A Category element is the target of the `category` member of [[GeometricElement]].
|
|
89
|
+
* @public
|
|
90
|
+
*/
|
|
91
|
+
class Category extends Element_1.DefinitionElement {
|
|
92
|
+
/** @internal */
|
|
93
|
+
constructor(props, iModel) {
|
|
94
|
+
super(props, iModel);
|
|
95
|
+
this.rank = core_common_1.Rank.User;
|
|
96
|
+
this.rank = core_bentley_1.JsonUtils.asInt(props.rank);
|
|
97
|
+
this.description = core_bentley_1.JsonUtils.asString(props.description);
|
|
98
|
+
}
|
|
99
|
+
/** @internal */
|
|
100
|
+
static get className() { return "Category"; }
|
|
101
|
+
/** @internal */
|
|
102
|
+
toJSON() {
|
|
103
|
+
const val = super.toJSON();
|
|
104
|
+
val.rank = this.rank;
|
|
105
|
+
if (this.description && this.description.length > 0)
|
|
106
|
+
val.description = this.description;
|
|
107
|
+
return val;
|
|
108
|
+
}
|
|
109
|
+
/** Get the Id of the default SubCategory for this Category. */
|
|
110
|
+
myDefaultSubCategoryId() { return IModelDb_1.IModelDb.getDefaultSubCategoryId(this.id); }
|
|
111
|
+
/** Set the appearance of the default SubCategory for this Category */
|
|
112
|
+
setDefaultAppearance(props) {
|
|
113
|
+
if (props instanceof core_common_1.SubCategoryAppearance)
|
|
114
|
+
props = props.toJSON();
|
|
115
|
+
const subCat = this.iModel.elements.getElement(this.myDefaultSubCategoryId());
|
|
116
|
+
subCat.appearance = new core_common_1.SubCategoryAppearance(props);
|
|
117
|
+
this.iModel.elements.updateElement(subCat.toJSON());
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
exports.Category = Category;
|
|
121
|
+
/** Categorizes 2d GeometricElements.
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
class DrawingCategory extends Category {
|
|
125
|
+
/** @internal */
|
|
126
|
+
static get className() { return "DrawingCategory"; }
|
|
127
|
+
/** Construct a DrawingCategory
|
|
128
|
+
* @param opts The properties of the new DrawingCategory
|
|
129
|
+
* @param iModel The IModelDb where the DrawingCategory may be inserted.
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
132
|
+
constructor(opts, iModel) { super(opts, iModel); }
|
|
133
|
+
/** Get the name of the CodeSpec that is used by DrawingCategory objects. */
|
|
134
|
+
static getCodeSpecName() { return core_common_1.BisCodeSpec.drawingCategory; }
|
|
135
|
+
/** Looks up the CategoryId of a DrawingCategory by model and name */
|
|
136
|
+
static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
|
|
137
|
+
const code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);
|
|
138
|
+
return iModel.elements.queryElementIdByCode(code);
|
|
139
|
+
}
|
|
140
|
+
/** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
|
|
141
|
+
* @param iModel The IModel
|
|
142
|
+
* @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.
|
|
143
|
+
* @param codeValue The name of the category
|
|
144
|
+
* @return A drawing category Code
|
|
145
|
+
*/
|
|
146
|
+
static createCode(iModel, scopeModelId, codeValue) {
|
|
147
|
+
const codeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());
|
|
148
|
+
return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
|
|
149
|
+
}
|
|
150
|
+
/** Create a new DrawingCategory
|
|
151
|
+
* @param iModelDb The iModel
|
|
152
|
+
* @param definitionModelId The [[DefinitionModel]]
|
|
153
|
+
* @param name The name of the DrawingCategory
|
|
154
|
+
* @returns The newly constructed DrawingCategory element.
|
|
155
|
+
* @throws [[IModelError]] if unable to create the element.
|
|
156
|
+
*/
|
|
157
|
+
static create(iModelDb, definitionModelId, name) {
|
|
158
|
+
const categoryProps = {
|
|
159
|
+
classFullName: this.classFullName,
|
|
160
|
+
model: definitionModelId,
|
|
161
|
+
code: this.createCode(iModelDb, definitionModelId, name),
|
|
162
|
+
isPrivate: false,
|
|
163
|
+
};
|
|
164
|
+
return new DrawingCategory(categoryProps, iModelDb);
|
|
165
|
+
}
|
|
166
|
+
/** Insert a new DrawingCategory
|
|
167
|
+
* @param iModelDb Insert into this iModel
|
|
168
|
+
* @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]
|
|
169
|
+
* @param name The name of the DrawingCategory
|
|
170
|
+
* @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory
|
|
171
|
+
* @returns The Id of the newly inserted DrawingCategory element.
|
|
172
|
+
* @throws [[IModelError]] if unable to insert the element.
|
|
173
|
+
*/
|
|
174
|
+
static insert(iModelDb, definitionModelId, name, defaultAppearance) {
|
|
175
|
+
const category = this.create(iModelDb, definitionModelId, name);
|
|
176
|
+
const elements = iModelDb.elements;
|
|
177
|
+
category.id = elements.insertElement(category.toJSON());
|
|
178
|
+
category.setDefaultAppearance(defaultAppearance);
|
|
179
|
+
return category.id;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
exports.DrawingCategory = DrawingCategory;
|
|
183
|
+
/** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).
|
|
184
|
+
* @public
|
|
185
|
+
*/
|
|
186
|
+
class SpatialCategory extends Category {
|
|
187
|
+
/** @internal */
|
|
188
|
+
static get className() { return "SpatialCategory"; }
|
|
189
|
+
/** Construct a SpatialCategory
|
|
190
|
+
* @param opts The properties of the new SpatialCategory
|
|
191
|
+
* @param iModel The IModelDb where the SpatialCategory may be inserted.
|
|
192
|
+
* @internal
|
|
193
|
+
*/
|
|
194
|
+
constructor(opts, iModel) { super(opts, iModel); }
|
|
195
|
+
/** Get the name of the CodeSpec that is used by SpatialCategory objects. */
|
|
196
|
+
static getCodeSpecName() { return core_common_1.BisCodeSpec.spatialCategory; }
|
|
197
|
+
/** Looks up the CategoryId of a SpatialCategory by model and name */
|
|
198
|
+
static queryCategoryIdByName(iModel, scopeModelId, categoryName) {
|
|
199
|
+
const code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);
|
|
200
|
+
return iModel.elements.queryElementIdByCode(code);
|
|
201
|
+
}
|
|
202
|
+
/** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.
|
|
203
|
+
* @param iModel The IModel
|
|
204
|
+
* @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.
|
|
205
|
+
* @param codeValue The name of the category
|
|
206
|
+
* @return A spatial category Code
|
|
207
|
+
*/
|
|
208
|
+
static createCode(iModel, scopeModelId, codeValue) {
|
|
209
|
+
const codeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());
|
|
210
|
+
return new core_common_1.Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });
|
|
211
|
+
}
|
|
212
|
+
/** Create a new SpatialCategory
|
|
213
|
+
* @param iModelDb The iModel
|
|
214
|
+
* @param definitionModelId The [[DefinitionModel]]
|
|
215
|
+
* @param name The name/CodeValue of the SpatialCategory
|
|
216
|
+
* @returns The newly constructed SpatialCategory element.
|
|
217
|
+
* @throws [[IModelError]] if unable to create the element.
|
|
218
|
+
*/
|
|
219
|
+
static create(iModelDb, definitionModelId, name) {
|
|
220
|
+
const categoryProps = {
|
|
221
|
+
classFullName: this.classFullName,
|
|
222
|
+
model: definitionModelId,
|
|
223
|
+
code: this.createCode(iModelDb, definitionModelId, name),
|
|
224
|
+
isPrivate: false,
|
|
225
|
+
};
|
|
226
|
+
return new SpatialCategory(categoryProps, iModelDb);
|
|
227
|
+
}
|
|
228
|
+
/** Insert a new SpatialCategory
|
|
229
|
+
* @param iModelDb Insert into this iModel
|
|
230
|
+
* @param definitionModelId Insert the new SpatialCategory into this DefinitionModel
|
|
231
|
+
* @param name The name of the SpatialCategory
|
|
232
|
+
* @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory
|
|
233
|
+
* @returns The Id of the newly inserted SpatialCategory element.
|
|
234
|
+
* @throws [[IModelError]] if unable to insert the element.
|
|
235
|
+
*/
|
|
236
|
+
static insert(iModelDb, definitionModelId, name, defaultAppearance) {
|
|
237
|
+
const category = this.create(iModelDb, definitionModelId, name);
|
|
238
|
+
category.id = iModelDb.elements.insertElement(category.toJSON());
|
|
239
|
+
category.setDefaultAppearance(defaultAppearance);
|
|
240
|
+
return category.id;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
exports.SpatialCategory = SpatialCategory;
|
|
244
244
|
//# sourceMappingURL=Category.js.map
|
package/lib/cjs/Category.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/Category.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Categories\r\n */\r\n\r\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\r\nimport {\r\n BisCodeSpec, CategoryProps, Code, CodeScopeProps, CodeSpec, ElementProps, Rank, SubCategoryAppearance, SubCategoryProps,\r\n} from \"@itwin/core-common\";\r\nimport { DefinitionElement } from \"./Element\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { CategoryOwnsSubCategories } from \"./NavigationRelationship\";\r\n\r\n/** Defines the appearance for graphics in Geometric elements\r\n * @public\r\n */\r\nexport class SubCategory extends DefinitionElement {\r\n /** @internal */\r\n public static override get className(): string { return \"SubCategory\"; }\r\n /** The Appearance parameters for this SubCategory */\r\n public appearance: SubCategoryAppearance;\r\n /** Optional description of this SubCategory. */\r\n public description?: string;\r\n\r\n /** @internal */\r\n public constructor(props: SubCategoryProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.appearance = new SubCategoryAppearance(props.appearance);\r\n this.description = JsonUtils.asString(props.description);\r\n }\r\n\r\n /** @internal */\r\n public override toJSON(): SubCategoryProps {\r\n const val = super.toJSON() as SubCategoryProps;\r\n val.appearance = this.appearance.toJSON();\r\n if (this.description && this.description.length > 0)\r\n val.description = this.description;\r\n return val;\r\n }\r\n\r\n /** Get the SubCategory's name (its Code value). */\r\n public getSubCategoryName(): string { return this.code.value; }\r\n /** Get the Id of the SubCategory. */\r\n public getSubCategoryId(): Id64String { return this.id; }\r\n /** Get the Id of this SubCategory's parent Category. */\r\n public getCategoryId(): Id64String { return this.parent ? this.parent.id : Id64.invalid; }\r\n /** Check if this is the default SubCategory of its parent Category. */\r\n public get isDefaultSubCategory(): boolean { return IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }\r\n\r\n /** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.\r\n * @param iModel The IModel\r\n * @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.\r\n * @param codeValue The name of the SubCategory\r\n */\r\n public static createCode(iModel: IModelDb, parentCategoryId: CodeScopeProps, codeValue: string): Code {\r\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.subCategory);\r\n return new Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });\r\n }\r\n\r\n /** Create a new SubCategory\r\n * @param iModelDb The iModel\r\n * @param parentCategoryId Create the new SubCategory as a child of this [[Category]]\r\n * @param name The name of the SubCategory\r\n * @param appearance The appearance settings to use for this SubCategory\r\n * @returns The newly constructed SubCategory element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): SubCategory {\r\n if (appearance instanceof SubCategoryAppearance)\r\n appearance = appearance.toJSON();\r\n\r\n const parentCategory = iModelDb.elements.getElement<Category>(parentCategoryId);\r\n const subCategoryProps: SubCategoryProps = {\r\n classFullName: this.classFullName,\r\n model: parentCategory.model,\r\n parent: new CategoryOwnsSubCategories(parentCategoryId),\r\n code: this.createCode(iModelDb, parentCategoryId, name),\r\n appearance,\r\n };\r\n return new SubCategory(subCategoryProps, iModelDb);\r\n }\r\n\r\n /** Insert a new SubCategory\r\n * @param iModelDb Insert into this iModel\r\n * @param parentCategoryId Insert the new SubCategory as a child of this Category\r\n * @param name The name of the SubCategory\r\n * @param appearance The appearance settings to use for this SubCategory\r\n * @returns The Id of the newly inserted SubCategory element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\r\n const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);\r\n return iModelDb.elements.insertElement(subCategory.toJSON());\r\n }\r\n}\r\n\r\n/** A Category element is the target of the `category` member of [[GeometricElement]].\r\n * @public\r\n */\r\nexport class Category extends DefinitionElement {\r\n /** @internal */\r\n public static override get className(): string { return \"Category\"; }\r\n public rank: Rank = Rank.User;\r\n public description?: string;\r\n\r\n /** @internal */\r\n public constructor(props: CategoryProps, iModel: IModelDb) {\r\n super(props, iModel);\r\n this.rank = JsonUtils.asInt(props.rank);\r\n this.description = JsonUtils.asString(props.description);\r\n }\r\n\r\n /** @internal */\r\n public override toJSON(): CategoryProps {\r\n const val = super.toJSON() as CategoryProps;\r\n val.rank = this.rank;\r\n if (this.description && this.description.length > 0)\r\n val.description = this.description;\r\n return val;\r\n }\r\n\r\n /** Get the Id of the default SubCategory for this Category. */\r\n public myDefaultSubCategoryId(): Id64String { return IModelDb.getDefaultSubCategoryId(this.id); }\r\n\r\n /** Set the appearance of the default SubCategory for this Category */\r\n public setDefaultAppearance(props: SubCategoryAppearance.Props | SubCategoryAppearance): void {\r\n if (props instanceof SubCategoryAppearance)\r\n props = props.toJSON();\r\n\r\n const subCat = this.iModel.elements.getElement<SubCategory>(this.myDefaultSubCategoryId());\r\n subCat.appearance = new SubCategoryAppearance(props);\r\n this.iModel.elements.updateElement(subCat.toJSON());\r\n }\r\n}\r\n\r\n/** Categorizes 2d GeometricElements.\r\n * @public\r\n */\r\nexport class DrawingCategory extends Category {\r\n /** @internal */\r\n public static override get className(): string { return \"DrawingCategory\"; }\r\n\r\n /** Construct a DrawingCategory\r\n * @param opts The properties of the new DrawingCategory\r\n * @param iModel The IModelDb where the DrawingCategory may be inserted.\r\n * @internal\r\n */\r\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\r\n\r\n /** Get the name of the CodeSpec that is used by DrawingCategory objects. */\r\n public static getCodeSpecName(): string { return BisCodeSpec.drawingCategory; }\r\n\r\n /** Looks up the CategoryId of a DrawingCategory by model and name */\r\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\r\n const code: Code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);\r\n return iModel.elements.queryElementIdByCode(code);\r\n }\r\n\r\n /** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\r\n * @param iModel The IModel\r\n * @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.\r\n * @param codeValue The name of the category\r\n * @return A drawing category Code\r\n */\r\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\r\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());\r\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\r\n }\r\n\r\n /** Create a new DrawingCategory\r\n * @param iModelDb The iModel\r\n * @param definitionModelId The [[DefinitionModel]]\r\n * @param name The name of the DrawingCategory\r\n * @returns The newly constructed DrawingCategory element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DrawingCategory {\r\n const categoryProps: CategoryProps = {\r\n classFullName: this.classFullName,\r\n model: definitionModelId,\r\n code: this.createCode(iModelDb, definitionModelId, name),\r\n isPrivate: false,\r\n };\r\n return new DrawingCategory(categoryProps, iModelDb);\r\n }\r\n\r\n /** Insert a new DrawingCategory\r\n * @param iModelDb Insert into this iModel\r\n * @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]\r\n * @param name The name of the DrawingCategory\r\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory\r\n * @returns The Id of the newly inserted DrawingCategory element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\r\n const category = this.create(iModelDb, definitionModelId, name);\r\n const elements = iModelDb.elements;\r\n category.id = elements.insertElement(category.toJSON());\r\n category.setDefaultAppearance(defaultAppearance);\r\n return category.id;\r\n }\r\n}\r\n\r\n/** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).\r\n * @public\r\n */\r\nexport class SpatialCategory extends Category {\r\n /** @internal */\r\n public static override get className(): string { return \"SpatialCategory\"; }\r\n /** Construct a SpatialCategory\r\n * @param opts The properties of the new SpatialCategory\r\n * @param iModel The IModelDb where the SpatialCategory may be inserted.\r\n * @internal\r\n */\r\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\r\n\r\n /** Get the name of the CodeSpec that is used by SpatialCategory objects. */\r\n public static getCodeSpecName(): string { return BisCodeSpec.spatialCategory; }\r\n\r\n /** Looks up the CategoryId of a SpatialCategory by model and name */\r\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\r\n const code: Code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);\r\n return iModel.elements.queryElementIdByCode(code);\r\n }\r\n\r\n /** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\r\n * @param iModel The IModel\r\n * @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.\r\n * @param codeValue The name of the category\r\n * @return A spatial category Code\r\n */\r\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\r\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());\r\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\r\n }\r\n\r\n /** Create a new SpatialCategory\r\n * @param iModelDb The iModel\r\n * @param definitionModelId The [[DefinitionModel]]\r\n * @param name The name/CodeValue of the SpatialCategory\r\n * @returns The newly constructed SpatialCategory element.\r\n * @throws [[IModelError]] if unable to create the element.\r\n */\r\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): SpatialCategory {\r\n const categoryProps: CategoryProps = {\r\n classFullName: this.classFullName,\r\n model: definitionModelId,\r\n code: this.createCode(iModelDb, definitionModelId, name),\r\n isPrivate: false,\r\n };\r\n return new SpatialCategory(categoryProps, iModelDb);\r\n }\r\n\r\n /** Insert a new SpatialCategory\r\n * @param iModelDb Insert into this iModel\r\n * @param definitionModelId Insert the new SpatialCategory into this DefinitionModel\r\n * @param name The name of the SpatialCategory\r\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory\r\n * @returns The Id of the newly inserted SpatialCategory element.\r\n * @throws [[IModelError]] if unable to insert the element.\r\n */\r\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\r\n const category = this.create(iModelDb, definitionModelId, name);\r\n category.id = iModelDb.elements.insertElement(category.toJSON());\r\n category.setDefaultAppearance(defaultAppearance);\r\n return category.id;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/Category.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAkE;AAClE,oDAE4B;AAC5B,uCAA8C;AAC9C,yCAAsC;AACtC,qEAAqE;AAErE;;GAEG;AACH,MAAa,WAAY,SAAQ,2BAAiB;IAQhD,gBAAgB;IAChB,YAAmB,KAAuB,EAAE,MAAgB;QAC1D,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,mCAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,wBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAZD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,aAAa,CAAC,CAAC,CAAC;IAaxE,gBAAgB;IACA,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAsB,CAAC;QAC/C,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACjD,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mDAAmD;IAC5C,kBAAkB,KAAa,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,qCAAqC;IAC9B,gBAAgB,KAAiB,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,wDAAwD;IACjD,aAAa,KAAiB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,uEAAuE;IACvE,IAAW,oBAAoB,KAAc,OAAO,mBAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAEzI;;;;OAIG;IACI,MAAM,CAAC,UAAU,CAAC,MAAgB,EAAE,gBAAgC,EAAE,SAAiB;QAC5F,MAAM,QAAQ,GAAa,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,yBAAW,CAAC,WAAW,CAAC,CAAC;QAC/E,OAAO,IAAI,kBAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,gBAA4B,EAAE,IAAY,EAAE,UAA+D;QAClJ,IAAI,UAAU,YAAY,mCAAqB;YAC7C,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAEnC,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAW,gBAAgB,CAAC,CAAC;QAChF,MAAM,gBAAgB,GAAqB;YACzC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,cAAc,CAAC,KAAK;YAC3B,MAAM,EAAE,IAAI,kDAAyB,CAAC,gBAAgB,CAAC;YACvD,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC;YACvD,UAAU;SACX,CAAC;QACF,OAAO,IAAI,WAAW,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,gBAA4B,EAAE,IAAY,EAAE,UAA+D;QAClJ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF;AA9ED,kCA8EC;AAED;;GAEG;AACH,MAAa,QAAS,SAAQ,2BAAiB;IAM7C,gBAAgB;IAChB,YAAmB,KAAoB,EAAE,MAAgB;QACvD,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QALhB,SAAI,GAAS,kBAAI,CAAC,IAAI,CAAC;QAM5B,IAAI,CAAC,IAAI,GAAG,wBAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,wBAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAVD,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,UAAU,CAAC,CAAC,CAAC;IAWrE,gBAAgB;IACA,MAAM;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAmB,CAAC;QAC5C,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACjD,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,+DAA+D;IACxD,sBAAsB,KAAiB,OAAO,mBAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjG,sEAAsE;IAC/D,oBAAoB,CAAC,KAA0D;QACpF,IAAI,KAAK,YAAY,mCAAqB;YACxC,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAc,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,UAAU,GAAG,IAAI,mCAAqB,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;CACF;AAlCD,4BAkCC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,QAAQ;IAC3C,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAE5E;;;;OAIG;IACH,YAAmB,IAAkB,EAAE,MAAgB,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjF,4EAA4E;IACrE,MAAM,CAAC,eAAe,KAAa,OAAO,yBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAE/E,qEAAqE;IAC9D,MAAM,CAAC,qBAAqB,CAAC,MAAgB,EAAE,YAAwB,EAAE,YAAoB;QAClG,MAAM,IAAI,GAAS,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,MAAgB,EAAE,YAA4B,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAa,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,kBAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY;QAClF,MAAM,aAAa,GAAkB;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC;YACxD,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,OAAO,IAAI,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY,EAAE,iBAAsE;QAC1J,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;CACF;AA/DD,0CA+DC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,QAAQ;IAC3C,gBAAgB;IACT,MAAM,KAAc,SAAS,KAAa,OAAO,iBAAiB,CAAC,CAAC,CAAC;IAC5E;;;;OAIG;IACH,YAAmB,IAAkB,EAAE,MAAgB,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjF,4EAA4E;IACrE,MAAM,CAAC,eAAe,KAAa,OAAO,yBAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAE/E,qEAAqE;IAC9D,MAAM,CAAC,qBAAqB,CAAC,MAAgB,EAAE,YAAwB,EAAE,YAAoB;QAClG,MAAM,IAAI,GAAS,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,UAAU,CAAC,MAAgB,EAAE,YAA4B,EAAE,SAAiB;QACxF,MAAM,QAAQ,GAAa,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,kBAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY;QAClF,MAAM,aAAa,GAAkB;YACnC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC;YACxD,SAAS,EAAE,KAAK;SACjB,CAAC;QACF,OAAO,IAAI,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAAC,QAAkB,EAAE,iBAA6B,EAAE,IAAY,EAAE,iBAAsE;QAC1J,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAChE,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,QAAQ,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;CACF;AA7DD,0CA6DC","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*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Categories\n */\n\nimport { Id64, Id64String, JsonUtils } from \"@itwin/core-bentley\";\nimport {\n BisCodeSpec, CategoryProps, Code, CodeScopeProps, CodeSpec, ElementProps, Rank, SubCategoryAppearance, SubCategoryProps,\n} from \"@itwin/core-common\";\nimport { DefinitionElement } from \"./Element\";\nimport { IModelDb } from \"./IModelDb\";\nimport { CategoryOwnsSubCategories } from \"./NavigationRelationship\";\n\n/** Defines the appearance for graphics in Geometric elements\n * @public\n */\nexport class SubCategory extends DefinitionElement {\n /** @internal */\n public static override get className(): string { return \"SubCategory\"; }\n /** The Appearance parameters for this SubCategory */\n public appearance: SubCategoryAppearance;\n /** Optional description of this SubCategory. */\n public description?: string;\n\n /** @internal */\n public constructor(props: SubCategoryProps, iModel: IModelDb) {\n super(props, iModel);\n this.appearance = new SubCategoryAppearance(props.appearance);\n this.description = JsonUtils.asString(props.description);\n }\n\n /** @internal */\n public override toJSON(): SubCategoryProps {\n const val = super.toJSON() as SubCategoryProps;\n val.appearance = this.appearance.toJSON();\n if (this.description && this.description.length > 0)\n val.description = this.description;\n return val;\n }\n\n /** Get the SubCategory's name (its Code value). */\n public getSubCategoryName(): string { return this.code.value; }\n /** Get the Id of the SubCategory. */\n public getSubCategoryId(): Id64String { return this.id; }\n /** Get the Id of this SubCategory's parent Category. */\n public getCategoryId(): Id64String { return this.parent ? this.parent.id : Id64.invalid; }\n /** Check if this is the default SubCategory of its parent Category. */\n public get isDefaultSubCategory(): boolean { return IModelDb.getDefaultSubCategoryId(this.getCategoryId()) === this.getSubCategoryId(); }\n\n /** Create a Code for a SubCategory given a name that is meant to be unique within the scope of the specified parent Category.\n * @param iModel The IModel\n * @param parentCategoryId The Id of the parent Category that owns the SubCategory and provides the scope for its name.\n * @param codeValue The name of the SubCategory\n */\n public static createCode(iModel: IModelDb, parentCategoryId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.subCategory);\n return new Code({ spec: codeSpec.id, scope: parentCategoryId, value: codeValue });\n }\n\n /** Create a new SubCategory\n * @param iModelDb The iModel\n * @param parentCategoryId Create the new SubCategory as a child of this [[Category]]\n * @param name The name of the SubCategory\n * @param appearance The appearance settings to use for this SubCategory\n * @returns The newly constructed SubCategory element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): SubCategory {\n if (appearance instanceof SubCategoryAppearance)\n appearance = appearance.toJSON();\n\n const parentCategory = iModelDb.elements.getElement<Category>(parentCategoryId);\n const subCategoryProps: SubCategoryProps = {\n classFullName: this.classFullName,\n model: parentCategory.model,\n parent: new CategoryOwnsSubCategories(parentCategoryId),\n code: this.createCode(iModelDb, parentCategoryId, name),\n appearance,\n };\n return new SubCategory(subCategoryProps, iModelDb);\n }\n\n /** Insert a new SubCategory\n * @param iModelDb Insert into this iModel\n * @param parentCategoryId Insert the new SubCategory as a child of this Category\n * @param name The name of the SubCategory\n * @param appearance The appearance settings to use for this SubCategory\n * @returns The Id of the newly inserted SubCategory element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, parentCategoryId: Id64String, name: string, appearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\n const subCategory = this.create(iModelDb, parentCategoryId, name, appearance);\n return iModelDb.elements.insertElement(subCategory.toJSON());\n }\n}\n\n/** A Category element is the target of the `category` member of [[GeometricElement]].\n * @public\n */\nexport class Category extends DefinitionElement {\n /** @internal */\n public static override get className(): string { return \"Category\"; }\n public rank: Rank = Rank.User;\n public description?: string;\n\n /** @internal */\n public constructor(props: CategoryProps, iModel: IModelDb) {\n super(props, iModel);\n this.rank = JsonUtils.asInt(props.rank);\n this.description = JsonUtils.asString(props.description);\n }\n\n /** @internal */\n public override toJSON(): CategoryProps {\n const val = super.toJSON() as CategoryProps;\n val.rank = this.rank;\n if (this.description && this.description.length > 0)\n val.description = this.description;\n return val;\n }\n\n /** Get the Id of the default SubCategory for this Category. */\n public myDefaultSubCategoryId(): Id64String { return IModelDb.getDefaultSubCategoryId(this.id); }\n\n /** Set the appearance of the default SubCategory for this Category */\n public setDefaultAppearance(props: SubCategoryAppearance.Props | SubCategoryAppearance): void {\n if (props instanceof SubCategoryAppearance)\n props = props.toJSON();\n\n const subCat = this.iModel.elements.getElement<SubCategory>(this.myDefaultSubCategoryId());\n subCat.appearance = new SubCategoryAppearance(props);\n this.iModel.elements.updateElement(subCat.toJSON());\n }\n}\n\n/** Categorizes 2d GeometricElements.\n * @public\n */\nexport class DrawingCategory extends Category {\n /** @internal */\n public static override get className(): string { return \"DrawingCategory\"; }\n\n /** Construct a DrawingCategory\n * @param opts The properties of the new DrawingCategory\n * @param iModel The IModelDb where the DrawingCategory may be inserted.\n * @internal\n */\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\n\n /** Get the name of the CodeSpec that is used by DrawingCategory objects. */\n public static getCodeSpecName(): string { return BisCodeSpec.drawingCategory; }\n\n /** Looks up the CategoryId of a DrawingCategory by model and name */\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\n const code: Code = DrawingCategory.createCode(iModel, scopeModelId, categoryName);\n return iModel.elements.queryElementIdByCode(code);\n }\n\n /** Create a Code for a DrawingCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModel\n * @param scopeModelId The Id of the DefinitionModel that contains the DrawingCategory and provides the scope for its name.\n * @param codeValue The name of the category\n * @return A drawing category Code\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(DrawingCategory.getCodeSpecName());\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n /** Create a new DrawingCategory\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name of the DrawingCategory\n * @returns The newly constructed DrawingCategory element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DrawingCategory {\n const categoryProps: CategoryProps = {\n classFullName: this.classFullName,\n model: definitionModelId,\n code: this.createCode(iModelDb, definitionModelId, name),\n isPrivate: false,\n };\n return new DrawingCategory(categoryProps, iModelDb);\n }\n\n /** Insert a new DrawingCategory\n * @param iModelDb Insert into this iModel\n * @param definitionModelId Insert the new DrawingCategory into this [[DefinitionModel]]\n * @param name The name of the DrawingCategory\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this DrawingCategory\n * @returns The Id of the newly inserted DrawingCategory element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\n const category = this.create(iModelDb, definitionModelId, name);\n const elements = iModelDb.elements;\n category.id = elements.insertElement(category.toJSON());\n category.setDefaultAppearance(defaultAppearance);\n return category.id;\n }\n}\n\n/** Categorizes SpatialElements. See [how to create a SpatialCategory]$(docs/learning/backend/CreateElements.md#SpatialCategory).\n * @public\n */\nexport class SpatialCategory extends Category {\n /** @internal */\n public static override get className(): string { return \"SpatialCategory\"; }\n /** Construct a SpatialCategory\n * @param opts The properties of the new SpatialCategory\n * @param iModel The IModelDb where the SpatialCategory may be inserted.\n * @internal\n */\n public constructor(opts: ElementProps, iModel: IModelDb) { super(opts, iModel); }\n\n /** Get the name of the CodeSpec that is used by SpatialCategory objects. */\n public static getCodeSpecName(): string { return BisCodeSpec.spatialCategory; }\n\n /** Looks up the CategoryId of a SpatialCategory by model and name */\n public static queryCategoryIdByName(iModel: IModelDb, scopeModelId: Id64String, categoryName: string): Id64String | undefined {\n const code: Code = SpatialCategory.createCode(iModel, scopeModelId, categoryName);\n return iModel.elements.queryElementIdByCode(code);\n }\n\n /** Create a Code for a SpatialCategory given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModel\n * @param scopeModelId The Id of the DefinitionModel that contains the SpatialCategory and provides the scope for its name.\n * @param codeValue The name of the category\n * @return A spatial category Code\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(SpatialCategory.getCodeSpecName());\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n /** Create a new SpatialCategory\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the SpatialCategory\n * @returns The newly constructed SpatialCategory element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): SpatialCategory {\n const categoryProps: CategoryProps = {\n classFullName: this.classFullName,\n model: definitionModelId,\n code: this.createCode(iModelDb, definitionModelId, name),\n isPrivate: false,\n };\n return new SpatialCategory(categoryProps, iModelDb);\n }\n\n /** Insert a new SpatialCategory\n * @param iModelDb Insert into this iModel\n * @param definitionModelId Insert the new SpatialCategory into this DefinitionModel\n * @param name The name of the SpatialCategory\n * @param defaultAppearance The appearance settings to use for the default SubCategory of this SpatialCategory\n * @returns The Id of the newly inserted SpatialCategory element.\n * @throws [[IModelError]] if unable to insert the element.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, defaultAppearance: SubCategoryAppearance.Props | SubCategoryAppearance): Id64String {\n const category = this.create(iModelDb, definitionModelId, name);\n category.id = iModelDb.elements.insertElement(category.toJSON());\n category.setDefaultAppearance(defaultAppearance);\n return category.id;\n }\n}\n"]}
|