2024-07-14 14:41:05 +03:00
|
|
|
import { VscDebugStart } from 'react-icons/vsc';
|
|
|
|
import { Handle, Position } from 'reactflow';
|
|
|
|
|
2024-07-23 23:04:21 +03:00
|
|
|
import { IconDestroy, IconEdit2 } from '@/components/Icons';
|
2024-07-14 14:41:05 +03:00
|
|
|
import MiniButton from '@/components/ui/MiniButton.tsx';
|
|
|
|
|
|
|
|
import { useOssEdit } from '../OssEditContext';
|
|
|
|
interface OperationNodeProps {
|
|
|
|
id: string;
|
2024-07-23 23:04:21 +03:00
|
|
|
data: {
|
|
|
|
label: string;
|
|
|
|
};
|
2024-07-14 14:41:05 +03:00
|
|
|
}
|
|
|
|
|
2024-07-23 23:04:21 +03:00
|
|
|
function OperationNode({ id, data }: OperationNodeProps) {
|
2024-07-14 14:41:05 +03:00
|
|
|
const controller = useOssEdit();
|
|
|
|
console.log(controller.isMutable);
|
|
|
|
|
|
|
|
const handleDelete = () => {
|
|
|
|
console.log('delete node ' + id);
|
|
|
|
// onDelete(id);
|
|
|
|
};
|
|
|
|
|
|
|
|
const handleEditOperation = () => {
|
|
|
|
console.log('edit operation ' + id);
|
|
|
|
//controller.selectNode(id);
|
|
|
|
//controller.showSynthesis();
|
|
|
|
};
|
|
|
|
|
|
|
|
const handleRunOperation = () => {
|
|
|
|
console.log('run operation');
|
|
|
|
// controller.singleSynthesis(id);
|
|
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
|
|
<>
|
2024-07-23 23:04:21 +03:00
|
|
|
<Handle type='source' position={Position.Bottom} />
|
|
|
|
<div className='flex justify-between'>
|
|
|
|
<div className='flex-grow text-center'>{data.label}</div>
|
|
|
|
<div className='cc-icons'>
|
|
|
|
<MiniButton
|
|
|
|
icon={<IconEdit2 className='icon-primary' size='1rem' />}
|
|
|
|
title='Редактировать'
|
|
|
|
onClick={() => {
|
|
|
|
handleEditOperation();
|
|
|
|
}}
|
|
|
|
/>
|
2024-07-14 14:41:05 +03:00
|
|
|
<MiniButton
|
|
|
|
className='float-right'
|
2024-07-23 23:04:21 +03:00
|
|
|
icon={<VscDebugStart className='icon-green' size='1rem' />}
|
2024-07-14 14:41:05 +03:00
|
|
|
title='Синтез'
|
|
|
|
onClick={() => handleRunOperation()}
|
|
|
|
/>
|
|
|
|
<MiniButton
|
2024-07-23 23:04:21 +03:00
|
|
|
icon={<IconDestroy className='icon-red' size='1rem' />}
|
|
|
|
title='Удалить операцию'
|
|
|
|
onClick={handleDelete}
|
2024-07-14 14:41:05 +03:00
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2024-07-23 23:04:21 +03:00
|
|
|
<Handle type='target' position={Position.Top} id='left' style={{ left: 40 }} />
|
|
|
|
<Handle type='target' position={Position.Top} id='right' style={{ right: 40, left: 'auto' }} />
|
2024-07-14 14:41:05 +03:00
|
|
|
</>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default OperationNode;
|