Skip to content

Commit f7b91ea

Browse files
committed
feat: auto-expand and show notification on analysis/sample add
1 parent 462fb6b commit f7b91ea

2 files changed

Lines changed: 34 additions & 5 deletions

File tree

src/app/components/Workspace.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ const Workspace = ({
271271
{children}
272272
</div>
273273
)}
274-
renderItem={createRenderItem(tree)}
274+
renderItem={createRenderItem(tree, setExpandedItems)}
275275
rootItem={inputTreeRoot}
276276
treeId="inputTree"
277277
treeLabel="Input Tree"
@@ -295,7 +295,7 @@ const Workspace = ({
295295
{children}
296296
</div>
297297
)}
298-
renderItem={createRenderItem(tree)}
298+
renderItem={createRenderItem(tree, setExpandedItems)}
299299
rootItem={assignmentTreeRoot}
300300
treeId="assignmentTree"
301301
treeLabel="Assignment Tree"

src/app/components/tree-view/renderItem.tsx

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import { ReactElement, ReactNode } from 'react'
2-
import { TreeItem, TreeItemRenderContext } from 'react-complex-tree'
1+
import { Dispatch, ReactElement, ReactNode, SetStateAction } from 'react'
2+
import {
3+
TreeItem,
4+
TreeItemIndex,
5+
TreeItemRenderContext,
6+
} from 'react-complex-tree'
37
import { FaPlus } from 'react-icons/fa6'
48

59
import { FileNode } from '@/helper/types'
@@ -8,6 +12,7 @@ import { createSample, createAnalysis } from '../structure-btns/templates'
812
import { getUniqueFolderName } from '../structure-btns/folderUtils'
913
import MoleculeTooltip from './MoleculeTooltip'
1014
import ReactionTooltip from './ReactionTooltip'
15+
import { dragNotifications } from '@/utils/dragNotifications'
1116

1217
interface RenderItemParams {
1318
children: ReactNode
@@ -37,7 +42,10 @@ const Icon = (
3742
: ICONS.folderPlus
3843
}
3944

40-
const createRenderItem = (tree: Record<string, FileNode>) =>
45+
const createRenderItem = (
46+
tree: Record<string, FileNode>,
47+
setExpandedItems?: Dispatch<SetStateAction<TreeItemIndex[]>>,
48+
) =>
4149
function RenderItem({
4250
children,
4351
context,
@@ -88,12 +96,26 @@ const createRenderItem = (tree: Record<string, FileNode>) =>
8896
const handleAddAnalysisToAnalyses = async (e: React.MouseEvent) => {
8997
e.stopPropagation()
9098
if (fileNode) {
99+
const analysisName = getUniqueFolderName(
100+
'analysis',
101+
tree,
102+
'analysis',
103+
false,
104+
fileNode.index,
105+
)
91106
await createAnalysis(
92107
'analysis',
93108
fileNode.index,
94109
tree,
95110
fileNode.uid || '',
96111
)
112+
setExpandedItems?.((prev) =>
113+
prev.includes(fileNode.index) ? prev : [...prev, fileNode.index],
114+
)
115+
dragNotifications.showSuccess(
116+
`"${analysisName}" added to ${parentNode?.data || fileNode.data}`,
117+
0,
118+
)
97119
}
98120
}
99121

@@ -116,6 +138,13 @@ const createRenderItem = (tree: Record<string, FileNode>) =>
116138
fileNode.uid || undefined,
117139
'product',
118140
)
141+
setExpandedItems?.((prev) =>
142+
prev.includes(fileNode.index) ? prev : [...prev, fileNode.index],
143+
)
144+
dragNotifications.showSuccess(
145+
`"${uniqueSampleName}" added to ${fileNode.data}`,
146+
0,
147+
)
119148
}
120149
}
121150

0 commit comments

Comments
 (0)