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 6730e31ff..e1d64ac1a 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['table']); } 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 e29d6b656..260f1e791 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 @@ -214,7 +214,7 @@ export default class ExclusionConstraintSchema extends BaseUISchema { if(_.isUndefined(this.nodeInfo)) { return true; } - return !_.isUndefined(this.nodeInfo['table']); + return _.isUndefined(this.nodeInfo['table']); } 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 4567355d9..2b76f9ffa 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 @@ -124,7 +124,7 @@ export default class ForeignKeySchema extends BaseUISchema { columns: undefined, confupdtype: 'a', confdeltype: 'a', - autoindex: true, + autoindex: ForeignKeySchema.checkInTable(nodeInfo) ? false : true, coveringindex: undefined, hasindex:undefined, }); @@ -142,10 +142,14 @@ export default class ForeignKeySchema extends BaseUISchema { } get inTable() { - if(_.isUndefined(this.nodeInfo)) { + return ForeignKeySchema.checkInTable(this.nodeInfo); + } + + static checkInTable(nodeInfo) { + if(_.isUndefined(nodeInfo)) { return true; } - return !_.isUndefined(this.nodeInfo['table']); + return _.isUndefined(nodeInfo['table']); } changeColumnOptions(columns) { @@ -231,23 +235,14 @@ export default class ForeignKeySchema extends BaseUISchema { id: 'autoindex', label: gettext('Auto FK index?'), type: 'switch', group: gettext('Definition'), deps: ['name', 'hasindex'], - disabled: (state)=>{ + readonly: (state)=>{ if(!obj.isNew(state)) { return true; } // If we are in table edit mode then if(obj.inTable) { - // user is trying to add new constraint which should allowed for Unique - if(obj.isNew(state)) { - return true; - } - } else { - if(!obj.isNew(state) && state.autoindex && !isEmptyString(state.coveringindex) - && state.hasindex) { - return true; - } - } - if(state.hasindex) { + return true; + } else if(state.hasindex) { return true; } return false; @@ -256,10 +251,9 @@ export default class ForeignKeySchema extends BaseUISchema { if(!obj.isNew(state)) { return {}; } - // If we are in table edit mode then + // If we are in table edit mode if(obj.inTable) { - // user is trying to add new constraint which should allowed for Unique - if(obj.isNew(state)) { + if(obj.isNew(state) && obj.top.isNew()) { return {autoindex: false, coveringindex: ''}; } } @@ -279,12 +273,7 @@ export default class ForeignKeySchema extends BaseUISchema { mode: ['properties', 'create', 'edit'], group: gettext('Definition'), deps:['autoindex', 'hasindex'], disabled: (state)=>{ - if(!obj.isNew(state) && state.autoindex && !isEmptyString(state.coveringindex)) { - return true; - } - if(state.hasindex) { - return true; - } else if(!state.autoindex) { + if(!state.autoindex && !state.hasindex) { return true; } else { return false; @@ -304,7 +293,7 @@ export default class ForeignKeySchema extends BaseUISchema { },{ id: 'columns', label: gettext('Columns'), group: gettext('Columns'), type: 'collection', - mode: ['create', 'edit'], + mode: ['create', 'edit', 'properties'], editable: false, schema: this.fkColumnSchema, headerSchema: this.fkHeaderSchema, headerVisible: (state)=>obj.isNew(state), CustomControl: DataGridViewWithHeaderForm, diff --git a/web/pgadmin/static/js/SchemaView/DataGridView.jsx b/web/pgadmin/static/js/SchemaView/DataGridView.jsx index 2ac17febb..0ffe54b84 100644 --- a/web/pgadmin/static/js/SchemaView/DataGridView.jsx +++ b/web/pgadmin/static/js/SchemaView/DataGridView.jsx @@ -81,7 +81,6 @@ const useStyles = makeStyles((theme)=>({ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', - textAlign: 'center', }, tableCellHeader: { fontWeight: theme.typography.fontWeightBold, diff --git a/web/pgadmin/static/js/Theme/dark.js b/web/pgadmin/static/js/Theme/dark.js index ab8414647..3d5cd3abc 100644 --- a/web/pgadmin/static/js/Theme/dark.js +++ b/web/pgadmin/static/js/Theme/dark.js @@ -59,6 +59,7 @@ export default function(basicSettings) { }, text: { primary: '#d4d4d4', + muted: '#8A8A8A', }, background: { paper: '#212121', diff --git a/web/pgadmin/static/js/Theme/high_contrast.js b/web/pgadmin/static/js/Theme/high_contrast.js index 898589d5b..2d5c6a1b7 100644 --- a/web/pgadmin/static/js/Theme/high_contrast.js +++ b/web/pgadmin/static/js/Theme/high_contrast.js @@ -57,6 +57,7 @@ export default function(basicSettings) { }, text: { primary: '#fff', + muted: '#8b9cad', }, background: { paper: '#010B15', diff --git a/web/pgadmin/static/js/Theme/index.jsx b/web/pgadmin/static/js/Theme/index.jsx index f8adb52f4..b03a04b19 100644 --- a/web/pgadmin/static/js/Theme/index.jsx +++ b/web/pgadmin/static/js/Theme/index.jsx @@ -325,6 +325,11 @@ function getFinalTheme(baseTheme) { } } }, + MuiFormHelperText: { + root: { + color: baseTheme.palette.text.muted, + }, + }, } }, baseTheme); } diff --git a/web/pgadmin/static/js/Theme/standard.js b/web/pgadmin/static/js/Theme/standard.js index 46586f72e..e70861e0f 100644 --- a/web/pgadmin/static/js/Theme/standard.js +++ b/web/pgadmin/static/js/Theme/standard.js @@ -58,6 +58,7 @@ export default function(basicSettings) { }, text: { primary: '#222', + muted: '#646B82', }, background: { paper: '#fff', diff --git a/web/pgadmin/static/js/components/FormComponents.jsx b/web/pgadmin/static/js/components/FormComponents.jsx index 8dac34e2c..7ea4abd56 100644 --- a/web/pgadmin/static/js/components/FormComponents.jsx +++ b/web/pgadmin/static/js/components/FormComponents.jsx @@ -511,7 +511,7 @@ export function InputToggle({cid, value, onChange, options, disabled, readonly, { (options||[]).map((option)=>{ const isSelected = option.value === value; - const isDisabled = disabled || (readonly && isSelected); + const isDisabled = disabled || (readonly && !isSelected); return ( @@ -766,7 +766,7 @@ export function InputSelect({ menuPortalTarget: document.body, styles: styles, inputId: cid, - placeholder: controlProps.placeholder || gettext('Select...'), + placeholder: (readonly || disabled) ? '' : controlProps.placeholder || gettext('Select...'), ...otherProps, ...props }; diff --git a/web/regression/javascript/schema_ui_files/check_constraint.ui.spec.js b/web/regression/javascript/schema_ui_files/check_constraint.ui.spec.js index 33f2ad103..14c64d446 100644 --- a/web/regression/javascript/schema_ui_files/check_constraint.ui.spec.js +++ b/web/regression/javascript/schema_ui_files/check_constraint.ui.spec.js @@ -142,7 +142,6 @@ describe('CheckConstraintSchema', ()=>{ }); /* If partitioned table */ - schemaObj.nodeInfo = {table: {}}; schemaObj.top = { sessData: { is_partitioned: true, diff --git a/web/regression/javascript/schema_ui_files/exclusion_constraint.ui.spec.js b/web/regression/javascript/schema_ui_files/exclusion_constraint.ui.spec.js index af0b2d6e5..2a10e7419 100644 --- a/web/regression/javascript/schema_ui_files/exclusion_constraint.ui.spec.js +++ b/web/regression/javascript/schema_ui_files/exclusion_constraint.ui.spec.js @@ -196,7 +196,6 @@ describe('ExclusionConstraintSchema', ()=>{ it('depChange', ()=>{ let state = {columns: [{local_column: 'id'}]}; - schemaObj.nodeInfo = {table: {}}; expect(getFieldDepChange(schemaObj, 'columns')(state, ['columns', 0], null, { type: SCHEMA_STATE_ACTIONS.DELETE_ROW, oldState: { 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 56893dc76..7f0928b2b 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,6 +171,7 @@ describe('ForeignKeySchema', ()=>{ let state = {columns: [{local_column: 'id'}]}; let actionObj = {oldState:{name: 'fkname'}}; + schemaObj.nodeInfo = {table: {}}; state.autoindex = true; state.name = 'fkname'; expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({ @@ -196,7 +197,8 @@ describe('ForeignKeySchema', ()=>{ expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({}); state.oid = null; - schemaObj.nodeInfo = {table: {}}; + schemaObj.nodeInfo = {}; + schemaObj.top = schemaObj; expect(getFieldDepChange(schemaObj, 'autoindex')(state, null, null, actionObj)).toEqual({ autoindex: false, coveringindex: '',