Fix dataset selector to continue scoll if still have data (#17534)

1. controll scoll paging by total
2. show dataset but won't allow them to choose.
This commit is contained in:
Wang Qi
2026-07-29 18:48:47 +08:00
committed by GitHub
parent 2a4e77c5ae
commit 0583f8c79d
2 changed files with 33 additions and 28 deletions

View File

@@ -33,7 +33,7 @@ export function useDisableDifferenceEmbeddingDataset(name: string) {
loading,
handleScroll,
hasNextPage,
} = useFetchKnowledgeList(true, debouncedSearchString);
} = useFetchKnowledgeList(false, debouncedSearchString);
const datasetCacheRef = useRef(new Map<string, IDataset>());
const datasetList = useMemo(() => {
@@ -62,29 +62,29 @@ export function useDisableDifferenceEmbeddingDataset(name: string) {
}, [datasetId, datasetList]);
const nextOptions = useMemo(() => {
const datasetListMap = datasetList
.filter((x) => x.chunk_method !== DocumentParserType.Tag)
.map((item: IDataset) => {
return {
label: item.name,
icon: () => (
<RAGFlowAvatar
className="size-4"
avatar={item.avatar}
name={item.name}
/>
),
suffix: (
<section className="flex gap-2">
<DatasetLabel text={item.nickname} />
<DatasetLabel text={item.embedding_model} />
</section>
),
value: item.id,
disabled:
item.embedding_model !== selectedEmbedId && selectedEmbedId !== '',
};
});
const datasetListMap = datasetList.map((item: IDataset) => {
return {
label: item.name,
icon: () => (
<RAGFlowAvatar
className="size-4"
avatar={item.avatar}
name={item.name}
/>
),
suffix: (
<section className="flex gap-2">
<DatasetLabel text={item.nickname} />
<DatasetLabel text={item.embedding_model} />
</section>
),
value: item.id,
disabled:
item.chunk_count <= 0 ||
item.chunk_method === DocumentParserType.Tag ||
(item.embedding_model !== selectedEmbedId && selectedEmbedId !== ''),
};
});
return datasetListMap;
}, [datasetList, selectedEmbedId]);

View File

@@ -1019,7 +1019,7 @@ export const useFetchKnowledgeList = (
handleScroll: (e: React.UIEvent<HTMLDivElement>) => void;
} => {
const { data, fetchNextPage, hasNextPage, isFetching, isFetchingNextPage } =
useInfiniteQuery<{ items: IDataset[] }>({
useInfiniteQuery<{ items: IDataset[]; total: number }>({
queryKey: KnowledgeListKeys.list(
shouldFilterListWithoutDocument,
keywords,
@@ -1034,10 +1034,15 @@ export const useFetchKnowledgeList = (
page_size: pageSize,
...(keywords ? { ext: { keywords } } : {}),
});
return { items: (data?.data ?? []) as IDataset[] };
return {
items: (data?.data ?? []) as IDataset[],
total: data?.total_datasets ?? 0,
};
},
getNextPageParam: (lastPage, allPages) => {
const loaded = allPages.reduce((total, page) => total + page.items.length, 0);
return loaded < lastPage.total ? allPages.length + 1 : undefined;
},
getNextPageParam: (lastPage, allPages) =>
lastPage.items.length >= pageSize ? allPages.length + 1 : undefined,
});
const list = useMemo(() => {