balibabu
commited on
Commit
·
fdeaa03
1
Parent(s):
527e971
feat: Do not display arrow icons on leaf node of folders #1826 (#1862)
Browse files### What problem does this PR solve?
feat: Do not display arrow icons on leaf node of folders #1826
### Type of change
- [x] New Feature (non-breaking change which adds functionality)
api/db/services/file_service.py
CHANGED
|
@@ -57,6 +57,12 @@ class FileService(CommonService):
|
|
| 57 |
if file["type"] == FileType.FOLDER.value:
|
| 58 |
file["size"] = cls.get_folder_size(file["id"])
|
| 59 |
file['kbs_info'] = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
continue
|
| 61 |
kbs_info = cls.get_kb_id_by_file_id(file['id'])
|
| 62 |
file['kbs_info'] = kbs_info
|
|
|
|
| 57 |
if file["type"] == FileType.FOLDER.value:
|
| 58 |
file["size"] = cls.get_folder_size(file["id"])
|
| 59 |
file['kbs_info'] = []
|
| 60 |
+
children = list(cls.model.select().where(
|
| 61 |
+
(cls.model.tenant_id == tenant_id),
|
| 62 |
+
(cls.model.parent_id == file["id"]),
|
| 63 |
+
~(cls.model.id == file["id"]),
|
| 64 |
+
).dicts())
|
| 65 |
+
file["has_child_folder"] = any(value["type"] == FileType.FOLDER.value for value in children)
|
| 66 |
continue
|
| 67 |
kbs_info = cls.get_kb_id_by_file_id(file['id'])
|
| 68 |
file['kbs_info'] = kbs_info
|
web/src/interfaces/database/file-manager.ts
CHANGED
|
@@ -13,6 +13,7 @@ export interface IFile {
|
|
| 13 |
update_date: string;
|
| 14 |
update_time: number;
|
| 15 |
source_type: string;
|
|
|
|
| 16 |
}
|
| 17 |
|
| 18 |
export interface IFolder {
|
|
|
|
| 13 |
update_date: string;
|
| 14 |
update_time: number;
|
| 15 |
source_type: string;
|
| 16 |
+
has_child_folder?: boolean;
|
| 17 |
}
|
| 18 |
|
| 19 |
export interface IFolder {
|
web/src/pages/file-manager/move-file-modal/async-tree-select.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import { IFile } from '@/interfaces/database/file-manager';
|
|
| 3 |
import type { GetProp, TreeSelectProps } from 'antd';
|
| 4 |
import { TreeSelect } from 'antd';
|
| 5 |
import { useCallback, useEffect, useState } from 'react';
|
|
|
|
| 6 |
|
| 7 |
type DefaultOptionType = GetProp<TreeSelectProps, 'treeData'>[number];
|
| 8 |
|
|
@@ -12,6 +13,7 @@ interface IProps {
|
|
| 12 |
}
|
| 13 |
|
| 14 |
const AsyncTreeSelect = ({ value, onChange }: IProps) => {
|
|
|
|
| 15 |
const { fetchList } = useFetchPureFileList();
|
| 16 |
const [treeData, setTreeData] = useState<Omit<DefaultOptionType, 'label'>[]>(
|
| 17 |
[],
|
|
@@ -30,7 +32,10 @@ const AsyncTreeSelect = ({ value, onChange }: IProps) => {
|
|
| 30 |
pId: x.parent_id,
|
| 31 |
value: x.id,
|
| 32 |
title: x.name,
|
| 33 |
-
isLeaf:
|
|
|
|
|
|
|
|
|
|
| 34 |
})),
|
| 35 |
);
|
| 36 |
});
|
|
@@ -53,7 +58,7 @@ const AsyncTreeSelect = ({ value, onChange }: IProps) => {
|
|
| 53 |
style={{ width: '100%' }}
|
| 54 |
value={value}
|
| 55 |
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
| 56 |
-
placeholder=
|
| 57 |
onChange={handleChange}
|
| 58 |
loadData={onLoadData}
|
| 59 |
treeData={treeData}
|
|
|
|
| 3 |
import type { GetProp, TreeSelectProps } from 'antd';
|
| 4 |
import { TreeSelect } from 'antd';
|
| 5 |
import { useCallback, useEffect, useState } from 'react';
|
| 6 |
+
import { useTranslation } from 'react-i18next';
|
| 7 |
|
| 8 |
type DefaultOptionType = GetProp<TreeSelectProps, 'treeData'>[number];
|
| 9 |
|
|
|
|
| 13 |
}
|
| 14 |
|
| 15 |
const AsyncTreeSelect = ({ value, onChange }: IProps) => {
|
| 16 |
+
const { t } = useTranslation();
|
| 17 |
const { fetchList } = useFetchPureFileList();
|
| 18 |
const [treeData, setTreeData] = useState<Omit<DefaultOptionType, 'label'>[]>(
|
| 19 |
[],
|
|
|
|
| 32 |
pId: x.parent_id,
|
| 33 |
value: x.id,
|
| 34 |
title: x.name,
|
| 35 |
+
isLeaf:
|
| 36 |
+
typeof x.has_child_folder === 'boolean'
|
| 37 |
+
? !x.has_child_folder
|
| 38 |
+
: false,
|
| 39 |
})),
|
| 40 |
);
|
| 41 |
});
|
|
|
|
| 58 |
style={{ width: '100%' }}
|
| 59 |
value={value}
|
| 60 |
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
|
| 61 |
+
placeholder={t('fileManager.pleaseSelect')}
|
| 62 |
onChange={handleChange}
|
| 63 |
loadData={onLoadData}
|
| 64 |
treeData={treeData}
|