diff --git a/package-lock.json b/package-lock.json index 685fee2..9f66e86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "jsonschema": "^1.4.1", "jspdf": "^2.5.1", "lexical": "^0.12.5", - "node-sql-parser": "^4.17.0", + "node-sql-parser": "^5.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hotkeys-hook": "^4.4.1", @@ -1715,6 +1715,11 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/pegjs": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/@types/pegjs/-/pegjs-0.10.6.tgz", + "integrity": "sha512-eLYXDbZWXh2uxf+w8sXS8d6KSoXTswfps6fvCUuVAGN8eRpfe7h9eSRydxiSJvo9Bf+GzifsDOr9TMQlmJdmkw==" + }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -4368,10 +4373,11 @@ "dev": true }, "node_modules/node-sql-parser": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.17.0.tgz", - "integrity": "sha512-3IhovpmUBpcETnoKK/KBdkz2mz53kVG5E1dnqz1QuYvtzdxYZW5xaGGEvW9u6Yyy2ivwR3eUZrn9inmEVef02w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-5.0.0.tgz", + "integrity": "sha512-hkNU1gIT8BNe8vmcsU7uYie0gzow/6AIj5KnGRBJQSZlgEu1NNuLVS11it5gAEdpmvJHelc34BwR439Iela+zQ==", "dependencies": { + "@types/pegjs": "^0.10.0", "big-integer": "^1.6.48" }, "engines": { diff --git a/package.json b/package.json index 875cdbc..fa19917 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "jsonschema": "^1.4.1", "jspdf": "^2.5.1", "lexical": "^0.12.5", - "node-sql-parser": "^4.17.0", + "node-sql-parser": "^5.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hotkeys-hook": "^4.4.1", diff --git a/src/components/EditorHeader/Modal/ImportSource.jsx b/src/components/EditorHeader/Modal/ImportSource.jsx index 1b86454..f5283ab 100644 --- a/src/components/EditorHeader/Modal/ImportSource.jsx +++ b/src/components/EditorHeader/Modal/ImportSource.jsx @@ -1,7 +1,12 @@ -import { Upload, Checkbox } from "@douyinfe/semi-ui"; +import { Upload, Checkbox, Banner } from "@douyinfe/semi-ui"; import { STATUS } from "../../../data/constants"; -export default function ImportSource({ importData, setImportData, setError }) { +export default function ImportSource({ + importData, + setImportData, + error, + setError, +}) { return (
Overwrite existing diagram +
+ {error.type === STATUS.ERROR ? ( + {error.message}
} + /> + ) : error.type === STATUS.OK ? ( + {error.message}
} + /> + ) : ( + error.type === STATUS.WARNING && ( + {error.message}} + /> + ) + )} + ); diff --git a/src/components/EditorHeader/Modal/Modal.jsx b/src/components/EditorHeader/Modal/Modal.jsx index 462503b..f2f870b 100644 --- a/src/components/EditorHeader/Modal/Modal.jsx +++ b/src/components/EditorHeader/Modal/Modal.jsx @@ -114,9 +114,17 @@ export default function Modal({ try { ast = parser.astify(importSource.src, { database: "MySQL" }); } catch (err) { - Toast.error( - "Could not parse the sql file. Make sure there are no syntax errors.", - ); + setError({ + type: STATUS.ERROR, + message: + err.name + + " [Ln " + + err.location.start.line + + ", Col " + + err.location.start.column + + "]: " + + err.message, + }); return; } @@ -124,6 +132,7 @@ export default function Modal({ if (importSource.overwrite) { setTables(d.tables); setRelationships(d.relationships); + setTransform((prev) => ({ ...prev, pan: { x: 0, y: 0 } })); setNotes([]); setAreas([]); setTypes([]); @@ -133,6 +142,7 @@ export default function Modal({ setTables((prev) => [...prev, ...d.tables]); setRelationships((prev) => [...prev, ...d.relationships]); } + setModal(MODAL.NONE); }; const createNewDiagram = (id) => { @@ -167,7 +177,6 @@ export default function Modal({ return; case MODAL.IMPORT_SRC: parseSQLAndLoadDiagram(); - setModal(MODAL.NONE); return; case MODAL.OPEN: if (selectedDiagramId === 0) return; @@ -207,6 +216,7 @@ export default function Modal({ ); diff --git a/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx b/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx index 30b7e33..ae574ba 100644 --- a/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx +++ b/src/components/EditorSidePanel/TablesTab/FieldDetails.jsx @@ -80,7 +80,7 @@ export default function FieldDetails({ data, tid, index }) { undo: editField, redo: { values: data.values }, message: `Edit table field values to "${JSON.stringify( - data.values + data.values, )}"`, }, ]); @@ -123,9 +123,11 @@ export default function FieldDetails({ data, tid, index }) {
Precision
updateField(tid, index, { size: value })} diff --git a/src/components/EditorSidePanel/TablesTab/TableField.jsx b/src/components/EditorSidePanel/TablesTab/TableField.jsx index 71db783..7ffe2da 100644 --- a/src/components/EditorSidePanel/TablesTab/TableField.jsx +++ b/src/components/EditorSidePanel/TablesTab/TableField.jsx @@ -123,7 +123,7 @@ export default function TableField({ data, tid, index }) {