@itwin/presentation-hierarchies
Version:
A package for creating hierarchies based on data in iTwin.js iModels.
46 lines • 2.51 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* 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