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 }) {