@itwin/core-backend 5.11.0-dev.18 → 5.11.0-dev.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/DisplayStyle.d.ts.map +1 -1
- package/lib/cjs/DisplayStyle.js +4 -8
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.d.ts +6 -0
- package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
- package/lib/cjs/GeoCoordConfig.js +6 -0
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts.map +1 -1
- package/lib/esm/DisplayStyle.js +4 -8
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/GeoCoordConfig.d.ts +6 -0
- package/lib/esm/GeoCoordConfig.d.ts.map +1 -1
- package/lib/esm/GeoCoordConfig.js +6 -0
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/test/TestUtils.d.ts +17 -2
- package/lib/esm/test/TestUtils.d.ts.map +1 -1
- package/lib/esm/test/TestUtils.js +21 -2
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +10 -2
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +2 -33
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/package.json +13 -13
- package/lib/esm/test/misc/GeoServices.test.d.ts +0 -2
- package/lib/esm/test/misc/GeoServices.test.d.ts.map +0 -1
- package/lib/esm/test/misc/GeoServices.test.js +0 -918
- package/lib/esm/test/misc/GeoServices.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyle.d.ts","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAsC,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EACQ,IAAI,EAAE,cAAc,EAAY,QAAQ,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,2BAA2B,EAC/H,iBAAiB,EAAE,oBAAoB,EAAgC,kBAAkB,EAA+B,cAAc,EAAoB,SAAS,EACpK,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAkB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG3D;;;;GAIG;AACH,8BAAsB,YAAa,SAAQ,iBAAiB;IAC1D,WAA2B,SAAS,IAAI,MAAM,CAA2B;IACzE,aAAoB,QAAQ,IAAI,oBAAoB,CAAC;IAErD,SAAS,aAAa,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ;IAIhE,YAAY;WACW,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,iBAAiB;
|
|
1
|
+
{"version":3,"file":"DisplayStyle.d.ts","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/DisplayStyle.js
CHANGED
|
@@ -28,14 +28,10 @@ class DisplayStyle extends Element_1.DefinitionElement {
|
|
|
28
28
|
const elProps = super.deserialize(props);
|
|
29
29
|
const displayOptions = props.options?.element?.displayStyle;
|
|
30
30
|
// Uncompress excludedElements if they are compressed
|
|
31
|
-
if (!displayOptions?.compressExcludedElementIds
|
|
32
|
-
const
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
core_bentley_1.CompressedId64Set.decompressSet(excludedElements).forEach((id) => {
|
|
36
|
-
ids.push(id);
|
|
37
|
-
});
|
|
38
|
-
elProps.jsonProperties.styles.excludedElements = ids;
|
|
31
|
+
if (!displayOptions?.compressExcludedElementIds) {
|
|
32
|
+
const styles = elProps.jsonProperties?.styles;
|
|
33
|
+
if (styles && core_bentley_1.CompressedId64Set.isValid(styles.excludedElements)) {
|
|
34
|
+
styles.excludedElements = core_bentley_1.CompressedId64Set.decompressArray(styles.excludedElements);
|
|
39
35
|
}
|
|
40
36
|
}
|
|
41
37
|
// Omit Schedule Script Element Ids if the option is set
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyle.js","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ViewDefinitions\n */\n\nimport { CompressedId64Set, Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport {\n BisCodeSpec, Code, CodeScopeProps, CodeSpec, ColorDef, DisplayStyle3dProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\n DisplayStyleProps, DisplayStyleSettings, DisplayStyleSubCategoryProps, EntityReferenceSet, PlanProjectionSettingsProps, RenderSchedule, SkyBoxImageProps, ViewFlags,\n} from \"@itwin/core-common\";\nimport { DefinitionElement, RenderTimeline } from \"./Element\";\nimport { EditTxn } from \"./EditTxn\";\nimport { IModelDb } from \"./IModelDb\";\nimport { IModelElementCloneContext } from \"./IModelElementCloneContext\";\nimport { DeserializeEntityArgs, ECSqlRow } from \"./Entity\";\nimport { _implicitTxn } from \"./internal/Symbols\";\n\n/** A DisplayStyle defines the parameters for 'styling' the contents of a view.\n * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.\n * Many ViewDefinitions may share the same DisplayStyle.\n * @public @preview\n */\nexport abstract class DisplayStyle extends DefinitionElement {\n public static override get className(): string { return \"DisplayStyle\"; }\n public abstract get settings(): DisplayStyleSettings;\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n }\n\n /** @beta */\n public static override deserialize(props: DeserializeEntityArgs): DisplayStyleProps {\n const elProps = super.deserialize(props);\n const displayOptions = props.options?.element?.displayStyle;\n // Uncompress excludedElements if they are compressed\n if (!displayOptions?.compressExcludedElementIds && elProps.jsonProperties?.styles?.excludedElements) {\n const excludedElements = elProps.jsonProperties.styles.excludedElements;\n if (typeof excludedElements === \"string\" && excludedElements.startsWith(\"+\")) {\n const ids: string[] = [];\n CompressedId64Set.decompressSet(excludedElements).forEach((id: string) => {\n ids.push(id);\n });\n elProps.jsonProperties.styles.excludedElements = ids;\n }\n }\n // Omit Schedule Script Element Ids if the option is set\n if (displayOptions?.omitScheduleScriptElementIds && elProps.jsonProperties?.styles?.scheduleScript) {\n const scheduleScript: RenderSchedule.ScriptProps = elProps.jsonProperties.styles.scheduleScript;\n elProps.jsonProperties.styles.scheduleScript = RenderSchedule.Script.removeScheduleScriptElementIds(scheduleScript);\n }\n return elProps;\n }\n\n /** @beta */\n public static override serialize(props: DisplayStyleProps, iModel: IModelDb): ECSqlRow {\n const inst = super.serialize(props, iModel);\n return inst;\n }\n\n /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModelDb\n * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.\n * @param codeValue The DisplayStyle name\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.displayStyle);\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const [id] of this.settings.subCategoryOverrides) {\n referenceIds.addElement(id);\n }\n\n for (const excludedElementId of this.settings.excludedElementIds)\n referenceIds.addElement(excludedElementId);\n\n if (this.settings.renderTimeline) {\n referenceIds.addElement(this.settings.renderTimeline);\n } else {\n const script = this.loadScheduleScript();\n if (script)\n script.script.discloseIds(referenceIds);\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyleProps, targetElementProps: DisplayStyleProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n\n if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)\n return;\n\n const settings = targetElementProps.jsonProperties.styles;\n if (settings.subCategoryOvr) {\n const targetOverrides: DisplayStyleSubCategoryProps[] = [];\n for (const ovr of settings.subCategoryOvr) {\n ovr.subCategory;\n const targetSubCategoryId = context.findTargetElementId(Id64.fromJSON(ovr.subCategory));\n if (Id64.isValid(targetSubCategoryId))\n targetOverrides.push({ ...ovr, subCategory: targetSubCategoryId });\n }\n settings.subCategoryOvr = targetOverrides;\n }\n\n if (settings.excludedElements) {\n const excluded: Id64Array = \"string\" === typeof settings.excludedElements ? CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;\n const excludedTargetElements: Id64Array = [];\n for (const excludedElement of excluded) {\n const remapped = context.findTargetElementId(excludedElement);\n if (Id64.isValid(remapped))\n excludedTargetElements.push(remapped);\n }\n\n if (0 === excludedTargetElements.length)\n delete settings.excludedElements;\n else\n settings.excludedElements = CompressedId64Set.compressIds(OrderedId64Iterable.sortArray(excludedTargetElements));\n }\n\n if (settings.renderTimeline) {\n const renderTimeline = context.findTargetElementId(settings.renderTimeline);\n if (Id64.isValid(renderTimeline))\n settings.renderTimeline = renderTimeline;\n else\n delete settings.renderTimeline;\n } else if (settings.scheduleScript) {\n const scheduleScript = RenderTimeline.remapScript(context, settings.scheduleScript);\n if (scheduleScript.length > 0)\n settings.scheduleScript = scheduleScript;\n else\n delete settings.scheduleScript;\n }\n }\n\n public loadScheduleScript(): RenderSchedule.ScriptReference | undefined {\n let script;\n let sourceId;\n if (this.settings.renderTimeline) {\n const timeline = this.iModel.elements.tryGetElement<RenderTimeline>(this.settings.renderTimeline);\n if (timeline) {\n script = RenderSchedule.Script.fromJSON(timeline.scriptProps);\n sourceId = timeline.id;\n }\n } else if (this.settings.scheduleScriptProps) {\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\n sourceId = this.id;\n }\n\n return undefined !== sourceId && undefined !== script ? new RenderSchedule.ScriptReference(sourceId, script) : undefined;\n }\n}\n\n/** A DisplayStyle for 2d views.\n * @public @preview\n */\nexport class DisplayStyle2d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle2d\"; }\n private readonly _settings: DisplayStyleSettings;\n\n public get settings(): DisplayStyleSettings { return this._settings; }\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyleSettings(this.jsonProperties);\n }\n /** Create a DisplayStyle2d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle2d\n * @returns The newly constructed DisplayStyle2d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DisplayStyle2d {\n const displayStyleProps: DisplayStyleProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n isPrivate: false,\n jsonProperties: {\n styles: {\n backgroundColor: 0,\n monochromeColor: ColorDef.white.toJSON(),\n viewflags: ViewFlags.defaults,\n },\n },\n };\n return new DisplayStyle2d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel\n * @param name The name of the DisplayStyle2d\n * @returns The Id of the newly inserted DisplayStyle2d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string): Id64String;\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle2d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name);\n return displayStyle.insert(txn);\n }\n}\n\n/** Describes initial settings for a new [[DisplayStyle3d]].\n * Most properties are inherited from [DisplayStyle3dSettingsProps]($common), but for backwards compatibility reasons, this interface is slightly awkward:\n * - It adds a `viewFlags` member that differs only in case and type from [DisplayStyleSettingsProps.viewflags]($common); and\n * - It extends the type of [DisplayStyleSettingsProps.backgroundColor]($common) to include [ColorDef]($common).\n * These idiosyncrasies will be addressed in a future version of core-backend.\n * @see [[DisplayStyle3d.create]].\n * @public @preview\n */\nexport interface DisplayStyleCreationOptions extends Omit<DisplayStyle3dSettingsProps, \"backgroundColor\" | \"scheduleScript\"> {\n /** If supplied, the [ViewFlags]($common) applied by the display style.\n * If undefined, [DisplayStyle3dSettingsProps.viewflags]($common) will be used if present (note the difference in case); otherwise, default-constructed [ViewFlags]($common) will be used.\n */\n viewFlags?: ViewFlags;\n backgroundColor?: ColorDef | number;\n}\n\n/** A DisplayStyle for 3d views.\n * See [how to create a DisplayStyle3d]($docs/learning/backend/CreateElements.md#DisplayStyle3d).\n * @public @preview\n */\nexport class DisplayStyle3d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle3d\"; }\n private readonly _settings: DisplayStyle3dSettings;\n\n public get settings(): DisplayStyle3dSettings { return this._settings; }\n\n protected constructor(props: DisplayStyle3dProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyle3dSettings(this.jsonProperties);\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const textureId of this.settings.environment.sky.textureIds)\n referenceIds.addElement(textureId);\n\n if (this.settings.planProjectionSettings)\n for (const planProjectionSetting of this.settings.planProjectionSettings)\n referenceIds.addElement(planProjectionSetting[0]);\n\n const groups = this.settings.contours.groups;\n for (const group of groups) {\n const subCategories = group.subCategories;\n for (const subCategoryId of subCategories) {\n referenceIds.addElement(subCategoryId);\n }\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyle3dProps, targetElementProps: DisplayStyle3dProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n if (context.isBetweenIModels) {\n const convertTexture = (id: string) => Id64.isValidId64(id) ? context.findTargetElementId(id) : id;\n\n const skyBoxImageProps: SkyBoxImageProps | undefined = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;\n if (skyBoxImageProps?.texture && Id64.isValidId64(skyBoxImageProps.texture))\n skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);\n\n if (skyBoxImageProps?.textures) {\n skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);\n skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);\n skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);\n skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);\n skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);\n skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);\n }\n\n if (targetElementProps?.jsonProperties?.styles?.planProjections) {\n const remappedPlanProjections: { [modelId: string]: PlanProjectionSettingsProps } = {};\n for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {\n const remappedModelId: Id64String = context.findTargetElementId(entry[0]);\n if (Id64.isValidId64(remappedModelId)) {\n remappedPlanProjections[remappedModelId] = entry[1];\n }\n }\n targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;\n }\n\n const groups = targetElementProps?.jsonProperties?.styles?.contours?.groups;\n if (groups) {\n for (const group of groups) {\n if (group.subCategories) {\n const subCategories = CompressedId64Set.decompressArray(group.subCategories);\n const remappedSubCategories: Id64String[] = [];\n for (const subCategoryId of subCategories) {\n const remappedSubCategoryId: Id64String = context.findTargetElementId(subCategoryId);\n if (Id64.isValidId64(remappedSubCategoryId)) {\n remappedSubCategories.push(remappedSubCategoryId);\n }\n }\n group.subCategories = CompressedId64Set.sortAndCompress(remappedSubCategories);\n }\n }\n }\n }\n }\n\n /** Create a DisplayStyle3d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle3d\n * @returns The newly constructed DisplayStyle3d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): DisplayStyle3d {\n options = options ?? {};\n let viewflags = options.viewFlags?.toJSON();\n if (!viewflags)\n viewflags = options.viewflags ?? new ViewFlags().toJSON();\n\n const backgroundColor = options.backgroundColor instanceof ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;\n\n const settings: DisplayStyle3dSettingsProps = {\n ...options,\n viewflags,\n backgroundColor,\n };\n\n const displayStyleProps: DisplayStyle3dProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n jsonProperties: { styles: settings },\n isPrivate: false,\n\n };\n\n return new DisplayStyle3d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]\n * @param name The name of the DisplayStyle3d\n * @param options Creation options\n * @returns The Id of the newly inserted DisplayStyle3d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle3d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name, options);\n return displayStyle.insert(txn);\n }\n}\n\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"DisplayStyle.js","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ViewDefinitions\n */\n\nimport { CompressedId64Set, Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport {\n BisCodeSpec, Code, CodeScopeProps, CodeSpec, ColorDef, DisplayStyle3dProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\n DisplayStyleProps, DisplayStyleSettings, DisplayStyleSubCategoryProps, EntityReferenceSet, PlanProjectionSettingsProps, RenderSchedule, SkyBoxImageProps, ViewFlags,\n} from \"@itwin/core-common\";\nimport { DefinitionElement, RenderTimeline } from \"./Element\";\nimport { EditTxn } from \"./EditTxn\";\nimport { IModelDb } from \"./IModelDb\";\nimport { IModelElementCloneContext } from \"./IModelElementCloneContext\";\nimport { DeserializeEntityArgs, ECSqlRow } from \"./Entity\";\nimport { _implicitTxn } from \"./internal/Symbols\";\n\n/** A DisplayStyle defines the parameters for 'styling' the contents of a view.\n * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.\n * Many ViewDefinitions may share the same DisplayStyle.\n * @public @preview\n */\nexport abstract class DisplayStyle extends DefinitionElement {\n public static override get className(): string { return \"DisplayStyle\"; }\n public abstract get settings(): DisplayStyleSettings;\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n }\n\n /** @beta */\n public static override deserialize(props: DeserializeEntityArgs): DisplayStyleProps {\n const elProps = super.deserialize(props);\n const displayOptions = props.options?.element?.displayStyle;\n // Uncompress excludedElements if they are compressed\n if (!displayOptions?.compressExcludedElementIds) {\n const styles = elProps.jsonProperties?.styles;\n if (styles && CompressedId64Set.isValid(styles.excludedElements)) {\n styles.excludedElements = CompressedId64Set.decompressArray(styles.excludedElements);\n }\n }\n // Omit Schedule Script Element Ids if the option is set\n if (displayOptions?.omitScheduleScriptElementIds && elProps.jsonProperties?.styles?.scheduleScript) {\n const scheduleScript: RenderSchedule.ScriptProps = elProps.jsonProperties.styles.scheduleScript;\n elProps.jsonProperties.styles.scheduleScript = RenderSchedule.Script.removeScheduleScriptElementIds(scheduleScript);\n }\n return elProps;\n }\n\n /** @beta */\n public static override serialize(props: DisplayStyleProps, iModel: IModelDb): ECSqlRow {\n const inst = super.serialize(props, iModel);\n return inst;\n }\n\n /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModelDb\n * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.\n * @param codeValue The DisplayStyle name\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.displayStyle);\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const [id] of this.settings.subCategoryOverrides) {\n referenceIds.addElement(id);\n }\n\n for (const excludedElementId of this.settings.excludedElementIds)\n referenceIds.addElement(excludedElementId);\n\n if (this.settings.renderTimeline) {\n referenceIds.addElement(this.settings.renderTimeline);\n } else {\n const script = this.loadScheduleScript();\n if (script)\n script.script.discloseIds(referenceIds);\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyleProps, targetElementProps: DisplayStyleProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n\n if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)\n return;\n\n const settings = targetElementProps.jsonProperties.styles;\n if (settings.subCategoryOvr) {\n const targetOverrides: DisplayStyleSubCategoryProps[] = [];\n for (const ovr of settings.subCategoryOvr) {\n ovr.subCategory;\n const targetSubCategoryId = context.findTargetElementId(Id64.fromJSON(ovr.subCategory));\n if (Id64.isValid(targetSubCategoryId))\n targetOverrides.push({ ...ovr, subCategory: targetSubCategoryId });\n }\n settings.subCategoryOvr = targetOverrides;\n }\n\n if (settings.excludedElements) {\n const excluded: Id64Array = \"string\" === typeof settings.excludedElements ? CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;\n const excludedTargetElements: Id64Array = [];\n for (const excludedElement of excluded) {\n const remapped = context.findTargetElementId(excludedElement);\n if (Id64.isValid(remapped))\n excludedTargetElements.push(remapped);\n }\n\n if (0 === excludedTargetElements.length)\n delete settings.excludedElements;\n else\n settings.excludedElements = CompressedId64Set.compressIds(OrderedId64Iterable.sortArray(excludedTargetElements));\n }\n\n if (settings.renderTimeline) {\n const renderTimeline = context.findTargetElementId(settings.renderTimeline);\n if (Id64.isValid(renderTimeline))\n settings.renderTimeline = renderTimeline;\n else\n delete settings.renderTimeline;\n } else if (settings.scheduleScript) {\n const scheduleScript = RenderTimeline.remapScript(context, settings.scheduleScript);\n if (scheduleScript.length > 0)\n settings.scheduleScript = scheduleScript;\n else\n delete settings.scheduleScript;\n }\n }\n\n public loadScheduleScript(): RenderSchedule.ScriptReference | undefined {\n let script;\n let sourceId;\n if (this.settings.renderTimeline) {\n const timeline = this.iModel.elements.tryGetElement<RenderTimeline>(this.settings.renderTimeline);\n if (timeline) {\n script = RenderSchedule.Script.fromJSON(timeline.scriptProps);\n sourceId = timeline.id;\n }\n } else if (this.settings.scheduleScriptProps) {\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\n sourceId = this.id;\n }\n\n return undefined !== sourceId && undefined !== script ? new RenderSchedule.ScriptReference(sourceId, script) : undefined;\n }\n}\n\n/** A DisplayStyle for 2d views.\n * @public @preview\n */\nexport class DisplayStyle2d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle2d\"; }\n private readonly _settings: DisplayStyleSettings;\n\n public get settings(): DisplayStyleSettings { return this._settings; }\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyleSettings(this.jsonProperties);\n }\n /** Create a DisplayStyle2d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle2d\n * @returns The newly constructed DisplayStyle2d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DisplayStyle2d {\n const displayStyleProps: DisplayStyleProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n isPrivate: false,\n jsonProperties: {\n styles: {\n backgroundColor: 0,\n monochromeColor: ColorDef.white.toJSON(),\n viewflags: ViewFlags.defaults,\n },\n },\n };\n return new DisplayStyle2d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel\n * @param name The name of the DisplayStyle2d\n * @returns The Id of the newly inserted DisplayStyle2d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string): Id64String;\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle2d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name);\n return displayStyle.insert(txn);\n }\n}\n\n/** Describes initial settings for a new [[DisplayStyle3d]].\n * Most properties are inherited from [DisplayStyle3dSettingsProps]($common), but for backwards compatibility reasons, this interface is slightly awkward:\n * - It adds a `viewFlags` member that differs only in case and type from [DisplayStyleSettingsProps.viewflags]($common); and\n * - It extends the type of [DisplayStyleSettingsProps.backgroundColor]($common) to include [ColorDef]($common).\n * These idiosyncrasies will be addressed in a future version of core-backend.\n * @see [[DisplayStyle3d.create]].\n * @public @preview\n */\nexport interface DisplayStyleCreationOptions extends Omit<DisplayStyle3dSettingsProps, \"backgroundColor\" | \"scheduleScript\"> {\n /** If supplied, the [ViewFlags]($common) applied by the display style.\n * If undefined, [DisplayStyle3dSettingsProps.viewflags]($common) will be used if present (note the difference in case); otherwise, default-constructed [ViewFlags]($common) will be used.\n */\n viewFlags?: ViewFlags;\n backgroundColor?: ColorDef | number;\n}\n\n/** A DisplayStyle for 3d views.\n * See [how to create a DisplayStyle3d]($docs/learning/backend/CreateElements.md#DisplayStyle3d).\n * @public @preview\n */\nexport class DisplayStyle3d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle3d\"; }\n private readonly _settings: DisplayStyle3dSettings;\n\n public get settings(): DisplayStyle3dSettings { return this._settings; }\n\n protected constructor(props: DisplayStyle3dProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyle3dSettings(this.jsonProperties);\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const textureId of this.settings.environment.sky.textureIds)\n referenceIds.addElement(textureId);\n\n if (this.settings.planProjectionSettings)\n for (const planProjectionSetting of this.settings.planProjectionSettings)\n referenceIds.addElement(planProjectionSetting[0]);\n\n const groups = this.settings.contours.groups;\n for (const group of groups) {\n const subCategories = group.subCategories;\n for (const subCategoryId of subCategories) {\n referenceIds.addElement(subCategoryId);\n }\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyle3dProps, targetElementProps: DisplayStyle3dProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n if (context.isBetweenIModels) {\n const convertTexture = (id: string) => Id64.isValidId64(id) ? context.findTargetElementId(id) : id;\n\n const skyBoxImageProps: SkyBoxImageProps | undefined = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;\n if (skyBoxImageProps?.texture && Id64.isValidId64(skyBoxImageProps.texture))\n skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);\n\n if (skyBoxImageProps?.textures) {\n skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);\n skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);\n skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);\n skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);\n skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);\n skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);\n }\n\n if (targetElementProps?.jsonProperties?.styles?.planProjections) {\n const remappedPlanProjections: { [modelId: string]: PlanProjectionSettingsProps } = {};\n for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {\n const remappedModelId: Id64String = context.findTargetElementId(entry[0]);\n if (Id64.isValidId64(remappedModelId)) {\n remappedPlanProjections[remappedModelId] = entry[1];\n }\n }\n targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;\n }\n\n const groups = targetElementProps?.jsonProperties?.styles?.contours?.groups;\n if (groups) {\n for (const group of groups) {\n if (group.subCategories) {\n const subCategories = CompressedId64Set.decompressArray(group.subCategories);\n const remappedSubCategories: Id64String[] = [];\n for (const subCategoryId of subCategories) {\n const remappedSubCategoryId: Id64String = context.findTargetElementId(subCategoryId);\n if (Id64.isValidId64(remappedSubCategoryId)) {\n remappedSubCategories.push(remappedSubCategoryId);\n }\n }\n group.subCategories = CompressedId64Set.sortAndCompress(remappedSubCategories);\n }\n }\n }\n }\n }\n\n /** Create a DisplayStyle3d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle3d\n * @returns The newly constructed DisplayStyle3d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): DisplayStyle3d {\n options = options ?? {};\n let viewflags = options.viewFlags?.toJSON();\n if (!viewflags)\n viewflags = options.viewflags ?? new ViewFlags().toJSON();\n\n const backgroundColor = options.backgroundColor instanceof ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;\n\n const settings: DisplayStyle3dSettingsProps = {\n ...options,\n viewflags,\n backgroundColor,\n };\n\n const displayStyleProps: DisplayStyle3dProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n jsonProperties: { styles: settings },\n isPrivate: false,\n\n };\n\n return new DisplayStyle3d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]\n * @param name The name of the DisplayStyle3d\n * @param options Creation options\n * @returns The Id of the newly inserted DisplayStyle3d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle3d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name, options);\n return displayStyle.insert(txn);\n }\n}\n\n\n\n"]}
|
|
@@ -11,6 +11,12 @@ export interface GcsDbProps extends WorkspaceDbCloudProps {
|
|
|
11
11
|
/**
|
|
12
12
|
* Internal class to configure and load the gcs workspaces for an iModel.
|
|
13
13
|
* @internal
|
|
14
|
+
* @note GCS workspaces are loaded by default (the `disableWorkspaces` setting defaults to `false`). To
|
|
15
|
+
* suppress loading them from cloud containers and the network requests they issue when iModels are
|
|
16
|
+
* opened — override the `disableWorkspaces` setting (e.g. via [Settings.addDictionary]($backend)
|
|
17
|
+
* at [SettingsPriority.application]($backend)), which is useful for unit tests and other offline
|
|
18
|
+
* scenarios that don't require GCS data. GCS workspaces load lazily on first iModel open, so applying
|
|
19
|
+
* the override any time after `IModelHost.startup` is sufficient.
|
|
14
20
|
*/
|
|
15
21
|
export declare class GeoCoordConfig {
|
|
16
22
|
/** array of cloud prefetch tasks that may be awaited to permit offline usage */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoCoordConfig.d.ts","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,gBAAgB;AAChB,MAAM,WAAW,UAAW,SAAQ,qBAAqB;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD
|
|
1
|
+
{"version":3,"file":"GeoCoordConfig.d.ts","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,gBAAgB;AAChB,MAAM,WAAW,UAAW,SAAQ,qBAAqB;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,gFAAgF;IAChF,gBAAuB,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE,CAAM;IACpE,gBAAuB,WAAW;;;;MAIhC;IAEF,OAAO,CAAC,MAAM,CAAC,eAAe;IAkC9B,OAAO,CAAC,MAAM,CAAC,OAAO;IAStB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;WAC3B,SAAS;WAKT,oBAAoB,IAAI,IAAI;WAO5B,aAAa,CAAC,QAAQ,EAAE,QAAQ;CAI/C"}
|
|
@@ -17,6 +17,12 @@ const makeSettingName = (name) => `${"itwin/core/gcs"}/${name}`;
|
|
|
17
17
|
/**
|
|
18
18
|
* Internal class to configure and load the gcs workspaces for an iModel.
|
|
19
19
|
* @internal
|
|
20
|
+
* @note GCS workspaces are loaded by default (the `disableWorkspaces` setting defaults to `false`). To
|
|
21
|
+
* suppress loading them from cloud containers and the network requests they issue when iModels are
|
|
22
|
+
* opened — override the `disableWorkspaces` setting (e.g. via [Settings.addDictionary]($backend)
|
|
23
|
+
* at [SettingsPriority.application]($backend)), which is useful for unit tests and other offline
|
|
24
|
+
* scenarios that don't require GCS data. GCS workspaces load lazily on first iModel open, so applying
|
|
25
|
+
* the override any time after `IModelHost.startup` is sufficient.
|
|
20
26
|
*/
|
|
21
27
|
class GeoCoordConfig {
|
|
22
28
|
/** array of cloud prefetch tasks that may be awaited to permit offline usage */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoCoordConfig.js","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA2D;AAC3D,+CAA4C;AAC5C,6CAA0C;AAG1C,8DAAyD;AAEzD,MAAM,SAAS,GAAG,UAAU,CAAC;AAM7B,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,gBAAgB,IAAI,IAAI,EAAE,CAAC;AAExE
|
|
1
|
+
{"version":3,"file":"GeoCoordConfig.js","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module iModels\n */\n\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\nimport { CloudSqlite } from \"./CloudSqlite\";\nimport { IModelHost } from \"./IModelHost\";\nimport { Settings } from \"./workspace/Settings\";\nimport { WorkspaceDbCloudProps } from \"./workspace/Workspace\";\nimport { IModelNative } from \"./internal/NativePlatform\";\n\nconst loggerCat = \"GeoCoord\";\n\n/** @internal */\nexport interface GcsDbProps extends WorkspaceDbCloudProps {\n priority?: number;\n}\nconst makeSettingName = (name: string) => `${\"itwin/core/gcs\"}/${name}`;\n\n/**\n * Internal class to configure and load the gcs workspaces for an iModel.\n * @internal\n * @note GCS workspaces are loaded by default (the `disableWorkspaces` setting defaults to `false`). To\n * suppress loading them from cloud containers and the network requests they issue when iModels are\n * opened — override the `disableWorkspaces` setting (e.g. via [Settings.addDictionary]($backend)\n * at [SettingsPriority.application]($backend)), which is useful for unit tests and other offline\n * scenarios that don't require GCS data. GCS workspaces load lazily on first iModel open, so applying\n * the override any time after `IModelHost.startup` is sufficient.\n */\nexport class GeoCoordConfig {\n /** array of cloud prefetch tasks that may be awaited to permit offline usage */\n public static readonly prefetches: CloudSqlite.CloudPrefetch[] = [];\n public static readonly settingName = {\n databases: makeSettingName(\"databases\"),\n defaultDatabases: makeSettingName(\"default/databases\"),\n disableWorkspaces: makeSettingName(\"disableWorkspaces\"),\n };\n\n private static addGcsWorkspace(dbProps: GcsDbProps) {\n // override to disable loading GCS data from workspaces\n if (IModelHost.appWorkspace.settings.getBoolean(GeoCoordConfig.settingName.disableWorkspaces, false))\n return;\n\n try {\n const ws = IModelHost.appWorkspace;\n const container = ws.getContainer({ ...dbProps, accessToken: \"\" }); // all gcs containers are public so no accessToken is required\n const cloudContainer = container.cloudContainer;\n if (!cloudContainer?.isConnected) {\n Logger.logError(\"GeoCoord\", `could not load gcs database \"${dbProps.dbName}\"`);\n return;\n }\n\n const gcsDbName = container.resolveDbFileName(dbProps);\n const gcsDbProps = cloudContainer.queryDatabase(gcsDbName);\n if (undefined === gcsDbProps)\n throw new Error(`database \"${gcsDbName}\" not found in container \"${dbProps.containerId}\"`);\n\n if (!IModelNative.platform.addGcsWorkspaceDb(gcsDbName, cloudContainer, dbProps.priority))\n return; // already had this db\n\n Logger.logInfo(loggerCat, `loaded gcsDb \"${gcsDbName}\", from \"${dbProps.baseUri}/${dbProps.containerId}\" size=${gcsDbProps.totalBlocks}, local=${gcsDbProps.localBlocks}`);\n\n if (true === dbProps.prefetch)\n this.prefetches.push(CloudSqlite.startCloudPrefetch(cloudContainer, gcsDbName));\n\n } catch (e: any) {\n let msg = `Cannot load GCS workspace (${e.errorNumber}): ${BentleyError.getErrorMessage(e)}`;\n msg += `,container=${dbProps.baseUri}/${dbProps.containerId}, storage=${dbProps.storageType}, public=${dbProps.isPublic}, cacheDir=${IModelHost.cacheDir}`;\n Logger.logError(loggerCat, msg);\n }\n }\n\n private static loadAll(settings: Settings, settingName: string) {\n const dbProps = settings.getArray<GcsDbProps>(settingName);\n if (dbProps) {\n for (const entry of dbProps) {\n this.addGcsWorkspace(entry);\n }\n }\n }\n\n private static _defaultDbsLoaded = false;\n public static onStartup() {\n this._defaultDbsLoaded = false;\n this.prefetches.length = 0;\n }\n\n public static loadDefaultDatabases(): void {\n if (!this._defaultDbsLoaded) {\n this._defaultDbsLoaded = true;\n this.loadAll(IModelHost.appWorkspace.settings, this.settingName.defaultDatabases);\n }\n }\n\n public static loadForImodel(settings: Settings) {\n this.loadDefaultDatabases();\n this.loadAll(settings, this.settingName.databases);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyle.d.ts","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAsC,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EACQ,IAAI,EAAE,cAAc,EAAY,QAAQ,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,2BAA2B,EAC/H,iBAAiB,EAAE,oBAAoB,EAAgC,kBAAkB,EAA+B,cAAc,EAAoB,SAAS,EACpK,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAkB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG3D;;;;GAIG;AACH,8BAAsB,YAAa,SAAQ,iBAAiB;IAC1D,WAA2B,SAAS,IAAI,MAAM,CAA2B;IACzE,aAAoB,QAAQ,IAAI,oBAAoB,CAAC;IAErD,SAAS,aAAa,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ;IAIhE,YAAY;WACW,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,iBAAiB;
|
|
1
|
+
{"version":3,"file":"DisplayStyle.d.ts","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/DisplayStyle.js
CHANGED
|
@@ -25,14 +25,10 @@ export class DisplayStyle extends DefinitionElement {
|
|
|
25
25
|
const elProps = super.deserialize(props);
|
|
26
26
|
const displayOptions = props.options?.element?.displayStyle;
|
|
27
27
|
// Uncompress excludedElements if they are compressed
|
|
28
|
-
if (!displayOptions?.compressExcludedElementIds
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
CompressedId64Set.decompressSet(excludedElements).forEach((id) => {
|
|
33
|
-
ids.push(id);
|
|
34
|
-
});
|
|
35
|
-
elProps.jsonProperties.styles.excludedElements = ids;
|
|
28
|
+
if (!displayOptions?.compressExcludedElementIds) {
|
|
29
|
+
const styles = elProps.jsonProperties?.styles;
|
|
30
|
+
if (styles && CompressedId64Set.isValid(styles.excludedElements)) {
|
|
31
|
+
styles.excludedElements = CompressedId64Set.decompressArray(styles.excludedElements);
|
|
36
32
|
}
|
|
37
33
|
}
|
|
38
34
|
// Omit Schedule Script Element Ids if the option is set
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyle.js","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ViewDefinitions\n */\n\nimport { CompressedId64Set, Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport {\n BisCodeSpec, Code, CodeScopeProps, CodeSpec, ColorDef, DisplayStyle3dProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\n DisplayStyleProps, DisplayStyleSettings, DisplayStyleSubCategoryProps, EntityReferenceSet, PlanProjectionSettingsProps, RenderSchedule, SkyBoxImageProps, ViewFlags,\n} from \"@itwin/core-common\";\nimport { DefinitionElement, RenderTimeline } from \"./Element\";\nimport { EditTxn } from \"./EditTxn\";\nimport { IModelDb } from \"./IModelDb\";\nimport { IModelElementCloneContext } from \"./IModelElementCloneContext\";\nimport { DeserializeEntityArgs, ECSqlRow } from \"./Entity\";\nimport { _implicitTxn } from \"./internal/Symbols\";\n\n/** A DisplayStyle defines the parameters for 'styling' the contents of a view.\n * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.\n * Many ViewDefinitions may share the same DisplayStyle.\n * @public @preview\n */\nexport abstract class DisplayStyle extends DefinitionElement {\n public static override get className(): string { return \"DisplayStyle\"; }\n public abstract get settings(): DisplayStyleSettings;\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n }\n\n /** @beta */\n public static override deserialize(props: DeserializeEntityArgs): DisplayStyleProps {\n const elProps = super.deserialize(props);\n const displayOptions = props.options?.element?.displayStyle;\n // Uncompress excludedElements if they are compressed\n if (!displayOptions?.compressExcludedElementIds && elProps.jsonProperties?.styles?.excludedElements) {\n const excludedElements = elProps.jsonProperties.styles.excludedElements;\n if (typeof excludedElements === \"string\" && excludedElements.startsWith(\"+\")) {\n const ids: string[] = [];\n CompressedId64Set.decompressSet(excludedElements).forEach((id: string) => {\n ids.push(id);\n });\n elProps.jsonProperties.styles.excludedElements = ids;\n }\n }\n // Omit Schedule Script Element Ids if the option is set\n if (displayOptions?.omitScheduleScriptElementIds && elProps.jsonProperties?.styles?.scheduleScript) {\n const scheduleScript: RenderSchedule.ScriptProps = elProps.jsonProperties.styles.scheduleScript;\n elProps.jsonProperties.styles.scheduleScript = RenderSchedule.Script.removeScheduleScriptElementIds(scheduleScript);\n }\n return elProps;\n }\n\n /** @beta */\n public static override serialize(props: DisplayStyleProps, iModel: IModelDb): ECSqlRow {\n const inst = super.serialize(props, iModel);\n return inst;\n }\n\n /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModelDb\n * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.\n * @param codeValue The DisplayStyle name\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.displayStyle);\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const [id] of this.settings.subCategoryOverrides) {\n referenceIds.addElement(id);\n }\n\n for (const excludedElementId of this.settings.excludedElementIds)\n referenceIds.addElement(excludedElementId);\n\n if (this.settings.renderTimeline) {\n referenceIds.addElement(this.settings.renderTimeline);\n } else {\n const script = this.loadScheduleScript();\n if (script)\n script.script.discloseIds(referenceIds);\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyleProps, targetElementProps: DisplayStyleProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n\n if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)\n return;\n\n const settings = targetElementProps.jsonProperties.styles;\n if (settings.subCategoryOvr) {\n const targetOverrides: DisplayStyleSubCategoryProps[] = [];\n for (const ovr of settings.subCategoryOvr) {\n ovr.subCategory;\n const targetSubCategoryId = context.findTargetElementId(Id64.fromJSON(ovr.subCategory));\n if (Id64.isValid(targetSubCategoryId))\n targetOverrides.push({ ...ovr, subCategory: targetSubCategoryId });\n }\n settings.subCategoryOvr = targetOverrides;\n }\n\n if (settings.excludedElements) {\n const excluded: Id64Array = \"string\" === typeof settings.excludedElements ? CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;\n const excludedTargetElements: Id64Array = [];\n for (const excludedElement of excluded) {\n const remapped = context.findTargetElementId(excludedElement);\n if (Id64.isValid(remapped))\n excludedTargetElements.push(remapped);\n }\n\n if (0 === excludedTargetElements.length)\n delete settings.excludedElements;\n else\n settings.excludedElements = CompressedId64Set.compressIds(OrderedId64Iterable.sortArray(excludedTargetElements));\n }\n\n if (settings.renderTimeline) {\n const renderTimeline = context.findTargetElementId(settings.renderTimeline);\n if (Id64.isValid(renderTimeline))\n settings.renderTimeline = renderTimeline;\n else\n delete settings.renderTimeline;\n } else if (settings.scheduleScript) {\n const scheduleScript = RenderTimeline.remapScript(context, settings.scheduleScript);\n if (scheduleScript.length > 0)\n settings.scheduleScript = scheduleScript;\n else\n delete settings.scheduleScript;\n }\n }\n\n public loadScheduleScript(): RenderSchedule.ScriptReference | undefined {\n let script;\n let sourceId;\n if (this.settings.renderTimeline) {\n const timeline = this.iModel.elements.tryGetElement<RenderTimeline>(this.settings.renderTimeline);\n if (timeline) {\n script = RenderSchedule.Script.fromJSON(timeline.scriptProps);\n sourceId = timeline.id;\n }\n } else if (this.settings.scheduleScriptProps) {\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\n sourceId = this.id;\n }\n\n return undefined !== sourceId && undefined !== script ? new RenderSchedule.ScriptReference(sourceId, script) : undefined;\n }\n}\n\n/** A DisplayStyle for 2d views.\n * @public @preview\n */\nexport class DisplayStyle2d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle2d\"; }\n private readonly _settings: DisplayStyleSettings;\n\n public get settings(): DisplayStyleSettings { return this._settings; }\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyleSettings(this.jsonProperties);\n }\n /** Create a DisplayStyle2d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle2d\n * @returns The newly constructed DisplayStyle2d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DisplayStyle2d {\n const displayStyleProps: DisplayStyleProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n isPrivate: false,\n jsonProperties: {\n styles: {\n backgroundColor: 0,\n monochromeColor: ColorDef.white.toJSON(),\n viewflags: ViewFlags.defaults,\n },\n },\n };\n return new DisplayStyle2d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel\n * @param name The name of the DisplayStyle2d\n * @returns The Id of the newly inserted DisplayStyle2d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string): Id64String;\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle2d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name);\n return displayStyle.insert(txn);\n }\n}\n\n/** Describes initial settings for a new [[DisplayStyle3d]].\n * Most properties are inherited from [DisplayStyle3dSettingsProps]($common), but for backwards compatibility reasons, this interface is slightly awkward:\n * - It adds a `viewFlags` member that differs only in case and type from [DisplayStyleSettingsProps.viewflags]($common); and\n * - It extends the type of [DisplayStyleSettingsProps.backgroundColor]($common) to include [ColorDef]($common).\n * These idiosyncrasies will be addressed in a future version of core-backend.\n * @see [[DisplayStyle3d.create]].\n * @public @preview\n */\nexport interface DisplayStyleCreationOptions extends Omit<DisplayStyle3dSettingsProps, \"backgroundColor\" | \"scheduleScript\"> {\n /** If supplied, the [ViewFlags]($common) applied by the display style.\n * If undefined, [DisplayStyle3dSettingsProps.viewflags]($common) will be used if present (note the difference in case); otherwise, default-constructed [ViewFlags]($common) will be used.\n */\n viewFlags?: ViewFlags;\n backgroundColor?: ColorDef | number;\n}\n\n/** A DisplayStyle for 3d views.\n * See [how to create a DisplayStyle3d]($docs/learning/backend/CreateElements.md#DisplayStyle3d).\n * @public @preview\n */\nexport class DisplayStyle3d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle3d\"; }\n private readonly _settings: DisplayStyle3dSettings;\n\n public get settings(): DisplayStyle3dSettings { return this._settings; }\n\n protected constructor(props: DisplayStyle3dProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyle3dSettings(this.jsonProperties);\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const textureId of this.settings.environment.sky.textureIds)\n referenceIds.addElement(textureId);\n\n if (this.settings.planProjectionSettings)\n for (const planProjectionSetting of this.settings.planProjectionSettings)\n referenceIds.addElement(planProjectionSetting[0]);\n\n const groups = this.settings.contours.groups;\n for (const group of groups) {\n const subCategories = group.subCategories;\n for (const subCategoryId of subCategories) {\n referenceIds.addElement(subCategoryId);\n }\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyle3dProps, targetElementProps: DisplayStyle3dProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n if (context.isBetweenIModels) {\n const convertTexture = (id: string) => Id64.isValidId64(id) ? context.findTargetElementId(id) : id;\n\n const skyBoxImageProps: SkyBoxImageProps | undefined = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;\n if (skyBoxImageProps?.texture && Id64.isValidId64(skyBoxImageProps.texture))\n skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);\n\n if (skyBoxImageProps?.textures) {\n skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);\n skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);\n skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);\n skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);\n skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);\n skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);\n }\n\n if (targetElementProps?.jsonProperties?.styles?.planProjections) {\n const remappedPlanProjections: { [modelId: string]: PlanProjectionSettingsProps } = {};\n for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {\n const remappedModelId: Id64String = context.findTargetElementId(entry[0]);\n if (Id64.isValidId64(remappedModelId)) {\n remappedPlanProjections[remappedModelId] = entry[1];\n }\n }\n targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;\n }\n\n const groups = targetElementProps?.jsonProperties?.styles?.contours?.groups;\n if (groups) {\n for (const group of groups) {\n if (group.subCategories) {\n const subCategories = CompressedId64Set.decompressArray(group.subCategories);\n const remappedSubCategories: Id64String[] = [];\n for (const subCategoryId of subCategories) {\n const remappedSubCategoryId: Id64String = context.findTargetElementId(subCategoryId);\n if (Id64.isValidId64(remappedSubCategoryId)) {\n remappedSubCategories.push(remappedSubCategoryId);\n }\n }\n group.subCategories = CompressedId64Set.sortAndCompress(remappedSubCategories);\n }\n }\n }\n }\n }\n\n /** Create a DisplayStyle3d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle3d\n * @returns The newly constructed DisplayStyle3d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): DisplayStyle3d {\n options = options ?? {};\n let viewflags = options.viewFlags?.toJSON();\n if (!viewflags)\n viewflags = options.viewflags ?? new ViewFlags().toJSON();\n\n const backgroundColor = options.backgroundColor instanceof ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;\n\n const settings: DisplayStyle3dSettingsProps = {\n ...options,\n viewflags,\n backgroundColor,\n };\n\n const displayStyleProps: DisplayStyle3dProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n jsonProperties: { styles: settings },\n isPrivate: false,\n\n };\n\n return new DisplayStyle3d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]\n * @param name The name of the DisplayStyle3d\n * @param options Creation options\n * @returns The Id of the newly inserted DisplayStyle3d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle3d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name, options);\n return displayStyle.insert(txn);\n }\n}\n\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"DisplayStyle.js","sourceRoot":"","sources":["../../src/DisplayStyle.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ViewDefinitions\n */\n\nimport { CompressedId64Set, Id64, Id64Array, Id64String, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport {\n BisCodeSpec, Code, CodeScopeProps, CodeSpec, ColorDef, DisplayStyle3dProps, DisplayStyle3dSettings, DisplayStyle3dSettingsProps,\n DisplayStyleProps, DisplayStyleSettings, DisplayStyleSubCategoryProps, EntityReferenceSet, PlanProjectionSettingsProps, RenderSchedule, SkyBoxImageProps, ViewFlags,\n} from \"@itwin/core-common\";\nimport { DefinitionElement, RenderTimeline } from \"./Element\";\nimport { EditTxn } from \"./EditTxn\";\nimport { IModelDb } from \"./IModelDb\";\nimport { IModelElementCloneContext } from \"./IModelElementCloneContext\";\nimport { DeserializeEntityArgs, ECSqlRow } from \"./Entity\";\nimport { _implicitTxn } from \"./internal/Symbols\";\n\n/** A DisplayStyle defines the parameters for 'styling' the contents of a view.\n * Internally a DisplayStyle consists of a dictionary of several named 'styles' describing specific aspects of the display style as a whole.\n * Many ViewDefinitions may share the same DisplayStyle.\n * @public @preview\n */\nexport abstract class DisplayStyle extends DefinitionElement {\n public static override get className(): string { return \"DisplayStyle\"; }\n public abstract get settings(): DisplayStyleSettings;\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n }\n\n /** @beta */\n public static override deserialize(props: DeserializeEntityArgs): DisplayStyleProps {\n const elProps = super.deserialize(props);\n const displayOptions = props.options?.element?.displayStyle;\n // Uncompress excludedElements if they are compressed\n if (!displayOptions?.compressExcludedElementIds) {\n const styles = elProps.jsonProperties?.styles;\n if (styles && CompressedId64Set.isValid(styles.excludedElements)) {\n styles.excludedElements = CompressedId64Set.decompressArray(styles.excludedElements);\n }\n }\n // Omit Schedule Script Element Ids if the option is set\n if (displayOptions?.omitScheduleScriptElementIds && elProps.jsonProperties?.styles?.scheduleScript) {\n const scheduleScript: RenderSchedule.ScriptProps = elProps.jsonProperties.styles.scheduleScript;\n elProps.jsonProperties.styles.scheduleScript = RenderSchedule.Script.removeScheduleScriptElementIds(scheduleScript);\n }\n return elProps;\n }\n\n /** @beta */\n public static override serialize(props: DisplayStyleProps, iModel: IModelDb): ECSqlRow {\n const inst = super.serialize(props, iModel);\n return inst;\n }\n\n /** Create a Code for a DisplayStyle given a name that is meant to be unique within the scope of the specified DefinitionModel.\n * @param iModel The IModelDb\n * @param scopeModelId The Id of the DefinitionModel that contains the DisplayStyle and provides the scope for its name.\n * @param codeValue The DisplayStyle name\n */\n public static createCode(iModel: IModelDb, scopeModelId: CodeScopeProps, codeValue: string): Code {\n const codeSpec: CodeSpec = iModel.codeSpecs.getByName(BisCodeSpec.displayStyle);\n return new Code({ spec: codeSpec.id, scope: scopeModelId, value: codeValue });\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const [id] of this.settings.subCategoryOverrides) {\n referenceIds.addElement(id);\n }\n\n for (const excludedElementId of this.settings.excludedElementIds)\n referenceIds.addElement(excludedElementId);\n\n if (this.settings.renderTimeline) {\n referenceIds.addElement(this.settings.renderTimeline);\n } else {\n const script = this.loadScheduleScript();\n if (script)\n script.script.discloseIds(referenceIds);\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyleProps, targetElementProps: DisplayStyleProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n\n if (!context.isBetweenIModels || !targetElementProps.jsonProperties?.styles)\n return;\n\n const settings = targetElementProps.jsonProperties.styles;\n if (settings.subCategoryOvr) {\n const targetOverrides: DisplayStyleSubCategoryProps[] = [];\n for (const ovr of settings.subCategoryOvr) {\n ovr.subCategory;\n const targetSubCategoryId = context.findTargetElementId(Id64.fromJSON(ovr.subCategory));\n if (Id64.isValid(targetSubCategoryId))\n targetOverrides.push({ ...ovr, subCategory: targetSubCategoryId });\n }\n settings.subCategoryOvr = targetOverrides;\n }\n\n if (settings.excludedElements) {\n const excluded: Id64Array = \"string\" === typeof settings.excludedElements ? CompressedId64Set.decompressArray(settings.excludedElements) : settings.excludedElements;\n const excludedTargetElements: Id64Array = [];\n for (const excludedElement of excluded) {\n const remapped = context.findTargetElementId(excludedElement);\n if (Id64.isValid(remapped))\n excludedTargetElements.push(remapped);\n }\n\n if (0 === excludedTargetElements.length)\n delete settings.excludedElements;\n else\n settings.excludedElements = CompressedId64Set.compressIds(OrderedId64Iterable.sortArray(excludedTargetElements));\n }\n\n if (settings.renderTimeline) {\n const renderTimeline = context.findTargetElementId(settings.renderTimeline);\n if (Id64.isValid(renderTimeline))\n settings.renderTimeline = renderTimeline;\n else\n delete settings.renderTimeline;\n } else if (settings.scheduleScript) {\n const scheduleScript = RenderTimeline.remapScript(context, settings.scheduleScript);\n if (scheduleScript.length > 0)\n settings.scheduleScript = scheduleScript;\n else\n delete settings.scheduleScript;\n }\n }\n\n public loadScheduleScript(): RenderSchedule.ScriptReference | undefined {\n let script;\n let sourceId;\n if (this.settings.renderTimeline) {\n const timeline = this.iModel.elements.tryGetElement<RenderTimeline>(this.settings.renderTimeline);\n if (timeline) {\n script = RenderSchedule.Script.fromJSON(timeline.scriptProps);\n sourceId = timeline.id;\n }\n } else if (this.settings.scheduleScriptProps) {\n script = RenderSchedule.Script.fromJSON(this.settings.scheduleScriptProps);\n sourceId = this.id;\n }\n\n return undefined !== sourceId && undefined !== script ? new RenderSchedule.ScriptReference(sourceId, script) : undefined;\n }\n}\n\n/** A DisplayStyle for 2d views.\n * @public @preview\n */\nexport class DisplayStyle2d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle2d\"; }\n private readonly _settings: DisplayStyleSettings;\n\n public get settings(): DisplayStyleSettings { return this._settings; }\n\n protected constructor(props: DisplayStyleProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyleSettings(this.jsonProperties);\n }\n /** Create a DisplayStyle2d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle2d\n * @returns The newly constructed DisplayStyle2d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string): DisplayStyle2d {\n const displayStyleProps: DisplayStyleProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n isPrivate: false,\n jsonProperties: {\n styles: {\n backgroundColor: 0,\n monochromeColor: ColorDef.white.toJSON(),\n viewflags: ViewFlags.defaults,\n },\n },\n };\n return new DisplayStyle2d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle2d into this DefinitionModel\n * @param name The name of the DisplayStyle2d\n * @returns The Id of the newly inserted DisplayStyle2d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string): Id64String;\n /**\n * Insert a DisplayStyle2d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle2d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name);\n return displayStyle.insert(txn);\n }\n}\n\n/** Describes initial settings for a new [[DisplayStyle3d]].\n * Most properties are inherited from [DisplayStyle3dSettingsProps]($common), but for backwards compatibility reasons, this interface is slightly awkward:\n * - It adds a `viewFlags` member that differs only in case and type from [DisplayStyleSettingsProps.viewflags]($common); and\n * - It extends the type of [DisplayStyleSettingsProps.backgroundColor]($common) to include [ColorDef]($common).\n * These idiosyncrasies will be addressed in a future version of core-backend.\n * @see [[DisplayStyle3d.create]].\n * @public @preview\n */\nexport interface DisplayStyleCreationOptions extends Omit<DisplayStyle3dSettingsProps, \"backgroundColor\" | \"scheduleScript\"> {\n /** If supplied, the [ViewFlags]($common) applied by the display style.\n * If undefined, [DisplayStyle3dSettingsProps.viewflags]($common) will be used if present (note the difference in case); otherwise, default-constructed [ViewFlags]($common) will be used.\n */\n viewFlags?: ViewFlags;\n backgroundColor?: ColorDef | number;\n}\n\n/** A DisplayStyle for 3d views.\n * See [how to create a DisplayStyle3d]($docs/learning/backend/CreateElements.md#DisplayStyle3d).\n * @public @preview\n */\nexport class DisplayStyle3d extends DisplayStyle {\n public static override get className(): string { return \"DisplayStyle3d\"; }\n private readonly _settings: DisplayStyle3dSettings;\n\n public get settings(): DisplayStyle3dSettings { return this._settings; }\n\n protected constructor(props: DisplayStyle3dProps, iModel: IModelDb) {\n super(props, iModel);\n this._settings = new DisplayStyle3dSettings(this.jsonProperties);\n }\n\n protected override collectReferenceIds(referenceIds: EntityReferenceSet): void {\n super.collectReferenceIds(referenceIds);\n for (const textureId of this.settings.environment.sky.textureIds)\n referenceIds.addElement(textureId);\n\n if (this.settings.planProjectionSettings)\n for (const planProjectionSetting of this.settings.planProjectionSettings)\n referenceIds.addElement(planProjectionSetting[0]);\n\n const groups = this.settings.contours.groups;\n for (const group of groups) {\n const subCategories = group.subCategories;\n for (const subCategoryId of subCategories) {\n referenceIds.addElement(subCategoryId);\n }\n }\n }\n\n /** @alpha */\n protected static override async onCloned(context: IModelElementCloneContext, sourceElementProps: DisplayStyle3dProps, targetElementProps: DisplayStyle3dProps): Promise<void> {\n await super.onCloned(context, sourceElementProps, targetElementProps);\n if (context.isBetweenIModels) {\n const convertTexture = (id: string) => Id64.isValidId64(id) ? context.findTargetElementId(id) : id;\n\n const skyBoxImageProps: SkyBoxImageProps | undefined = targetElementProps?.jsonProperties?.styles?.environment?.sky?.image;\n if (skyBoxImageProps?.texture && Id64.isValidId64(skyBoxImageProps.texture))\n skyBoxImageProps.texture = convertTexture(skyBoxImageProps.texture);\n\n if (skyBoxImageProps?.textures) {\n skyBoxImageProps.textures.front = convertTexture(skyBoxImageProps.textures.front);\n skyBoxImageProps.textures.back = convertTexture(skyBoxImageProps.textures.back);\n skyBoxImageProps.textures.left = convertTexture(skyBoxImageProps.textures.left);\n skyBoxImageProps.textures.right = convertTexture(skyBoxImageProps.textures.right);\n skyBoxImageProps.textures.top = convertTexture(skyBoxImageProps.textures.top);\n skyBoxImageProps.textures.bottom = convertTexture(skyBoxImageProps.textures.bottom);\n }\n\n if (targetElementProps?.jsonProperties?.styles?.planProjections) {\n const remappedPlanProjections: { [modelId: string]: PlanProjectionSettingsProps } = {};\n for (const entry of Object.entries(targetElementProps.jsonProperties.styles.planProjections)) {\n const remappedModelId: Id64String = context.findTargetElementId(entry[0]);\n if (Id64.isValidId64(remappedModelId)) {\n remappedPlanProjections[remappedModelId] = entry[1];\n }\n }\n targetElementProps.jsonProperties.styles.planProjections = remappedPlanProjections;\n }\n\n const groups = targetElementProps?.jsonProperties?.styles?.contours?.groups;\n if (groups) {\n for (const group of groups) {\n if (group.subCategories) {\n const subCategories = CompressedId64Set.decompressArray(group.subCategories);\n const remappedSubCategories: Id64String[] = [];\n for (const subCategoryId of subCategories) {\n const remappedSubCategoryId: Id64String = context.findTargetElementId(subCategoryId);\n if (Id64.isValidId64(remappedSubCategoryId)) {\n remappedSubCategories.push(remappedSubCategoryId);\n }\n }\n group.subCategories = CompressedId64Set.sortAndCompress(remappedSubCategories);\n }\n }\n }\n }\n }\n\n /** Create a DisplayStyle3d for use by a ViewDefinition.\n * @param iModelDb The iModel\n * @param definitionModelId The [[DefinitionModel]]\n * @param name The name/CodeValue of the DisplayStyle3d\n * @returns The newly constructed DisplayStyle3d element.\n * @throws [[IModelError]] if unable to create the element.\n */\n public static create(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): DisplayStyle3d {\n options = options ?? {};\n let viewflags = options.viewFlags?.toJSON();\n if (!viewflags)\n viewflags = options.viewflags ?? new ViewFlags().toJSON();\n\n const backgroundColor = options.backgroundColor instanceof ColorDef ? options.backgroundColor.toJSON() : options.backgroundColor;\n\n const settings: DisplayStyle3dSettingsProps = {\n ...options,\n viewflags,\n backgroundColor,\n };\n\n const displayStyleProps: DisplayStyle3dProps = {\n classFullName: this.classFullName,\n code: this.createCode(iModelDb, definitionModelId, name),\n model: definitionModelId,\n jsonProperties: { styles: settings },\n isPrivate: false,\n\n };\n\n return new DisplayStyle3d(displayStyleProps, iModelDb);\n }\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @param txn The EditTxn to use\n * @param definitionModelId Insert the new DisplayStyle3d into this [[DefinitionModel]]\n * @param name The name of the DisplayStyle3d\n * @param options Creation options\n * @returns The Id of the newly inserted DisplayStyle3d element.\n * @throws [[IModelError]] if unable to insert the element.\n * @beta\n */\n public static insert(txn: EditTxn, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n /**\n * Insert a DisplayStyle3d for use by a ViewDefinition.\n * @deprecated in 5.9.0 - will not be removed until after 2026-08-04. Use DisplayStyle3d.insert(txn, ...) instead.\n */\n public static insert(iModelDb: IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String;\n public static insert(txnOrDb: EditTxn | IModelDb, definitionModelId: Id64String, name: string, options?: DisplayStyleCreationOptions): Id64String {\n const txn = txnOrDb instanceof EditTxn ? txnOrDb : txnOrDb[_implicitTxn];\n const displayStyle = this.create(txn.iModel, definitionModelId, name, options);\n return displayStyle.insert(txn);\n }\n}\n\n\n\n"]}
|
|
@@ -11,6 +11,12 @@ export interface GcsDbProps extends WorkspaceDbCloudProps {
|
|
|
11
11
|
/**
|
|
12
12
|
* Internal class to configure and load the gcs workspaces for an iModel.
|
|
13
13
|
* @internal
|
|
14
|
+
* @note GCS workspaces are loaded by default (the `disableWorkspaces` setting defaults to `false`). To
|
|
15
|
+
* suppress loading them from cloud containers and the network requests they issue when iModels are
|
|
16
|
+
* opened — override the `disableWorkspaces` setting (e.g. via [Settings.addDictionary]($backend)
|
|
17
|
+
* at [SettingsPriority.application]($backend)), which is useful for unit tests and other offline
|
|
18
|
+
* scenarios that don't require GCS data. GCS workspaces load lazily on first iModel open, so applying
|
|
19
|
+
* the override any time after `IModelHost.startup` is sufficient.
|
|
14
20
|
*/
|
|
15
21
|
export declare class GeoCoordConfig {
|
|
16
22
|
/** array of cloud prefetch tasks that may be awaited to permit offline usage */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoCoordConfig.d.ts","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,gBAAgB;AAChB,MAAM,WAAW,UAAW,SAAQ,qBAAqB;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD
|
|
1
|
+
{"version":3,"file":"GeoCoordConfig.d.ts","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAK9D,gBAAgB;AAChB,MAAM,WAAW,UAAW,SAAQ,qBAAqB;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,gFAAgF;IAChF,gBAAuB,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE,CAAM;IACpE,gBAAuB,WAAW;;;;MAIhC;IAEF,OAAO,CAAC,MAAM,CAAC,eAAe;IAkC9B,OAAO,CAAC,MAAM,CAAC,OAAO;IAStB,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;WAC3B,SAAS;WAKT,oBAAoB,IAAI,IAAI;WAO5B,aAAa,CAAC,QAAQ,EAAE,QAAQ;CAI/C"}
|
|
@@ -14,6 +14,12 @@ const makeSettingName = (name) => `${"itwin/core/gcs"}/${name}`;
|
|
|
14
14
|
/**
|
|
15
15
|
* Internal class to configure and load the gcs workspaces for an iModel.
|
|
16
16
|
* @internal
|
|
17
|
+
* @note GCS workspaces are loaded by default (the `disableWorkspaces` setting defaults to `false`). To
|
|
18
|
+
* suppress loading them from cloud containers and the network requests they issue when iModels are
|
|
19
|
+
* opened — override the `disableWorkspaces` setting (e.g. via [Settings.addDictionary]($backend)
|
|
20
|
+
* at [SettingsPriority.application]($backend)), which is useful for unit tests and other offline
|
|
21
|
+
* scenarios that don't require GCS data. GCS workspaces load lazily on first iModel open, so applying
|
|
22
|
+
* the override any time after `IModelHost.startup` is sufficient.
|
|
17
23
|
*/
|
|
18
24
|
export class GeoCoordConfig {
|
|
19
25
|
/** array of cloud prefetch tasks that may be awaited to permit offline usage */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeoCoordConfig.js","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,MAAM,SAAS,GAAG,UAAU,CAAC;AAM7B,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,gBAAgB,IAAI,IAAI,EAAE,CAAC;AAExE
|
|
1
|
+
{"version":3,"file":"GeoCoordConfig.js","sourceRoot":"","sources":["../../src/GeoCoordConfig.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module iModels\n */\n\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\nimport { CloudSqlite } from \"./CloudSqlite\";\nimport { IModelHost } from \"./IModelHost\";\nimport { Settings } from \"./workspace/Settings\";\nimport { WorkspaceDbCloudProps } from \"./workspace/Workspace\";\nimport { IModelNative } from \"./internal/NativePlatform\";\n\nconst loggerCat = \"GeoCoord\";\n\n/** @internal */\nexport interface GcsDbProps extends WorkspaceDbCloudProps {\n priority?: number;\n}\nconst makeSettingName = (name: string) => `${\"itwin/core/gcs\"}/${name}`;\n\n/**\n * Internal class to configure and load the gcs workspaces for an iModel.\n * @internal\n * @note GCS workspaces are loaded by default (the `disableWorkspaces` setting defaults to `false`). To\n * suppress loading them from cloud containers and the network requests they issue when iModels are\n * opened — override the `disableWorkspaces` setting (e.g. via [Settings.addDictionary]($backend)\n * at [SettingsPriority.application]($backend)), which is useful for unit tests and other offline\n * scenarios that don't require GCS data. GCS workspaces load lazily on first iModel open, so applying\n * the override any time after `IModelHost.startup` is sufficient.\n */\nexport class GeoCoordConfig {\n /** array of cloud prefetch tasks that may be awaited to permit offline usage */\n public static readonly prefetches: CloudSqlite.CloudPrefetch[] = [];\n public static readonly settingName = {\n databases: makeSettingName(\"databases\"),\n defaultDatabases: makeSettingName(\"default/databases\"),\n disableWorkspaces: makeSettingName(\"disableWorkspaces\"),\n };\n\n private static addGcsWorkspace(dbProps: GcsDbProps) {\n // override to disable loading GCS data from workspaces\n if (IModelHost.appWorkspace.settings.getBoolean(GeoCoordConfig.settingName.disableWorkspaces, false))\n return;\n\n try {\n const ws = IModelHost.appWorkspace;\n const container = ws.getContainer({ ...dbProps, accessToken: \"\" }); // all gcs containers are public so no accessToken is required\n const cloudContainer = container.cloudContainer;\n if (!cloudContainer?.isConnected) {\n Logger.logError(\"GeoCoord\", `could not load gcs database \"${dbProps.dbName}\"`);\n return;\n }\n\n const gcsDbName = container.resolveDbFileName(dbProps);\n const gcsDbProps = cloudContainer.queryDatabase(gcsDbName);\n if (undefined === gcsDbProps)\n throw new Error(`database \"${gcsDbName}\" not found in container \"${dbProps.containerId}\"`);\n\n if (!IModelNative.platform.addGcsWorkspaceDb(gcsDbName, cloudContainer, dbProps.priority))\n return; // already had this db\n\n Logger.logInfo(loggerCat, `loaded gcsDb \"${gcsDbName}\", from \"${dbProps.baseUri}/${dbProps.containerId}\" size=${gcsDbProps.totalBlocks}, local=${gcsDbProps.localBlocks}`);\n\n if (true === dbProps.prefetch)\n this.prefetches.push(CloudSqlite.startCloudPrefetch(cloudContainer, gcsDbName));\n\n } catch (e: any) {\n let msg = `Cannot load GCS workspace (${e.errorNumber}): ${BentleyError.getErrorMessage(e)}`;\n msg += `,container=${dbProps.baseUri}/${dbProps.containerId}, storage=${dbProps.storageType}, public=${dbProps.isPublic}, cacheDir=${IModelHost.cacheDir}`;\n Logger.logError(loggerCat, msg);\n }\n }\n\n private static loadAll(settings: Settings, settingName: string) {\n const dbProps = settings.getArray<GcsDbProps>(settingName);\n if (dbProps) {\n for (const entry of dbProps) {\n this.addGcsWorkspace(entry);\n }\n }\n }\n\n private static _defaultDbsLoaded = false;\n public static onStartup() {\n this._defaultDbsLoaded = false;\n this.prefetches.length = 0;\n }\n\n public static loadDefaultDatabases(): void {\n if (!this._defaultDbsLoaded) {\n this._defaultDbsLoaded = true;\n this.loadAll(IModelHost.appWorkspace.settings, this.settingName.defaultDatabases);\n }\n }\n\n public static loadForImodel(settings: Settings) {\n this.loadDefaultDatabases();\n this.loadAll(settings, this.settingName.databases);\n }\n}\n"]}
|
|
@@ -22,14 +22,29 @@ export declare class DisableNativeAssertions implements Disposable {
|
|
|
22
22
|
export declare class TestUtils {
|
|
23
23
|
private static shouldLogToConsole;
|
|
24
24
|
static getCacheDir(fallback?: string | undefined): string | undefined;
|
|
25
|
-
/** Handles the startup of IModelHost.
|
|
25
|
+
/** Handles the startup of IModelHost for unit tests.
|
|
26
26
|
* The provided config is used and will override any of the default values used in this method.
|
|
27
27
|
*
|
|
28
28
|
* The default includes:
|
|
29
29
|
* - cacheDir = path.join(__dirname, ".cache")
|
|
30
30
|
* - allowSharedChannel = false;
|
|
31
|
+
*
|
|
32
|
+
* GCS (Geographic Coordinate System) workspace loading is disabled by default, since unit tests
|
|
33
|
+
* should not make network requests. Pass `loadGcsWorkspaces: true` for the rare test that genuinely
|
|
34
|
+
* needs GCS data (which then belongs in the integration suite). This flag is test-only and is not
|
|
35
|
+
* forwarded to `IModelHost.startup`.
|
|
36
|
+
*/
|
|
37
|
+
static startBackend(config?: IModelHostOptions & {
|
|
38
|
+
loadGcsWorkspaces?: boolean;
|
|
39
|
+
}): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Suppress loading of Geographic Coordinate System (GCS) workspaces from cloud containers (and the
|
|
42
|
+
* network requests they issue when iModels are opened) by overriding the existing GeoCoordConfig
|
|
43
|
+
* setting. Unit tests should not make network calls; tests that genuinely require GCS data belong
|
|
44
|
+
* in the integration suite. GCS workspaces load lazily on first iModel open, so overriding the
|
|
45
|
+
* setting any time after `IModelHost.startup` is sufficient.
|
|
31
46
|
*/
|
|
32
|
-
static
|
|
47
|
+
static disableGcsWorkspaces(): void;
|
|
33
48
|
static shutdownBackend(): Promise<void>;
|
|
34
49
|
static setupLogging(): void;
|
|
35
50
|
private static initDebugLogLevels;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"AASA,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"TestUtils.d.ts","sourceRoot":"","sources":["../../../src/test/TestUtils.ts"],"names":[],"mappings":"AASA,OAAO,EAAc,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAK9D,mCAAmC;AACnC,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAO;gBACT,KAAK,EAAE,MAAM;IAKlB,GAAG;CAMX;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,OAAO,CAAqD;;IAM7D,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;IAQ/B,qGAAqG;IAC9F,OAAO,IAAI,IAAI;CAGvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAInB,WAAW,CAAC,QAAQ,GAAE,MAAM,GAAG,SAAqB;IAOlE;;;;;;;;;;;OAWG;WACiB,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7G;;;;;;OAMG;WACW,oBAAoB,IAAI,IAAI;WAOtB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;WAItC,YAAY;IAQ1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAUnB,mBAAmB;WAInB,mBAAmB;CAGlC"}
|
|
@@ -8,6 +8,8 @@ import { BentleyLoggerCategory, Logger, LogLevel, ProcessDetector } from "@itwin
|
|
|
8
8
|
import { BackendLoggerCategory } from "../BackendLoggerCategory";
|
|
9
9
|
import { IModelHost } from "../IModelHost";
|
|
10
10
|
import { IModelNative } from "../internal/NativePlatform";
|
|
11
|
+
import { GeoCoordConfig } from "../GeoCoordConfig";
|
|
12
|
+
import { SettingsPriority } from "../workspace/Settings";
|
|
11
13
|
/** Class for simple test timing */
|
|
12
14
|
export class Timer {
|
|
13
15
|
_label;
|
|
@@ -55,19 +57,36 @@ export class TestUtils {
|
|
|
55
57
|
}
|
|
56
58
|
return fallback ?? path.join(__dirname, ".cache"); // Set the cache dir to be under the lib directory.
|
|
57
59
|
}
|
|
58
|
-
/** Handles the startup of IModelHost.
|
|
60
|
+
/** Handles the startup of IModelHost for unit tests.
|
|
59
61
|
* The provided config is used and will override any of the default values used in this method.
|
|
60
62
|
*
|
|
61
63
|
* The default includes:
|
|
62
64
|
* - cacheDir = path.join(__dirname, ".cache")
|
|
63
65
|
* - allowSharedChannel = false;
|
|
66
|
+
*
|
|
67
|
+
* GCS (Geographic Coordinate System) workspace loading is disabled by default, since unit tests
|
|
68
|
+
* should not make network requests. Pass `loadGcsWorkspaces: true` for the rare test that genuinely
|
|
69
|
+
* needs GCS data (which then belongs in the integration suite). This flag is test-only and is not
|
|
70
|
+
* forwarded to `IModelHost.startup`.
|
|
64
71
|
*/
|
|
65
72
|
static async startBackend(config) {
|
|
66
|
-
const cfg = config ?? {};
|
|
73
|
+
const { loadGcsWorkspaces, ...cfg } = config ?? {};
|
|
67
74
|
cfg.cacheDir = TestUtils.getCacheDir(cfg.cacheDir);
|
|
68
75
|
cfg.allowSharedChannel ??= false; // Override default to test shared channel enforcement. Remove in version 5.0.
|
|
69
76
|
cfg.implicitWriteEnforcement ??= "throw";
|
|
70
77
|
await IModelHost.startup(cfg);
|
|
78
|
+
if (!loadGcsWorkspaces)
|
|
79
|
+
TestUtils.disableGcsWorkspaces();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Suppress loading of Geographic Coordinate System (GCS) workspaces from cloud containers (and the
|
|
83
|
+
* network requests they issue when iModels are opened) by overriding the existing GeoCoordConfig
|
|
84
|
+
* setting. Unit tests should not make network calls; tests that genuinely require GCS data belong
|
|
85
|
+
* in the integration suite. GCS workspaces load lazily on first iModel open, so overriding the
|
|
86
|
+
* setting any time after `IModelHost.startup` is sufficient.
|
|
87
|
+
*/
|
|
88
|
+
static disableGcsWorkspaces() {
|
|
89
|
+
IModelHost.appWorkspace.settings.addDictionary({ name: "test-gcs-disable-override", priority: SettingsPriority.application }, { [GeoCoordConfig.settingName.disableWorkspaces]: true });
|
|
71
90
|
}
|
|
72
91
|
static async shutdownBackend() {
|
|
73
92
|
return IModelHost.shutdown();
|