diff --git a/web/pgadmin/tools/erd/static/js/erd_tool/ERDCore.js b/web/pgadmin/tools/erd/static/js/erd_tool/ERDCore.js index 5048ffb3c..29f650eb9 100644 --- a/web/pgadmin/tools/erd/static/js/erd_tool/ERDCore.js +++ b/web/pgadmin/tools/erd/static/js/erd_tool/ERDCore.js @@ -267,11 +267,12 @@ export default class ERDCore { }); } - syncTableLinks(tableNode, oldTableData) { + syncColDrop(tableNode, oldTableData) { let self = this; + if(!oldTableData) { + return; + } let tableData = tableNode.getData(); - const tableNodesDict = this.getModel().getNodesDict(); - /* Remove the links if column dropped or primary key removed */ _.differenceWith(oldTableData.columns, tableData.columns, function(existing, incoming) { if(existing.attnum == incoming.attnum && existing.is_primary_key && !incoming.is_primary_key) { @@ -287,7 +288,13 @@ export default class ERDCore { } tableNode.removePort(existPort); }); + } + syncFkRefNames(tableNode, oldTableData) { + if(!oldTableData) { + return; + } + let tableData = tableNode.getData(); /* Sync the name changes in references FK */ Object.values(tableNode.getPorts()).forEach((port)=>{ if(port.getSubtype() != 'one') { @@ -312,9 +319,17 @@ export default class ERDCore { }); }); }); + } + syncTableLinks(tableNode, oldTableData) { + if(oldTableData) { + this.syncColDrop(tableNode, oldTableData); + this.syncFkRefNames(tableNode, oldTableData); + } /* Sync the changed/removed/added foreign keys */ - tableData = tableNode.getData(); + let tableData = tableNode.getData(); + let tableNodesDict = this.getModel().getNodesDict(); + const addLink = (theFk)=>{ if(!theFk) return; let newData = {