balibabu
feat: Add hint for operators, round to square, input variable, readable operator ID. #3056 (#3057)
4138aee
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; | |
}; | |