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 f2de8edb9..3935af360 100644 --- a/web/pgadmin/tools/erd/static/js/erd_tool/ERDCore.js +++ b/web/pgadmin/tools/erd/static/js/erd_tool/ERDCore.js @@ -355,9 +355,14 @@ export default class ERDCore { zoomOut() { let model = this.getEngine().getModel(); - let zoomLevel = model.getZoomLevel(); - if(model && zoomLevel > 25) { - model.setZoomLevel(zoomLevel - 25); + if(model) { + let zoomLevel = model.getZoomLevel(); + zoomLevel -= 25; + /* Don't go belo zoom level 10 */ + if(zoomLevel <= 10) { + zoomLevel = 10; + } + model.setZoomLevel(zoomLevel); this.repaint(); } } diff --git a/web/pgadmin/tools/erd/static/js/erd_tool/ui_components/BodyWidget.jsx b/web/pgadmin/tools/erd/static/js/erd_tool/ui_components/BodyWidget.jsx index 90c284ab8..5451e868f 100644 --- a/web/pgadmin/tools/erd/static/js/erd_tool/ui_components/BodyWidget.jsx +++ b/web/pgadmin/tools/erd/static/js/erd_tool/ui_components/BodyWidget.jsx @@ -235,6 +235,12 @@ export default class BodyWidget extends React.Component { if(this.props.params.gen) { await this.loadTablesData(); } + + window.addEventListener('beforeunload', this.onBeforeUnload.bind(this)); + } + + componentWillUnmount() { + window.removeEventListener('beforeunload', this.onBeforeUnload.bind(this)); } componentDidUpdate() { @@ -348,6 +354,15 @@ export default class BodyWidget extends React.Component { } } + onBeforeUnload(e) { + if(this.state.dirty) { + e.preventDefault(); + e.returnValue = 'prevent'; + } else { + delete e['returnValue']; + } + } + onEditNode() { const selected = this.diagram.getSelectedNodes(); if(selected.length == 1) {