mirror of
https://github.com/drawdb-io/drawdb.git
synced 2025-05-24 10:29:11 +00:00
Refactor: selection of path to draw for relationships
This commit is contained in:
parent
413dfa0074
commit
cc08f45449
@ -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
|
||||
|
@ -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)}
|
||||
|
@ -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" }));
|
||||
},
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user