@itwin/presentation-core-interop v1.3.2
@itwin/presentation-core-interop
Copyright © Bentley Systems, Incorporated. All rights reserved. See LICENSE.md for license terms and full copyright notice.
The @itwin/presentation-core-interop package acts as a layer between itwinjs-core packages and presentation packages:
@itwin/presentation-hierarchies@itwin/unified-selection
Having this interop layer helps us evolve both sides without affecting one another in a major way.
API
createECSqlQueryExecutor
Maps an iModel in the form of itwinjs-core IModelDb or IModelConnection to an instance of ECSqlQueryExecutor, used in @itwin/presentation-hierarchies and @itwin/unified-selection packages.
Example:
import { IModelDb } from "@itwin/core-backend";
import { createECSqlQueryExecutor } from "@itwin/presentation-core-interop";
const imodel: IModelDb = getIModelDb();
const executor = createECSqlQueryExecutor(imodel);
for await (const row of executor.createQueryReader(MY_QUERY)) {
// TODO: do something with `row`
}createECSchemaProvider
Maps an instance of itwinjs-core SchemaContext class to an instance of ECSchemaProvider, used in @itwin/presentation-hierarchies and @itwin/unified-selection packages.
Example:
import { SchemaContext } from "@itwin/ecschema-metadata";
import { createECSchemaProvider } from "@itwin/presentation-core-interop";
const schemas = new SchemaContext();
const schemaProvider = createECSchemaProvider(schemas);
// the created schema provider may be used in `@itwin/presentation-hierarchies` or `@itwin/unified-selection` packagescreateValueFormatter
Creates an instance of IPrimitiveValueFormatter that knows how to format primitive property values using their units' information. That information is retrieved from an iModel through itwinjs-core SchemaContext.
Example:
import { SchemaContext } from "@itwin/ecschema-metadata";
import { createValueFormatter } from "@itwin/presentation-core-interop";
const schemaContext = new SchemaContext();
const formatter = createValueFormatter({ schemaContext, unitSystem: "metric" });
const formattedValue = await formatter({ type: "Double", value: 1.234, koqName: "MySchema.LengthKindOfQuantity" });registerTxnListeners
Registers a number of transaction listeners on either the backend TxnManager or the frontend BriefcaseTxns and calls the given onChange function whenever there's a change in an iModel holding the transaction manager.
Example:
import { BriefcaseDb } from "@itwin/core-backend";
import { registerTxnListeners } from "@itwin/presentation-core-interop";
import { HierarchyProvider } from "@itwin/presentation-hierarchies";
// get iModel and hierarchy provider from arbitrary sources
const db: BriefcaseDb = getIModel();
const provider: HierarchyProvider = getHierarchyProvider();
// register the listeners
const unregister = registerTxnListeners(db.txns, () => {
// notify provided about the changed data
provider.notifyDataSourceChanged();
// TODO: force the components using `provider` to reload
});
// clean up on iModel close
db.onClosed.addOnce(() => unregister());createLogger
Maps the itwinjs-core Logger class to an ILogger interface used by Presentation packages.
Example:
import { Logger as CoreLogger } from "@itwin/core-bentley";
import { createLogger as createPresentationLogger } from "@itwin/presentation-core-interop";
import { setLogger as setPresentationLogger } from "@itwin/presentation-hierarchies";
setPresentationLogger(createPresentationLogger(CoreLogger));8 months ago
12 months ago
7 months ago
7 months ago
9 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago