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 direction = 1;
let cardinalityStart = "1"; let cardinalityStart = "1";
let cardinalityEnd = "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) { switch (data.cardinality) {
// the translated values are to ensure backwards compatibility // the translated values are to ensure backwards compatibility
case t(Cardinality.MANY_TO_ONE): case t(Cardinality.MANY_TO_ONE):
@@ -33,8 +53,8 @@ export default function Relationship({ data }) {
} else { } else {
cardinalityStart = "(1,*)"; cardinalityStart = "(1,*)";
cardinalityEnd = "(1,1)"; cardinalityEnd = "(1,1)";
cardinalityvar="1";
} }
format = formats.notation[settings.notation].many_to_one;
break; break;
case t(Cardinality.ONE_TO_MANY): case t(Cardinality.ONE_TO_MANY):
case Cardinality.ONE_TO_MANY: case Cardinality.ONE_TO_MANY:
@@ -44,8 +64,8 @@ export default function Relationship({ data }) {
} else { } else {
cardinalityStart = "(1,1)"; cardinalityStart = "(1,1)";
cardinalityEnd = "(1,*)"; cardinalityEnd = "(1,*)";
cardinalityvar="2";
} }
format = formats.notation[settings.notation].one_to_many;
break; break;
case t(Cardinality.ONE_TO_ONE): case t(Cardinality.ONE_TO_ONE):
case Cardinality.ONE_TO_ONE: case Cardinality.ONE_TO_ONE:
@@ -55,10 +75,11 @@ export default function Relationship({ data }) {
} else { } else {
cardinalityStart = "(1,1)"; cardinalityStart = "(1,1)";
cardinalityEnd = "(1,1)"; cardinalityEnd = "(1,1)";
cardinalityvar="3";
} }
format = formats.notation[settings.notation].one_to_one;
break; break;
default: default:
format = formats.default.one_to_one;
break; break;
} }
@@ -140,11 +161,7 @@ export default function Relationship({ data }) {
cursor="pointer" cursor="pointer"
/> />
{CrowOM(pathRef.current,settings.notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd)} {format(pathRef.current, 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)}
</g> </g>
<SideSheet <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( return(
pathRef && notation === 'crows_foot' && (cardinalityvar==2) &&( pathRef &&(
<> <>
<line <line
x1={cardinalityEndX-(20*direction)} 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( return(
pathRef && notation === 'crows_foot' && cardinalityvar==3 &&( pathRef && (
<> <>
<line <line
x1={cardinalityEndX-(15*direction)} 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( return(
pathRef && notation === 'crows_foot' && (cardinalityvar==1) &&( pathRef &&(
<> <>
<circle <circle
cx={cardinalityEndX-24} 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( return(
pathRef && notation === 'default' && ( pathRef && (
<> <>
<circle <circle
cx={cardinalityStartX} 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( return(
pathRef && notation === 'idef1x' && (cardinalityvar==1) &&( pathRef && (
<> <>
<circle <circle
cx={cardinalityEndX-(3*direction)} cx={cardinalityEndX-(3*direction)}

View File

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