itwinjs-core icon indicating copy to clipboard operation
itwinjs-core copied to clipboard

iTwin.js-core APIs to be updated according to new additions to the BisCore schema

Open diegoalexdiaz opened this issue 10 months ago • 6 comments

Is your feature request related to a problem? Please describe.

A new version of BisCore (01.00.17) is now consumed by the upcoming iTwin.js-core v5. Such new schema version brings a number of additions. Typescript APIs should be reviewed and updated accordingly.

The list of changes can be found in the following announcement: https://github.com/iTwin/bis-schemas/discussions/444

diegoalexdiaz avatar Mar 05 '25 16:03 diegoalexdiaz

Do not forget to deprecate SynchronizationConfigLink.lastSuccessfulRun, which is the Typescript side of the equivalent property deprecated in BisCore 01.00.17.

diegoalexdiaz avatar Apr 04 '25 17:04 diegoalexdiaz

BTW, BisCore 01.00.18 was released with one addition, to be picked up by iTwin.js-core 5 as well: https://github.com/iTwin/bis-schemas/discussions/462

diegoalexdiaz avatar Apr 04 '25 18:04 diegoalexdiaz

BTW, BisCore 01.00.18 was released with one addition, to be picked up by iTwin.js-core 5 as well: iTwin/bis-schemas#462

That one's already addressed.

pmconne avatar Apr 04 '25 18:04 pmconne

FYI, BisCore 01.00.19 was just released, in time to be picked up by iTwin.js-core 5.0, with half a dozen enhancements: #505

diegoalexdiaz avatar May 12 '25 17:05 diegoalexdiaz

@diegoalexdiaz is there anything we need to address in itwinjs-core to use these enhancements? Otherwise I'll only update imodel-native to consume these changes in our 5.0.x branch

DanRod1999 avatar May 13 '25 13:05 DanRod1999

Out of the list of enhancements added to BisCore since 01.00.17, I'd surface the following via iTwin.js-core APIs (in no particular order, with the exception of the first one, which I believe is the most urgent for authoring apps):

  • New ChannelRootAspect.Version property, to enable semantic versioning of the data organization in a channel --> Add/update existing APIs to allow reading/setting a Channel's version.

  • Refactored the existing MemberPriority property from the ElementGroupsMembers relationship to its base class, ElementRefersToElements, and added it to the unique-index for the corresponding table in the underlying database. --> Refactor the equivalent property in the API up to its base class.

  • New Rank properties on DefinitionContainer, DefinitionSet and SubCategory --> Similar APIs to existing CategoryProps.Rank.

  • Introduced several subclasses of ModelModelsElement to document and advertise the expected model-class for each concrete ISubModeledElement implementation --> These new relationship classes could be automatically set if a caller to insertModel doesn't provide modeledElement.relClassName. e.g. If the modeledElement is a PhysicalPartition, modeledElement.relClassName could be set to bis:PhysicalModelBreaksDownPhysicalPartition if not passed by the caller. Same if the modeledElement is a Drawing, modeledElement.relClassName could be set to DrawingModelBreaksDownDrawing. Same for SheetModelBreaksDownSheet, DocumentListModelBreaksDownDocumentPartition, SpatialLocationModelBreaksDownTemplateRecipe3dInPlan, GroupInformationModelBreaksDownGroupInformationPartition, PhysicalModelBreaksDownTemplateRecipe3d, DefinitionModelBreaksDownDefinitionContainer, DefinitionModelBreaksDownDefinitionPartition, DrawingModelBreaksDownTemplateRecipe2d, InformationRecordModelBreaksDownInformationRecordPartition, LinkModelBreaksDownLinkPartition, GraphicalModel3dBreaksDownGraphicalPartition3d and SpatialLocationModelBreaksDownSpatialLocationPartition.

  • Deprecated SynchronizationConfigLink.LastSuccessfulRun --> Deprecate the [equivalent members in the API](https://www.itwinjs.org/reference/core-common/entities/synchronizationconfiglinkprops/]

  • New ScaleFactor property to the Drawing class --> Consider exposing such new property as Props for the equivalent Class.

  • New TemplateRecipe3dInPlan concrete class to be used with template geometry in SpatialLocation data modeled as PlanProjection --> Consider adding an equivalent class similar to TemplateRecipe3d

  • New SpatialLocationRepresentsElement and SpatialLocationTypeRepresentsTypeDefinition relationships --> Consider adding equivalent classes, similar to DrawingGraphicRepresentsElement. Same for the new abstract PhysicalTypeComposesSubTypes relationship.

  • New DefinitionThumbnail concrete class, to standardize the patterns to capture and associate Thumbnail images with a DefinitionElement --> Consider adding equivalent APIs to make it easier to capture and store an Image to be used as Thumbnail, as well as properly associate it with a DefinitionElement.

  • From BisCore 01.00.20: New PhysicalMaterial.RenderMaterial navigation property --> Consider adding an equivalent property to PhysicalMaterial - potentially also via a Props class.

cc @ColinKerr , @aruniverse

diegoalexdiaz avatar May 13 '25 18:05 diegoalexdiaz

completed in the PR referenced above. To my understanding no other changes were needed to utilize this new version of bis core other than updating the version of bis schema used in the addon.

DanRod1999 avatar Sep 29 '25 15:09 DanRod1999