diff --git a/docs/changehistory/1.10.0.md b/docs/changehistory/1.10.0.md index 97e3a10e3ba6..60449aa77de8 100644 --- a/docs/changehistory/1.10.0.md +++ b/docs/changehistory/1.10.0.md @@ -13,7 +13,7 @@ iModel.js will now perform smooth animations when changing between saved views, ## IModel Transformation and Data Exchange [IModelExporter](https://www.imodeljs.org/v1/reference/imodeljs-transformer/imodels/imodelexporter), [IModelTransformer](https://www.imodeljs.org/v1/reference/imodeljs-transformer/imodels/imodeltransformer), and [IModelImporter](https://www.imodeljs.org/v1/reference/imodeljs-transformer/imodels/imodelimporter) are now beta and provide low-level functionality needed for iModel transformation and data exchange. -See the [iModel Transformation and Data Exchange]($docs/learning/transformer/index.md) article for more information. +See the [iModel Transformation and Data Exchange](../learning/transformer/index.md) article for more information. ## High-DPI display support diff --git a/docs/changehistory/1.5.0.md b/docs/changehistory/1.5.0.md index b07759e3040f..fc7952c192dd 100644 --- a/docs/changehistory/1.5.0.md +++ b/docs/changehistory/1.5.0.md @@ -18,7 +18,7 @@ version: '1.5.0' ## Blank IModelConnections - The new method `IModelConnection.createBlank` provides a way for applications to create an `IModelConnection` that is not connected to an iModel or a backend. This is useful for using iModel.js to show *just* Reality data (reality meshes, point clouds, terrain, etc.), background maps, and other non-iModel-based graphics without requiring a backend server. -- There is also a new convenience method [SpatialViewState.createBlank](https://www.imodeljs.org/v1/reference/imodeljs-frontend/imodelconnection/imodelconnection/#createblank) to create a *blank* spatial view appropriate for these non-iModel based visualizations. See the [Blank Connection]($docs/learning/frontend/BlankConnection.md) learning article for further details. +- There is also a new convenience method [SpatialViewState.createBlank](https://www.imodeljs.org/v1/reference/imodeljs-frontend/imodelconnection/imodelconnection/#createblank) to create a *blank* spatial view appropriate for these non-iModel based visualizations. See the [Blank Connection](../learning/frontend/BlankConnection.md) learning article for further details. ## Favorite Properties diff --git a/docs/changehistory/1.8.0.md b/docs/changehistory/1.8.0.md index 8fc2212d6369..cfd9873ba00e 100644 --- a/docs/changehistory/1.8.0.md +++ b/docs/changehistory/1.8.0.md @@ -16,7 +16,7 @@ When the cursor moves over the icon, a set of *Logo Cards* with notices and logo If the user clicks or taps on the iModel.js icon, a modal dialog opens showing the logo cards. -See [Logo Cards]($docs/learning/frontend/LogoCards.md) for more information. +See [Logo Cards](../learning/frontend/LogoCards.md) for more information. ## View-independent Geometry diff --git a/docs/changehistory/2.11.0.md b/docs/changehistory/2.11.0.md index 2645499506aa..9b2558023b6a 100644 --- a/docs/changehistory/2.11.0.md +++ b/docs/changehistory/2.11.0.md @@ -198,7 +198,7 @@ Note that [DisplayStyleSettings.addExcludedElements]($common) and [DisplayStyleS In previous versions the method to open briefcases ([BriefcaseDb.open]($backend)) and standalone files (`StandaloneDb.open` renamed to `StandaloneDb.openFile`) provided options to upgrade the schemas in the iModel. This functionality has been now separated out, and there are separate methods to validate and upgrade the schemas in the iModel. As a result [OpenBriefcaseProps]($common) and [SnapshotOpenOptions]($common) do not include options to upgrade anymore. -See section on [Upgrading Schemas]($docs/learning/backend/IModelDb.md#upgrading-schemas-in-an-imodel) for more information. +See section on [Upgrading Schemas](../learning/backend/IModelDb.md#upgrading-schemas-in-an-imodel) for more information. ## Filtering in Property Grid @@ -296,7 +296,7 @@ A property value renderer for instance key values has been added, which allows u ### Breaking changes to `ContentRelatedInstances` -Behavior of `ContentRelatedInstances` specification used in content rules was changed. It used to include input instances into the result if all paths in `relationshipPaths` property had `count: "*"` and target class matched input instance class. The behavior was changed to match cases where steps `relationshipPaths` have `count` set to specific number - the result only includes instances resulting from step outputs. See [RelationshipPathSpecification documentation]($docs/presentation/RelationshipPathSpecification.md) for more details and examples. +Behavior of `ContentRelatedInstances` specification used in content rules was changed. It used to include input instances into the result if all paths in `relationshipPaths` property had `count: "*"` and target class matched input instance class. The behavior was changed to match cases where steps `relationshipPaths` have `count` set to specific number - the result only includes instances resulting from step outputs. See [RelationshipPathSpecification documentation](../presentation/RelationshipPathSpecification.md) for more details and examples. Example: diff --git a/docs/changehistory/2.12.0.md b/docs/changehistory/2.12.0.md index 5d77f9ccea6a..f1cfe15d41f0 100644 --- a/docs/changehistory/2.12.0.md +++ b/docs/changehistory/2.12.0.md @@ -17,7 +17,7 @@ Updated recommended version of Electron from 10.1.3 to 11.1.0. Note that Electro ## IpcSocket for use with dedicated backends -For cases where a frontend and backend are explicitly paired (e.g. desktop and mobile apps), a more direct communication path is now supported via the [IpcSocket api]($docs/learning/IpcInterface.md). See the [Rpc vs Ipc learning article]($docs/learning/RpcVsIpc.md) for more details. +For cases where a frontend and backend are explicitly paired (e.g. desktop and mobile apps), a more direct communication path is now supported via the [IpcSocket api](../learning/IpcInterface.md). See the [Rpc vs Ipc learning article](../learning/RpcVsIpc.md) for more details. ## External textures diff --git a/docs/changehistory/2.13.0.md b/docs/changehistory/2.13.0.md index 3452af4cd5a2..ebdddcb22b05 100644 --- a/docs/changehistory/2.13.0.md +++ b/docs/changehistory/2.13.0.md @@ -170,8 +170,8 @@ Presentation.initialize({ ### Accessing selection in instance filter of content specifications Added a way to create and filter content that's related to given input through some ID type of property that is not part of a relationship. That can be done by -using [ContentInstancesOfSpecificClasses specification]($docs/presentation/content/ContentInstancesOfSpecificClasses.md) with an instance filter that makes use -of the newly added [SelectedInstanceKeys]($docs/presentation/content/ECExpressions.md#instance=filter) ECExpression symbol. Example: +using [ContentInstancesOfSpecificClasses specification](../presentation/content/ContentInstancesOfSpecificClasses.md) with an instance filter that makes use +of the newly added [SelectedInstanceKeys](../presentation/content/ECExpressions.md#instance=filter) ECExpression symbol. Example: ```json { @@ -198,7 +198,7 @@ Previously this was not possible, because there is no ECRelationship between `EC ### ECInstance ECExpression context method enhancements -Added lambda versions for [ECInstance ECExpression context]($docs/presentation/Advanced/ECExpressions.md#ecinstance) methods: `GetRelatedInstancesCount`, +Added lambda versions for [ECInstance ECExpression context](../presentation/Advanced/ECExpressions.md#ecinstance) methods: `GetRelatedInstancesCount`, `HasRelatedInstance`, `GetRelatedValue`. This allows using those methods without the need of an ECRelationship between "current" ECInstance and related ECInstance. Example: @@ -221,4 +221,3 @@ and related ECInstance. Example: ``` The above example returns `ECDbMeta:ECClassDef` instances only if there are `BisCore:Elements` of those classes. - diff --git a/docs/changehistory/2.15.0.md b/docs/changehistory/2.15.0.md index 2fab8c160bf3..455d6dbd2344 100644 --- a/docs/changehistory/2.15.0.md +++ b/docs/changehistory/2.15.0.md @@ -23,7 +23,7 @@ Clip volumes now nest. For example, if you define a view clip, a model clip grou ## Txn monitoring -[TxnManager]($backend) now has additional events for monitoring changes to the iModel resulting from [Txns]($docs/learning/InteractiveEditing.md), including: +[TxnManager]($backend) now has additional events for monitoring changes to the iModel resulting from [Txns](../learning/InteractiveEditing.md), including: - [TxnManager.onModelsChanged]($backend) for changes to the properties of [Model]($backend)s and - [TxnManager.onModelGeometryChanged]($backend) for changes to the geometry contained within [GeometricModel]($backend)s. diff --git a/docs/changehistory/2.16.0.md b/docs/changehistory/2.16.0.md index 3062025ff790..5f2e66576060 100644 --- a/docs/changehistory/2.16.0.md +++ b/docs/changehistory/2.16.0.md @@ -100,15 +100,15 @@ instance. The related instance, possibly being a of a different ECClass, might h ### Custom category renderers -[VirtualizedPropertyGrid]($components-react) now allows developers to fully customize displayed category contents, if the category is assigned a custom renderer via Presentation Rules. You can read more about that in our [Category customization learning page]($docs/presentation/Customization/PropertyCategoryRenderers.md). +[VirtualizedPropertyGrid]($components-react) now allows developers to fully customize displayed category contents, if the category is assigned a custom renderer via Presentation Rules. You can read more about that in our [Category customization learning page](../presentation/Customization/PropertyCategoryRenderers.md). ### Custom category nesting -A new `parentId` attribute was added to [PropertyCategorySpecification]($presentation-common) to provide nesting abilities. See more details in our [property categorization page]($docs/presentation/Content/PropertyCategorization.md#category-nesting). +A new `parentId` attribute was added to [PropertyCategorySpecification]($presentation-common) to provide nesting abilities. See more details in our [property categorization page](../presentation/Content/PropertyCategorization.md#category-nesting). ### Presentation rule schema requirements -A new `requiredSchemas` attribute was added to [Ruleset]($presentation-common), [Rule]($presentation-common) and [SubCondition]($presentation-common) definitions. The attribute allows specifying ECSchema requirements for rules and avoid using them when requirements are not met. See the [schema requirements page]($docs/presentation/Advanced/SchemaRequirements.md) for more details. +A new `requiredSchemas` attribute was added to [Ruleset]($presentation-common), [Rule]($presentation-common) and [SubCondition]($presentation-common) definitions. The attribute allows specifying ECSchema requirements for rules and avoid using them when requirements are not met. See the [schema requirements page](../presentation/Advanced/SchemaRequirements.md) for more details. ## Promoted APIs diff --git a/docs/changehistory/2.17.0.md b/docs/changehistory/2.17.0.md index beb76461a842..78caa78bf5ac 100644 --- a/docs/changehistory/2.17.0.md +++ b/docs/changehistory/2.17.0.md @@ -30,6 +30,7 @@ Within [IpcApp]($frontend)-based applications, [BriefcaseConnection]($frontend)s ## Reality model APIs Several APIs relating to reality models have been introduced, in some cases replacing previous `beta` APIs. A reality model can be displayed in a [Viewport]($frontend) in one of two ways: + * Adding to the [ViewState]($frontend)'s [ModelSelector]($backend) the Id of a persistent [SpatialModelState]($frontend) containing a URL pointing to a 3d tileset; or * Attaching to the [DisplayStyleState]($frontend) a [ContextRealityModel]($common) with a URL pointing to a 3d tileset. @@ -45,7 +46,7 @@ A reality model displaying simple building meshes for locations all over the wor ## Popout Widgets -IModelApps, that use AppUi version "2", can now specify if a Widget can support being "popped-out" to a child popup window. The child window runs in the same javascript context as the parent application window. See [Child Window Manager]($docs/learning/ui/appui-react/ChildWindows.md) for more details. +IModelApps, that use AppUi version "2", can now specify if a Widget can support being "popped-out" to a child popup window. The child window runs in the same javascript context as the parent application window. See [Child Window Manager](../learning/ui/appui-react/ChildWindows.md) for more details. ## External textures @@ -67,7 +68,7 @@ Disabling this feature is not recommended and will incur a performance penalty. ## ECClass Ids in changed events -The events [TxnManager.onElementsChanged]($backend) and [TxnManager.onModelsChanged]($backend) now include the Id of each changed entity's [ECClass]($docs/bis/intro/glossary/#ecclass). The [OrderedId64Array]($core-bentley) properties of [TxnChangedEntities]($backend) are deprecated in favor of the new [EntityIdAndClassIdIterable]($common) properties. +The events [TxnManager.onElementsChanged]($backend) and [TxnManager.onModelsChanged]($backend) now include the Id of each changed entity's [ECClass](../bis/intro/glossary/#ecclass). The [OrderedId64Array]($core-bentley) properties of [TxnChangedEntities]($backend) are deprecated in favor of the new [EntityIdAndClassIdIterable]($common) properties. ## Presentation @@ -106,6 +107,7 @@ The arguments for the @beta protected static methods called during modifications * [ElementAspect]($backend) `[onInsert, onInserted, onUpdate, onUpdated, onDelete, onDeleted]` In addition, new protected static methods were added: + * [Element]($backend) `[onChildInsert, onChildInserted, onChildUpdate, onChildUpdated, onChildDelete, onChildDeleted, onChildAdd, onChildAdded, onChildDrop, onChildDropped]` ### [@itwin/webgl-compatibility](https://www.itwinjs.org/reference/webgl-compatibility/) @@ -144,4 +146,3 @@ To make it easier to use async APIs while exporting a schema, [IModelExportHandl [IModelTransformer.shouldExportSchema]($transformer) now gets a [SchemaKey]($ecschema-metadata) schema key as argument, instead of a full [Schema]($ecschema-metadata). If you need to check the full schema, return `true` in shouldExportSchema and in [IModelExportHandler.onExportSchema]($transformer), you can use the schema object to check and then return early. - diff --git a/docs/changehistory/3.0.0.md b/docs/changehistory/3.0.0.md index 11bae5549468..b0d87003b50d 100644 --- a/docs/changehistory/3.0.0.md +++ b/docs/changehistory/3.0.0.md @@ -46,7 +46,7 @@ Many of the enhancements introduced in iTwin.js 3.0 were directly motivated by f #### Documentation -A collection of [learning articles]($docs/learning/display/index.md) has been assembled to provide an overview of the features provided by the display system, illustrated by interactive samples. +A collection of [learning articles](../learning/display/index.md) has been assembled to provide an overview of the features provided by the display system, illustrated by interactive samples. #### Viewport.zoomToElements improvements @@ -185,7 +185,7 @@ Improvements were made to the performance of [ParticleCollectionBuilder]($fronte #### Support for glTF graphics -[glTF](https://www.khronos.org/gltf/) has become the de facto standard format for 3d graphics on the web. Now you can create a [RenderGraphic]($frontend) from a glTF asset for use with [Decorators]($docs/learning/frontend/ViewDecorations), using [readGltfGraphics]($frontend). [This example]($docs/learning/frontend/ViewDecorations#gltf-decorations) demonstrates how to convert a glTF asset into a graphic and display it using a decorator. +[glTF](https://www.khronos.org/gltf/) has become the de facto standard format for 3d graphics on the web. Now you can create a [RenderGraphic]($frontend) from a glTF asset for use with [Decorators](../learning/frontend/ViewDecorations), using [readGltfGraphics]($frontend). [This example](../learning/frontend/ViewDecorations#gltf-decorations) demonstrates how to convert a glTF asset into a graphic and display it using a decorator. Note: `readGltfGraphics` targets the [glTF 2.0 specification](https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html), but implementation of the full specification is an ongoing work in progress. The current implementation can successfully read many glTF assets, but if a particular asset fails to load or display properly, please [file an issue](https://github.com/iTwin/itwinjs-core/issues). @@ -218,11 +218,11 @@ Note: `readGltfGraphics` targets the [glTF 2.0 specification](https://www.khrono ##### Schema requirements A new `requiredSchemas` attribute has been added: [Ruleset.requiredSchemas]($presentation-common) and [RuleBase.requiredSchemas]($presentation-common). The attribute allows an easy way to filter presentation rules based on -ECSchemas / domains available in the iModel. See more details in the [Defining ECSchema Requirements for Presentation Rules]($docs/presentation/Advanced/SchemaRequirements) page. +ECSchemas / domains available in the iModel. See more details in the [Defining ECSchema Requirements for Presentation Rules](../presentation/Advanced/SchemaRequirements) page. ##### Conditional root node rules -Similar to [Child Node Rule]($docs/presentation/Hierarchies/ChildNodeRule), the [Root Node Rule]($docs/presentation/Hierarchies/RootNodeRule) now also has a [condition]($docs/presentation/Hierarchies/RootNodeRule#attribute-condition) attribute. The attribute provides more flexibility in enabling or disabling the rule, including the use of [ruleset variables]($docs/presentation/Advanced/RulesetVariables#using-variables-in-rule-condition). +Similar to [Child Node Rule](../presentation/Hierarchies/ChildNodeRule), the [Root Node Rule](../presentation/Hierarchies/RootNodeRule) now also has a [condition](../presentation/Hierarchies/RootNodeRule#attribute-condition) attribute. The attribute provides more flexibility in enabling or disabling the rule, including the use of [ruleset variables](../presentation/Advanced/RulesetVariables#using-variables-in-rule-condition). ##### More precise way to set class polymorphism @@ -503,7 +503,7 @@ requestContext.enter(); you can simply delete it. -This change mostly affects backend code. For backend [RPC]($docs/learning/RpcInterface.md) implementations, all *unhandled* exceptions will automatically be logged along the appropriate RPC metadata. For this reason, it often preferable to throw an exception rather than logging an error and returning a status in code that may or may not be called from RPC. +This change mostly affects backend code. For backend [RPC](../learning/RpcInterface.md) implementations, all _unhandled_ exceptions will automatically be logged along the appropriate RPC metadata. For this reason, it often preferable to throw an exception rather than logging an error and returning a status in code that may or may not be called from RPC. ### iModels @@ -531,7 +531,7 @@ Previously the concurrency "mode" was determined by applications when opening a Locks apply to Elements only. The "schema lock" is acquired by exclusively locking element id 0x1 (the root subject id). Models are locked via their modeled element (which has the same id as the model) -See the [ConcurrencyControl]($docs/learning/backend/ConcurrencyControl.md) learning article for more information and examples. +See the [ConcurrencyControl](../learning/backend/ConcurrencyControl.md) learning article for more information and examples. #### BriefcaseManager, BriefcaseDb, and IModelDb changes @@ -612,7 +612,7 @@ On the frontend the [GeoConverter]($frontend) class has been modified to accept #### BentleyError constructor no longer logs -In V2, the constructor of the base exception class [BentleyError]($core-bentley) accepted 5 arguments, the last 3 being optional. Arguments 3 and 4 were for logging the exception in the constructor itself. That is a bad idea, since exceptions are often handled and recovered in `catch` statements, so there is no actual "problem" to report. In that case the message in the log is either misleading or just plain wrong. Also, code in `catch` statements always has more "context" about *why* the error may have happened than the lower level code that threw (e.g. "invalid Id" vs. "invalid MyHashClass Id") so log messages from callers can be more helpful than from callees. Since every thrown exception must be caught *somewhere*, logging should be done when exceptions are caught, not when they're thrown. +In V2, the constructor of the base exception class [BentleyError]($core-bentley) accepted 5 arguments, the last 3 being optional. Arguments 3 and 4 were for logging the exception in the constructor itself. That is a bad idea, since exceptions are often handled and recovered in `catch` statements, so there is no actual "problem" to report. In that case the message in the log is either misleading or just plain wrong. Also, code in `catch` statements always has more "context" about _why_ the error may have happened than the lower level code that threw (e.g. "invalid Id" vs. "invalid MyHashClass Id") so log messages from callers can be more helpful than from callees. Since every thrown exception must be caught _somewhere_, logging should be done when exceptions are caught, not when they're thrown. The [BentleyError]($core-bentley) constructor now accepts 3 arguments, the last argument (`metaData`) is optional. The previous `log` and `category` arguments were removed. If your code passed 5 arguments, remove the 3rd and 4th. If you previously passed 3 or 4 arguments, just leave the first two. Also, the previous version of the constructor required the metaData argument to be a function that returns an object. It may now also just be an object. @@ -1628,8 +1628,8 @@ A number of packages have been renamed to use the @itwin scope rather than the @ | `IModelApp.settings` | [IModelApp.userPreferences]($frontend) | | `IModelConnection.Models.loaded` | use `for..of` to iterate and `getLoaded` to look up by Id | | `IModelConnection.Views.saveThumbnail` | use IPC and `IModelDb.saveThumbnail` | -| `IOidcFrontendClient` | *eliminated* | -| `isIOidcFrontendClient` | *eliminated* | +| `IOidcFrontendClient` | _eliminated_ | +| `isIOidcFrontendClient` | _eliminated_ | | `OidcBrowserClient` | `BrowserAuthorizationClient` in `@itwin/browser-authorization` | | `OidcFrontendClientConfiguration` | `BrowserAuthorizationClientConfiguration` in `@itwin/browser-authorization` | | `QuantityFormatter.onActiveUnitSystemChanged` | [QuantityFormatter.onActiveFormattingUnitSystemChanged]($frontend) | @@ -1644,7 +1644,7 @@ A number of packages have been renamed to use the @itwin scope rather than the @ | `Viewport.featureOverrideProvider` | [Viewport.featureOverrideProviders]($frontend) | | `Viewport.setFlashed` | [Viewport.flashedId]($frontend) | | `Viewport.setRedrawPending` | [Viewport.requestRedraw]($frontend) | -| `WebAppViewer` | *eliminated* | +| `WebAppViewer` | _eliminated_ | | `NativeAppAuthorization` | Moved to @iTwin/auth-clients repo as `ElectronRendererAuthorization` | ### @itwin/core-geometry @@ -1668,16 +1668,16 @@ SAML support has officially been dropped as a supported workflow. All related AP | `OidcDelegationClient` | `DelegationAuthorizationClient` | | `BackendAuthorizationClient` | Moved to @iTwin/auth-clients as BrowserAuthorizationClient | | `AgentAuthorizationClient` | Moved to @iTwin/auth-clients as SerivceAuthorizationClient | -| `DelegationAuthorizationClient` | *removed* | +| `DelegationAuthorizationClient` | _removed_ | | `IntrospectionClient` | Moved to @iTwin/auth-clients | -| `ImsAuthorizationClient` | *removed* | +| `ImsAuthorizationClient` | _removed_ | ### @itwin/appui-abstract | Removed | Replacement | | ----------------------------- | -------------------------- | -| `ContentLayoutProps.priority` | *eliminated* | -| `UiItemsArbiter` | *eliminated* | +| `ContentLayoutProps.priority` | _eliminated_ | +| `UiItemsArbiter` | _eliminated_ | | `UiAbstract.messagePresenter` | `UiAdmin.messagePresenter` | ### @itwin/core-react @@ -1730,16 +1730,16 @@ SAML support has officially been dropped as a supported workflow. All related AP | `FunctionKey` | `FunctionKey` in @bentley/ui-abstract | | `IModelAppUiSettings` | `UserSettingsStorage` in @bentley/ui-framework | | `ConfigurableUiManager.findFrontstageDef` | `FrontstageManager.findFrontstageDef` | -| `ConfigurableUiManager.loadContentGroup` | *eliminated* | -| `ConfigurableUiManager.loadContentGroups` | *eliminated* | -| `ConfigurableUiManager.loadContentLayout` | *eliminated* | -| `ConfigurableUiManager.loadContentLayouts` | *eliminated* | -| `ContentGroupManager` | *eliminated* | +| `ConfigurableUiManager.loadContentGroup` | _eliminated_ | +| `ConfigurableUiManager.loadContentGroups` | _eliminated_ | +| `ConfigurableUiManager.loadContentLayout` | _eliminated_ | +| `ConfigurableUiManager.loadContentLayouts` | _eliminated_ | +| `ContentGroupManager` | _eliminated_ | | `Frontstage.initializeFrontstageDef` | `FrontstageManager.getFrontstageDef` (async method) | | `Frontstage.findFrontstageDef` | `FrontstageManager.getFrontstageDef` (async method) | | `Frontstage.initializeFromProvider` | `Frontstage.create` (async method) | | `FrontstageProps.defaultLayout` | `ContentGroup` now holds the layout information. | -| `FrontstageProvider.initializeDef` | *eliminated* | +| `FrontstageProvider.initializeDef` | _eliminated_ | | `FrontstageProvider.frontstageDef` | `FrontstageManager.getFrontstageDef` (async method) | | `reactElement` in ContentControl | `ContentControl.reactNode` | | `reactElement` in NavigationAidControl | `NavigationAidControl.reactNode` | @@ -1754,13 +1754,13 @@ SAML support has officially been dropped as a supported workflow. All related AP | `SavedViewLayoutProps` | `StageContentLayoutProps` | | `SpecialKey` | `SpecialKey` in @itwin/appui-abstract | | `WidgetState` | `WidgetState` in @itwin/appui-abstract | -| `UserProfileBackstageItem` | *eliminated* | -| `SignIn` | *eliminated* | -| `SignOutModalFrontstage` | *eliminated* | -| `IModelConnectedCategoryTree` | *eliminated* | -| `IModelConnectedModelsTree` | *eliminated* | -| `IModelConnectedSpatialContainmentTree` | *eliminated* | -| `CategoryTreeWithSearchBox` | *eliminated* | +| `UserProfileBackstageItem` | _eliminated_ | +| `SignIn` | _eliminated_ | +| `SignOutModalFrontstage` | _eliminated_ | +| `IModelConnectedCategoryTree` | _eliminated_ | +| `IModelConnectedModelsTree` | _eliminated_ | +| `IModelConnectedSpatialContainmentTree` | _eliminated_ | +| `CategoryTreeWithSearchBox` | _eliminated_ | | `UiSettingsProvider` | `UiStateStorageHandler` | | `useUiSettingsStorageContext` | `useUiStateStorageHandler` | | `VisibilityComponent` | `TreeWidgetComponent` in @bentley/tree-widget-react | @@ -1768,14 +1768,14 @@ SAML support has officially been dropped as a supported workflow. All related AP | `WidgetProvider` | Provide widget via [UiItemsProvider]($appui-abstract) | | `ContentLayoutProps` | `ContentLayoutProps` in @itwin/appui-abstract | | All drag & drop related APIs | Third party components. E.g. see this [example](https://www.itwinjs.org/sample-showcase/?group=UI+Trees&sample=drag-and-drop) | -| `ModelsTreeProps.enablePreloading` | *eliminated* | +| `ModelsTreeProps.enablePreloading` | _eliminated_ | ### @itwin/core-bentley | Removed | Replacement | | --------------- | ---------------------------------------------------------- | | `Config` | Use `process.env` to access environment variables directly | -| `EnvMacroSubst` | *eliminated* | +| `EnvMacroSubst` | _eliminated_ | ### @itwin/presentation-common @@ -1785,11 +1785,11 @@ SAML support has officially been dropped as a supported workflow. All related AP | `ContentInstancesOfSpecificClassesSpecification.arePolymorphic` | `ContentInstancesOfSpecificClassesSpecification.handleInstancesPolymorphically` | | `ContentModifiersList.propertiesDisplay` | `ContentModifiersList.propertyOverrides` | | `ContentModifiersList.propertyEditors` | `ContentModifiersList.propertyOverrides` | -| `ContentRelatedInstancesSpecification.isRecursive` | *eliminated* | +| `ContentRelatedInstancesSpecification.isRecursive` | _eliminated_ | | `ContentRelatedInstancesSpecification.relatedClasses` | `ContentRelatedInstancesSpecification.relationshipPaths.targetClass` | | `ContentRelatedInstancesSpecification.relationships` | `ContentRelatedInstancesSpecification.relationshipPaths.relationship` | | `ContentRelatedInstancesSpecification.requiredDirection` | `ContentRelatedInstancesSpecification.relationshipPaths.direction` | -| `ContentRelatedInstancesSpecification.skipRelatedLevel` | *eliminated* | +| `ContentRelatedInstancesSpecification.skipRelatedLevel` | _eliminated_ | | `Descriptor.toCompressedJSON` | `Descriptor.toJSON` | | `DescriptorOverrides.hiddenFieldNames` | `DescriptorOverrides.fieldsSelector` | | `DescriptorOverrides.sortDirection` | `DescriptorOverrides.sorting.direction` | @@ -1800,22 +1800,22 @@ SAML support has officially been dropped as a supported workflow. All related AP | `ExtendedHierarchyRequestOptions` | `HierarchyRequestOptions` | | `ExtendedHierarchyRpcRequestOptions` | `HierarchyRpcRequestOptions` | | `Field.fromJSON` | `Field.fromCompressedJSON` | -| `HierarchyCompareRpcOptions` | *eliminated* | +| `HierarchyCompareRpcOptions` | _eliminated_ | | `LabelRequestOptions` | `DisplayLabelRequestOptions` | | `LabelRpcRequestOptions` | `DisplayLabelRpcRequestOptions` | | `LoggingNamespaces` | `PresentationBackendLoggerCategory`, `PresentationBackendNativeLoggerCategory`, `PresentationFrontendLoggerCategory` or `PresentationComponentsLoggerCategory` | | `NodeDeletionInfo.target` | `NodeDeletionInfo.parent` and `NodeDeletionInfo.position` | | `NodeDeletionInfoJSON.target` | `NodeDeletionInfoJSON.parent` and `NodeDeletionInfoJSON.position` | -| `PresentationDataCompareOptions` | *eliminated* | -| `PresentationRpcInterface.compareHierarchies` | *eliminated* | -| `PresentationRpcInterface.compareHierarchiesPaged` | *eliminated* | +| `PresentationDataCompareOptions` | _eliminated_ | +| `PresentationRpcInterface.compareHierarchies` | _eliminated_ | +| `PresentationRpcInterface.compareHierarchiesPaged` | _eliminated_ | | `PresentationRpcInterface.getContent` | `PresentationRpcInterface.getPagedContent` and `getPagedContentSet` | | `PresentationRpcInterface.getContentAndSize` | `PresentationRpcInterface.getPagedContent` and `getPagedContentSet` | | `PresentationRpcInterface.getDisplayLabelDefinitions` | `PresentationRpcInterface.getPagedDisplayLabelDefinitions` | | `PresentationRpcInterface.getDistinctValues` | `PresentationRpcInterface.getPagedDistinctValues` | | `PresentationRpcInterface.getNodes` | `PresentationRpcInterface.getPagedNodes` | | `PresentationRpcInterface.getNodesAndCount` | `PresentationRpcInterface.getPagedNodes` | -| `PresentationRpcInterface.loadHierarchy` | *eliminated* | +| `PresentationRpcInterface.loadHierarchy` | _eliminated_ | | `PresentationUnitSystem` | `UnitSystemKey` in `@bentley/imodeljs-quantity` | | `PropertiesFieldDescriptor.propertyClass` | `PropertiesFieldDescriptor.properties.class` | | `PropertiesFieldDescriptor.propertyName` | `PropertiesFieldDescriptor.properties.name` | @@ -1824,8 +1824,8 @@ SAML support has officially been dropped as a supported workflow. All related AP | `RelatedInstanceNodesSpecification.relatedClasses` | `RelatedInstanceNodesSpecification.relationshipPaths.targetClass` | | `RelatedInstanceNodesSpecification.relationships` | `RelatedInstanceNodesSpecification.relationshipPaths.relationship` | | `RelatedInstanceNodesSpecification.requiredDirection` | `RelatedInstanceNodesSpecification.relationshipPaths.direction` | -| `RelatedInstanceNodesSpecification.skipRelatedLevel` | *eliminated* | -| `RelatedInstanceNodesSpecification.supportedSchemas` | *eliminated* | +| `RelatedInstanceNodesSpecification.skipRelatedLevel` | _eliminated_ | +| `RelatedInstanceNodesSpecification.supportedSchemas` | _eliminated_ | | `RelatedInstanceSpecification.class` | `RelatedInstanceSpecification.relationshipPath.targetClass` | | `RelatedInstanceSpecification.relationship` | `RelatedInstanceSpecification.relationshipPath.relationship` | | `RelatedInstanceSpecification.requiredDirection` | `RelatedInstanceSpecification.relationshipPath.direction` | @@ -1835,8 +1835,8 @@ SAML support has officially been dropped as a supported workflow. All related AP | `RelatedPropertiesSpecification.relationships` | `RelatedPropertiesSpecification.propertiesSource.relationship` | | `RelatedPropertiesSpecification.requiredDirection` | `RelatedPropertiesSpecification.propertiesSource.direction` | | `Ruleset.supportedSchemas` | `Ruleset.requiredSchemas` | -| `RequestPriority` | *eliminated* | -| `RequestOptions.priority` | *eliminated* | +| `RequestPriority` | _eliminated_ | +| `RequestOptions.priority` | _eliminated_ | | `SelectClassInfo.pathToPrimaryClass` | `SelectClassInfo.pathFromInputToSelectClass` | | `SelectClassInfo.relatedInstanceClasses` | `SelectClassInfo.relatedInstancePaths` | | `SelectClassInfoJSON.pathToPrimaryClass` | `SelectClassInfoJSON.pathFromInputToSelectClass` | @@ -1927,18 +1927,17 @@ SAML support has officially been dropped as a supported workflow. All related AP | Removed | Replacement | | ---------------------------------- | ------------ | -| `UserInfo` | *eliminated* | -| `AuthorizationClient.isAuthorized` | *eliminated* | +| `UserInfo` | _eliminated_ | +| `AuthorizationClient.isAuthorized` | _eliminated_ | ### @bentley/frontend-authorization-client | Removed | Replacement | | ------------------------------------------- | --------------------------- | -| `FrontendAuthorizationClient` | *removed* | -| `FrontendAuthorizationClientLoggerCategory` | *removed* | +| `FrontendAuthorizationClient` | _removed_ | +| `FrontendAuthorizationClientLoggerCategory` | _removed_ | | `BrowserAuthorizationCallbackHandler` | Moved to iTwin/auth-clients | -| `BrowserAuthorizationBase` | *removed* | +| `BrowserAuthorizationBase` | _removed_ | | `BrowserAuthorizationClient` | Moved to iTwin/auth-clients | | `BrowserAuthorizationClientRedirectState` | Moved to iTwin/auth-clients | | `BrowserAuthorizationLogger` | Moved to iTwin/auth-clients | - diff --git a/docs/changehistory/NextVersion.md b/docs/changehistory/NextVersion.md index 7745b914edd4..c400f13e2bc4 100644 --- a/docs/changehistory/NextVersion.md +++ b/docs/changehistory/NextVersion.md @@ -1,5 +1,4 @@ --- publish: false --- -# NextVersion - +# NextVersion \ No newline at end of file diff --git a/docs/changehistory/index.md b/docs/changehistory/index.md index 952dd3faa580..80b789d8e0e8 100644 --- a/docs/changehistory/index.md +++ b/docs/changehistory/index.md @@ -42,7 +42,7 @@ Many of the enhancements introduced in iTwin.js 3.0 were directly motivated by f #### Documentation -A collection of [learning articles]($docs/learning/display/index.md) has been assembled to provide an overview of the features provided by the display system, illustrated by interactive samples. +A collection of [learning articles](../learning/display/index.md) has been assembled to provide an overview of the features provided by the display system, illustrated by interactive samples. #### Viewport.zoomToElements improvements @@ -181,7 +181,7 @@ Improvements were made to the performance of [ParticleCollectionBuilder]($fronte #### Support for glTF graphics -[glTF](https://www.khronos.org/gltf/) has become the de facto standard format for 3d graphics on the web. Now you can create a [RenderGraphic]($frontend) from a glTF asset for use with [Decorators]($docs/learning/frontend/ViewDecorations), using [readGltfGraphics]($frontend). [This example]($docs/learning/frontend/ViewDecorations#gltf-decorations) demonstrates how to convert a glTF asset into a graphic and display it using a decorator. +[glTF](https://www.khronos.org/gltf/) has become the de facto standard format for 3d graphics on the web. Now you can create a [RenderGraphic]($frontend) from a glTF asset for use with [Decorators](../learning/frontend/ViewDecorations), using [readGltfGraphics]($frontend). [This example](../learning/frontend/ViewDecorations#gltf-decorations) demonstrates how to convert a glTF asset into a graphic and display it using a decorator. Note: `readGltfGraphics` targets the [glTF 2.0 specification](https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html), but implementation of the full specification is an ongoing work in progress. The current implementation can successfully read many glTF assets, but if a particular asset fails to load or display properly, please [file an issue](https://github.com/iTwin/itwinjs-core/issues). @@ -214,11 +214,11 @@ Note: `readGltfGraphics` targets the [glTF 2.0 specification](https://www.khrono ##### Schema requirements A new `requiredSchemas` attribute has been added: [Ruleset.requiredSchemas]($presentation-common) and [RuleBase.requiredSchemas]($presentation-common). The attribute allows an easy way to filter presentation rules based on -ECSchemas / domains available in the iModel. See more details in the [Defining ECSchema Requirements for Presentation Rules]($docs/presentation/Advanced/SchemaRequirements) page. +ECSchemas / domains available in the iModel. See more details in the [Defining ECSchema Requirements for Presentation Rules](../presentation/Advanced/SchemaRequirements) page. ##### Conditional root node rules -Similar to [Child Node Rule]($docs/presentation/Hierarchies/ChildNodeRule), the [Root Node Rule]($docs/presentation/Hierarchies/RootNodeRule) now also has a [condition]($docs/presentation/Hierarchies/RootNodeRule#attribute-condition) attribute. The attribute provides more flexibility in enabling or disabling the rule, including the use of [ruleset variables]($docs/presentation/Advanced/RulesetVariables#using-variables-in-rule-condition). +Similar to [Child Node Rule](../presentation/Hierarchies/ChildNodeRule), the [Root Node Rule](../presentation/Hierarchies/RootNodeRule) now also has a [condition](../presentation/Hierarchies/RootNodeRule#attribute-condition) attribute. The attribute provides more flexibility in enabling or disabling the rule, including the use of [ruleset variables](../presentation/Advanced/RulesetVariables#using-variables-in-rule-condition). ##### More precise way to set class polymorphism @@ -499,7 +499,7 @@ requestContext.enter(); you can simply delete it. -This change mostly affects backend code. For backend [RPC]($docs/learning/RpcInterface.md) implementations, all *unhandled* exceptions will automatically be logged along the appropriate RPC metadata. For this reason, it often preferable to throw an exception rather than logging an error and returning a status in code that may or may not be called from RPC. +This change mostly affects backend code. For backend [RPC](../learning/RpcInterface.md) implementations, all _unhandled_ exceptions will automatically be logged along the appropriate RPC metadata. For this reason, it often preferable to throw an exception rather than logging an error and returning a status in code that may or may not be called from RPC. ### iModels @@ -527,7 +527,7 @@ Previously the concurrency "mode" was determined by applications when opening a Locks apply to Elements only. The "schema lock" is acquired by exclusively locking element id 0x1 (the root subject id). Models are locked via their modeled element (which has the same id as the model) -See the [ConcurrencyControl]($docs/learning/backend/ConcurrencyControl.md) learning article for more information and examples. +See the [ConcurrencyControl](../learning/backend/ConcurrencyControl.md) learning article for more information and examples. #### BriefcaseManager, BriefcaseDb, and IModelDb changes @@ -608,7 +608,7 @@ On the frontend the [GeoConverter]($frontend) class has been modified to accept #### BentleyError constructor no longer logs -In V2, the constructor of the base exception class [BentleyError]($core-bentley) accepted 5 arguments, the last 3 being optional. Arguments 3 and 4 were for logging the exception in the constructor itself. That is a bad idea, since exceptions are often handled and recovered in `catch` statements, so there is no actual "problem" to report. In that case the message in the log is either misleading or just plain wrong. Also, code in `catch` statements always has more "context" about *why* the error may have happened than the lower level code that threw (e.g. "invalid Id" vs. "invalid MyHashClass Id") so log messages from callers can be more helpful than from callees. Since every thrown exception must be caught *somewhere*, logging should be done when exceptions are caught, not when they're thrown. +In V2, the constructor of the base exception class [BentleyError]($core-bentley) accepted 5 arguments, the last 3 being optional. Arguments 3 and 4 were for logging the exception in the constructor itself. That is a bad idea, since exceptions are often handled and recovered in `catch` statements, so there is no actual "problem" to report. In that case the message in the log is either misleading or just plain wrong. Also, code in `catch` statements always has more "context" about _why_ the error may have happened than the lower level code that threw (e.g. "invalid Id" vs. "invalid MyHashClass Id") so log messages from callers can be more helpful than from callees. Since every thrown exception must be caught _somewhere_, logging should be done when exceptions are caught, not when they're thrown. The [BentleyError]($core-bentley) constructor now accepts 3 arguments, the last argument (`metaData`) is optional. The previous `log` and `category` arguments were removed. If your code passed 5 arguments, remove the 3rd and 4th. If you previously passed 3 or 4 arguments, just leave the first two. Also, the previous version of the constructor required the metaData argument to be a function that returns an object. It may now also just be an object. @@ -1624,8 +1624,8 @@ A number of packages have been renamed to use the @itwin scope rather than the @ | `IModelApp.settings` | [IModelApp.userPreferences]($frontend) | | `IModelConnection.Models.loaded` | use `for..of` to iterate and `getLoaded` to look up by Id | | `IModelConnection.Views.saveThumbnail` | use IPC and `IModelDb.saveThumbnail` | -| `IOidcFrontendClient` | *eliminated* | -| `isIOidcFrontendClient` | *eliminated* | +| `IOidcFrontendClient` | _eliminated_ | +| `isIOidcFrontendClient` | _eliminated_ | | `OidcBrowserClient` | `BrowserAuthorizationClient` in `@itwin/browser-authorization` | | `OidcFrontendClientConfiguration` | `BrowserAuthorizationClientConfiguration` in `@itwin/browser-authorization` | | `QuantityFormatter.onActiveUnitSystemChanged` | [QuantityFormatter.onActiveFormattingUnitSystemChanged]($frontend) | @@ -1640,7 +1640,7 @@ A number of packages have been renamed to use the @itwin scope rather than the @ | `Viewport.featureOverrideProvider` | [Viewport.featureOverrideProviders]($frontend) | | `Viewport.setFlashed` | [Viewport.flashedId]($frontend) | | `Viewport.setRedrawPending` | [Viewport.requestRedraw]($frontend) | -| `WebAppViewer` | *eliminated* | +| `WebAppViewer` | _eliminated_ | | `NativeAppAuthorization` | Moved to @iTwin/auth-clients repo as `ElectronRendererAuthorization` | ### @itwin/core-geometry @@ -1664,16 +1664,16 @@ SAML support has officially been dropped as a supported workflow. All related AP | `OidcDelegationClient` | `DelegationAuthorizationClient` | | `BackendAuthorizationClient` | Moved to @iTwin/auth-clients as BrowserAuthorizationClient | | `AgentAuthorizationClient` | Moved to @iTwin/auth-clients as SerivceAuthorizationClient | -| `DelegationAuthorizationClient` | *removed* | +| `DelegationAuthorizationClient` | _removed_ | | `IntrospectionClient` | Moved to @iTwin/auth-clients | -| `ImsAuthorizationClient` | *removed* | +| `ImsAuthorizationClient` | _removed_ | ### @itwin/appui-abstract | Removed | Replacement | | ----------------------------- | -------------------------- | -| `ContentLayoutProps.priority` | *eliminated* | -| `UiItemsArbiter` | *eliminated* | +| `ContentLayoutProps.priority` | _eliminated_ | +| `UiItemsArbiter` | _eliminated_ | | `UiAbstract.messagePresenter` | `UiAdmin.messagePresenter` | ### @itwin/core-react @@ -1726,16 +1726,16 @@ SAML support has officially been dropped as a supported workflow. All related AP | `FunctionKey` | `FunctionKey` in @bentley/ui-abstract | | `IModelAppUiSettings` | `UserSettingsStorage` in @bentley/ui-framework | | `ConfigurableUiManager.findFrontstageDef` | `FrontstageManager.findFrontstageDef` | -| `ConfigurableUiManager.loadContentGroup` | *eliminated* | -| `ConfigurableUiManager.loadContentGroups` | *eliminated* | -| `ConfigurableUiManager.loadContentLayout` | *eliminated* | -| `ConfigurableUiManager.loadContentLayouts` | *eliminated* | -| `ContentGroupManager` | *eliminated* | +| `ConfigurableUiManager.loadContentGroup` | _eliminated_ | +| `ConfigurableUiManager.loadContentGroups` | _eliminated_ | +| `ConfigurableUiManager.loadContentLayout` | _eliminated_ | +| `ConfigurableUiManager.loadContentLayouts` | _eliminated_ | +| `ContentGroupManager` | _eliminated_ | | `Frontstage.initializeFrontstageDef` | `FrontstageManager.getFrontstageDef` (async method) | | `Frontstage.findFrontstageDef` | `FrontstageManager.getFrontstageDef` (async method) | | `Frontstage.initializeFromProvider` | `Frontstage.create` (async method) | | `FrontstageProps.defaultLayout` | `ContentGroup` now holds the layout information. | -| `FrontstageProvider.initializeDef` | *eliminated* | +| `FrontstageProvider.initializeDef` | _eliminated_ | | `FrontstageProvider.frontstageDef` | `FrontstageManager.getFrontstageDef` (async method) | | `reactElement` in ContentControl | `ContentControl.reactNode` | | `reactElement` in NavigationAidControl | `NavigationAidControl.reactNode` | @@ -1750,13 +1750,13 @@ SAML support has officially been dropped as a supported workflow. All related AP | `SavedViewLayoutProps` | `StageContentLayoutProps` | | `SpecialKey` | `SpecialKey` in @itwin/appui-abstract | | `WidgetState` | `WidgetState` in @itwin/appui-abstract | -| `UserProfileBackstageItem` | *eliminated* | -| `SignIn` | *eliminated* | -| `SignOutModalFrontstage` | *eliminated* | -| `IModelConnectedCategoryTree` | *eliminated* | -| `IModelConnectedModelsTree` | *eliminated* | -| `IModelConnectedSpatialContainmentTree` | *eliminated* | -| `CategoryTreeWithSearchBox` | *eliminated* | +| `UserProfileBackstageItem` | _eliminated_ | +| `SignIn` | _eliminated_ | +| `SignOutModalFrontstage` | _eliminated_ | +| `IModelConnectedCategoryTree` | _eliminated_ | +| `IModelConnectedModelsTree` | _eliminated_ | +| `IModelConnectedSpatialContainmentTree` | _eliminated_ | +| `CategoryTreeWithSearchBox` | _eliminated_ | | `UiSettingsProvider` | `UiStateStorageHandler` | | `useUiSettingsStorageContext` | `useUiStateStorageHandler` | | `VisibilityComponent` | `TreeWidgetComponent` in @bentley/tree-widget-react | @@ -1764,14 +1764,14 @@ SAML support has officially been dropped as a supported workflow. All related AP | `WidgetProvider` | Provide widget via [UiItemsProvider]($appui-abstract) | | `ContentLayoutProps` | `ContentLayoutProps` in @itwin/appui-abstract | | All drag & drop related APIs | Third party components. E.g. see this [example](https://www.itwinjs.org/sample-showcase/?group=UI+Trees&sample=drag-and-drop) | -| `ModelsTreeProps.enablePreloading` | *eliminated* | +| `ModelsTreeProps.enablePreloading` | _eliminated_ | ### @itwin/core-bentley | Removed | Replacement | | --------------- | ---------------------------------------------------------- | | `Config` | Use `process.env` to access environment variables directly | -| `EnvMacroSubst` | *eliminated* | +| `EnvMacroSubst` | _eliminated_ | ### @itwin/presentation-common @@ -1781,11 +1781,11 @@ SAML support has officially been dropped as a supported workflow. All related AP | `ContentInstancesOfSpecificClassesSpecification.arePolymorphic` | `ContentInstancesOfSpecificClassesSpecification.handleInstancesPolymorphically` | | `ContentModifiersList.propertiesDisplay` | `ContentModifiersList.propertyOverrides` | | `ContentModifiersList.propertyEditors` | `ContentModifiersList.propertyOverrides` | -| `ContentRelatedInstancesSpecification.isRecursive` | *eliminated* | +| `ContentRelatedInstancesSpecification.isRecursive` | _eliminated_ | | `ContentRelatedInstancesSpecification.relatedClasses` | `ContentRelatedInstancesSpecification.relationshipPaths.targetClass` | | `ContentRelatedInstancesSpecification.relationships` | `ContentRelatedInstancesSpecification.relationshipPaths.relationship` | | `ContentRelatedInstancesSpecification.requiredDirection` | `ContentRelatedInstancesSpecification.relationshipPaths.direction` | -| `ContentRelatedInstancesSpecification.skipRelatedLevel` | *eliminated* | +| `ContentRelatedInstancesSpecification.skipRelatedLevel` | _eliminated_ | | `Descriptor.toCompressedJSON` | `Descriptor.toJSON` | | `DescriptorOverrides.hiddenFieldNames` | `DescriptorOverrides.fieldsSelector` | | `DescriptorOverrides.sortDirection` | `DescriptorOverrides.sorting.direction` | @@ -1796,22 +1796,22 @@ SAML support has officially been dropped as a supported workflow. All related AP | `ExtendedHierarchyRequestOptions` | `HierarchyRequestOptions` | | `ExtendedHierarchyRpcRequestOptions` | `HierarchyRpcRequestOptions` | | `Field.fromJSON` | `Field.fromCompressedJSON` | -| `HierarchyCompareRpcOptions` | *eliminated* | +| `HierarchyCompareRpcOptions` | _eliminated_ | | `LabelRequestOptions` | `DisplayLabelRequestOptions` | | `LabelRpcRequestOptions` | `DisplayLabelRpcRequestOptions` | | `LoggingNamespaces` | `PresentationBackendLoggerCategory`, `PresentationBackendNativeLoggerCategory`, `PresentationFrontendLoggerCategory` or `PresentationComponentsLoggerCategory` | | `NodeDeletionInfo.target` | `NodeDeletionInfo.parent` and `NodeDeletionInfo.position` | | `NodeDeletionInfoJSON.target` | `NodeDeletionInfoJSON.parent` and `NodeDeletionInfoJSON.position` | -| `PresentationDataCompareOptions` | *eliminated* | -| `PresentationRpcInterface.compareHierarchies` | *eliminated* | -| `PresentationRpcInterface.compareHierarchiesPaged` | *eliminated* | +| `PresentationDataCompareOptions` | _eliminated_ | +| `PresentationRpcInterface.compareHierarchies` | _eliminated_ | +| `PresentationRpcInterface.compareHierarchiesPaged` | _eliminated_ | | `PresentationRpcInterface.getContent` | `PresentationRpcInterface.getPagedContent` and `getPagedContentSet` | | `PresentationRpcInterface.getContentAndSize` | `PresentationRpcInterface.getPagedContent` and `getPagedContentSet` | | `PresentationRpcInterface.getDisplayLabelDefinitions` | `PresentationRpcInterface.getPagedDisplayLabelDefinitions` | | `PresentationRpcInterface.getDistinctValues` | `PresentationRpcInterface.getPagedDistinctValues` | | `PresentationRpcInterface.getNodes` | `PresentationRpcInterface.getPagedNodes` | | `PresentationRpcInterface.getNodesAndCount` | `PresentationRpcInterface.getPagedNodes` | -| `PresentationRpcInterface.loadHierarchy` | *eliminated* | +| `PresentationRpcInterface.loadHierarchy` | _eliminated_ | | `PresentationUnitSystem` | `UnitSystemKey` in `@bentley/imodeljs-quantity` | | `PropertiesFieldDescriptor.propertyClass` | `PropertiesFieldDescriptor.properties.class` | | `PropertiesFieldDescriptor.propertyName` | `PropertiesFieldDescriptor.properties.name` | @@ -1820,8 +1820,8 @@ SAML support has officially been dropped as a supported workflow. All related AP | `RelatedInstanceNodesSpecification.relatedClasses` | `RelatedInstanceNodesSpecification.relationshipPaths.targetClass` | | `RelatedInstanceNodesSpecification.relationships` | `RelatedInstanceNodesSpecification.relationshipPaths.relationship` | | `RelatedInstanceNodesSpecification.requiredDirection` | `RelatedInstanceNodesSpecification.relationshipPaths.direction` | -| `RelatedInstanceNodesSpecification.skipRelatedLevel` | *eliminated* | -| `RelatedInstanceNodesSpecification.supportedSchemas` | *eliminated* | +| `RelatedInstanceNodesSpecification.skipRelatedLevel` | _eliminated_ | +| `RelatedInstanceNodesSpecification.supportedSchemas` | _eliminated_ | | `RelatedInstanceSpecification.class` | `RelatedInstanceSpecification.relationshipPath.targetClass` | | `RelatedInstanceSpecification.relationship` | `RelatedInstanceSpecification.relationshipPath.relationship` | | `RelatedInstanceSpecification.requiredDirection` | `RelatedInstanceSpecification.relationshipPath.direction` | @@ -1831,8 +1831,8 @@ SAML support has officially been dropped as a supported workflow. All related AP | `RelatedPropertiesSpecification.relationships` | `RelatedPropertiesSpecification.propertiesSource.relationship` | | `RelatedPropertiesSpecification.requiredDirection` | `RelatedPropertiesSpecification.propertiesSource.direction` | | `Ruleset.supportedSchemas` | `Ruleset.requiredSchemas` | -| `RequestPriority` | *eliminated* | -| `RequestOptions.priority` | *eliminated* | +| `RequestPriority` | _eliminated_ | +| `RequestOptions.priority` | _eliminated_ | | `SelectClassInfo.pathToPrimaryClass` | `SelectClassInfo.pathFromInputToSelectClass` | | `SelectClassInfo.relatedInstanceClasses` | `SelectClassInfo.relatedInstancePaths` | | `SelectClassInfoJSON.pathToPrimaryClass` | `SelectClassInfoJSON.pathFromInputToSelectClass` | @@ -1923,17 +1923,17 @@ SAML support has officially been dropped as a supported workflow. All related AP | Removed | Replacement | | ---------------------------------- | ------------ | -| `UserInfo` | *eliminated* | -| `AuthorizationClient.isAuthorized` | *eliminated* | +| `UserInfo` | _eliminated_ | +| `AuthorizationClient.isAuthorized` | _eliminated_ | ### @bentley/frontend-authorization-client | Removed | Replacement | | ------------------------------------------- | --------------------------- | -| `FrontendAuthorizationClient` | *removed* | -| `FrontendAuthorizationClientLoggerCategory` | *removed* | +| `FrontendAuthorizationClient` | _removed_ | +| `FrontendAuthorizationClientLoggerCategory` | _removed_ | | `BrowserAuthorizationCallbackHandler` | Moved to iTwin/auth-clients | -| `BrowserAuthorizationBase` | *removed* | +| `BrowserAuthorizationBase` | _removed_ | | `BrowserAuthorizationClient` | Moved to iTwin/auth-clients | | `BrowserAuthorizationClientRedirectState` | Moved to iTwin/auth-clients | | `BrowserAuthorizationLogger` | Moved to iTwin/auth-clients | diff --git a/docs/getting-started/leftNav.md b/docs/getting-started/leftNav.md index 243f8b693f6d..2ecebda324c1 100644 --- a/docs/getting-started/leftNav.md +++ b/docs/getting-started/leftNav.md @@ -23,4 +23,4 @@ --- -## [Tutorials]($docs/learning/tutorials/index.md) +## [Tutorials](../learning/tutorials/index.md) diff --git a/docs/getting-started/offline-quickstart.md b/docs/getting-started/offline-quickstart.md index a288359769ee..6fb83df99c75 100644 --- a/docs/getting-started/offline-quickstart.md +++ b/docs/getting-started/offline-quickstart.md @@ -10,7 +10,7 @@ Writing an iTwin.js application requires the following software: ## 2. Get, build, and develop code -[Follow the "Developing a Desktop Viewer" tutorial]($docs/learning/tutorials/develop-desktop-viewer.md) +[Follow the "Developing a Desktop Viewer" tutorial](../learning/tutorials/develop-desktop-viewer.md)     diff --git a/docs/getting-started/online-quickstart.md b/docs/getting-started/online-quickstart.md index aac66c254de7..ac4b89ed3c9e 100644 --- a/docs/getting-started/online-quickstart.md +++ b/docs/getting-started/online-quickstart.md @@ -14,7 +14,7 @@ Writing an iTwin.js application requires the following software: ## 3. Get, build, and develop code -[Follow the "Developing a web viewer" tutorial]($docs/learning/tutorials/develop-web-viewer.md) +[Follow the "Developing a web viewer" tutorial](../learning/tutorials/develop-web-viewer.md)     @@ -22,7 +22,7 @@ Writing an iTwin.js application requires the following software: ## Next Steps -### [Follow tutorials to dive deeper into iTwin.js]($docs/learning/tutorials/index.md) +### [Follow tutorials to dive deeper into iTwin.js](../learning/tutorials/index.md) ### [iTwin.js Blog](https://medium.com/itwinjs) diff --git a/docs/learning/Glossary.md b/docs/learning/Glossary.md index e60c8ae0c9b3..c179e836cf5f 100644 --- a/docs/learning/Glossary.md +++ b/docs/learning/Glossary.md @@ -18,7 +18,7 @@ tableRowAnchors: true | **Changeset** | A group of changes to an iModel. Changesets are created whenever an Briefcase is modified and reflect the union of all Additions, Deletions, and Modifications over a period of time. Changeset are assigned an identifier when they are uploaded to iModelHub and every Changeset stores the identifier of its parent Changeset. In this way the chain of Changesets for an iModel in iModelHub forms its "timeline of changes". | | **ChangeSummary** | A [summary of the changes](./ChangeSummaries) in a Changeset in the form of ECClasses and ECProperties. | | **Class Registry** | A registry of known JavaScript classes that handle ECClasses. Each JavaScript class has a static member called `className` that identifies its BIS class. When an Entity is loaded from an iModel, a JavaScript instance of the registered class will be created. If no JavaScript class is registered for the ECClass, one is created dynamically. | -| **Code** | An optional [three part *human readable* identifier]($docs/bis/intro/codes.md) for an Element. A code consists of a CodeSpec, CodeScope, and CodeValue. The combination of all three parts must be unique within an iModel. | +| **Code** | An optional [three part *human readable* identifier](../bis/intro/codes.md) for an Element. A code consists of a CodeSpec, CodeScope, and CodeValue. The combination of all three parts must be unique within an iModel. | | **CodeScope** | A Code Scope determines a *scope for uniqueness* for the code value. For example, a scope may specify the whole iModel, only within a certain Model, within an assembly, etc. For a given CodeSpec and CodeScope, all CodeValues must be unique. | | **CodeSpec** | A CodeSpec defines the *specification* (i.e. type) of a code. Often the specification is defined by some external system that enforces conventions, consistency, and validation. A CodeSpec captures the rules for encoding and decoding significant business information into and from a CodeValue. iModels hold a table of the known CodeSpecs, defined by the CodeSpec ECClass, and Elements refer to one of them by Id. | | **CodeValue** | A human-readable string with the *name* of an Element. CodeValues are formatted according to the rules of its CodeSpec. | @@ -82,7 +82,7 @@ tableRowAnchors: true | **Rush** | A tool for [managing multiple NPM packages](http://rushjs.io/) within a single git repository. | | **Schema** | See [ECSchema](#ecschema). | | **SheetModel** | A digital representation of a *sheet of paper*. Sheet Models are 2d models in bounded paper coordinates. SheetModels may contain annotation Elements as well as references to [DrawingViewDefinition]($backend)s. or [SpatialViewDefinition]($backend)s. | -| **Snapshot iModel** | A [static]($docs/learning/backend/AccessingIModels.md/#snapshot-imodels) point-in-time representation of the state of an iModel. | +| **Snapshot iModel** | A [static](./backend/AccessingIModels.md/#snapshot-imodels) point-in-time representation of the state of an iModel. | | **Spatial Coordinate System** | The 3d coordinate system of an iModel. The units are always meters (see ACS). The origin (0,0,0) of the Spatial Coordinate System may be oriented on the earth via an EcefLocation. | | **SpatialModel** | A subclass of GeometricModel that holds 3d Elements in the iModel's Spatial Coordinate System. | | **SpatialViewDefinition** | A subclass of ViewDefinition that displays one or more SpatialModels. | diff --git a/docs/learning/backend/AccessingIModels.md b/docs/learning/backend/AccessingIModels.md index f533766026af..a128385cf421 100644 --- a/docs/learning/backend/AccessingIModels.md +++ b/docs/learning/backend/AccessingIModels.md @@ -33,7 +33,7 @@ The second method creates an *empty* Snapshot iModel given a filename. This is u #### Create Snapshots with *iTwin Snapshot* -[iTwin Snapshot]($docs/learning/tutorials/create-test-imodel-offline.md), is a free tool for creating snapshots. iTwin Snapshot was designed for developers to quickly generate snapshots for use in iTwin.js development. +[iTwin Snapshot](../tutorials/create-test-imodel-offline.md), is a free tool for creating snapshots. iTwin Snapshot was designed for developers to quickly generate snapshots for use in iTwin.js development. ### Important properties of Snapshot iModels diff --git a/docs/learning/backend/ConcurrencyControl.md b/docs/learning/backend/ConcurrencyControl.md index 78771d18d0b0..d4b7a71f71c2 100644 --- a/docs/learning/backend/ConcurrencyControl.md +++ b/docs/learning/backend/ConcurrencyControl.md @@ -19,16 +19,16 @@ This article assumes that you already know that: - An iModel is a multi-user database - An app works with a [briefcase](../Glossary.md#Briefcase) using the [BriefcaseDb]($backend) class. -- A briefcase has a unique [BriefcaseId]($common) that is issued and tracked by [iModelHub]($docs/learning/IModelHub/index.md). -- Changes are captured and distributed in the form of [Changesets]($docs/learning/IModelHub/briefcases.md). -- Changesets are ordered in a sequence that is called the [timeline]($docs/learning/IModelHub/index.md#the-timeline-of-changes-to-an-imodel) of the iModel. A changeset's position on the timeline is indicated by its [ChangesetIndex]($common). +- A briefcase has a unique [BriefcaseId]($common) that is issued and tracked by [iModelHub](../IModelHub/index.md). +- Changes are captured and distributed in the form of [Changesets](../IModelHub/briefcases.md). +- Changesets are ordered in a sequence that is called the [timeline](../IModelHub/index.md#the-timeline-of-changes-to-an-imodel) of the iModel. A changeset's position on the timeline is indicated by its [ChangesetIndex]($common). - Changesets are stored in iModelHub ## Concurrency Glossary | Term | Definition | | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Base** | Changeset B is _based_ on Changeset A if B comes after A in the timeline. | +| **Base** | Changeset B is *based* on Changeset A if B comes after A in the timeline. | | **Change-merging** | Same as merge. | | **Concurrency Control** | How to coordinate simultaneous transactions while preserving data integrity. | | **Concurrency Control Policy** | The rules that apps must follow when changing models and elements. May be [optimistic](#optimistic-concurrency-control) or [pessimistic](#pessimistic-concurrency-control). | diff --git a/docs/learning/backend/SchemasAndElementsInTypeScript.md b/docs/learning/backend/SchemasAndElementsInTypeScript.md index 8182a543f6b4..8bdc5d85cdfb 100644 --- a/docs/learning/backend/SchemasAndElementsInTypeScript.md +++ b/docs/learning/backend/SchemasAndElementsInTypeScript.md @@ -1,8 +1,8 @@ # Schemas and Elements in TypeScript -A [Schema]($backend) represents an ECSchema in TypeScript. It is a collection of Entity-based classes. See [the BIS overview]($docs/bis) for how ECSchemas are used to model information. ECSchemas define classes for models, elements, and aspects, as well as ECRelationships. +A [Schema]($backend) represents an ECSchema in TypeScript. It is a collection of Entity-based classes. See [the BIS overview](../../bis/index.md) for how ECSchemas are used to model information. ECSchemas define classes for models, elements, and aspects, as well as ECRelationships. -An [Element]($backend) object represents an *instance* of a [bis:Element]($docs/BIS/intro/element-fundamentals.md) class when it is read from an iModel. The Element object has properties that correspond to the bis class definition in the schema. An [ElementAspect]($backend) object represents an instance of a [bis:Aspect]($docs/BIS/intro/elementaspect-fundamentals.md) in memory. +An [Element]($backend) object represents an *instance* of a [bis:Element](../../BIS/intro/element-fundamentals.md) class when it is read from an iModel. The Element object has properties that correspond to the bis class definition in the schema. An [ElementAspect]($backend) object represents an instance of a [bis:Aspect](../../BIS/intro/elementaspect-fundamentals.md) in memory. ECSchemas typically define subclasses of bis:Element, bis:Aspect, and so on. The objects that are loaded into memory are instances of TypeScript/JavaScript classes that match the ECSchema definitions. So, for example, an instance of a bis:GeometricElement3d is an object of the class [GeometricElement3d]($backend). diff --git a/docs/learning/faq.md b/docs/learning/faq.md index cebaa83908f5..cd5196cf5ca7 100644 --- a/docs/learning/faq.md +++ b/docs/learning/faq.md @@ -5,4 +5,4 @@ If you have a question that is not covered here, you might find an answer on one 1. How are labels calculated in presentation-driven components like tree and property grid? - Presentation-driven components apply default BIS rules when creating content for these components. The rules include some label overrides whose behavior is described in detail [here]($docs/presentation/Advanced/DefaultBisRules.md#label-overrides). + Presentation-driven components apply default BIS rules when creating content for these components. The rules include some label overrides whose behavior is described in detail [here](../presentation/Advanced/DefaultBisRules.md#label-overrides). diff --git a/docs/learning/frontend/Views.md b/docs/learning/frontend/Views.md index dd57987fbe15..2ffead17383b 100644 --- a/docs/learning/frontend/Views.md +++ b/docs/learning/frontend/Views.md @@ -1,6 +1,6 @@ # Using Views in iTwin.js -A *View* renders geometry from one or more [Models]($docs/bis/intro/model-fundamentals) of an iModel in a web browser. iTwin.js applications can embed and interact with Views anywhere on a web page via an `HTMLDivElement`. +A *View* renders geometry from one or more [Models](../../bis/intro/model-fundamentals) of an iModel in a web browser. iTwin.js applications can embed and interact with Views anywhere on a web page via an `HTMLDivElement`. Views are managed by the [ViewManager]($frontend) class, using [IModelApp.viewManager]($frontend). diff --git a/docs/learning/iModelHub/Events.md b/docs/learning/iModelHub/Events.md index dc8f4028f696..93486c574d33 100644 --- a/docs/learning/iModelHub/Events.md +++ b/docs/learning/iModelHub/Events.md @@ -36,7 +36,7 @@ When a user [subscribes to events](#creating-events-subscription), they have to To receive `IModelHubEvent`s, user has to create an `EventSubscription`. Creating a subscription requires the user to specify an array of [event types](#event-types) they want to receive. -Creating subscription requires user to have an [access token]($docs/learning/common/AccessToken.md) and have a valid [iModel id](./imodels/GetiModel.md). +Creating subscription requires user to have an [access token](../common/AccessToken.md) and have a valid [iModel id](./imodels/GetiModel.md). Example: @@ -58,7 +58,7 @@ If `EventHandler.getEvent` is called with a timeout duration specified, this req `EventHandler.createListener` can be used to handle repeated calls to `EventHandler.getEvent` and `EventHandler.getSASToken`. -Authentication callback example, similar to [getting access token]($docs/learning/common/AccessToken.md). `AccessToken` could be retrieved from credentials stored somewhere else or refreshed before it expires. +Authentication callback example, similar to [getting access token](../common/AccessToken.md). `AccessToken` could be retrieved from credentials stored somewhere else or refreshed before it expires. Listener callback example. This callback just logs the type of the `IModelHubEvent` received. diff --git a/docs/learning/iModelHub/Permissions.md b/docs/learning/iModelHub/Permissions.md index 581de35899cd..3c3a4227b410 100644 --- a/docs/learning/iModelHub/Permissions.md +++ b/docs/learning/iModelHub/Permissions.md @@ -32,4 +32,4 @@ User that only has Read iModel permission can work with iModel, but they will be Permissions automatically included: _Read iModel_ -Modify iModel permission allows making changes to the iModel. It means that users will be able to manage `Locks` and push `Changeset`s to iModelHub. See [concurrency control]($docs/learning/backend/concurrencycontrol) and [BriefcaseDb.pushChanges]($backend). +Modify iModel permission allows making changes to the iModel. It means that users will be able to manage `Locks` and push `Changeset`s to iModelHub. See [concurrency control](../backend/concurrencycontrol) and [BriefcaseDb.pushChanges]($backend). diff --git a/docs/learning/iModelHub/iModels/CreateiModel.md b/docs/learning/iModelHub/iModels/CreateiModel.md index b8fa6dc436b6..d0dc75b67376 100644 --- a/docs/learning/iModelHub/iModels/CreateiModel.md +++ b/docs/learning/iModelHub/iModels/CreateiModel.md @@ -1,6 +1,6 @@ # iModel creation -To start working with iModelHub, an iModel for an [iTwin]($docs/learning/Glossary.md#itwin) has to be created. End users should usually create the iModel for an iTwin through iModelHub website. It's also possible to use the [BackendHubAccess.createNewIModel]($backend) method on [IModelHost.hubAccess]($backend) to create a new iModel in iModelHub. +To start working with iModelHub, an iModel for an [iTwin](../../Glossary.md#itwin) has to be created. End users should usually create the iModel for an iTwin through iModelHub website. It's also possible to use the [BackendHubAccess.createNewIModel]($backend) method on [IModelHost.hubAccess]($backend) to create a new iModel in iModelHub. ## iModel initialization diff --git a/docs/learning/iModelHub/iModels/index.md b/docs/learning/iModelHub/iModels/index.md index f7d4ef750eac..504ef2040f12 100644 --- a/docs/learning/iModelHub/iModels/index.md +++ b/docs/learning/iModelHub/iModels/index.md @@ -1,6 +1,6 @@ # iModels -To work with iModelHub, an [iModel](../../Glossary.md#iModel) has to be created for the ITwin. You can read more about iModels in the [overview page]($docs/learning/iModels.md). +To work with iModelHub, an [iModel](../../Glossary.md#iModel) has to be created for the ITwin. You can read more about iModels in the [overview page](../../iModels.md). ## Working with iModels diff --git a/docs/learning/leftNav.md b/docs/learning/leftNav.md index 79f9f4bda804..41e5130640d3 100644 --- a/docs/learning/leftNav.md +++ b/docs/learning/leftNav.md @@ -5,7 +5,7 @@ - [Common](./common/index.md) - [iTwin service clients](./clients/index.md) - [Geometry](./geometry/index.md) -- [Presentation]($docs/presentation/index.md) +- [Presentation](../presentation/index.md) - [UI](./ui/index.md) --- diff --git a/docs/learning/tutorials/create-test-imodel-itwin-sync.md b/docs/learning/tutorials/create-test-imodel-itwin-sync.md index 9568b47c41e2..4d7cb5487f3b 100644 --- a/docs/learning/tutorials/create-test-imodel-itwin-sync.md +++ b/docs/learning/tutorials/create-test-imodel-itwin-sync.md @@ -2,7 +2,7 @@ This tutorial will describe steps to get started with iTwin.js, using the free trial test environment. We will outline creating a Bentley user account, creating a starter iModel, then loading the starter iModel with data from source files on your desktop. At the end of the tutorial, you should have an iModel containing your own data that you will be able to view either on the web, with in a localhost web application, or with a local Electron app. -You should have a basic understanding of [iModels]($docs/learning/imodels.md), [iModelHub]($docs/learning/imodelhub/index.md), [iModel Connectors]($docs/learning/imodel-connectors.md), but don't worry if any of those concepts aren't entirely clear. +You should have a basic understanding of [iModels](../imodels.md), [iModelHub](../imodelhub/index.md), [iModel Connectors](../imodel-connectors.md), but don't worry if any of those concepts aren't entirely clear. ## Create iModel diff --git a/docs/learning/tutorials/create-test-imodel-offline.md b/docs/learning/tutorials/create-test-imodel-offline.md index 4e5e67641de1..daacad67aa05 100644 --- a/docs/learning/tutorials/create-test-imodel-offline.md +++ b/docs/learning/tutorials/create-test-imodel-offline.md @@ -2,7 +2,7 @@ Get started with iTwin.js in your local environment. It is free, with no iTwin subscription requirement or trial periods. -[Snapshot iModels]($docs/learning/backend/accessingimodels.md/#snapshot-imodels) are a static but intelligent format representing the state of an iModel at a point in time. Once created, they can not be modified. And do not have a connection with iModelHub. +[Snapshot iModels](../backend/accessingimodels.md/#snapshot-imodels) are a static but intelligent format representing the state of an iModel at a point in time. Once created, they can not be modified. And do not have a connection with iModelHub. ## Download iTwin Snapshot diff --git a/docs/learning/tutorials/create-test-imodel-sample.md b/docs/learning/tutorials/create-test-imodel-sample.md index a43d048be63e..934096402b17 100644 --- a/docs/learning/tutorials/create-test-imodel-sample.md +++ b/docs/learning/tutorials/create-test-imodel-sample.md @@ -13,28 +13,28 @@ The quickest way to get access to an iTwin Platform hosted iModel is by creating A metrostation located in Philadelphia. Contains platform, rails, and subway cars. -![stadium]($docs/learning/tutorials/images/metrostation.png) +![stadium](./images/metrostation.png) ### Stadium Soccer stadium in Singapore. Features landscape details and a metro station. This is the largest sample iModel. -![stadium]($docs/learning/tutorials/images/stadium.png) +![stadium](./images/stadium.png) ### Retail Building Sample Cafe and apartments. -![retail-building-sample]($docs/learning/tutorials/images/retail-building-sample.png) +![retail-building-sample](./images/retail-building-sample.png) ### Bay Town Process Plant Simple processing plant. This is the smallest sample iModel. -![bay-town-process-plant]($docs/learning/tutorials/images/bay-town-process-plant.png) +![bay-town-process-plant](./images/bay-town-process-plant.png) ### House Sample Features several 2D drawings and sheets. -![house-sample]($docs/learning/tutorials/images/house-sample.png) +![house-sample](./images/house-sample.png) diff --git a/docs/learning/tutorials/develop-agent.md b/docs/learning/tutorials/develop-agent.md index ce033498e5bd..6013464bb33b 100644 --- a/docs/learning/tutorials/develop-agent.md +++ b/docs/learning/tutorials/develop-agent.md @@ -2,14 +2,14 @@ ## Setup -- [Install necessary prerequisites]($docs/learning/tutorials/development-prerequisites). +- [Install necessary prerequisites](./development-prerequisites). - [Register an Agent Application](https://developer.bentley.com/register/) - Give your agent application a name. - Choose "Service" application type. - Select necessary API associations - Be sure to save the secret somewhere safe - it is only shown once - [Clone agent-starter repo](https://github.com/iTwin/agent-starter) -- If you do not have access to an iModel, follow one of our tutorials to [create an iModel]($docs/learning/tutorials/index.md) +- If you do not have access to an iModel, follow one of our tutorials to [create an iModel](./index.md) - Add `{client_id}@apps.imsoidc.bentley.com` as a project participant of your test iModel using the "[My sample iModels](https://developer.bentley.com/my-imodels/)" page. > Allow some time after registering the agent application. The identity profile of the agent is being created in the background and can take between 5 and 10 minutes diff --git a/docs/learning/tutorials/develop-desktop-viewer.md b/docs/learning/tutorials/develop-desktop-viewer.md index 4dda363cc647..6f2719b726fa 100644 --- a/docs/learning/tutorials/develop-desktop-viewer.md +++ b/docs/learning/tutorials/develop-desktop-viewer.md @@ -2,7 +2,7 @@ ## Setup -- [Install necessary prerequisites]($docs/learning/tutorials/development-prerequisites). +- [Install necessary prerequisites](./development-prerequisites.md). - From a terminal, `npx create-react-app your-app-name --template @itwin/desktop-viewer --scripts-version @bentley/react-scripts` - This will generate a new application based on the iTwin Viewer React component in the `your-app-name` directory. - Open the `your-app-name` directory in VS Code @@ -29,9 +29,9 @@ Once your new application is saved a client ID is generated, add the client ID a From a terminal at your application's root directory, `npm run build`. This will create both the frontend in the "build" folder and backend in the "lib" folder within the application's root directory. It is not necessary to build the frontend during development. -The app will open a pre-packaged offline snapshot iModel. You will likely want to use your own snapshot iModel. Follow the [Create a snapshot iModel]($docs/learning/tutorials/create-test-imodel-offline) tutorial. Then open your snapshot by clicking the Home button and selecting "Open Offline Snapshot". Alternatively, set the absolute path of your snapshot in `.env.local` using `ITWIN_VIEWER_SNAPSHOT` variable prior to running `npm run start`. +The app will open a pre-packaged offline snapshot iModel. You will likely want to use your own snapshot iModel. Follow the [Create a snapshot iModel](./create-test-imodel-offline) tutorial. Then open your snapshot by clicking the Home button and selecting "Open Offline Snapshot". Alternatively, set the absolute path of your snapshot in `.env.local` using `ITWIN_VIEWER_SNAPSHOT` variable prior to running `npm run start`. -Desktop apps can also open cloud hosted iModels. If you do not have access to one, follow one of our tutorials to [create an online iModel]($docs/learning/tutorials/index.md). Then open your online iModel by selecting "Open Online iModel" and logging in. +Desktop apps can also open cloud hosted iModels. If you do not have access to one, follow one of our tutorials to [create an online iModel](./index.md). Then open your online iModel by selecting "Open Online iModel" and logging in. ## Useful Links @@ -42,5 +42,5 @@ Desktop apps can also open cloud hosted iModels. If you do not have access to on ## Next Steps -- [iTwin Viewer - "Hello World"]($docs/learning/tutorials/hello-world-viewer/) +- [iTwin Viewer - "Hello World"](./hello-world-viewer) - [Visit the iTwin Sample Showcase](https://www.itwinjs.org/sample-showcase/) diff --git a/docs/learning/tutorials/develop-web-viewer.md b/docs/learning/tutorials/develop-web-viewer.md index 164c54a1eff8..cc8ee23dbaa7 100644 --- a/docs/learning/tutorials/develop-web-viewer.md +++ b/docs/learning/tutorials/develop-web-viewer.md @@ -2,7 +2,7 @@ ## Setup -- [Install necessary prerequisites]($docs/learning/tutorials/development-prerequisites). +- [Install necessary prerequisites](./development-prerequisites.md). - From a terminal, `npx create-react-app your-app-name --template @itwin/web-viewer --scripts-version @bentley/react-scripts` - This will generate a new application based on the iTwin Viewer React component in the `your-app-name` directory. - Open the `your-app-name` directory in VS Code. @@ -42,5 +42,5 @@ ## Next Steps -- [iTwin Viewer - "Hello World"]($docs/learning/tutorials/hello-world-viewer/) +- [iTwin Viewer - "Hello World"](./hello-world-viewer.md) - [Visit the iTwin Sample Showcase](https://www.itwinjs.org/sample-showcase/) diff --git a/docs/learning/tutorials/explore-imodel-console.md b/docs/learning/tutorials/explore-imodel-console.md index dc2ad7feab30..8f8f0f68a8cf 100644 --- a/docs/learning/tutorials/explore-imodel-console.md +++ b/docs/learning/tutorials/explore-imodel-console.md @@ -11,11 +11,11 @@ Execute queries ## Learn more -[Learn more about ECSQL]($docs/learning/ecsql) +[Learn more about ECSQL](../ecsql.md) Relaunch iModel Console tutorial by clicking the gear icon in the header -![relaunch imodelconsole tutorial]($docs/learning/tutorials/images/launch-console-tutorial.png) +![relaunch imodelconsole tutorial](./images/launch-console-tutorial.png)

