| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import { useTranslate } from '@/hooks/common-hooks';
- import { useCallback, useMemo } from 'react';
- import { Operator, RestrictedUpstreamMap } from './constant';
- import useGraphStore from './store';
-
- export const useBuildFormSelectOptions = (
- operatorName: Operator,
- selfId?: string, // exclude the current node
- ) => {
- const nodes = useGraphStore((state) => state.nodes);
-
- const buildCategorizeToOptions = useCallback(
- (toList: string[]) => {
- const excludedNodes: Operator[] = [
- Operator.Note,
- ...(RestrictedUpstreamMap[operatorName] ?? []),
- ];
- return nodes
- .filter(
- (x) =>
- excludedNodes.every((y) => y !== x.data.label) &&
- x.id !== selfId &&
- !toList.some((y) => y === x.id), // filter out selected values in other to fields from the current drop-down box options
- )
- .map((x) => ({ label: x.data.name, value: x.id }));
- },
- [nodes, operatorName, selfId],
- );
-
- return buildCategorizeToOptions;
- };
-
- /**
- * dumped
- * @param nodeId
- * @returns
- */
- export const useHandleFormSelectChange = (nodeId?: string) => {
- const { addEdge, deleteEdgeBySourceAndSourceHandle } = useGraphStore(
- (state) => state,
- );
- const handleSelectChange = useCallback(
- (name?: string) => (value?: string) => {
- if (nodeId && name) {
- if (value) {
- addEdge({
- source: nodeId,
- target: value,
- sourceHandle: name,
- targetHandle: null,
- });
- } else {
- // clear selected value
- deleteEdgeBySourceAndSourceHandle({
- source: nodeId,
- sourceHandle: name,
- });
- }
- }
- },
- [addEdge, nodeId, deleteEdgeBySourceAndSourceHandle],
- );
-
- return { handleSelectChange };
- };
-
- export const useBuildSortOptions = () => {
- const { t } = useTranslate('flow');
-
- const options = useMemo(() => {
- return ['data', 'relevance'].map((x) => ({
- value: x,
- label: t(x),
- }));
- }, [t]);
- return options;
- };
|