ConceptPortal-public/rsconcept/frontend/src/pages/OssPage/EditorOssGraph/OperationNode.tsx

69 lines
1.9 KiB
TypeScript
Raw Normal View History

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;