diff --git a/docs/learning/tutorials/explore-schema-browser.md b/docs/learning/tutorials/explore-schema-browser.md index 96fb01f3ffba..0a878a6c8a2e 100644 --- a/docs/learning/tutorials/explore-schema-browser.md +++ b/docs/learning/tutorials/explore-schema-browser.md @@ -7,13 +7,13 @@ - In header, click the gear icon - Select "Schema Explorer" -![launch schema explorer]($docs/learning/tutorials/images/launch-schema-explorer.png) +![launch schema explorer](./images/launch-schema-explorer.png) - Explore schemas in iModel ## Learn More -[Learn more about Base Infrastructure Schemas (BIS)]($docs/bis) +[Learn more about Base Infrastructure Schemas (BIS)](../../bis/index.md)

diff --git a/docs/learning/tutorials/index.md b/docs/learning/tutorials/index.md index 8cf12d4e22b7..dcf928ef7157 100644 --- a/docs/learning/tutorials/index.md +++ b/docs/learning/tutorials/index.md @@ -34,7 +34,7 @@ Test iModels can be used for local development. There are a few different ways t ## Support -Please see the [Community Resources]($docs/learning/CommunityResources.md) page for the best places to get more help. +Please see the [Community Resources](../CommunityResources.md) page for the best places to get more help.