Refactor: selection of path to draw for relationships

This commit is contained in:
Francisco-Galindo 2025-01-14 11:08:52 -06:00
parent 413dfa0074
commit cc08f45449
3 changed files with 36 additions and 22 deletions

View File

@ -21,8 +21,28 @@ export default function Relationship({ data }) {
let direction = 1;
let cardinalityStart = "1";
let cardinalityEnd = "1";
let cardinalityvar;
const formats = {
notation: {
default: {
one_to_one: DefaultNotation,
one_to_many: DefaultNotation,
many_to_one: DefaultNotation,
},
crows_foot: {
one_to_one: CrowOO,
one_to_many: CrowOM,
many_to_one: CrowOM,
},
idef1x: {
one_to_one: IDEFZM,
one_to_many: IDEFZM,
many_to_one: IDEFZM,
},
}
}
let format;
switch (data.cardinality) {
// the translated values are to ensure backwards compatibility
case t(Cardinality.MANY_TO_ONE):
@ -33,8 +53,8 @@ export default function Relationship({ data }) {
} else {
cardinalityStart = "(1,*)";
cardinalityEnd = "(1,1)";
cardinalityvar="1";
}
format = formats.notation[settings.notation].many_to_one;
break;
case t(Cardinality.ONE_TO_MANY):
case Cardinality.ONE_TO_MANY:
@ -44,8 +64,8 @@ export default function Relationship({ data }) {
} else {
cardinalityStart = "(1,1)";
cardinalityEnd = "(1,*)";
cardinalityvar="2";
}
format = formats.notation[settings.notation].one_to_many;
break;
case t(Cardinality.ONE_TO_ONE):
case Cardinality.ONE_TO_ONE:
@ -55,10 +75,11 @@ export default function Relationship({ data }) {
} else {
cardinalityStart = "(1,1)";
cardinalityEnd = "(1,1)";
cardinalityvar="3";
}
format = formats.notation[settings.notation].one_to_one;
break;
default:
format = formats.default.one_to_one;
break;
}
@ -140,11 +161,7 @@ export default function Relationship({ data }) {
cursor="pointer"
/>
{CrowOM(pathRef.current,settings.notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd)}
{CrowOO(pathRef.current,settings.notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd)}
{CrowZM(pathRef.current,settings.notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd)}
{DefaultNotation(pathRef.current,settings.notation, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, cardinalityStart, cardinalityEnd)}
{IDEFZM(pathRef.current,settings.notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd)}
{format(pathRef.current, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd)}
</g>
<SideSheet

View File

@ -1,6 +1,6 @@
export function CrowOM(pathRef, notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){
export function CrowOM(pathRef, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){
return(
pathRef && notation === 'crows_foot' && (cardinalityvar==2) &&(
pathRef &&(
<>
<line
x1={cardinalityEndX-(20*direction)}
@ -72,9 +72,9 @@ export function CrowOM(pathRef, notation, cardinalityvar, cardinalityEndX, cardi
)
}
export function CrowOO(pathRef, notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalitySart, cardinalityEnd){
export function CrowOO(pathRef, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalitySart, cardinalityEnd){
return(
pathRef && notation === 'crows_foot' && cardinalityvar==3 &&(
pathRef && (
<>
<line
x1={cardinalityEndX-(15*direction)}
@ -140,9 +140,9 @@ export function CrowOO(pathRef, notation, cardinalityvar, cardinalityEndX, cardi
}
export function CrowZM(pathRef, notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){
export function CrowZM(pathRef, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){
return(
pathRef && notation === 'crows_foot' && (cardinalityvar==1) &&(
pathRef &&(
<>
<circle
cx={cardinalityEndX-24}
@ -214,9 +214,9 @@ export function CrowZM(pathRef, notation, cardinalityvar, cardinalityEndX, cardi
)
}
export function DefaultNotation(pathRef, notation, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, cardinalityStart, cardinalityEnd){
export function DefaultNotation(pathRef, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){
return(
pathRef && notation === 'default' && (
pathRef && (
<>
<circle
cx={cardinalityStartX}
@ -257,9 +257,9 @@ export function DefaultNotation(pathRef, notation, cardinalityEndX, cardinalityE
)
}
export function IDEFZM(pathRef, notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){
export function IDEFZM(pathRef, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){
return(
pathRef && notation === 'idef1x' && (cardinalityvar==1) &&(
pathRef && (
<>
<circle
cx={cardinalityEndX-(3*direction)}

View File

@ -1236,19 +1236,16 @@ export default function ControlPanel({
children: [
{
default_notation: () => {
console.log(settings.notation);
setSettings((prev) => ({ ...prev, notation: "default" }));
},
},
{
crows_foot_notation: () => {
console.log(settings.notation);
setSettings((prev) => ({ ...prev, notation: "crows_foot" }));
},
},
{
idef1x_notation: () => {
console.log(settings.notation);
setSettings((prev) => ({ ...prev, notation: "idef1x" }));
},
},