From 3f687ac41949c4fdd61b9d4270b33446583c177f Mon Sep 17 00:00:00 2001 From: Ainur <59531286+yagudin10@users.noreply.github.com> Date: Wed, 15 Feb 2023 09:09:59 +0100 Subject: [PATCH] CB-3100 rm event for creating project (#1453) * CB-3100 rm event for creating project * CB-3100 fix: display projects in multiproject mode --------- Co-authored-by: Wroud Co-authored-by: MarinaVorobeva21 <98399603+MarinaVorobeva21@users.noreply.github.com> Co-authored-by: Aleksey Potsetsuev --- .../model/rm/DBNResourceManagerRoot.java | 8 ++ .../rm/local/LocalResourceController.java | 9 +++ .../core-ui/src/DragAndDrop/useDNDData.ts | 11 ++- .../navigationTreeConnectionGroupFilter.ts | 2 +- .../elementsTreeLimitFilter.ts | 8 +- .../NavigationTreeNode/NavigationNode.tsx | 75 +++++++++---------- .../NavigationTreeNode/useNavigationNode.ts | 11 ++- .../ElementsTree/elementsTreeNameFilter.ts | 2 +- .../ElementsTree/useElementsTree.ts | 22 +++++- .../navigationTreeProjectFilter.ts | 2 +- ...navigationTreeProjectsExpandStateGetter.ts | 2 +- .../navigationTreeDuplicateIdFilter.ts | 4 +- .../NavigationNodeProjectControl.tsx | 30 +++++--- .../navigationTreeProjectFilter.ts | 2 +- ...navigationTreeProjectsExpandStateGetter.ts | 2 +- .../navigationTreeResourceTypeFilter.ts | 2 +- ...navigationTreeResourceExpandStateGetter.ts | 2 +- 17 files changed, 118 insertions(+), 76 deletions(-) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerRoot.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerRoot.java index ecf88bea36..10461dc552 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerRoot.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/DBNResourceManagerRoot.java @@ -28,6 +28,7 @@ import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNRoot; import org.jkiss.dbeaver.model.rm.*; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.utils.ArrayUtils; import java.util.*; @@ -127,6 +128,9 @@ public class DBNResourceManagerRoot extends DBNNode implements DBPHiddenObject, case RESOURCE_ADD: addResourceNode(event.getProject(), event.getResourceTree()); break; + case PROJECT_ADD: + addProjectNode(event.getProject()); + break; } } @@ -146,4 +150,8 @@ public class DBNResourceManagerRoot extends DBNNode implements DBPHiddenObject, var projectNode = getProjectNode(project); projectNode.ifPresent(dbnResourceManagerProject -> dbnResourceManagerProject.addChildResourceNode(new ArrayDeque<>(resourcePath))); } + + private void addProjectNode(RMProject project) { + projects = ArrayUtils.add(DBNResourceManagerProject.class, projects, new DBNResourceManagerProject(this, project)); + } } diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java index 3a1207d69b..703bf4df69 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/rm/local/LocalResourceController.java @@ -268,6 +268,7 @@ public class LocalResourceController implements RMController { } try { Files.createDirectories(getProjectPath(project.getId())); + fireRmProjectAddEvent(project); return project; } catch (IOException e) { throw new DBException("Error creating project path", e); @@ -900,6 +901,14 @@ public class LocalResourceController implements RMController { ); } + private void fireRmProjectAddEvent(@NotNull RMProject project) throws DBException { + RMEventManager.fireEvent( + new RMEvent(RMEvent.Action.RESOURCE_ADD, + project + ) + ); + } + public static Builder builder(SMCredentialsProvider credentialsProvider, Supplier smControllerSupplier) { return new Builder(credentialsProvider, smControllerSupplier); } diff --git a/webapp/packages/core-ui/src/DragAndDrop/useDNDData.ts b/webapp/packages/core-ui/src/DragAndDrop/useDNDData.ts index 8b7e5aab82..03baea7519 100644 --- a/webapp/packages/core-ui/src/DragAndDrop/useDNDData.ts +++ b/webapp/packages/core-ui/src/DragAndDrop/useDNDData.ts @@ -30,7 +30,8 @@ interface IDNDDataPrivate extends IDNDData { } interface IOptions { - onDragStart: () => void; + onDragStart?: () => void; + onDragEnd?: () => void; } export function useDNDData(context: IDataContextProvider, options: IOptions): IDNDData { @@ -47,8 +48,12 @@ export function useDNDData(context: IDataContextProvider, options: IOptions): ID collect: monitor => { const dragging = monitor.isDragging(); - if (dragging !== state.isDragging && dragging) { - options.onDragStart(); + if (dragging !== state.isDragging) { + if (dragging) { + options.onDragStart?.(); + } else { + options.onDragEnd?.(); + } } state.isDragging = monitor.isDragging(); diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ConnectionGroup/navigationTreeConnectionGroupFilter.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ConnectionGroup/navigationTreeConnectionGroupFilter.ts index 6411d6be0e..f3f8bec399 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ConnectionGroup/navigationTreeConnectionGroupFilter.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ConnectionGroup/navigationTreeConnectionGroupFilter.ts @@ -46,7 +46,7 @@ function sortManageable(): (nodeA: NavNode, nodeB: NavNode) => number { export function navigationTreeConnectionGroupFilter( resource: NavNodeInfoResource ): IElementsTreeFilter { - return (filter: string, node: NavNode, children: string[]) => { + return (tree, filter, node, children) => { if (node.id !== ROOT_NODE_PATH) { return children; } diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavTreeLimitFilter/elementsTreeLimitFilter.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavTreeLimitFilter/elementsTreeLimitFilter.ts index dbc72ae4b5..4db2a27e55 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavTreeLimitFilter/elementsTreeLimitFilter.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavTreeLimitFilter/elementsTreeLimitFilter.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ -import type { NavNode, NavTreeResource } from '@cloudbeaver/core-navigation-tree'; +import type { NavTreeResource } from '@cloudbeaver/core-navigation-tree'; import type { IElementsTreeFilter } from '../useElementsTree'; @@ -18,11 +18,7 @@ export function elementsTreeLimitFilter( navTreeResource: NavTreeResource, limit?: number ): IElementsTreeFilter { - return ( - filter: string, - node: NavNode, - children: string[], - ) => { + return (tree, filter, node, children) => { limit = limit ?? navTreeResource.childrenLimit; const nextChildren = children.slice(0, limit); diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavigationTreeNode/NavigationNode.tsx b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavigationTreeNode/NavigationNode.tsx index db77b92c87..ec1a930a7e 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavigationTreeNode/NavigationNode.tsx +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/NavigationTreeNode/NavigationNode.tsx @@ -7,6 +7,7 @@ */ import { observer } from 'mobx-react-lite'; +import { useEffect } from 'react'; import styled, { use, css } from 'reshadow'; import { getComputed, TreeNode, useStyles } from '@cloudbeaver/core-blocks'; @@ -37,75 +38,67 @@ export const NavigationNode: NavigationNodeComponent = observer(function Navigat style, }) { const navNodeManagerService = useService(NavNodeManagerService); - const { - ref, - group, - control, - disabled, - selected, - indeterminateSelected, - loading, - loaded, - showInFilter, - expanded, - leaf, - click, - expand, - open, - select, - getSelected, - } = useNavigationNode(node, path); + const navNode = useNavigationNode(node, path); const context = useDataContext(); const dndData = useDNDData(context, { onDragStart: async () => { - if (!selected) { - select(false); + if (!navNode.selected) { + navNode.select(false); } + navNode.setDnDState(dndData, true); + // strange way to preload alias while dragging await navNodeManagerService.getNodeDatabaseAlias(node.id); }, - }); - const dndBox = useNavTreeDropBox(node, { - expanded, - expand, + onDragEnd: () => { + navNode.setDnDState(dndData, false); + }, }); + const dndBox = useNavTreeDropBox(node, { + expanded: navNode.expanded, + expand: navNode.expand, + }); context.set(DATA_CONTEXT_NAV_NODE, node); - context.set(DATA_CONTEXT_NAV_NODES, getSelected); + context.set(DATA_CONTEXT_NAV_NODES, navNode.getSelected); - const Control = control || externalControl || NavigationNodeControl; + const Control = navNode.control || externalControl || NavigationNodeControl; - if (leaf || !loaded) { + if (navNode.leaf || !navNode.loaded) { externalExpanded = false; } function setRef(refObj: HTMLDivElement | null) { //@ts-expect-error ignore - ref.current = refObj; + navNode.ref.current = refObj; dndData.setTargetRef(refObj); } const hasNodes = getComputed(() => !!dndBox.state.context && dndBox.state.canDrop && dndBox.state.isOverCurrent); + useEffect(() => () => { + navNode.setDnDState(dndData, false); + }, []); + return styled(useStyles(style, styles))( {/* */} @@ -115,7 +108,7 @@ export const NavigationNode: NavigationNodeComponent = observer(function Navigat style={style} node={node} /> - {(expanded || externalExpanded) && ( + {(navNode.expanded || externalExpanded) && ( Promise; select: (isMultiple?: boolean, nested?: boolean) => Promise; getSelected: () => NavNode[]; + setDnDState: (data: IDNDData, dragging: boolean) => void; } export function useNavigationNode(node: NavNode, path: string[]): INavigationNode { @@ -79,6 +81,10 @@ export function useNavigationNode(node: NavNode, path: string[]): INavigationNod nested = false ) => await contextRef.context?.tree.select(node, multiple, nested); + function setDnDState(data: IDNDData, dragging: boolean): void { + contextRef.context?.tree.setDnDData(data, dragging); + } + useEffect(() => () => { if (!contextRef.context?.selectionTree) { if (contextRef.context?.tree.isNodeSelected(node.id)) { @@ -102,7 +108,7 @@ export function useNavigationNode(node: NavNode, path: string[]): INavigationNod }], }); - return { + return useObjectRef({ ref: elementRef, showInFilter, empty, @@ -121,7 +127,8 @@ export function useNavigationNode(node: NavNode, path: string[]): INavigationNod open: handleOpen, select: handleSelect, getSelected, - }; + setDnDState, + }); } export function isLeaf(node: NavNode, children: string[] | undefined, tree: IElementsTree | undefined): boolean { diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/elementsTreeNameFilter.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/elementsTreeNameFilter.ts index 86a6db64e8..236bd62eca 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/elementsTreeNameFilter.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/elementsTreeNameFilter.ts @@ -22,7 +22,7 @@ export function elementsTreeNameFilter( navNodeInfoResource: NavNodeInfoResource, compare: NavNodeFilterCompareFn = elementsTreeNameFilterNode ): IElementsTreeFilter { - return (filter: string, node: NavNode, children: string[], state: MetadataMap) => { + return (tree, filter, node, children, state) => { const nodeState = state.get(node.id); if (filter === '' || nodeState.showInFilter || compare(node, filter) === EEquality.full) { diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts index 6f9890d0f0..92e2ed2bc5 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ElementsTree/useElementsTree.ts @@ -17,6 +17,7 @@ import { ISyncExecutor, SyncExecutor } from '@cloudbeaver/core-executor'; import { type NavNode, NavNodeInfoResource, NavTreeResource } from '@cloudbeaver/core-navigation-tree'; import { ProjectInfoResource, ProjectsService } from '@cloudbeaver/core-projects'; import { CachedMapAllKey, ResourceKeyUtils } from '@cloudbeaver/core-sdk'; +import type { IDNDData } from '@cloudbeaver/core-ui'; import { ILoadableState, MetadataMap, throttle } from '@cloudbeaver/core-utils'; import type { IElementsTreeAction } from './IElementsTreeAction'; @@ -30,11 +31,13 @@ export interface IElementsTreeNodeExpandedInfo { } export type IElementsTreeNodeExpandInfoGetter = ( + tree: IElementsTree, nodeId: string, state: ITreeNodeState ) => IElementsTreeNodeExpandedInfo | null; export type IElementsTreeFilter = ( + tree: IElementsTree, filter: string, node: NavNode, children: string[], @@ -96,6 +99,7 @@ export interface IElementsTree extends ILoadableState { readonly filter: string; loading: boolean; disabled: boolean; + activeDnDData: IDNDData[]; renderers: IElementsTreeCustomRenderer[]; state: MetadataMap; userData: IElementsTreeUserState; @@ -112,6 +116,7 @@ export interface IElementsTree extends ILoadableState { setFilter: (value: string) => Promise; select: (node: NavNode, multiple: boolean, nested: boolean) => Promise; resetSelection(): Promise; + setDnDData: (data: IDNDData, dragging: boolean) => void; expand: (node: NavNode, state: boolean) => Promise; show: (nodeId: string, parents: string[]) => Promise; refresh: (nodeId: string) => Promise; @@ -303,6 +308,7 @@ export function useElementsTree(options: IOptions): IElementsTree { const elementsTree = useObservableRef(() => ({ actions: new SyncExecutor(), state, + activeDnDData: [], loading: options.settings?.saveExpanded || false, get filter(): string { return this.userData.filter; @@ -334,7 +340,7 @@ export function useElementsTree(options: IOptions): IElementsTree { if (!expanded && options.expandStateGetters?.length) { return options .expandStateGetters - .map(getExpandState => getExpandState(nodeId, nodeState)) + .map(getExpandState => getExpandState(this, nodeId, nodeState)) .filter(stateInfo => stateInfo !== null) .some(stateInfo => stateInfo?.expanded); } @@ -351,7 +357,7 @@ export function useElementsTree(options: IOptions): IElementsTree { return options .expandStateGetters - .map(getExpandState => getExpandState(nodeId, nodeState)) + .map(getExpandState => getExpandState(this, nodeId, nodeState)) .filter(stateInfo => stateInfo !== null) .every(stateInfo => stateInfo?.expandable !== false); } @@ -407,7 +413,7 @@ export function useElementsTree(options: IOptions): IElementsTree { return (options.filters || []) .reduce( - (children, filter) => filter(elementsTree.filter, node, children, this.state), + (children, filter) => filter(elementsTree, elementsTree.filter, node, children, this.state), options.getChildren(node.id) || [] ); }, @@ -531,10 +537,20 @@ export function useElementsTree(options: IOptions): IElementsTree { } await functionsRef.resetSelection(); }, + setDnDData(data: IDNDData, dragging: boolean) { + if (dragging) { + if (!this.activeDnDData.includes(data)) { + this.activeDnDData.push(data); + } + } else { + this.activeDnDData = this.activeDnDData.filter(d => d !== data); + } + }, }), { settings: observable.ref, isGroup: observable.ref, disabled: observable.ref, + activeDnDData: observable.shallow, root: observable.ref, filter: computed, filtering: computed, diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectFilter.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectFilter.ts index 6289454053..6a4c4cfc48 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectFilter.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectFilter.ts @@ -19,7 +19,7 @@ export function navigationTreeProjectFilter( navNodeInfoResource: NavNodeInfoResource, navTreeResource: NavTreeResource, ): IElementsTreeFilter { - return (filter: string, node: NavNode, children: string[]) => { + return (tree, filter, node, children) => { if (node.id !== ROOT_NODE_PATH) { return children; } diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts index 7a6fdd42d4..f37b05bedb 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts @@ -18,7 +18,7 @@ export function navigationTreeProjectsExpandStateGetter( projectsNavNodeService: ProjectsNavNodeService ): IElementsTreeNodeExpandInfoGetter { - return nodeId => { + return (tree, nodeId) => { const node = navNodeInfoResource.get(nodeId); if (node?.nodeType !== NAV_NODE_TYPE_PROJECT) { diff --git a/webapp/packages/plugin-navigation-tree/src/NavigationTree/navigationTreeDuplicateIdFilter.ts b/webapp/packages/plugin-navigation-tree/src/NavigationTree/navigationTreeDuplicateIdFilter.ts index a5c9f48d55..a23c9d4c78 100644 --- a/webapp/packages/plugin-navigation-tree/src/NavigationTree/navigationTreeDuplicateIdFilter.ts +++ b/webapp/packages/plugin-navigation-tree/src/NavigationTree/navigationTreeDuplicateIdFilter.ts @@ -8,15 +8,13 @@ import { untracked } from 'mobx'; -import type { NavNode } from '@cloudbeaver/core-navigation-tree'; - import type { NavNodeViewService } from '../NodesManager/NavNodeView/NavNodeViewService'; import type { IElementsTreeFilter } from './ElementsTree/useElementsTree'; export function navigationTreeDuplicateFilter( navNodeViewService: NavNodeViewService, ): IElementsTreeFilter { - return (filter: string, node: NavNode, children: string[]) => { + return (tree, filter, node, children) => { const { nodes, duplicates } = navNodeViewService.filterDuplicates(children); untracked(() => { diff --git a/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/NavigationNodeProjectControl.tsx b/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/NavigationNodeProjectControl.tsx index 9b06aa2bdd..1efe3e2585 100644 --- a/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/NavigationNodeProjectControl.tsx +++ b/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/NavigationNodeProjectControl.tsx @@ -14,11 +14,13 @@ import { getComputed, TreeNodeContext, TreeNodeControl, TreeNodeName, TREE_NODE_ import { useService } from '@cloudbeaver/core-di'; import { EventContext, EventStopPropagationFlag } from '@cloudbeaver/core-events'; import { NavNodeInfoResource, type INodeActions } from '@cloudbeaver/core-navigation-tree'; +import { ProjectInfoResource } from '@cloudbeaver/core-projects'; import { NAV_NODE_TYPE_RM_PROJECT } from '@cloudbeaver/core-resource-manager'; import { CaptureViewContext } from '@cloudbeaver/core-view'; import { ElementsTreeContext, NavigationNodeEditor, NavTreeControlComponent, NavTreeControlProps, TreeNodeMenu } from '@cloudbeaver/plugin-navigation-tree'; import { getRmProjectNodeId } from '../../NavNodes/getRmProjectNodeId'; +import { ResourceManagerService } from '../../ResourceManagerService'; import { DATA_CONTEXT_RESOURCE_MANAGER_TREE_RESOURCE_TYPE_ID } from '../DATA_CONTEXT_RESOURCE_MANAGER_TREE_RESOURCE_TYPE_ID'; @@ -65,7 +67,9 @@ export const NavigationNodeProjectControl: NavTreeControlComponent = observer navNodeInfoResource.isOutdated(node.id) && !treeNodeContext.loading); const selected = treeNodeContext.selected; const resourceType = viewContext?.tryGet(DATA_CONTEXT_RESOURCE_MANAGER_TREE_RESOURCE_TYPE_ID); @@ -88,17 +92,23 @@ export const NavigationNodeProjectControl: NavTreeControlComponent = observer { + return (tree, filter, node, children) => { if (node.nodeType === NAV_NODE_TYPE_RM_PROJECT && resourceTypeId !== undefined) { const project = projectsNavNodeService.getProject(node.id); diff --git a/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts b/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts index 594f7444ab..735b551cd1 100644 --- a/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts +++ b/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeProjectsExpandStateGetter.ts @@ -18,7 +18,7 @@ export function navigationTreeProjectsExpandStateGetter( projectsNavNodeService: ProjectsNavNodeService, ): IElementsTreeNodeExpandInfoGetter { - return nodeId => { + return (tree, nodeId) => { const node = navNodeInfoResource.get(nodeId); if (node?.nodeType !== NAV_NODE_TYPE_RM_PROJECT) { diff --git a/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeResourceTypeFilter.ts b/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeResourceTypeFilter.ts index 55a001d38f..fe7df982d1 100644 --- a/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeResourceTypeFilter.ts +++ b/webapp/packages/plugin-resource-manager/src/Tree/ProjectsRenderer/navigationTreeResourceTypeFilter.ts @@ -19,7 +19,7 @@ export function navigationTreeResourceTypeFilter( projectInfoResource: ProjectInfoResource, resourceTypeId?: string, ): IElementsTreeFilter { - return (filter: string, node: NavNode, children: string[]) => { + return (tree, filter, node, children) => { if (resourceTypeId === undefined) { return children; } diff --git a/webapp/packages/plugin-resource-manager/src/Tree/ResourceFolderRenderer/navigationTreeResourceExpandStateGetter.ts b/webapp/packages/plugin-resource-manager/src/Tree/ResourceFolderRenderer/navigationTreeResourceExpandStateGetter.ts index 04c1620d3c..dd15404b29 100644 --- a/webapp/packages/plugin-resource-manager/src/Tree/ResourceFolderRenderer/navigationTreeResourceExpandStateGetter.ts +++ b/webapp/packages/plugin-resource-manager/src/Tree/ResourceFolderRenderer/navigationTreeResourceExpandStateGetter.ts @@ -20,7 +20,7 @@ export function navigationTreeResourceExpandStateGetter( resourceTypeId?: string, ): IElementsTreeNodeExpandInfoGetter { - return nodeId => { + return (tree, nodeId) => { const node = navNodeInfoResource.get(nodeId); if (!node?.folder || resourceTypeId === undefined) {