public inbox for [email protected]
help / color / mirror / Atom feedFrom: Nikhil Mohite <[email protected]>
To: pgadmin-hackers <[email protected]>
Subject: [pgAdmin][React]: Port catalog object columns
Date: Wed, 13 Oct 2021 12:47:58 +0530
Message-ID: <CAOBg0AOkz7i=6kWch364sXRSUB6n-6KDQON8_0FDWT1wvpYr3Q@mail.gmail.com> (raw)
Hi Hackers,
Please find the attached patch to port catalog object columns to react.
--
*Thanks & Regards,*
*Nikhil Mohite*
*Software Engineer.*
*EDB Postgres* <https://www.enterprisedb.com/;
*Mob.No: +91-7798364578.*
Attachments:
[application/octet-stream] catalog_object_column.patch (7.1K, 3-catalog_object_column.patch)
download | inline diff:
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js
index 1bad38d2..76e22aaa 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js
@@ -6,6 +6,7 @@
// This software is released under the PostgreSQL Licence
//
//////////////////////////////////////////////////////////////
+import CatalogObjectColumnSchema from './catalog_object_column.ui';
define('pgadmin.node.catalog_object_column', [
'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin',
@@ -41,6 +42,9 @@ define('pgadmin.node.catalog_object_column', [
this.initialized = true;
},
+ getSchema: function() {
+ return new CatalogObjectColumnSchema();
+ },
model: pgAdmin.Browser.Node.Model.extend({
defaults: {
attname: undefined,
@@ -56,24 +60,12 @@ define('pgadmin.node.catalog_object_column', [
schema: [{
id: 'attname', label: gettext('Column'), cell: 'string',
type: 'text', readonly: true,
- },{
- id: 'attowner', label: gettext('Owner'), cell: 'string',
- type: 'text', readonly: true,
},{
id: 'attnum', label: gettext('Position'), cell: 'string',
type: 'text', readonly: true,
},{
id: 'cltype', label: gettext('Data type'), cell: 'string',
group: gettext('Definition'), type: 'text', readonly: true,
- },{
- id: 'collspcname', label: gettext('Collation'), cell: 'string',
- group: gettext('Definition'), type: 'text', readonly: true,
- },{
- id: 'attacl', label: gettext('Privileges'), cell: 'string',
- group: gettext('Security'), type: 'text', readonly: true,
- },{
- id: 'is_sys_obj', label: gettext('System column?'),
- cell:'boolean', type: 'switch', mode: ['properties'],
},{
id: 'description', label: gettext('Comment'), cell: 'string',
type: 'multiline', readonly: true,
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui.js
new file mode 100644
index 00000000..98541eb4
--- /dev/null
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui.js
@@ -0,0 +1,66 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+import gettext from 'sources/gettext';
+import BaseUISchema from 'sources/SchemaView/base_schema.ui';
+
+
+export default class CatalogObjectColumnSchema extends BaseUISchema {
+ constructor(fieldOptions={}, initValues) {
+ super({
+ attname: undefined,
+ attowner: undefined,
+ attnum: undefined,
+ cltype: undefined,
+ collspcname: undefined,
+ attacl: undefined,
+ description: undefined,
+ ...initValues
+ });
+
+ this.fieldOptions = {
+ ...fieldOptions,
+ };
+
+ }
+
+ get idAttribute() {
+ return 'oid';
+ }
+
+ get baseFields() {
+ return [
+ {
+ id: 'attname', label: gettext('Column'), cell: 'string',
+ type: 'text', readonly: true,
+ },{
+ id: 'attowner', label: gettext('Owner'), cell: 'string',
+ type: 'text', readonly: true,
+ },{
+ id: 'attnum', label: gettext('Position'), cell: 'string',
+ type: 'text', readonly: true,
+ },{
+ id: 'cltype', label: gettext('Data type'), cell: 'string',
+ group: gettext('Definition'), type: 'text', readonly: true,
+ },{
+ id: 'collspcname', label: gettext('Collation'), cell: 'string',
+ group: gettext('Definition'), type: 'text', readonly: true,
+ },{
+ id: 'attacl', label: gettext('Privileges'), cell: 'string',
+ group: gettext('Security'), type: 'text', readonly: true,
+ },{
+ id: 'is_sys_obj', label: gettext('System column?'),
+ cell:'boolean', type: 'switch', mode: ['properties'],
+ },{
+ id: 'description', label: gettext('Comment'), cell: 'string',
+ type: 'multiline', readonly: true,
+ }
+ ];
+ }
+}
diff --git a/web/regression/javascript/schema_ui_files/catalog_object_column.ui.spec.js b/web/regression/javascript/schema_ui_files/catalog_object_column.ui.spec.js
new file mode 100644
index 00000000..33bc5485
--- /dev/null
+++ b/web/regression/javascript/schema_ui_files/catalog_object_column.ui.spec.js
@@ -0,0 +1,73 @@
+/////////////////////////////////////////////////////////////
+//
+// pgAdmin 4 - PostgreSQL Tools
+//
+// Copyright (C) 2013 - 2021, The pgAdmin Development Team
+// This software is released under the PostgreSQL Licence
+//
+//////////////////////////////////////////////////////////////
+
+import jasmineEnzyme from 'jasmine-enzyme';
+import React from 'react';
+import '../helper/enzyme.helper';
+import { createMount } from '@material-ui/core/test-utils';
+import pgAdmin from 'sources/pgadmin';
+import {messages} from '../fake_messages';
+import SchemaView from '../../../pgadmin/static/js/SchemaView';
+import CatalogObjectColumn from '../../../pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui';
+
+describe('CatalogObjectColumn', ()=>{
+ let mount;
+ let schemaObj = new CatalogObjectColumn();
+ let getInitData = ()=>Promise.resolve({});
+
+ /* Use createMount so that material ui components gets the required context */
+ /* https://material-ui.com/guides/testing/#api */
+ beforeAll(()=>{
+ mount = createMount();
+ });
+
+ afterAll(() => {
+ mount.cleanUp();
+ });
+
+ beforeEach(()=>{
+ jasmineEnzyme();
+ /* messages used by validators */
+ pgAdmin.Browser = pgAdmin.Browser || {};
+ pgAdmin.Browser.messages = pgAdmin.Browser.messages || messages;
+ pgAdmin.Browser.utils = pgAdmin.Browser.utils || {};
+ });
+
+ it('create', ()=>{
+ mount(<SchemaView
+ formType='dialog'
+ schema={schemaObj}
+ viewHelperProps={{
+ mode: 'create',
+ }}
+ onSave={()=>{}}
+ onClose={()=>{}}
+ onHelp={()=>{}}
+ onEdit={()=>{}}
+ onDataChange={()=>{}}
+ confirmOnCloseReset={false}
+ hasSQL={false}
+ disableSqlHelp={false}
+ />);
+ });
+
+ it('properties', ()=>{
+ mount(<SchemaView
+ formType='tab'
+ schema={schemaObj}
+ getInitData={getInitData}
+ viewHelperProps={{
+ mode: 'properties',
+ }}
+ onHelp={()=>{}}
+ onEdit={()=>{}}
+ />);
+ });
+
+});
view thread (2+ 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]
Subject: Re: [pgAdmin][React]: Port catalog object columns
In-Reply-To: <CAOBg0AOkz7i=6kWch364sXRSUB6n-6KDQON8_0FDWT1wvpYr3Q@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