UNPKG

@itwin/presentation-hierarchies

Version:

A package for creating hierarchies based on data in iTwin.js iModels.

46 lines 2.51 kB
"use strict"; /*--------------------------------------------------------------------------------------------- * Copyright (c) Bentley Systems, Incorporated. All rights reserved. * See LICENSE.md in the project root for license terms and full copyright notice. *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.readNodes = readNodes; exports.defaultNodesParser = defaultNodesParser; const rxjs_1 = require("rxjs"); const core_bentley_1 = require("@itwin/core-bentley"); const presentation_shared_1 = require("@itwin/presentation-shared"); const NodeSelectQueryFactory_js_1 = require("./NodeSelectQueryFactory.js"); /** @internal */ function readNodes(props) { const { queryExecutor, query, limit } = props; const parser = props?.parser ?? ((row) => (0, rxjs_1.of)(defaultNodesParser(row))); const config = { rowFormat: "ECSqlPropertyNames", restartToken: `readNodes/${core_bentley_1.Guid.createValue()}`, ...(limit !== undefined ? { limit } : undefined), }; return (0, rxjs_1.from)(queryExecutor.createQueryReader(query, config)).pipe((0, rxjs_1.mergeMap)((row) => parser(row))); } /** @internal */ function defaultNodesParser(row) { const typedRow = row; const processingParams = { ...(typedRow.HideIfNoChildren ? { hideIfNoChildren: true } : undefined), ...(typedRow.HideNodeInHierarchy ? { hideInHierarchy: true } : undefined), ...(typedRow.Grouping ? { grouping: JSON.parse(typedRow.Grouping) } : undefined), }; return { // don't format the label here - we're going to do that at node pre-processing step to handle both - instance and generic nodes label: (0, presentation_shared_1.parseInstanceLabel)(typedRow.DisplayLabel), key: { type: "instances", instanceKeys: [{ className: typedRow.FullClassName.replace(":", "."), id: typedRow.ECInstanceId }], }, ...(typedRow.HasChildren !== undefined ? { children: !!typedRow.HasChildren } : undefined), ...(typedRow.AutoExpand ? { autoExpand: true } : undefined), ...(typedRow.SupportsFiltering ? { supportsFiltering: true } : undefined), ...(typedRow.ExtendedData ? { extendedData: JSON.parse(typedRow.ExtendedData) } : undefined), ...(Object.keys(processingParams).length > 0 ? { processingParams } : undefined), }; } //# sourceMappingURL=TreeNodesReader.js.map