mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-01-04 03:25:30 +08:00
### What problem does this PR solve? Feat: Display the pipeline on the agent canvas #9869 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
192 lines
4.8 KiB
TypeScript
192 lines
4.8 KiB
TypeScript
import { AgentCategory, AgentQuery } from '@/constants/agent';
|
|
import { NavigateToDataflowResultProps } from '@/pages/dataflow-result/interface';
|
|
import { Routes } from '@/routes';
|
|
import { useCallback } from 'react';
|
|
import { useNavigate, useParams, useSearchParams } from 'umi';
|
|
|
|
export enum QueryStringMap {
|
|
KnowledgeId = 'knowledgeId',
|
|
id = 'id',
|
|
}
|
|
|
|
export const useNavigatePage = () => {
|
|
const navigate = useNavigate();
|
|
const [searchParams] = useSearchParams();
|
|
const { id } = useParams();
|
|
|
|
const navigateToDatasetList = useCallback(() => {
|
|
navigate(Routes.Datasets);
|
|
}, [navigate]);
|
|
|
|
const navigateToDataset = useCallback(
|
|
(id: string) => () => {
|
|
// navigate(`${Routes.DatasetBase}${Routes.DataSetOverview}/${id}`);
|
|
navigate(`${Routes.Dataset}/${id}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
const navigateToDatasetOverview = useCallback(
|
|
(id: string) => () => {
|
|
navigate(`${Routes.DatasetBase}${Routes.DataSetOverview}/${id}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToDataFile = useCallback(
|
|
(id: string) => () => {
|
|
navigate(`${Routes.DatasetBase}${Routes.DatasetBase}/${id}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToHome = useCallback(() => {
|
|
navigate(Routes.Root);
|
|
}, [navigate]);
|
|
|
|
const navigateToProfile = useCallback(() => {
|
|
navigate(Routes.ProfileSetting);
|
|
}, [navigate]);
|
|
|
|
const navigateToOldProfile = useCallback(() => {
|
|
navigate(Routes.UserSetting);
|
|
}, [navigate]);
|
|
|
|
const navigateToChatList = useCallback(() => {
|
|
navigate(Routes.Chats);
|
|
}, [navigate]);
|
|
|
|
const navigateToChat = useCallback(
|
|
(id: string) => () => {
|
|
navigate(`${Routes.Chat}/${id}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToAgents = useCallback(() => {
|
|
navigate(Routes.Agents);
|
|
}, [navigate]);
|
|
|
|
const navigateToAgentList = useCallback(() => {
|
|
navigate(Routes.AgentList);
|
|
}, [navigate]);
|
|
|
|
const navigateToAgent = useCallback(
|
|
(id: string, category?: AgentCategory) => () => {
|
|
navigate(`${Routes.Agent}/${id}?${AgentQuery.Category}=${category}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToDataflow = useCallback(
|
|
(id: string) => () => {
|
|
navigate(`${Routes.DataFlow}/${id}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToAgentLogs = useCallback(
|
|
(id: string) => () => {
|
|
navigate(`${Routes.AgentLogPage}/${id}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToAgentTemplates = useCallback(() => {
|
|
navigate(Routes.AgentTemplates);
|
|
}, [navigate]);
|
|
|
|
const navigateToSearchList = useCallback(() => {
|
|
navigate(Routes.Searches);
|
|
}, [navigate]);
|
|
|
|
const navigateToSearch = useCallback(
|
|
(id: string) => () => {
|
|
navigate(`${Routes.Search}/${id}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToChunkParsedResult = useCallback(
|
|
(id: string, knowledgeId?: string) => () => {
|
|
navigate(
|
|
`${Routes.ParsedResult}/chunks?id=${knowledgeId}&doc_id=${id}`,
|
|
// `${Routes.DataflowResult}?id=${knowledgeId}&doc_id=${id}&type=chunk`,
|
|
);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const getQueryString = useCallback(
|
|
(queryStringKey?: QueryStringMap) => {
|
|
const allQueryString = {
|
|
[QueryStringMap.KnowledgeId]: searchParams.get(
|
|
QueryStringMap.KnowledgeId,
|
|
),
|
|
[QueryStringMap.id]: searchParams.get(QueryStringMap.id),
|
|
};
|
|
if (queryStringKey) {
|
|
return allQueryString[queryStringKey];
|
|
}
|
|
return allQueryString;
|
|
},
|
|
[searchParams],
|
|
);
|
|
|
|
const navigateToChunk = useCallback(
|
|
(route: Routes) => {
|
|
navigate(
|
|
`${route}/${id}?${QueryStringMap.KnowledgeId}=${getQueryString(QueryStringMap.KnowledgeId)}`,
|
|
);
|
|
},
|
|
[getQueryString, id, navigate],
|
|
);
|
|
|
|
const navigateToFiles = useCallback(
|
|
(folderId?: string) => {
|
|
navigate(`${Routes.Files}?folderId=${folderId}`);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
const navigateToDataflowResult = useCallback(
|
|
(props: NavigateToDataflowResultProps) => () => {
|
|
let params: string[] = [];
|
|
Object.keys(props).forEach((key) => {
|
|
if (props[key]) {
|
|
params.push(`${key}=${props[key]}`);
|
|
}
|
|
});
|
|
navigate(
|
|
// `${Routes.ParsedResult}/${id}?${QueryStringMap.KnowledgeId}=${knowledgeId}`,
|
|
`${Routes.DataflowResult}?${params.join('&')}`,
|
|
);
|
|
},
|
|
[navigate],
|
|
);
|
|
|
|
return {
|
|
navigateToDatasetList,
|
|
navigateToDataset,
|
|
navigateToDatasetOverview,
|
|
navigateToHome,
|
|
navigateToProfile,
|
|
navigateToChatList,
|
|
navigateToChat,
|
|
navigateToChunkParsedResult,
|
|
getQueryString,
|
|
navigateToChunk,
|
|
navigateToAgents,
|
|
navigateToAgent,
|
|
navigateToAgentLogs,
|
|
navigateToAgentTemplates,
|
|
navigateToSearchList,
|
|
navigateToSearch,
|
|
navigateToFiles,
|
|
navigateToAgentList,
|
|
navigateToOldProfile,
|
|
navigateToDataflowResult,
|
|
navigateToDataflow,
|
|
navigateToDataFile,
|
|
};
|
|
};
|