2023-12-16 11:39:13 +08:00
|
|
|
import { useState } from "react";
|
2023-12-12 05:11:30 +08:00
|
|
|
import { calcPath } from "../utils";
|
2023-09-19 20:48:17 +08:00
|
|
|
|
|
|
|
export default function Relationship(props) {
|
|
|
|
const [hovered, setHovered] = useState(false);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<g>
|
|
|
|
<defs>
|
|
|
|
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
|
|
<feDropShadow
|
2023-09-19 20:48:18 +08:00
|
|
|
dx="0"
|
|
|
|
dy="0"
|
2023-09-19 20:51:08 +08:00
|
|
|
stdDeviation="4"
|
2023-09-19 20:48:17 +08:00
|
|
|
floodColor="gray"
|
2023-09-19 20:51:08 +08:00
|
|
|
floodOpacity="0.3"
|
2023-09-19 20:48:17 +08:00
|
|
|
/>
|
|
|
|
</filter>
|
|
|
|
</defs>
|
|
|
|
<path
|
|
|
|
d={calcPath(
|
|
|
|
props.data.startX,
|
|
|
|
props.data.endX,
|
|
|
|
props.data.startY,
|
2023-12-28 12:17:48 +08:00
|
|
|
props.data.endY,
|
|
|
|
props.data.startFieldId,
|
|
|
|
props.data.endFieldId
|
2023-09-19 20:48:17 +08:00
|
|
|
)}
|
|
|
|
stroke={hovered ? "blue" : "gray"}
|
|
|
|
fill="none"
|
2023-09-19 20:48:18 +08:00
|
|
|
strokeWidth={2}
|
2023-09-19 20:48:17 +08:00
|
|
|
filter="url(#shadow)"
|
|
|
|
cursor="pointer"
|
|
|
|
onMouseEnter={() => setHovered(true)}
|
|
|
|
onMouseLeave={() => setHovered(false)}
|
|
|
|
/>
|
|
|
|
</g>
|
|
|
|
);
|
|
|
|
}
|