Fix frontend
This commit is contained in:
parent
b9ab054a00
commit
fbaf17ea58
|
@ -8,9 +8,12 @@ import { useOssEdit } from '../OssEditContext';
|
||||||
|
|
||||||
interface InputNodeProps {
|
interface InputNodeProps {
|
||||||
id: string;
|
id: string;
|
||||||
|
data: {
|
||||||
|
label: string;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function InputNode({ id }: InputNodeProps) {
|
function InputNode({ id, data }: InputNodeProps) {
|
||||||
const controller = useOssEdit();
|
const controller = useOssEdit();
|
||||||
console.log(controller.isMutable);
|
console.log(controller.isMutable);
|
||||||
|
|
||||||
|
@ -26,29 +29,21 @@ function InputNode({ id }: InputNodeProps) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Handle type='target' position={Position.Bottom} />
|
<Handle type='target' position={Position.Bottom} />
|
||||||
<div>
|
<div className='flex justify-between'>
|
||||||
|
<div className='flex-grow text-center'>{data.label}</div>
|
||||||
|
<div className='cc-icons'>
|
||||||
<MiniButton
|
<MiniButton
|
||||||
className='float-right'
|
|
||||||
icon={<CiSquareRemove className='icon-red' />}
|
|
||||||
title='Удалить'
|
|
||||||
onClick={handleDelete}
|
|
||||||
color={'red'}
|
|
||||||
/>
|
|
||||||
<div>
|
|
||||||
Тип: <strong>Ввод</strong>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
{/* Схема:{controller.getBind(id) === undefined ? '' : controller.getBind(id)} */}
|
|
||||||
<strong>
|
|
||||||
<MiniButton
|
|
||||||
className='float-right'
|
|
||||||
icon={<PiPlugsConnected className='icon-green' />}
|
icon={<PiPlugsConnected className='icon-green' />}
|
||||||
title='Привязать схему'
|
title='Привязать схему'
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
handleClick();
|
handleClick();
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</strong>
|
<MiniButton
|
||||||
|
icon={<CiSquareRemove className='icon-red' size='1rem' />}
|
||||||
|
title='Удалить'
|
||||||
|
onClick={handleDelete}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useCallback, useMemo } from 'react';
|
import { useCallback, useLayoutEffect, useMemo } from 'react';
|
||||||
import {
|
import {
|
||||||
Edge,
|
|
||||||
EdgeChange,
|
EdgeChange,
|
||||||
Node,
|
|
||||||
NodeChange,
|
NodeChange,
|
||||||
NodeTypes,
|
NodeTypes,
|
||||||
ProOptions,
|
ProOptions,
|
||||||
|
@ -30,38 +28,31 @@ function OssFlow() {
|
||||||
const controller = useOssEdit();
|
const controller = useOssEdit();
|
||||||
const viewport = useViewport();
|
const viewport = useViewport();
|
||||||
|
|
||||||
const initialNodes: Node[] = useMemo(
|
const [nodes, setNodes, onNodesChange] = useNodesState([]);
|
||||||
() =>
|
const [edges, setEdges, onEdgesChange] = useEdgesState([]);
|
||||||
!model.schema
|
|
||||||
? []
|
useLayoutEffect(() => {
|
||||||
: model.schema.items.map(operation => ({
|
if (!model.schema) {
|
||||||
|
setNodes([]);
|
||||||
|
setEdges([]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setNodes(
|
||||||
|
model.schema.items.map(operation => ({
|
||||||
id: String(operation.id),
|
id: String(operation.id),
|
||||||
data: { label: operation.alias },
|
data: { label: operation.alias },
|
||||||
position: { x: operation.position_x, y: operation.position_y },
|
position: { x: operation.position_x, y: operation.position_y },
|
||||||
type: operation.operation_type.toString()
|
type: operation.operation_type.toString()
|
||||||
})),
|
}))
|
||||||
[model.schema]
|
|
||||||
);
|
);
|
||||||
// const initialNodes = [
|
setEdges(
|
||||||
// { id: '1', data: { label: '-' }, position: { x: 100, y: 100 } },
|
model.schema.arguments.map((argument, index) => ({
|
||||||
// { id: '2', data: { label: 'Node 2' }, position: { x: 100, y: 200 } }
|
|
||||||
// ];
|
|
||||||
|
|
||||||
const initialEdges: Edge[] = useMemo(
|
|
||||||
() =>
|
|
||||||
!model.schema
|
|
||||||
? []
|
|
||||||
: model.schema.arguments.map((argument, index) => ({
|
|
||||||
id: String(index),
|
id: String(index),
|
||||||
source: String(argument.argument),
|
source: String(argument.argument),
|
||||||
target: String(argument.operation)
|
target: String(argument.operation)
|
||||||
})),
|
}))
|
||||||
[model.schema]
|
|
||||||
);
|
);
|
||||||
// const initialEdges = [{ id: 'e1-2', source: '1', target: '2' }];
|
}, [model.schema, setNodes, setEdges]);
|
||||||
|
|
||||||
const [nodes, onNodesChange] = useNodesState<Node>(initialNodes);
|
|
||||||
const [edges, onEdgesChange] = useEdgesState<Edge>(initialEdges);
|
|
||||||
|
|
||||||
const getPositions = useCallback(
|
const getPositions = useCallback(
|
||||||
() =>
|
() =>
|
||||||
|
@ -75,7 +66,6 @@ function OssFlow() {
|
||||||
|
|
||||||
const handleNodesChange = useCallback(
|
const handleNodesChange = useCallback(
|
||||||
(changes: NodeChange[]) => {
|
(changes: NodeChange[]) => {
|
||||||
// @ts-expect-error TODO: Figure out internal type errors in ReactFlow
|
|
||||||
onNodesChange(changes);
|
onNodesChange(changes);
|
||||||
},
|
},
|
||||||
[onNodesChange]
|
[onNodesChange]
|
||||||
|
@ -83,7 +73,6 @@ function OssFlow() {
|
||||||
|
|
||||||
const handleEdgesChange = useCallback(
|
const handleEdgesChange = useCallback(
|
||||||
(changes: EdgeChange[]) => {
|
(changes: EdgeChange[]) => {
|
||||||
// @ts-expect-error TODO: Figure out internal type errors in ReactFlow
|
|
||||||
onEdgesChange(changes);
|
onEdgesChange(changes);
|
||||||
},
|
},
|
||||||
[onEdgesChange]
|
[onEdgesChange]
|
||||||
|
@ -116,6 +105,8 @@ function OssFlow() {
|
||||||
fitView
|
fitView
|
||||||
proOptions={proOptions}
|
proOptions={proOptions}
|
||||||
nodeTypes={OssNodeTypes}
|
nodeTypes={OssNodeTypes}
|
||||||
|
maxZoom={2}
|
||||||
|
minZoom={0.75}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
[nodes, edges, proOptions, handleNodesChange, handleEdgesChange, OssNodeTypes]
|
[nodes, edges, proOptions, handleNodesChange, handleEdgesChange, OssNodeTypes]
|
||||||
|
|
|
@ -34,21 +34,22 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.Flow {
|
.react-flow__node-input,
|
||||||
flex-grow: 1;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.react-flow__node-input {
|
|
||||||
border: 1px solid #555;
|
|
||||||
padding: 10px;
|
|
||||||
width: 150px;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.react-flow__node-synthesis {
|
.react-flow__node-synthesis {
|
||||||
border: 1px solid #555;
|
border: 1px solid;
|
||||||
padding: 10px;
|
padding: 2px;
|
||||||
width: 250px;
|
width: 120px;
|
||||||
|
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
background-color: var(--cl-bg-120);
|
||||||
|
|
||||||
|
color: var(--cl-fg-100);
|
||||||
|
border-color: var(--cl-bg-40);
|
||||||
|
background-color: var(--cl-bg-120);
|
||||||
|
|
||||||
|
&.dark {
|
||||||
|
color: var(--cd-fg-100);
|
||||||
|
border-color: var(--cd-bg-40);
|
||||||
|
background-color: var(--cd-bg-120);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user