From e7aedc3ecf5bbb379503ca04f4fdc029dd881c32 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 5 Nov 2024 12:17:11 -0600 Subject: [PATCH 01/18] Permito deployment en un subfolder --- src/App.jsx | 52 ++++++++++++-------------------------------------- vite.config.js | 1 + 2 files changed, 13 insertions(+), 40 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 65aebc60..724154d2 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -13,46 +13,18 @@ import NotFound from "./pages/NotFound"; export default function App() { return ( - - - - } /> - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - } /> - } /> - - + + + + + + + }/> + + ); } diff --git a/vite.config.js b/vite.config.js index 5a33944a..3778a0e5 100644 --- a/vite.config.js +++ b/vite.config.js @@ -3,5 +3,6 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ + base: './', plugins: [react()], }) From 569216114746d683c2f4db55ec14bcbdf58bb3f1 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 5 Nov 2024 12:27:55 -0600 Subject: [PATCH 02/18] Remove vercel/analytics --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 30a1b279..e61fa25d 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "@uiw/codemirror-theme-github": "^4.21.25", "@uiw/codemirror-theme-vscode": "^4.21.25", "@uiw/react-codemirror": "^4.21.25", - "@vercel/analytics": "^1.2.2", "axios": "^1.7.4", "classnames": "^2.5.1", "dexie": "^3.2.4", From ce6d75b0af1bb5bbf2e224a65be3b3d14636f85d Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 5 Nov 2024 12:27:55 -0600 Subject: [PATCH 03/18] Remove vercel/analytics --- src/main.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.jsx b/src/main.jsx index 1e8888d9..eb73c0f9 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,6 +1,5 @@ import ReactDOM from "react-dom/client"; import { LocaleProvider } from "@douyinfe/semi-ui"; -import { Analytics } from "@vercel/analytics/react"; import App from "./App.jsx"; import en_US from "@douyinfe/semi-ui/lib/es/locale/source/en_US"; import "./index.css"; From edacd61cde9abb83fe1bcb57818d1ba41c9cae40 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 5 Nov 2024 12:27:55 -0600 Subject: [PATCH 04/18] Remove vercel/analytics --- src/main.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.jsx b/src/main.jsx index eb73c0f9..f5e198a5 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -9,6 +9,5 @@ const root = ReactDOM.createRoot(document.getElementById("root")); root.render( - , ); From 20a2553b3da1d7b96f7c5c91a31aaa868fdd2637 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 5 Nov 2024 12:57:11 -0600 Subject: [PATCH 05/18] Revert "Permito deployment en un subfolder" This reverts commit e7aedc3ecf5bbb379503ca04f4fdc029dd881c32. --- src/App.jsx | 52 ++++++++++++++++++++++++++++++++++++++------------ vite.config.js | 1 - 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 724154d2..65aebc60 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -13,18 +13,46 @@ import NotFound from "./pages/NotFound"; export default function App() { return ( - - - - - - - }/> - - + + + + } /> + + + + } + /> + + + + } + /> + + + + } + /> + + + + } + /> + } /> + } /> + + ); } diff --git a/vite.config.js b/vite.config.js index 3778a0e5..5a33944a 100644 --- a/vite.config.js +++ b/vite.config.js @@ -3,6 +3,5 @@ import react from '@vitejs/plugin-react' // https://vitejs.dev/config/ export default defineConfig({ - base: './', plugins: [react()], }) From 226b1b3150d2785525fbaa19552578b9cbdb991b Mon Sep 17 00:00:00 2001 From: Patricio2002 Date: Tue, 26 Nov 2024 12:52:38 -0600 Subject: [PATCH 06/18] crowfoot --- src/components/EditorCanvas/Relationship.jsx | 63 ++---- .../EditorCanvas/RelationshipFormat.jsx | 186 ++++++++++++++++++ 2 files changed, 207 insertions(+), 42 deletions(-) create mode 100644 src/components/EditorCanvas/RelationshipFormat.jsx diff --git a/src/components/EditorCanvas/Relationship.jsx b/src/components/EditorCanvas/Relationship.jsx index 9f512a9a..3667aeaa 100644 --- a/src/components/EditorCanvas/Relationship.jsx +++ b/src/components/EditorCanvas/Relationship.jsx @@ -5,6 +5,8 @@ import { useDiagram, useSettings, useLayout, useSelect } from "../../hooks"; import { useTranslation } from "react-i18next"; import { SideSheet } from "@douyinfe/semi-ui"; import RelationshipInfo from "../EditorSidePanel/RelationshipsTab/RelationshipInfo"; +import { CrowOM, CrowOO, CrowZM } from "./RelationshipFormat"; + export default function Relationship({ data }) { const { settings } = useSettings(); @@ -13,26 +15,32 @@ export default function Relationship({ data }) { const { selectedElement, setSelectedElement } = useSelect(); const { t } = useTranslation(); const pathRef = useRef(); - + let direction = 1; let cardinalityStart = "1"; let cardinalityEnd = "1"; + let cardinalityvar; + let type = 10; + let relationshipType=(5,type); switch (data.cardinality) { // the translated values are to ensure backwards compatibility case t(Cardinality.MANY_TO_ONE): case Cardinality.MANY_TO_ONE: cardinalityStart = "n"; - cardinalityEnd = "1"; + cardinalityEnd = "(1,*)"; + cardinalityvar="1"; break; case t(Cardinality.ONE_TO_MANY): case Cardinality.ONE_TO_MANY: cardinalityStart = "1"; cardinalityEnd = "n"; + cardinalityvar="2"; break; case t(Cardinality.ONE_TO_ONE): case Cardinality.ONE_TO_ONE: cardinalityStart = "1"; cardinalityEnd = "1"; + cardinalityvar="3"; break; default: break; @@ -45,13 +53,14 @@ export default function Relationship({ data }) { const cardinalityOffset = 28; + if (pathRef.current) { const pathLength = pathRef.current.getTotalLength(); const point1 = pathRef.current.getPointAtLength(cardinalityOffset); cardinalityStartX = point1.x; cardinalityStartY = point1.y; const point2 = pathRef.current.getPointAtLength( - pathLength - cardinalityOffset, + pathLength, ); cardinalityEndX = point2.x; cardinalityEndY = point2.y; @@ -79,7 +88,9 @@ export default function Relationship({ data }) { .scrollIntoView({ behavior: "smooth" }); } }; - + if (cardinalityEndX < cardinalityStartX){ + direction=-1 + } return ( <> @@ -102,48 +113,16 @@ export default function Relationship({ data }) { stroke="gray" className="group-hover:stroke-sky-700" fill="none" + stroke-dasharray={relationshipType} strokeWidth={2} cursor="pointer" /> - {pathRef.current && settings.showCardinality && ( - <> - - - {cardinalityStart} - - - - {cardinalityEnd} - - - )} + + {CrowOM(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} + {CrowOO(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} + {CrowZM(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} + + + + + + {cardinalityEnd} + + + + + ) + ) +} + +export function CrowOO(pathRef, settings, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd){ + return( + pathRef && settings && cardinalityvar==3 &&( + <> + {console.log(settings) } + + + + + + + + {cardinalityEnd} + + + ) + ) +} + + +export function CrowZM(pathRef, settings, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd){ + return( + pathRef && settings && (cardinalityvar==1) &&( + <> + + + + + {cardinalityEnd} + + + + + ) + ) +} \ No newline at end of file From 2f3972a437fc52a90cf9a756408372d0aef6ff6c Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 3 Dec 2024 11:16:37 -0600 Subject: [PATCH 07/18] =?UTF-8?q?Agregar=20bot=C3=B3n=20para=20cambiar=20d?= =?UTF-8?q?e=20notaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EditorCanvas/Relationship.jsx | 63 +++++++---- .../EditorCanvas/RelationshipFormat.jsx | 102 +++++++++++++++--- src/components/EditorHeader/ControlPanel.jsx | 39 +++++-- 3 files changed, 158 insertions(+), 46 deletions(-) diff --git a/src/components/EditorCanvas/Relationship.jsx b/src/components/EditorCanvas/Relationship.jsx index 3667aeaa..fd4b33ec 100644 --- a/src/components/EditorCanvas/Relationship.jsx +++ b/src/components/EditorCanvas/Relationship.jsx @@ -5,7 +5,7 @@ import { useDiagram, useSettings, useLayout, useSelect } from "../../hooks"; import { useTranslation } from "react-i18next"; import { SideSheet } from "@douyinfe/semi-ui"; import RelationshipInfo from "../EditorSidePanel/RelationshipsTab/RelationshipInfo"; -import { CrowOM, CrowOO, CrowZM } from "./RelationshipFormat"; +import { CrowOM, CrowOO, CrowZM, DefaultNotation } from "./RelationshipFormat"; export default function Relationship({ data }) { @@ -15,32 +15,48 @@ export default function Relationship({ data }) { const { selectedElement, setSelectedElement } = useSelect(); const { t } = useTranslation(); const pathRef = useRef(); + const type = settings.notation === 'default' ? 0 : 10; + const relationshipType=(5,type); + let direction = 1; let cardinalityStart = "1"; let cardinalityEnd = "1"; let cardinalityvar; - let type = 10; - let relationshipType=(5,type); switch (data.cardinality) { // the translated values are to ensure backwards compatibility case t(Cardinality.MANY_TO_ONE): case Cardinality.MANY_TO_ONE: - cardinalityStart = "n"; - cardinalityEnd = "(1,*)"; - cardinalityvar="1"; + if (settings.notation === 'default') { + cardinalityStart = "n"; + cardinalityEnd = "1"; + } else { + cardinalityStart = "(1,*)"; + cardinalityEnd = "(1,1)"; + cardinalityvar="1"; + } break; case t(Cardinality.ONE_TO_MANY): case Cardinality.ONE_TO_MANY: - cardinalityStart = "1"; - cardinalityEnd = "n"; - cardinalityvar="2"; + if (settings.notation === 'default') { + cardinalityStart = "1"; + cardinalityEnd = "n"; + } else { + cardinalityStart = "(1,1)"; + cardinalityEnd = "(1,*)"; + cardinalityvar="2"; + } break; case t(Cardinality.ONE_TO_ONE): case Cardinality.ONE_TO_ONE: - cardinalityStart = "1"; - cardinalityEnd = "1"; - cardinalityvar="3"; + if (settings.notation === 'default') { + cardinalityStart = "1"; + cardinalityEnd = "1"; + } else { + cardinalityStart = "(1,1)"; + cardinalityEnd = "(1,1)"; + cardinalityvar="3"; + } break; default: break; @@ -55,10 +71,14 @@ export default function Relationship({ data }) { if (pathRef.current) { - const pathLength = pathRef.current.getTotalLength(); + const pathLength = settings.notation === 'default' ? + pathRef.current.getTotalLength() - cardinalityOffset: + pathRef.current.getTotalLength(); + const point1 = pathRef.current.getPointAtLength(cardinalityOffset); cardinalityStartX = point1.x; cardinalityStartY = point1.y; + const point2 = pathRef.current.getPointAtLength( pathLength, ); @@ -88,9 +108,11 @@ export default function Relationship({ data }) { .scrollIntoView({ behavior: "smooth" }); } }; - if (cardinalityEndX < cardinalityStartX){ - direction=-1 + + if (settings.notation === 'crows_foot' && cardinalityEndX < cardinalityStartX){ + direction = -1; } + return ( <> @@ -113,16 +135,17 @@ export default function Relationship({ data }) { stroke="gray" className="group-hover:stroke-sky-700" fill="none" - stroke-dasharray={relationshipType} + strokeDasharray={relationshipType} strokeWidth={2} cursor="pointer" /> - {CrowOM(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} - {CrowOO(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} - {CrowZM(pathRef.current,settings.showCardinality, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd)} + {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)} - + + {cardinalityStart} + + {cardinalityEnd} @@ -62,11 +72,10 @@ export function CrowOM(pathRef, settings, cardinalityvar, cardinalityEndX, cardi ) } -export function CrowOO(pathRef, settings, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd){ - return( - pathRef && settings && cardinalityvar==3 &&( - <> - {console.log(settings) } +export function CrowOO(pathRef, notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalitySart, cardinalityEnd){ + return( + pathRef && notation === 'crows_foot' && cardinalityvar==3 &&( + <> - + - + - {cardinalityEnd} + {cardinalitySart} + + + {cardinalityEnd} ) @@ -121,9 +140,9 @@ export function CrowOO(pathRef, settings, cardinalityvar, cardinalityEndX, cardi } -export function CrowZM(pathRef, settings, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityEnd){ - return( - pathRef && settings && (cardinalityvar==1) &&( +export function CrowZM(pathRef, notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){ + return( + pathRef && notation === 'crows_foot' && (cardinalityvar==1) &&( <> + {cardinalityStart} + + {cardinalityEnd} @@ -183,4 +212,47 @@ export function CrowZM(pathRef, settings, cardinalityvar, cardinalityEndX, cardi ) ) -} \ No newline at end of file +} + +export function DefaultNotation(pathRef, notation, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, cardinalityStart, cardinalityEnd){ + return( + pathRef && notation === 'default' && ( + <> + + + {cardinalityStart} + + + + {cardinalityEnd} + + + ) + ) +} diff --git a/src/components/EditorHeader/ControlPanel.jsx b/src/components/EditorHeader/ControlPanel.jsx index 593e69d6..7a4f0d92 100644 --- a/src/components/EditorHeader/ControlPanel.jsx +++ b/src/components/EditorHeader/ControlPanel.jsx @@ -1220,17 +1220,34 @@ export default function ControlPanel({ function: viewGrid, shortcut: "Ctrl+Shift+G", }, - show_cardinality: { - state: settings.showCardinality ? ( - - ) : ( - - ), - function: () => - setSettings((prev) => ({ - ...prev, - showCardinality: !prev.showCardinality, - })), + // show_cardinality: { + // state: settings.showCardinality ? ( + // + // ) : ( + // + // ), + // function: () => + // setSettings((prev) => ({ + // ...prev, + // showCardinality: !prev.showCardinality, + // })), + // }, + notation: { + 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" })); + }, + }, + ], + function: () => {}, }, show_debug_coordinates: { state: settings.showDebugCoordinates ? ( From cd0b29b948cf5d258d519b3257560943cb007e73 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 3 Dec 2024 11:17:27 -0600 Subject: [PATCH 08/18] =?UTF-8?q?Poner=20settings=20por=20default=20para?= =?UTF-8?q?=20la=20notaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/context/SettingsContext.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/context/SettingsContext.jsx b/src/context/SettingsContext.jsx index 7e5a8b97..e6d8f029 100644 --- a/src/context/SettingsContext.jsx +++ b/src/context/SettingsContext.jsx @@ -9,6 +9,7 @@ export const SettingsContext = createContext({ autosave: true, panning: true, showCardinality: true, + notation: "default", tableWidth: tableWidth, showDebugCoordinates: false, }); @@ -22,6 +23,7 @@ export default function SettingsContextProvider({ children }) { autosave: true, panning: true, showCardinality: true, + notation: "default", tableWidth: tableWidth, showDebugCoordinates: false, }); From 3ba00c3f741618714b58ed4d3e09ddc79d6fb222 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 3 Dec 2024 11:17:51 -0600 Subject: [PATCH 09/18] =?UTF-8?q?Agrego=20localizaci=C3=B3n=20para=20ingl?= =?UTF-8?q?=C3=A9s=20y=20espa=C3=B1ol=20de=20selecci=C3=B3n=20de=20notacio?= =?UTF-8?q?nes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/locales/en.js | 3 +++ src/i18n/locales/es.js | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/i18n/locales/en.js b/src/i18n/locales/en.js index cebfac6e..0aff7d0a 100644 --- a/src/i18n/locales/en.js +++ b/src/i18n/locales/en.js @@ -49,6 +49,9 @@ const en = { reset_view: "Reset view", show_grid: "Show grid", show_cardinality: "Show cardinality", + default_notation: "Default notation", + crows_foot_notation: "Crow's foot notation", + notation: "Notation", theme: "Theme", light: "Light", dark: "Dark", diff --git a/src/i18n/locales/es.js b/src/i18n/locales/es.js index d90df154..9df23cd1 100644 --- a/src/i18n/locales/es.js +++ b/src/i18n/locales/es.js @@ -49,6 +49,9 @@ const es = { reset_view: "Restablecer vista", show_grid: "Mostrar cuadrícula", show_cardinality: "Mostrar cardinalidad", + notation: "Notación", + default_notation: "Notación predeterminada", + crows_foot_notation: "Notación Crow's Foot", theme: "Tema", light: "Claro", dark: "Oscuro", From f165b1762c8f577723e47a40ca4de23691fadb95 Mon Sep 17 00:00:00 2001 From: Patricio2002 Date: Mon, 16 Dec 2024 20:53:56 -0600 Subject: [PATCH 10/18] IDEF1x --- .../EditorCanvas/RelationshipFormat.jsx | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/components/EditorCanvas/RelationshipFormat.jsx b/src/components/EditorCanvas/RelationshipFormat.jsx index 04ebc8c1..f7808083 100644 --- a/src/components/EditorCanvas/RelationshipFormat.jsx +++ b/src/components/EditorCanvas/RelationshipFormat.jsx @@ -256,3 +256,41 @@ export function DefaultNotation(pathRef, notation, cardinalityEndX, cardinalityE ) ) } + +export function IDEFZM(pathRef, notation, cardinalityvar, cardinalityEndX, cardinalityEndY, cardinalityStartX, cardinalityStartY, direction, cardinalityStart, cardinalityEnd){ + return( + pathRef && notation === 'idef1x' && (cardinalityvar==1) &&( + <> + + + {cardinalityStart} + + + {cardinalityEnd} + + + ) + ) +} From 4957b6d3199bb3bee85a4a9c1150f1ea0e2e5f25 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 17 Dec 2024 12:50:54 -0600 Subject: [PATCH 11/18] =?UTF-8?q?Agregar=20opci=C3=B3n=20para=20cambiar=20?= =?UTF-8?q?a=20notaci=C3=B3n=20idef1x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EditorCanvas/Relationship.jsx | 5 +++-- src/components/EditorHeader/ControlPanel.jsx | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/EditorCanvas/Relationship.jsx b/src/components/EditorCanvas/Relationship.jsx index fd4b33ec..fb7eb37c 100644 --- a/src/components/EditorCanvas/Relationship.jsx +++ b/src/components/EditorCanvas/Relationship.jsx @@ -5,7 +5,7 @@ import { useDiagram, useSettings, useLayout, useSelect } from "../../hooks"; import { useTranslation } from "react-i18next"; import { SideSheet } from "@douyinfe/semi-ui"; import RelationshipInfo from "../EditorSidePanel/RelationshipsTab/RelationshipInfo"; -import { CrowOM, CrowOO, CrowZM, DefaultNotation } from "./RelationshipFormat"; +import { CrowOM, CrowOO, CrowZM, IDEFZM, DefaultNotation } from "./RelationshipFormat"; export default function Relationship({ data }) { @@ -109,7 +109,7 @@ export default function Relationship({ data }) { } }; - if (settings.notation === 'crows_foot' && cardinalityEndX < cardinalityStartX){ + if ((settings.notation === 'crows_foot' || settings.notation === 'idef1x') && cardinalityEndX < cardinalityStartX){ direction = -1; } @@ -144,6 +144,7 @@ export default function Relationship({ data }) { {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)} ({ ...prev, notation: "crows_foot" })); }, }, + { + idef1x_notation: () => { + console.log(settings.notation); + setSettings((prev) => ({ ...prev, notation: "idef1x" })); + }, + }, ], function: () => {}, }, From 3ac309e073cdfbb1ffd94e2ec84aaab10adf1d06 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 17 Dec 2024 13:00:09 -0600 Subject: [PATCH 12/18] =?UTF-8?q?Agregar=20locale=20para=20men=C3=BA=20de?= =?UTF-8?q?=20elecci=C3=B3n=20de=20IDEF1X?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/locales/en.js | 1 + src/i18n/locales/es.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/i18n/locales/en.js b/src/i18n/locales/en.js index 0aff7d0a..a1e16e10 100644 --- a/src/i18n/locales/en.js +++ b/src/i18n/locales/en.js @@ -51,6 +51,7 @@ const en = { show_cardinality: "Show cardinality", default_notation: "Default notation", crows_foot_notation: "Crow's foot notation", + idef1x_notation: "IDEF1X notation", notation: "Notation", theme: "Theme", light: "Light", diff --git a/src/i18n/locales/es.js b/src/i18n/locales/es.js index 9df23cd1..9f68ec2a 100644 --- a/src/i18n/locales/es.js +++ b/src/i18n/locales/es.js @@ -52,6 +52,7 @@ const es = { notation: "Notación", default_notation: "Notación predeterminada", crows_foot_notation: "Notación Crow's Foot", + idef1x_notation: "Notación IDEF1X", theme: "Tema", light: "Claro", dark: "Oscuro", From 92a25596a1c2f42fb3d9e18bbe74141b5ee8c2b6 Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 14 Jan 2025 11:05:40 -0600 Subject: [PATCH 13/18] Add button to make a relationship a subtype --- src/components/EditorCanvas/Canvas.jsx | 1 + .../RelationshipsTab/RelationshipInfo.jsx | 39 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/components/EditorCanvas/Canvas.jsx b/src/components/EditorCanvas/Canvas.jsx index 2a675167..95665f20 100644 --- a/src/components/EditorCanvas/Canvas.jsx +++ b/src/components/EditorCanvas/Canvas.jsx @@ -435,6 +435,7 @@ export default function Canvas() { tables[linkingLine.startTableId].fields[linkingLine.startFieldId].name }_fk`, id: relationships.length, + subtype: false, }; delete newRelationship.startX; delete newRelationship.startY; diff --git a/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx b/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx index bc184f10..fcd21aea 100644 --- a/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx +++ b/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx @@ -1,4 +1,4 @@ -import { Row, Col, Select, Button, Popover, Table } from "@douyinfe/semi-ui"; +import { Row, Col, Select, Button, Popover, Table, Checkbox } from "@douyinfe/semi-ui"; import { IconDeleteStroked, IconLoopTextStroked, @@ -97,6 +97,30 @@ export default function RelationshipInfo({ data }) { ); }; + const toggleSubtype = () => { + const prevVal = data.subtype; + setUndoStack((prev) => [ + ...prev, + { + action: Action.EDIT, + element: ObjectType.RELATIONSHIP, + rid: data.id, + undo: { subtype: data.subtype }, + redo: { subtype: !data.subtype }, + message: t("edit_relationship", { + refName: data.name, + extra: "[subtype]", + }), + }, + ]); + setRedoStack([]); + setRelationships((prev) => + prev.map((e, idx) => + idx === data.id ? { ...e, subtype: !prevVal } : e, + ), + ); + }; + const changeConstraint = (key, value) => { const undoKey = `${key}Constraint`; setUndoStack((prev) => [ @@ -180,6 +204,19 @@ export default function RelationshipInfo({ data }) { className="w-full" onChange={changeCardinality} /> + + +
{'Subtype'}: +
+ + + + +
+ {console.log(data)}
{t("on_update")}:
From 08a9ff28034c0b6c95071ee246910d7e6d7c2e4f Mon Sep 17 00:00:00 2001 From: Francisco-Galindo Date: Tue, 14 Jan 2025 11:37:03 -0600 Subject: [PATCH 14/18] Add subtype restrictions --- src/components/EditorCanvas/Canvas.jsx | 1 + .../RelationshipsTab/RelationshipInfo.jsx | 41 ++++++++++++++++++- src/data/constants.js | 7 ++++ src/i18n/locales/en.js | 6 +++ src/i18n/locales/es.js | 6 +++ 5 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/components/EditorCanvas/Canvas.jsx b/src/components/EditorCanvas/Canvas.jsx index 95665f20..d74dd632 100644 --- a/src/components/EditorCanvas/Canvas.jsx +++ b/src/components/EditorCanvas/Canvas.jsx @@ -436,6 +436,7 @@ export default function Canvas() { }_fk`, id: relationships.length, subtype: false, + subtype_restriction: "", }; delete newRelationship.startX; delete newRelationship.startY; diff --git a/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx b/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx index fcd21aea..4bd028d4 100644 --- a/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx +++ b/src/components/EditorSidePanel/RelationshipsTab/RelationshipInfo.jsx @@ -6,6 +6,7 @@ import { } from "@douyinfe/semi-icons"; import { Cardinality, + SubtypeRestriction, Constraint, Action, ObjectType, @@ -97,6 +98,29 @@ export default function RelationshipInfo({ data }) { ); }; + const changeSubtypeRestriction = (value) => { + setUndoStack((prev) => [ + ...prev, + { + action: Action.EDIT, + element: ObjectType.RELATIONSHIP, + rid: data.id, + undo: { subtype_restriction: data.subtype_restriction }, + redo: { subtype_restriction: value }, + message: t("edit_relationship", { + refName: data.name, + extra: "[subtype_restriction]", + }), + }, + ]); + setRedoStack([]); + setRelationships((prev) => + prev.map((e, idx) => + idx === data.id ? { ...e, subtype_restriction: value } : e, + ), + ); + }; + const toggleSubtype = () => { const prevVal = data.subtype; setUndoStack((prev) => [ @@ -206,7 +230,7 @@ export default function RelationshipInfo({ data }) { /> -
{'Subtype'}: +
{t("subtype")}:
@@ -216,7 +240,20 @@ export default function RelationshipInfo({ data }) { /> - {console.log(data)} + {data.subtype && + +
{t("subtype_restriction")}:
+