public inbox for [email protected]  
help / color / mirror / Atom feed
[pgAdmin][RM6837] Foreign key issues in edit mode
2+ messages / 2 participants
[nested] [flat]

* [pgAdmin][RM6837] Foreign key issues in edit mode
@ 2021-10-04 08:37 Aditya Toshniwal <[email protected]>
  2021-10-04 08:58 ` Re: [pgAdmin][RM6837] Foreign key issues in edit mode Akshay Joshi <[email protected]>
  0 siblings, 1 reply; 2+ messages in thread

From: Aditya Toshniwal @ 2021-10-04 08:37 UTC (permalink / raw)
  To: pgadmin-hackers

Hi Hackers,

Attached patch fixes:
1. Couple of foreign key issues in edit mode. Fixes #6837
2. Table "Of type" related issues. Fixes #6825

Please review.

-- 
Thanks,
Aditya Toshniwal
pgAdmin Hacker | Software Architect | *edbpostgres.com*
<http://edbpostgres.com;
"Don't Complain about Heat, Plant a TREE"


Attachments:

  [application/octet-stream] RM6837_6825.patch (8.1K, 3-RM6837_6825.patch)
  download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js
index e1d64ac1a..aaf53dbf4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/check_constraint/static/js/check_constraint.ui.js
@@ -22,7 +22,7 @@ export default class CheckConstraintSchema extends BaseUISchema {
     if(_.isUndefined(this.nodeInfo)) {
       return true;
     }
-    return _.isUndefined(this.nodeInfo['table']);
+    return _.isUndefined(this.nodeInfo['check_constraint']);
   }
 
   isReadonly(state) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js
index 5f64e58cd..e405c0ac9 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/exclusion_constraint/static/js/exclusion_constraint.ui.js
@@ -213,7 +213,7 @@ export default class ExclusionConstraintSchema extends BaseUISchema {
     if(_.isUndefined(this.nodeInfo)) {
       return true;
     }
-    return _.isUndefined(this.nodeInfo['table']);
+    return _.isUndefined(this.nodeInfo['exclusion_constraint']);
   }
 
   initialise(data) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js
index 5c10d077d..979b70706 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/static/js/foreign_key.ui.js
@@ -149,7 +149,7 @@ export default class ForeignKeySchema extends BaseUISchema {
     if(_.isUndefined(nodeInfo)) {
       return true;
     }
-    return _.isUndefined(nodeInfo['table']);
+    return _.isUndefined(nodeInfo['foreign_key']);
   }
 
   changeColumnOptions(columns) {
@@ -222,12 +222,14 @@ export default class ForeignKeySchema extends BaseUISchema {
       id: 'convalidated', label: gettext('Validated?'),
       type: 'switch', group: gettext('Definition'),
       readonly: (state)=>{
-        // If we are in table edit mode then
-        if(obj.inTable && obj.top && !obj.top.isNew()) {
-          return !(_.isUndefined(state.oid) || !state.convalidated);
-        }
-        if(!obj.isNew(state) && obj.origData.convalidated) {
-          return true;
+        if(!obj.isNew(state)) {
+          let origData = {};
+          if(obj.inTable && obj.top) {
+            origData = _.find(obj.top.origData['foreign_key'], (r)=>r.cid == state.cid);
+          } else {
+            origData = obj.origData;
+          }
+          return origData.convalidated;
         }
         return false;
       },
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js
index 8eb67b2cb..52e2ca5a4 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/primary_key.ui.js
@@ -31,7 +31,7 @@ export default class PrimaryKeySchema extends BaseUISchema {
     if(_.isUndefined(this.nodeInfo)) {
       return true;
     }
-    return _.isUndefined(this.nodeInfo['table']);
+    return _.isUndefined(this.nodeInfo['primary_key']);
   }
 
   changeColumnOptions(columns) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js
index 7b91a0b5e..0bdc30719 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/static/js/unique_constraint.ui.js
@@ -32,7 +32,7 @@ export default class UniqueConstraintSchema extends BaseUISchema {
     if(_.isUndefined(this.nodeInfo)) {
       return true;
     }
-    return _.isUndefined(this.nodeInfo['table']);
+    return _.isUndefined(this.nodeInfo['unique_constraint']);
   }
 
   changeColumnOptions(columns) {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js
index 68d1eed93..3344be5d8 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/static/js/table.ui.js
@@ -650,7 +650,12 @@ export default class TableSchema extends BaseUISchema {
             obj.changeColumnOptions(finalCols);
             return {
               columns: finalCols,
-              primary_key: []
+              primary_key: [],
+              foreign_key: [],
+              exclude_constraint: [],
+              unique_constraint: [],
+              partition_keys: [],
+              partitions: [],
             };
           });
         };
diff --git a/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js b/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js
index 7f0928b2b..0bd8c0f94 100644
--- a/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js
+++ b/web/regression/javascript/schema_ui_files/foreign_key.ui.spec.js
@@ -171,7 +171,7 @@ describe('ForeignKeySchema', ()=>{
     let state = {columns: [{local_column: 'id'}]};
     let actionObj = {oldState:{name: 'fkname'}};
 
-    schemaObj.nodeInfo = {table: {}};
+    schemaObj.nodeInfo = {foreign_key: {}};
     state.autoindex = true;
     state.name = 'fkname';
     expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({
@@ -197,7 +197,7 @@ describe('ForeignKeySchema', ()=>{
     expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({});
 
     state.oid = null;
-    schemaObj.nodeInfo = {};
+    schemaObj.nodeInfo = {table: {}};
     schemaObj.top = schemaObj;
     expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({
       autoindex: false,
diff --git a/web/regression/javascript/schema_ui_files/table.ui.spec.js b/web/regression/javascript/schema_ui_files/table.ui.spec.js
index c686e8d86..0ddf9accd 100644
--- a/web/regression/javascript/schema_ui_files/table.ui.spec.js
+++ b/web/regression/javascript/schema_ui_files/table.ui.spec.js
@@ -172,6 +172,11 @@ describe('TableSchema', ()=>{
         expect(depChange()).toEqual({
           columns: oftypeColumns,
           primary_key: [],
+          foreign_key: [],
+          exclude_constraint: [],
+          unique_constraint: [],
+          partition_keys: [],
+          partitions: [],
         });
         expect(schemaObj.changeColumnOptions).toHaveBeenCalledWith(oftypeColumns);
         done();
@@ -208,6 +213,11 @@ describe('TableSchema', ()=>{
         expect(depChange()).toEqual({
           columns: oftypeColumns,
           primary_key: [],
+          foreign_key: [],
+          exclude_constraint: [],
+          unique_constraint: [],
+          partition_keys: [],
+          partitions: [],
         });
         expect(schemaObj.changeColumnOptions).toHaveBeenCalledWith(oftypeColumns);
         done();


^ permalink  raw  reply  [nested|flat] 2+ messages in thread

* Re: [pgAdmin][RM6837] Foreign key issues in edit mode
  2021-10-04 08:37 [pgAdmin][RM6837] Foreign key issues in edit mode Aditya Toshniwal <[email protected]>
@ 2021-10-04 08:58 ` Akshay Joshi <[email protected]>
  0 siblings, 0 replies; 2+ messages in thread

From: Akshay Joshi @ 2021-10-04 08:58 UTC (permalink / raw)
  To: Aditya Toshniwal <[email protected]>; +Cc: pgadmin-hackers

Thanks, the patch applied.

On Mon, Oct 4, 2021 at 2:08 PM Aditya Toshniwal <
[email protected]> wrote:

> Hi Hackers,
>
> Attached patch fixes:
> 1. Couple of foreign key issues in edit mode. Fixes #6837
> 2. Table "Of type" related issues. Fixes #6825
>
> Please review.
>
> --
> Thanks,
> Aditya Toshniwal
> pgAdmin Hacker | Software Architect | *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*


^ permalink  raw  reply  [nested|flat] 2+ messages in thread


end of thread, other threads:[~2021-10-04 08:58 UTC | newest]

Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-10-04 08:37 [pgAdmin][RM6837] Foreign key issues in edit mode Aditya Toshniwal <[email protected]>
2021-10-04 08:58 ` Akshay Joshi <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox