diff --git a/src/components/EditorCanvas/Relationship.jsx b/src/components/EditorCanvas/Relationship.jsx index 9f512a9..3667aea 100644 --- a/src/components/EditorCanvas/Relationship.jsx +++ b/src/components/EditorCanvas/Relationship.jsx @@ -5,6 +5,8 @@ import { useDiagram, useSettings, useLayout, useSelect } from "../../hooks"; import { useTranslation } from "react-i18next"; import { SideSheet } from "@douyinfe/semi-ui"; import RelationshipInfo from "../EditorSidePanel/RelationshipsTab/RelationshipInfo"; +import { CrowOM, CrowOO, CrowZM } from "./RelationshipFormat"; + export default function Relationship({ data }) { const { settings } = useSettings(); @@ -13,26 +15,32 @@ export default function Relationship({ data }) { const { selectedElement, setSelectedElement } = useSelect(); const { t } = useTranslation(); const pathRef = useRef(); - + let direction = 1; let cardinalityStart = "1"; let cardinalityEnd = "1"; + let cardinalityvar; + let type = 10; + let relationshipType=(5,type); switch (data.cardinality) { // the translated values are to ensure backwards compatibility case t(Cardinality.MANY_TO_ONE): case Cardinality.MANY_TO_ONE: cardinalityStart = "n"; - cardinalityEnd = "1"; + cardinalityEnd = "(1,*)"; + cardinalityvar="1"; break; case t(Cardinality.ONE_TO_MANY): case Cardinality.ONE_TO_MANY: cardinalityStart = "1"; cardinalityEnd = "n"; + cardinalityvar="2"; break; case t(Cardinality.ONE_TO_ONE): case Cardinality.ONE_TO_ONE: cardinalityStart = "1"; cardinalityEnd = "1"; + cardinalityvar="3"; break; default: break; @@ -45,13 +53,14 @@ export default function Relationship({ data }) { const cardinalityOffset = 28; + if (pathRef.current) { const pathLength = pathRef.current.getTotalLength(); const point1 = pathRef.current.getPointAtLength(cardinalityOffset); cardinalityStartX = point1.x; cardinalityStartY = point1.y; const point2 = pathRef.current.getPointAtLength( - pathLength - cardinalityOffset, + pathLength, ); cardinalityEndX = point2.x; cardinalityEndY = point2.y; @@ -79,7 +88,9 @@ export default function Relationship({ data }) { .scrollIntoView({ behavior: "smooth" }); } }; - + if (cardinalityEndX < cardinalityStartX){ + direction=-1 + } return ( <> @@ -102,48 +113,16 @@ export default function Relationship({ data }) { stroke="gray" className="group-hover:stroke-sky-700" fill="none" + stroke-dasharray={relationshipType} strokeWidth={2} cursor="pointer" /> - {pathRef.current && settings.showCardinality && ( - <> - - - {cardinalityStart} - - - - {cardinalityEnd} - - - )} + + {CrowOM(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} + {CrowOO(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} + {CrowZM(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} + + + + + + {cardinalityEnd} + + + + + ) + ) +} + +export function CrowOO(pathRef, settings, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd){ + return( + pathRef && settings && cardinalityvar==3 &&( + <> + {console.log(settings) } + + + + + + + + {cardinalityEnd} + + + ) + ) +} + + +export function CrowZM(pathRef, settings, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd){ + return( + pathRef && settings && (cardinalityvar==1) &&( + <> + + + + + {cardinalityEnd} + + + + + ) + ) +} \ No newline at end of file