1.1.1 • Published 8 months ago

@itwin/presentation-core-interop v1.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

@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` packages

createValueFormatter

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));
1.1.1

8 months ago

1.1.0

8 months ago

1.0.0

9 months ago

0.2.7

9 months ago

0.2.1

1 year ago

0.2.0

1 year ago

0.2.6

10 months ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.5

11 months ago

0.2.4

11 months ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago