Skip to content

Commit 4c09eea

Browse files
authored
feat: add getParentNode interface for folderTreeService (#752)
* feat: add getParentNode interface for folderTreeService * fix: clear debugger info * fix: clear debugger info
1 parent f97e00c commit 4c09eea

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

src/services/workbench/__tests__/folderTreeService.test.ts

+42
Original file line numberDiff line numberDiff line change
@@ -494,4 +494,46 @@ describe('Test StatusBarService', () => {
494494
folderTreeService.emit(FolderTreeEvent.onExpandKeys);
495495
});
496496
});
497+
498+
test('Should support to get the current treeNodes parentNode', () => {
499+
const mockRootTree: IFolderTreeNodeProps = {
500+
id: '0',
501+
name: 'test0',
502+
fileType: 'RootFolder',
503+
location: 'test0',
504+
};
505+
506+
const mockFolderData = {
507+
id: '2',
508+
name: 'test1-1',
509+
icon: 'test',
510+
isLeaf: false,
511+
fileType: FileTypes.Folder,
512+
};
513+
514+
const mockFileData = {
515+
id: '3',
516+
name: 'test1-2',
517+
icon: 'test',
518+
isLeaf: true,
519+
fileType: FileTypes.File,
520+
};
521+
522+
folderTreeService.add(mockRootTree);
523+
expect(folderTreeService.get(mockRootTree.id)).toEqual(mockRootTree);
524+
525+
folderTreeService.add(mockFolderData, mockRootTree.id);
526+
expect(folderTreeService.get(mockFolderData.id)).toEqual(
527+
mockFolderData
528+
);
529+
530+
folderTreeService.add(mockFileData, mockFolderData.id);
531+
expect(folderTreeService.get(mockFileData.id)).toEqual(mockFileData);
532+
533+
const expectedData = folderTreeService.get(mockFolderData.id);
534+
535+
expect(folderTreeService.getParentNode(mockFileData.id)).toEqual(
536+
expectedData
537+
);
538+
});
497539
});

src/services/workbench/explorer/folderTreeService.ts

+14
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ export interface IFolderTreeService extends Component<IFolderTree> {
4444
* @param id
4545
*/
4646
get(id: UniqueId): IFolderTreeNodeProps | null;
47+
/**
48+
* get the current treeNode's parentNode
49+
* @param id
50+
*/
51+
getParentNode(id: UniqueId): IFolderTreeNodeProps | null;
4752
/**
4853
* Get the context menus for file
4954
*/
@@ -227,6 +232,15 @@ export class FolderTreeService
227232
return this.fileContextMenu;
228233
}
229234

235+
public getParentNode(id: UniqueId): IFolderTreeNodeProps | null {
236+
const root = this.state.folderTree?.data?.[0];
237+
if (!root) return null;
238+
const treeHelper = new TreeViewUtil<IFolderTreeNodeProps>(root);
239+
const node = treeHelper.getHashMap(id);
240+
if (!node) return null;
241+
return node.parent ? treeHelper.getNode(node.parent) : null;
242+
}
243+
230244
public setFileContextMenu(menus: IMenuItemProps[]) {
231245
this.fileContextMenu = menus;
232246
}

stories/extensions/test/testPane.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ PARTITIONED BY (DE STRING) LIFECYCLE 1000;
412412
children,
413413
})
414414
);
415+
415416
notice(
416417
`The root folder has been added to Explorer and you can switch to Explorer to view it`
417418
);

0 commit comments

Comments
 (0)