Skip to content

Commit

Permalink
fix(composer): submodel and hierarchy search fix (#320)
Browse files Browse the repository at this point in the history
  • Loading branch information
sheilaXu committed Nov 4, 2022
1 parent 22654a0 commit 364cefb
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 25 deletions.
8 changes: 4 additions & 4 deletions packages/scene-composer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -154,10 +154,10 @@
"jest": {
"coverageThreshold": {
"global": {
"lines": 77.56,
"statements": 76.73,
"functions": 77.62,
"branches": 63.67,
"lines": 77.58,
"statements": 76.75,
"functions": 77.58,
"branches": 63.72,
"branchesTrue": 100
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import React, { FC, createContext, useContext, useCallback, useState } from 'react';
import { DndProvider } from 'react-dnd';
import { HTML5Backend } from 'react-dnd-html5-backend';
import { isEmpty } from 'lodash';

import { useSceneComposerId } from '../../../common/sceneComposerIdContext';
import { findComponentByType, isEnvironmentNode } from '../../../utils/nodeUtils';
Expand Down Expand Up @@ -57,18 +58,15 @@ export const useSceneHierarchyData = () => {
return useContext(Context);
};

const toSceneHeirarchyNode = ({
ref,
name,
parentRef,
childRefs = [],
components,
}: ISceneNodeInternal | Readonly<ISceneNodeInternal>) => {
const toSceneHeirarchyNode = (
{ ref, name, parentRef, childRefs = [], components }: ISceneNodeInternal | Readonly<ISceneNodeInternal>,
hideChild?: boolean,
) => {
return {
objectRef: ref,
name,
componentTypes: components.map((c) => c.type),
childRefs,
childRefs: hideChild ? [] : childRefs,
parentRef,
} as ISceneHierarchyNode;
};
Expand Down Expand Up @@ -102,22 +100,24 @@ const SceneHierarchyDataProvider: FC<SceneHierarchyDataProviderProps> = ({ selec
? unfilteredNodeMap
: Object.values(unfilteredNodeMap).filter((node) => searchMatcher(node, searchTerms));

const rootNodeRefs = Object.values(nodeMap)
const unfilteredRootNodeRefs = Object.values(unfilteredNodeMap)
.filter((item) => !item.parentRef && (!isEnvironmentNode(item) || !isViewing()))
.map((item) => item.ref);

const rootNodes: Readonly<ISceneNodeInternal>[] = rootNodeRefs
.map(getSceneNodeByRef)
.filter((node) => node !== undefined && searchMatcher(node, searchTerms))
.map((item) => item as ISceneNodeInternal)
.sort(sortNodes);
const rootNodes: Readonly<ISceneNodeInternal>[] = !isEmpty(searchTerms)
? Object.values(nodeMap)
: unfilteredRootNodeRefs
.map(getSceneNodeByRef)
.filter((node) => node !== undefined && searchMatcher(node, searchTerms))
.map((item) => item as ISceneNodeInternal)
.sort(sortNodes);

const getChildNodes = useCallback(
(parentRef?: string) => {
const nodeMap = useStore(sceneComposerId).getState().document.nodeMap;
const results = Object.values(nodeMap)
.filter((node) => node.parentRef === parentRef)
.map(toSceneHeirarchyNode)
.map((node) => toSceneHeirarchyNode(node))
.sort(sortNodes);

return results;
Expand Down Expand Up @@ -196,7 +196,7 @@ const SceneHierarchyDataProvider: FC<SceneHierarchyDataProviderProps> = ({ selec
<DndProvider backend={HTML5Backend}>
<Context.Provider
value={{
rootNodes: rootNodes.map(toSceneHeirarchyNode),
rootNodes: rootNodes.map((node) => toSceneHeirarchyNode(node, !isEmpty(searchTerms))),
validationErrors,
activate,
selected: selectedSceneNodeRef,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ import ISceneHierarchyNode from '../../model/ISceneHierarchyNode';
import { useSceneHierarchyData } from '../../SceneHierarchyDataProvider';
import { DropHandler } from '../../../../../hooks/useDropMonitor';
import SubModelTree from '../SubModelTree';
import { KnownComponentType } from '../../../../../interfaces';
import { COMPOSER_FEATURES, KnownComponentType } from '../../../../../interfaces';
import { IModelRefComponentInternal } from '../../../../../store';
import { ModelType } from '../../../../../models/SceneModels';
import useFeature from '../../../../../hooks/useFeature';

import SceneNodeLabel from './SceneNodeLabel';
import { AcceptableDropTypes, EnhancedTree, EnhancedTreeItem } from './constants';
Expand Down Expand Up @@ -47,7 +48,8 @@ const SceneHierarchyTreeItem: FC<SceneHierarchyTreeItemProps> = ({
(type as unknown as IModelRefComponentInternal)?.modelType !== ModelType.Environment,
);

const showSubModel = isValidModelRef && !!model && !isViewing();
const [{ variation: subModelSelectionEnabled }] = useFeature(COMPOSER_FEATURES[COMPOSER_FEATURES.SubModelSelection]);
const showSubModel = subModelSelectionEnabled === 'T1' && isValidModelRef && !!model && !isViewing();

const onExpandNode = useCallback((expanded) => {
setExpanded(expanded);
Expand Down Expand Up @@ -97,11 +99,9 @@ const SceneHierarchyTreeItem: FC<SceneHierarchyTreeItemProps> = ({
getChildNodes(key).map((node, index) => (
<React.Fragment key={index}>
<SceneHierarchyTreeItem key={node.objectRef} enableDragAndDrop={enableDragAndDrop} {...node} />
{showSubModel && node?.componentTypes?.includes(KnownComponentType.SubModelRef) && (
<SubModelTree parentRef={key} expanded={false} object3D={model!} selectable />
)}
</React.Fragment>
))}
{showSubModel && <SubModelTree parentRef={key} expanded={false} object3D={model!} selectable />}
</EnhancedTree>
)}
</EnhancedTreeItem>
Expand Down

0 comments on commit 364cefb

Please sign in to comment.