public inbox for [email protected]
help / color / mirror / Atom feedFrom: Aditya Toshniwal <[email protected]>
To: Akshay Joshi <[email protected]>
Cc: pgadmin-hackers <[email protected]>
Cc: Khushboo Vashi <[email protected]>
Cc: Dave Page <[email protected]>
Subject: Re: [pgAdmin][RM1802] ERD Tool (Beta)
Date: Mon, 25 Jan 2021 19:38:43 +0530
Message-ID: <CAM9w-_=ZgFc3++Yiv60tSGNNkg8mbdNs9awh7ztmwOi9a7y0xQ@mail.gmail.com> (raw)
In-Reply-To: <CANxoLDf4XV9SpbATX=qKjxyfDgKRM50nV8Nqib=vEPtS9TaN_g@mail.gmail.com>
References: <CAM9w-_kowrenfKpiRLYWEpHJOOT2k9zRg6KCVpA0FR4Q=CA4hw@mail.gmail.com>
<CANxoLDda-CPNuU76FM1kOTdhNpRW170fr3FFQnaWxOpG=aeu2A@mail.gmail.com>
<CAFOhELd4JNuX82Vw3ZNdiKHHwBgu+rTdm9RfwY-qNjGkH47taQ@mail.gmail.com>
<CAFOhELdL0-M_itS4z-qNKUq6=RieWqc9UPos=oJTJFjyLrYQQw@mail.gmail.com>
<CAM9w-_kRdox8wvsHTwJ+vTOT2-kY1M4LvWFkm-799pEqJvHMsw@mail.gmail.com>
<CANxoLDcKjG-X=i7mrxVunS3oA+tBM3QmHgJN7y69CzT63y7a9A@mail.gmail.com>
<CAM9w-_=AFpLB-7aUVF2NZn4xRXe0o-LALJSjMsN8yBHqwd19fg@mail.gmail.com>
<CANxoLDcB4=x6qfL3HhW2E30c4N0pDLZtrKooMcocuRePM6v+sA@mail.gmail.com>
<CAM9w-_=Yn9wyEBxV2iBj5CLtyuqohLxD_263Z996jRNioXXGfQ@mail.gmail.com>
<CANxoLDcPBDfvXiPzLQGUL7tFxCkDmRWFD0vyirAQsbHR6Zzfdg@mail.gmail.com>
<CAM9w-_nmJP5aTpLqc02GmhpvDmesF5TCiOJkuR6jzTmgs7SuvQ@mail.gmail.com>
<CANxoLDfWqayrwbZkiCZ2dn+3m75hg+xN+LYzQwqVTb5o=Q21dw@mail.gmail.com>
<CA+OCxowvnkU-5kZK+ccxv_jGX=2Q_uHEGcYEZ9KEieSMnVuYvA@mail.gmail.com>
<CAM9w-_nr1mJdnnGj3UBWNNcJCCcFunOzZTu+_q+PeMWixyUnVA@mail.gmail.com>
<CA+OCxoz7zny2JW3uxft7ZBBeOjm45pWkj_L97Z8n+bUXT3v=OQ@mail.gmail.com>
<CAM9w-_nJDL0v4xb4U6RJNbpL-frSf7zVou4osB3EA9nqx8CyNA@mail.gmail.com>
<CAM9w-_nuo6d-xO1a2PASSBLeb9Q2603cXeoGrqUQioCc1=7x_g@mail.gmail.com>
<CAM9w-_kYsHOi+AEDxVKAEG5z9m=OhisSYfPKTDQjG8ogu03DUA@mail.gmail.com>
<CANxoLDf4XV9SpbATX=qKjxyfDgKRM50nV8Nqib=vEPtS9TaN_g@mail.gmail.com>
Hi,
The attached patch fixes an issue created by existing table name check.
Please review.
On Mon, Jan 25, 2021 at 5:34 PM Akshay Joshi <[email protected]>
wrote:
> Thanks, patch applied.
>
> On Mon, Jan 25, 2021 at 5:18 PM Aditya Toshniwal <
> [email protected]> wrote:
>
>> Hi,
>>
>> Please find the rebased patch from the latest pull.
>>
>> On Mon, Jan 25, 2021 at 5:12 PM Aditya Toshniwal <
>> [email protected]> wrote:
>>
>>> Hi Hackers,
>>>
>>> Attached is the patch to fix below issues in ERD:
>>>
>>> 1. After opening an existing project, the first table is already
>>> selected but edit, clone, delete buttons are disable. Fixed.
>>> 2. ERD project title gets changed when 2 ERD projects are open &
>>> anyone of it edited. Fixed.
>>> 3. Closing ERD tab, does not ask for confirmation pop up. Added.
>>> 4. Shortcut for 'Show more/Fewer details' is missing. Added.
>>> 5. Deleting primary key does not delete associated links. Fixed.
>>> 6. Long table & schema name are getting out of box. Fixed.
>>> 7. Long table name in notes pop-up need re-alignment. Fixed.
>>> 8. Same table name present in ERD/canvas is allowed in Add Table
>>> dialogue. Added validation in the dialog.
>>> 9. Download image option is added, but it is not perfect yet. Image
>>> icons (table, schema, etc.) are not showing up.
>>> 10. Rename panel option should be disabled by default. It should be
>>> enabled for the tools which implement rename functionality.
>>> 11. The Toolbar is not visible in Safari for the ERD tool. Fixed.
>>>
>>> Please review.
>>>
>>> On Thu, Jan 21, 2021 at 4:32 PM Aditya Toshniwal <
>>> [email protected]> wrote:
>>>
>>>> Hi,
>>>>
>>>>
>>>> On Thu, Jan 21, 2021 at 3:08 PM Dave Page <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Thu, Jan 21, 2021 at 4:48 AM Aditya Toshniwal <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi Dave,
>>>>>>
>>>>>> On Wed, Jan 20, 2021 at 9:20 PM Dave Page <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> Where's the Save Image button gone? I know Aditya was removing it
>>>>>>> whilst working on other things, but it's still required for phase 1 release.
>>>>>>>
>>>>>> It was not working 100% right. :(
>>>>>> So I've removed it for the time being. I'm still working on it.
>>>>>>
>>>>>
>>>>> OK, so that work will be completed in time for the build next week?
>>>>>
>>>> I'm trying my best to make it available before release. I'm struggling
>>>> to make it work perfectly.
>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>> On Mon, Jan 18, 2021 at 11:45 AM Akshay Joshi <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Thanks, patch applied.
>>>>>>>>
>>>>>>>> On Mon, Jan 18, 2021 at 5:08 PM Aditya Toshniwal <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> OK, So the changes have worked. But still failing at one more
>>>>>>>>> place.
>>>>>>>>> Attached the patch fixes it.
>>>>>>>>>
>>>>>>>>> On Mon, Jan 18, 2021 at 4:40 PM Akshay Joshi <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Thanks, patch applied.
>>>>>>>>>>
>>>>>>>>>> On Mon, Jan 18, 2021 at 2:58 PM Aditya Toshniwal <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> The jasmine test cases are working fine on my local machine. The
>>>>>>>>>>> test cases are successful on jenkins other than on linux, not sure why.
>>>>>>>>>>> I have made some fixes by looking at the log. Please review and
>>>>>>>>>>> try.
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Jan 18, 2021 at 1:10 PM Akshay Joshi <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Thanks, patch applied.
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Jan 18, 2021 at 10:34 AM Aditya Toshniwal <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Akshay,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I forgot to remove few of the dependencies which are not
>>>>>>>>>>>>> required as of now (may be in future). Attached patch removes those
>>>>>>>>>>>>> dependencies from package.json.
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sat, Jan 16, 2021 at 5:08 PM Akshay Joshi <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks, patch applied.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, Jan 15, 2021 at 7:01 PM Aditya Toshniwal <
>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I've fixed the issues. You can find the comments inline.
>>>>>>>>>>>>>>> I've also added PropTypes for the components for increased
>>>>>>>>>>>>>>> validation.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Jan 12, 2021 at 12:18 PM Khushboo Vashi <
>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi Aditya,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The functionalities and the code looks good to me, however some of the comments as below:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Correct the comments at some places (3 occurrences found in /erd/__init__.py) which mention Schema diff instead of ERD.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Some comments in the JS/JSX file regarding components/functions (For example, IconButton (forwardRef), Bodywidget etc.) would
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> be great help as we all are new to React.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Done. Added comments to the components.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Remove the unused imports (for ex bad_request) in /erd/__init__.py
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Removed.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Remove commented code
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> # req_args = request.args
>>>>>>>>>>>>>>>> # if ('recreate' in req_args and
>>>>>>>>>>>>>>>> # req_args['recreate'] == '1'):
>>>>>>>>>>>>>>>> # connect = False
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Removed.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - TableNode.jsx, below two lines can be combined.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> import { PortModelAlignment, DefaultNodeModel } from
>>>>>>>>>>>>>>>> '@projectstorm/react-diagrams';
>>>>>>>>>>>>>>>> import { PortWidget } from '@projectstorm/react-diagrams';
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Done.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - onImageClick function in BodyWidget.jsx is no use I think, so it should be removed.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I wanted to keep the code as it will be used in future.
>>>>>>>>>>>>>>> Anyway, I've removed the code.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - I got some console errors while adding/editing tables. Refer to the attached screenshot.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I tried but I didn't get any. Looking at the screenshot,
>>>>>>>>>>>>>>> the error is from the underlying library. Can't do much in this.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - In the column Edit Mode, while deleting the primary key, it gives the error, which does not go away with any further modifications.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Fixed.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - While generating the SQL, if the server is disconnected, a proper error message should be thrown, right now some server side error is coming.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It will show connection lost error now. Fixed.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Please remove ... from the menu title (New ERD Project(Beta)...) as it is not opening a dialog.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Done.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - For large data sets, generate ERD hangs.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> It shows the spinner and waits for the response to come
>>>>>>>>>>>>>>> from the back end. I've used the existing table fetching code which is used
>>>>>>>>>>>>>>> at other places. I'll create an RM to improve the back end code for
>>>>>>>>>>>>>>> fetching the tables data which will help the schema diff tool as well.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - Opening the ERD panel in a new window is not working, it opens in the same tab even if you have set the Preference "Open in new browser tab" to True.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Fixed. Added the setting in "Tab settings".
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - No shortcut is provided to open the ERD Tool.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> A shortcut is helpful if we are using it frequently. ERD
>>>>>>>>>>>>>>> tool won't be used that frequently. We already have a
>>>>>>>>>>>>>>> limited number of keys available for shortcuts. I think we should roll out
>>>>>>>>>>>>>>> without shortcut for now. If there is a user demand for it then we can
>>>>>>>>>>>>>>> think of adding it.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> - SonarQube fixes required.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Fixed.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> -
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Suggestion:*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> While removal of the FK link, If any of the table is selected, it is being deleted with FK link.
>>>>>>>>>>>>>>>> Either we should warn the user OR make 2 different buttons for FK removal and table removal as the user may be confused if the selected table is also removed with the FK.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I've added a confirmation dialog which will show the number
>>>>>>>>>>>>>>> of tables and links selected. This way user will know what he has selected
>>>>>>>>>>>>>>> before deleting.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> *Observations:*
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Lodash has been used in this module in place of Underscore,
>>>>>>>>>>>>>>>> though the dependency is already introduced by another module,
>>>>>>>>>>>>>>>> but we have mentioned it in the package.json file, which is
>>>>>>>>>>>>>>>> somewhat not convincing to me.
>>>>>>>>>>>>>>>> Lodash is more advanced than Underscore but we should pick
>>>>>>>>>>>>>>>> anyone as it will be easy to manage.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> TL;DR; we cannot.
>>>>>>>>>>>>>>> lodash is a peer dependency for react-diagrams (and some
>>>>>>>>>>>>>>> existing modules in pgAdmin) so it will come to package.json without
>>>>>>>>>>>>>>> choice. We cannot remove underscore because it is a dependency of backbone.
>>>>>>>>>>>>>>> Underscore is outdated, and I cannot migrate the complete pgAdmin code. So,
>>>>>>>>>>>>>>> I decided to go with 100/0 method. All the new codes will use lodash only
>>>>>>>>>>>>>>> as we'll phase out underscore with time. Just like jQuery vs ReactJS.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Table dialog code is duplicate of the table node, as it was
>>>>>>>>>>>>>>>> difficult to extend it because it was attached to the tree.
>>>>>>>>>>>>>>>> So, we need to keep in mind that while implementing React
>>>>>>>>>>>>>>>> in pgAdmin, the nodes should be properly detached from the tree itself, so
>>>>>>>>>>>>>>>> we can reuse it.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Yes. I agree. We need to separate out data source from UI
>>>>>>>>>>>>>>> going forward with React.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>> Khushboo
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Dec 28, 2020 at 10:53 AM Khushboo Vashi <
>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Fri, Dec 25, 2020 at 4:34 PM Akshay Joshi <
>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi Khushboo,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Can you please review it?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On it.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Fri, Dec 25, 2020 at 3:31 PM Aditya Toshniwal <
>>>>>>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hi Hackers,
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Attached patch introduces ERD Tool(Beta) to pgAdmin.
>>>>>>>>>>>>>>>>>>> Below are the details:
>>>>>>>>>>>>>>>>>>> 1) Create a diagram from scratch or generate for an
>>>>>>>>>>>>>>>>>>> existing DB.
>>>>>>>>>>>>>>>>>>> 2) Generate "Create" DDL from the diagram.
>>>>>>>>>>>>>>>>>>> 3) Save the diagram and resume it later.
>>>>>>>>>>>>>>>>>>> 4) Supports basic table fields, one-to-many
>>>>>>>>>>>>>>>>>>> relationships, many-to-many relationships, adding notes.
>>>>>>>>>>>>>>>>>>> 5) Test cases added with 75-80% test coverage.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Please review.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>>>>> Aditya Toshniwal
>>>>>>>>>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer |
>>>>>>>>>>>>>>>>>>> *edbpostgres.com* <http://edbpostgres.com;
>>>>>>>>>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE"
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>> *Thanks & Regards*
>>>>>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect*
>>>>>>>>>>>>>>>>>> *EDB Postgres <http://edbpostgres.com>*
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> *Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>> Aditya Toshniwal
>>>>>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>>>>>>>>>>>>>>> <http://edbpostgres.com;
>>>>>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE"
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> *Thanks & Regards*
>>>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect*
>>>>>>>>>>>>>> *EDB Postgres <http://edbpostgres.com>*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> *Mobile: +91 976-788-8246*
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Aditya Toshniwal
>>>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>>>>>>>>>>>>> <http://edbpostgres.com;
>>>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE"
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> *Thanks & Regards*
>>>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect*
>>>>>>>>>>>> *EDB Postgres <http://edbpostgres.com>*
>>>>>>>>>>>>
>>>>>>>>>>>> *Mobile: +91 976-788-8246*
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Aditya Toshniwal
>>>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>>>>>>>>>>> <http://edbpostgres.com;
>>>>>>>>>>> "Don't Complain about Heat, Plant a TREE"
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> *Thanks & Regards*
>>>>>>>>>> *Akshay Joshi*
>>>>>>>>>> *pgAdmin Hacker | Principal Software Architect*
>>>>>>>>>> *EDB Postgres <http://edbpostgres.com>*
>>>>>>>>>>
>>>>>>>>>> *Mobile: +91 976-788-8246*
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Thanks,
>>>>>>>>> Aditya Toshniwal
>>>>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>>>>>>>>> <http://edbpostgres.com;
>>>>>>>>> "Don't Complain about Heat, Plant a TREE"
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Thanks & Regards*
>>>>>>>> *Akshay Joshi*
>>>>>>>> *pgAdmin Hacker | Principal Software Architect*
>>>>>>>> *EDB Postgres <http://edbpostgres.com>*
>>>>>>>>
>>>>>>>> *Mobile: +91 976-788-8246*
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dave Page
>>>>>>> Blog: http://pgsnake.blogspot.com
>>>>>>> Twitter: @pgsnake
>>>>>>>
>>>>>>> EDB: http://www.enterprisedb.com
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Thanks,
>>>>>> Aditya Toshniwal
>>>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>>>>>> <http://edbpostgres.com;
>>>>>> "Don't Complain about Heat, Plant a TREE"
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EDB: http://www.enterprisedb.com
>>>>>
>>>>>
>>>>
>>>> --
>>>> Thanks,
>>>> Aditya Toshniwal
>>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>>>> <http://edbpostgres.com;
>>>> "Don't Complain about Heat, Plant a TREE"
>>>>
>>>
>>>
>>> --
>>> Thanks,
>>> Aditya Toshniwal
>>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>>> <http://edbpostgres.com;
>>> "Don't Complain about Heat, Plant a TREE"
>>>
>>
>>
>> --
>> Thanks,
>> Aditya Toshniwal
>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
>> <http://edbpostgres.com;
>> "Don't Complain about Heat, Plant a TREE"
>>
>
>
> --
> *Thanks & Regards*
> *Akshay Joshi*
> *pgAdmin Hacker | Principal Software Architect*
> *EDB Postgres <http://edbpostgres.com>*
>
> *Mobile: +91 976-788-8246*
>
--
Thanks,
Aditya Toshniwal
pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com*
<http://edbpostgres.com;
"Don't Complain about Heat, Plant a TREE"
Attachments:
[application/octet-stream] RM1802.fixes_v3.patch (5.0K, 3-RM1802.fixes_v3.patch)
download | inline diff:
diff --git a/web/pgadmin/tools/erd/static/js/erd_tool/dialogs/TableDialog.js b/web/pgadmin/tools/erd/static/js/erd_tool/dialogs/TableDialog.js
index 2b56ea1c4..3375fdc6f 100644
--- a/web/pgadmin/tools/erd/static/js/erd_tool/dialogs/TableDialog.js
+++ b/web/pgadmin/tools/erd/static/js/erd_tool/dialogs/TableDialog.js
@@ -50,7 +50,7 @@ export default class TableDialog {
return 'entity_dialog';
}
- getDataModel(attributes, existingTables, colTypes, schemas, sVersion) {
+ getDataModel(attributes, isNew, allTables, colTypes, schemas, sVersion) {
let dialogObj = this;
let columnsModel = this.pgBrowser.DataModel.extend({
idAttribute: 'attnum',
@@ -694,7 +694,11 @@ export default class TableDialog {
msg = gettext('Table name cannot be empty.');
this.errorModel.set('name', msg);
return msg;
- } else if(_.findIndex(existingTables, (table)=>table[0]==schema&&table[1]==name) >= 0) {
+ }
+
+ /* Check existing table names */
+ let sameNameCount = _.filter(allTables, (table)=>table[0]==schema&&table[1]==name).length;
+ if(isNew && this.sessAttrs['name'] && sameNameCount > 0 || isNew && sameNameCount > 0) {
msg = gettext('Table name already exists.');
this.errorModel.set('name', msg);
return msg;
@@ -737,9 +741,9 @@ export default class TableDialog {
return Alertify[dialogName];
}
- show(title, attributes, existingTables, colTypes, schemas, sVersion, callback) {
+ show(title, attributes, isNew, allTables, colTypes, schemas, sVersion, callback) {
let dialogTitle = title || gettext('Unknown');
const dialog = this.createOrGetDialog('table_dialog');
- dialog(dialogTitle, this.getDataModel(attributes, existingTables, colTypes, schemas, sVersion), callback).resizeTo(this.pgBrowser.stdW.md, this.pgBrowser.stdH.md);
+ dialog(dialogTitle, this.getDataModel(attributes, isNew, allTables, colTypes, schemas, sVersion), callback).resizeTo(this.pgBrowser.stdW.md, this.pgBrowser.stdH.md);
}
}
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 83f0491d6..1e3eff031 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
@@ -301,12 +301,12 @@ export default class BodyWidget extends React.Component {
getDialog(dialogName) {
if(dialogName === 'entity_dialog') {
- let existingTables = this.diagram.getModel().getNodes().map((node)=>{
+ let allTables = this.diagram.getModel().getNodes().map((node)=>{
return node.getSchemaTableName();
});
- return (title, attributes, callback)=>{
+ return (title, attributes, isNew, callback)=>{
this.props.getDialog(dialogName).show(
- title, attributes, existingTables, this.diagram.getCache('colTypes'), this.diagram.getCache('schemas'), this.state.server_version, callback
+ title, attributes, isNew, allTables, this.diagram.getCache('colTypes'), this.diagram.getCache('schemas'), this.state.server_version, callback
);
};
} else if(dialogName === 'onetomany_dialog' || dialogName === 'manytomany_dialog') {
@@ -335,12 +335,12 @@ export default class BodyWidget extends React.Component {
let dialog = this.getDialog('entity_dialog');
if(node) {
let [schema, table] = node.getSchemaTableName();
- dialog(_.escape(`Table: ${table} (${schema})`), node.getData(), (newData)=>{
+ dialog(_.escape(`Table: ${table} (${schema})`), node.getData(), false, (newData)=>{
node.setData(newData);
this.diagram.repaint();
});
} else {
- dialog('New table', {name: this.diagram.getNextTableName()}, (newData)=>{
+ dialog('New table', {name: this.diagram.getNextTableName()}, true, (newData)=>{
let newNode = this.diagram.addNode(newData);
newNode.setSelected(true);
});
diff --git a/web/regression/javascript/erd/ui_components/body_widget_spec.js b/web/regression/javascript/erd/ui_components/body_widget_spec.js
index 3114ba627..2095ecd90 100644
--- a/web/regression/javascript/erd/ui_components/body_widget_spec.js
+++ b/web/regression/javascript/erd/ui_components/body_widget_spec.js
@@ -252,7 +252,7 @@ describe('ERD BodyWidget', ()=>{
bodyInstance.addEditNode();
expect(tableDialog.show).toHaveBeenCalled();
- let saveCallback = tableDialog.show.calls.mostRecent().args[6];
+ let saveCallback = tableDialog.show.calls.mostRecent().args[7];
let newData = {key: 'value'};
saveCallback(newData);
expect(bodyInstance.diagram.addNode).toHaveBeenCalledWith(newData);
@@ -267,7 +267,7 @@ describe('ERD BodyWidget', ()=>{
bodyInstance.addEditNode(node);
expect(tableDialog.show).toHaveBeenCalled();
- saveCallback = tableDialog.show.calls.mostRecent().args[6];
+ saveCallback = tableDialog.show.calls.mostRecent().args[7];
newData = {key: 'value'};
saveCallback(newData);
expect(node.setData).toHaveBeenCalledWith(newData);
view thread (21+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected]
Subject: Re: [pgAdmin][RM1802] ERD Tool (Beta)
In-Reply-To: <CAM9w-_=ZgFc3++Yiv60tSGNNkg8mbdNs9awh7ztmwOi9a7y0xQ@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox