diff --git a/react-components/src/components/CacheProvider/RevisionFdmNodeCache.ts b/react-components/src/components/CacheProvider/RevisionFdmNodeCache.ts index e9f3c7234a7..d30a563f65e 100644 --- a/react-components/src/components/CacheProvider/RevisionFdmNodeCache.ts +++ b/react-components/src/components/CacheProvider/RevisionFdmNodeCache.ts @@ -15,7 +15,7 @@ import { import { fetchAncestorNodesForTreeIndex, - getDMSModel, + getDMSModels, getMappingEdgesForNodeIds, inspectNodes } from './requests'; @@ -33,7 +33,7 @@ export class RevisionFdmNodeCache { private readonly _treeIndexToFdmEdges = new Map(); - private readonly _model: Promise; + private readonly _modelInstances: Promise; constructor( cogniteClient: CogniteClient, @@ -46,7 +46,7 @@ export class RevisionFdmNodeCache { this._modelId = modelId; this._revisionId = revisionId; - this._model = getDMSModel(this._modelId, this._fdmClient).catch(() => undefined); + this._modelInstances = getDMSModels(this._modelId, this._fdmClient).catch(() => undefined); } public getClosestParentFdmData(searchTreeIndex: number): FdmNodeDataPromises { @@ -251,7 +251,7 @@ export class RevisionFdmNodeCache { return edgesAndNodes.map((edge) => edge.edge); } - const modelInstances = await this._model; + const modelInstances = await this._modelInstances; if (modelInstances === undefined) { return []; } diff --git a/react-components/src/components/CacheProvider/requests.ts b/react-components/src/components/CacheProvider/requests.ts index 0b8518e91cd..23f9a2071f7 100644 --- a/react-components/src/components/CacheProvider/requests.ts +++ b/react-components/src/components/CacheProvider/requests.ts @@ -36,10 +36,10 @@ export async function fetchAncestorNodesForTreeIndex( return ancestorNodes.items; } -export async function getDMSModel( +export async function getDMSModels( modelId: number, fdmClient: FdmSDK -): Promise { +): Promise { const filter = { equals: { property: ['node', 'externalId'], @@ -53,12 +53,12 @@ export async function getDMSModel( version: SYSTEM_SPACE_3D_MODEL_VERSION }; - const model = await fdmClient.filterInstances(filter, 'node', sources); - return model.instances[0]; + const modelResults = await fdmClient.filterInstances(filter, 'node', sources); + return modelResults.instances; } export async function getMappingEdgesForNodeIds( - model: DmsUniqueIdentifier, + models: DmsUniqueIdentifier[], revisionId: number, fdmClient: FdmSDK, ancestorIds: CogniteInternalId[] @@ -66,12 +66,12 @@ export async function getMappingEdgesForNodeIds( const filter = { and: [ { - equals: { + in: { property: ['edge', 'endNode'], - value: { + values: models.map((model) => ({ externalId: model.externalId, space: model.space - } + })) } }, { diff --git a/react-components/src/query/useSearchMappedEquipmentFDM.tsx b/react-components/src/query/useSearchMappedEquipmentFDM.tsx index d33ea0aa525..411944e70f0 100644 --- a/react-components/src/query/useSearchMappedEquipmentFDM.tsx +++ b/react-components/src/query/useSearchMappedEquipmentFDM.tsx @@ -18,7 +18,7 @@ import { type UseQueryResult, useQuery } from '@tanstack/react-query'; import { SYSTEM_3D_EDGE_SOURCE, SYSTEM_SPACE_3D_SCHEMA } from '../utilities/globalDataModels'; import { type AddModelOptions } from '@cognite/reveal'; import { isEqual, uniq, chunk } from 'lodash'; -import { getDMSModel } from '../components/CacheProvider/requests'; +import { getDMSModels } from '../components/CacheProvider/requests'; export type SearchResultsWithView = { view: Source; instances: NodeItem[] }; @@ -258,9 +258,9 @@ async function createMappedEquipmentMaps( revisionId.toString() === getRevisionIdFromEdge(edge) ); - const modelInstance = await getDMSModel(parseInt(endExternalId), fdmSdk); + const modelInstances = await getDMSModels(parseInt(endExternalId), fdmSdk); - if (endSpace === modelInstance.space && isModelsMapped) { + if (modelInstances.find((model) => model.space === endSpace) !== undefined && isModelsMapped) { const key = `${space}/${externalId}`; const keyEdges = mappedEquipmentFirstLevelMap[key];