diff --git a/packages/web/src/designer/Designer.js b/packages/web/src/designer/Designer.js index 1d96d0ab9..9c198b9d6 100644 --- a/packages/web/src/designer/Designer.js +++ b/packages/web/src/designer/Designer.js @@ -3,6 +3,7 @@ import styled from 'styled-components'; import DesignerTable from './DesignerTable'; import uuidv1 from 'uuid/v1'; import useTheme from '../theme/useTheme'; +import DesignerReference from './DesignerReference'; const Wrapper = styled.div` flex: 1; @@ -10,7 +11,7 @@ const Wrapper = styled.div` `; export default function Designer({ value, onChange }) { - const { tables } = value || {}; + const { tables, references } = value || {}; const theme = useTheme(); const [sourceDragColumn, setSourceDragColumn] = React.useState(null); @@ -66,8 +67,27 @@ export default function Designer({ value, onChange }) { [onChange, value] ); + const handleCreateReference = (source, target) => { + const newValue = { + ...value, + references: [ + ...(value.references || []), + { + designerId: uuidv1(), + source, + target, + }, + ], + }; + + onChange(newValue); + }; + return ( e.preventDefault()} onDrop={handleDrop} theme={theme}> + {(references || []).map((ref) => ( + + ))} {(tables || []).map((table) => ( x.designerId == source.designerId); + const targetTable = tables.find((x) => x.designerId == target.designerId); + if (!sourceTable || !targetTable) return null; + console.log('LINE', sourceTable.left, sourceTable.top, targetTable.left, targetTable.top); + return ( + + + + ); + // return
{source.columnName}
; +} diff --git a/packages/web/src/designer/DesignerTable.js b/packages/web/src/designer/DesignerTable.js index a99a7afcd..85010d816 100644 --- a/packages/web/src/designer/DesignerTable.js +++ b/packages/web/src/designer/DesignerTable.js @@ -82,6 +82,7 @@ export default function DesignerTable({ onChangeTable, onBringToFront, onRemoveTable, + onCreateReference, sourceDragColumn, setSourceDragColumn, targetDragColumn, @@ -213,6 +214,7 @@ export default function DesignerTable({ var data = e.dataTransfer.getData('designer_column_drag_data'); e.preventDefault(); if (!data) return; + onCreateReference(sourceDragColumn, targetDragColumn); setTargetDragColumn(null); setSourceDragColumn(null); }}