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