mirror of
https://github.com/drawdb-io/drawdb.git
synced 2025-09-16 11:12:41 +00:00
Refactor: selection of path to draw for relationships
This commit is contained in:
@@ -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
|
||||||
|
@@ -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)}
|
||||||
|
@@ -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" }));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user