Use i18n keys to store cardinality (#231)

This commit is contained in:
1ilit 2024-09-05 12:28:19 +04:00
parent 7b9d9c21ec
commit 6cd0a691dc
5 changed files with 21 additions and 12 deletions

View File

@ -2,26 +2,32 @@ import { useRef } from "react";
import { Cardinality, ObjectType, Tab } from "../../data/constants"; import { Cardinality, ObjectType, Tab } from "../../data/constants";
import { calcPath } from "../../utils/calcPath"; import { calcPath } from "../../utils/calcPath";
import { useDiagram, useSettings, useLayout, useSelect } from "../../hooks"; import { useDiagram, useSettings, useLayout, useSelect } from "../../hooks";
import { useTranslation } from "react-i18next";
export default function Relationship({ data }) { export default function Relationship({ data }) {
const { settings } = useSettings(); const { settings } = useSettings();
const { tables } = useDiagram(); const { tables } = useDiagram();
const { layout } = useLayout(); const { layout } = useLayout();
const { selectedElement, setSelectedElement } = useSelect(); const { selectedElement, setSelectedElement } = useSelect();
const { t } = useTranslation();
const pathRef = useRef(); const pathRef = useRef();
let cardinalityStart = "1"; let cardinalityStart = "1";
let cardinalityEnd = "1"; let cardinalityEnd = "1";
switch (data.cardinality) { switch (data.cardinality) {
// the translated values are to ensure backwards compatibility
case t(Cardinality.MANY_TO_ONE):
case Cardinality.MANY_TO_ONE: case Cardinality.MANY_TO_ONE:
cardinalityStart = "n"; cardinalityStart = "n";
cardinalityEnd = "1"; cardinalityEnd = "1";
break; break;
case t(Cardinality.ONE_TO_MANY):
case Cardinality.ONE_TO_MANY: case Cardinality.ONE_TO_MANY:
cardinalityStart = "1"; cardinalityStart = "1";
cardinalityEnd = "n"; cardinalityEnd = "n";
break; break;
case t(Cardinality.ONE_TO_ONE):
case Cardinality.ONE_TO_ONE: case Cardinality.ONE_TO_ONE:
cardinalityStart = "1"; cardinalityStart = "1";
cardinalityEnd = "1"; cardinalityEnd = "1";

View File

@ -190,7 +190,7 @@ export default function RelationshipInfo({ data }) {
<div className="font-semibold my-1">{t("cardinality")}:</div> <div className="font-semibold my-1">{t("cardinality")}:</div>
<Select <Select
optionList={Object.values(Cardinality).map((v) => ({ optionList={Object.values(Cardinality).map((v) => ({
label: v, label: t(v),
value: v, value: v,
}))} }))}
value={data.cardinality} value={data.cardinality}

View File

@ -1,5 +1,3 @@
import i18n from "../i18n/i18n";
export const tableThemes = [ export const tableThemes = [
"#f03c3c", "#f03c3c",
"#ff4f81", "#ff4f81",
@ -31,9 +29,9 @@ export const tableFieldHeight = 36;
export const tableColorStripHeight = 7; export const tableColorStripHeight = 7;
export const Cardinality = { export const Cardinality = {
ONE_TO_ONE: i18n.t("one_to_one"), ONE_TO_ONE: "one_to_one",
ONE_TO_MANY: i18n.t("one_to_many"), ONE_TO_MANY: "one_to_many",
MANY_TO_ONE: i18n.t("many_to_one"), MANY_TO_ONE: "many_to_one",
}; };
export const Constraint = { export const Constraint = {

View File

@ -121,21 +121,21 @@ export const diagram = {
startFieldId: 1, startFieldId: 1,
endTableId: 0, endTableId: 0,
endFieldId: 0, endFieldId: 0,
cardinality: "Many to one", cardinality: "many_to_one",
}, },
{ {
startTableId: 2, startTableId: 2,
startFieldId: 2, startFieldId: 2,
endTableId: 1, endTableId: 1,
endFieldId: 0, endFieldId: 0,
cardinality: "One to one", cardinality: "one_to_one",
}, },
{ {
startTableId: 2, startTableId: 2,
startFieldId: 1, startFieldId: 1,
endTableId: 3, endTableId: 3,
endFieldId: 0, endFieldId: 0,
cardinality: "Many to one", cardinality: "many_to_one",
}, },
], ],
}; };

View File

@ -1,13 +1,18 @@
import { Cardinality } from "../../data/constants";
import { dbToTypes } from "../../data/datatypes"; import { dbToTypes } from "../../data/datatypes";
import i18n from "../../i18n/i18n";
export function jsonToMermaid(obj) { export function jsonToMermaid(obj) {
function getMermaidRelationship(relationship) { function getMermaidRelationship(relationship) {
switch (relationship) { switch (relationship) {
case "One to one": case i18n.t(Cardinality.ONE_TO_ONE):
case Cardinality.ONE_TO_ONE:
return "||--||"; return "||--||";
case "One to many": case i18n.t(Cardinality.MANY_TO_ONE_TO_ONE):
case Cardinality.MANY_TO_ONE:
return "||--o{"; return "||--o{";
case "Many to one": case i18n.t(Cardinality.ONE_TO_MANY):
case Cardinality.ONE_TO_MANY:
return "}o--||"; return "}o--||";
default: default:
return "--"; return "--";