| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import get from 'lodash/get';
- import { useCallback, useMemo } from 'react';
- import { v4 as uuid } from 'uuid';
- import { IGenerateParameter } from '../interface';
- import useGraphStore from '../store';
-
- export const useHandleOperateParameters = (nodeId: string) => {
- const { getNode, updateNodeForm } = useGraphStore((state) => state);
- const node = getNode(nodeId);
- const dataSource: IGenerateParameter[] = useMemo(
- () => get(node, 'data.form.parameters', []) as IGenerateParameter[],
- [node],
- );
-
- const handleComponentIdChange = useCallback(
- (row: IGenerateParameter) => (value: string) => {
- const newData = [...dataSource];
- const index = newData.findIndex((item) => row.id === item.id);
- const item = newData[index];
- newData.splice(index, 1, {
- ...item,
- component_id: value,
- });
-
- updateNodeForm(nodeId, { parameters: newData });
- },
- [updateNodeForm, nodeId, dataSource],
- );
-
- const handleRemove = useCallback(
- (id?: string) => () => {
- const newData = dataSource.filter((item) => item.id !== id);
- updateNodeForm(nodeId, { parameters: newData });
- },
- [updateNodeForm, nodeId, dataSource],
- );
-
- const handleAdd = useCallback(() => {
- updateNodeForm(nodeId, {
- parameters: [
- ...dataSource,
- {
- id: uuid(),
- key: '',
- component_id: undefined,
- },
- ],
- });
- }, [dataSource, nodeId, updateNodeForm]);
-
- const handleSave = (row: IGenerateParameter) => {
- const newData = [...dataSource];
- const index = newData.findIndex((item) => row.id === item.id);
- const item = newData[index];
- newData.splice(index, 1, {
- ...item,
- ...row,
- });
-
- updateNodeForm(nodeId, { parameters: newData });
- };
-
- return {
- handleAdd,
- handleRemove,
- handleComponentIdChange,
- handleSave,
- dataSource,
- };
- };
|