Port columns node under the Catalog Objects in React.

This commit is contained in:
Nikhil Mohite 2021-10-13 12:59:08 +05:30 committed by Akshay Joshi
parent 6c692df118
commit 96ce298789
3 changed files with 143 additions and 12 deletions

View File

@ -6,6 +6,7 @@
// This software is released under the PostgreSQL Licence // This software is released under the PostgreSQL Licence
// //
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////
import CatalogObjectColumnSchema from './catalog_object_column.ui';
define('pgadmin.node.catalog_object_column', [ define('pgadmin.node.catalog_object_column', [
'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin',
@ -41,6 +42,9 @@ define('pgadmin.node.catalog_object_column', [
this.initialized = true; this.initialized = true;
}, },
getSchema: function() {
return new CatalogObjectColumnSchema();
},
model: pgAdmin.Browser.Node.Model.extend({ model: pgAdmin.Browser.Node.Model.extend({
defaults: { defaults: {
attname: undefined, attname: undefined,
@ -56,24 +60,12 @@ define('pgadmin.node.catalog_object_column', [
schema: [{ schema: [{
id: 'attname', label: gettext('Column'), cell: 'string', id: 'attname', label: gettext('Column'), cell: 'string',
type: 'text', readonly: true, type: 'text', readonly: true,
},{
id: 'attowner', label: gettext('Owner'), cell: 'string',
type: 'text', readonly: true,
},{ },{
id: 'attnum', label: gettext('Position'), cell: 'string', id: 'attnum', label: gettext('Position'), cell: 'string',
type: 'text', readonly: true, type: 'text', readonly: true,
},{ },{
id: 'cltype', label: gettext('Data type'), cell: 'string', id: 'cltype', label: gettext('Data type'), cell: 'string',
group: gettext('Definition'), type: 'text', readonly: true, 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', id: 'description', label: gettext('Comment'), cell: 'string',
type: 'multiline', readonly: true, type: 'multiline', readonly: true,

View File

@ -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,
}
];
}
}

View File

@ -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={()=>{}}
/>);
});
});