Skip to content

Commit

Permalink
Signaled the relavent field, when column options have changed, for all
Browse files Browse the repository at this point in the history
the children of a table.
  • Loading branch information
asheshv committed Sep 19, 2024
1 parent f378fcb commit 110c23b
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,14 @@ class ExclusionColHeaderSchema extends BaseUISchema {
return [{
id: 'is_exp', label: gettext('Is expression'), type:'switch', editable: false,
},{
id: 'column', label: gettext('Column'), type: 'select', editable: false,
options: this.columns, deps: ['is_exp'],
optionsReloadBasis: this.columns?.map ? _.join(this.columns.map((c)=>c.label), ',') : null,
optionsLoaded: (res)=>this.columnOptions=res,
id: 'column', label: gettext('Column'), editable: false,
options: this.columns, deps: ['is_exp', 'columns_updated_at'],
type: () => ({
type: 'select',
optionsReloadBasis: this.columns?.map ?
_.join(this.columns.map((c)=>c.label), ',') : null,
optionsLoaded: (res)=>this.columnOptions=res,
}),
disabled: (state)=>state.is_exp,
},{
id: 'expression', label: gettext('Expression'), editable: false, deps: ['is_exp'],
Expand Down Expand Up @@ -208,6 +212,7 @@ export default class ExclusionConstraintSchema extends BaseUISchema {
condeferred: undefined,
columns: [],
include: [],
columns_updated_at: 0,
});

this.nodeInfo = nodeInfo;
Expand Down Expand Up @@ -236,6 +241,8 @@ export default class ExclusionConstraintSchema extends BaseUISchema {
changeColumnOptions(columns) {
this.exHeaderSchema.changeColumnOptions(columns);
this.fieldOptions.columns = columns;
if (this.state)
this.state.data = {...this.state.data, columns_updated_at: Date.now()};
}

isReadonly(state) {
Expand Down Expand Up @@ -426,6 +433,9 @@ export default class ExclusionConstraintSchema extends BaseUISchema {
return {include: []};
}
}
}, {
// Don't include this in the data.
id: 'columns_updated_at', exclude: true, type: 'text', visible: false,
}];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class ForeignKeyHeaderSchema extends BaseUISchema {
references: undefined,
referenced: undefined,
_disable_references: false,
columns_updated_at: 0,
});

this.fieldOptions = fieldOptions;
Expand All @@ -56,6 +57,8 @@ class ForeignKeyHeaderSchema extends BaseUISchema {

changeColumnOptions(columns) {
this.fieldOptions.local_column = columns;
if (this.state)
this.state.data = {...this.state.data, columns_updated_at: Date.now()};
}

addDisabled(state) {
Expand Down Expand Up @@ -84,9 +87,15 @@ class ForeignKeyHeaderSchema extends BaseUISchema {
get baseFields() {
let obj = this;
return [{
id: 'local_column', label: gettext('Local column'), type:'select', editable: false,
options: this.fieldOptions.local_column,
optionsReloadBasis: this.fieldOptions.local_column?.map ? _.join(this.fieldOptions.local_column.map((c)=>c.label), ',') : null,
id: 'local_column', label: gettext('Local column'), editable: false,
deps: ['columns_updated_at'],
type: () => ({
type: 'select',
options: this.fieldOptions.local_column,
optionsReloadBasis: this.fieldOptions.local_column?.map ?
_.join(this.fieldOptions.local_column.map((c) => c.label), ',') :
null
}),
},{
id: 'references', label: gettext('References'), type: 'select', editable: false,
options: this.fieldOptions.references,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import _ from 'lodash';
import { isEmptyString } from 'sources/validators';
import { SCHEMA_STATE_ACTIONS } from '../../../../../../../../../../static/js/SchemaView';
import TableSchema from '../../../../static/js/table.ui';


export default class PrimaryKeySchema extends BaseUISchema {
constructor(fieldOptions={}, nodeInfo={}) {
super({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,16 @@ class IndexColHeaderSchema extends BaseUISchema {
is_exp: true,
colname: '',
expression: '',
columns_updated_at: 0,
});

this.columns = columns;
}

changeColumnOptions(columns) {
this.columns = columns;
if (this.state)
this.state.data = {...this.state.data, columns_updated_at: Date.now()};
}

addDisabled(state) {
Expand All @@ -51,14 +54,18 @@ class IndexColHeaderSchema extends BaseUISchema {
return [{
id: 'is_exp', label: gettext('Is expression'), type:'switch', editable: false,
},{
id: 'colname', label: gettext('Column'), type: 'select', editable: false,
options: this.columns, deps: ['is_exp'],
optionsReloadBasis: this.columns?.map ? _.join(this.columns.map((c)=>c.label), ',') : null,
optionsLoaded: (res)=>this.columnOptions=res,
disabled: (state)=>state.is_exp, node: 'column',
id: 'colname', label: gettext('Column'), editable: false,
deps: ['is_exp', 'columns_updated_at'],
type: () => ({
type: 'select', options: this.columns,
optionsReloadBasis: this.columns?.map ?
_.join(this.columns.map((c)=>c.label), ',') : null,
optionsLoaded: (res) => this.columnOptions = res,
}),
disabled: (state) => state.is_exp, node: 'column',
},{
id: 'expression', label: gettext('Expression'), editable: false, deps: ['is_exp'],
type: 'sql', disabled: (state)=>!state.is_exp,
id: 'expression', label: gettext('Expression'), editable: false,
deps: ['is_exp'], type: 'sql', disabled: (state)=>!state.is_exp,
}];
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ export class PartitionKeysSchema extends BaseUISchema {
constructor(columns=[], getCollations=[], getOperatorClass=[]) {
super({
key_type: 'column',
columns_updated_at: 0,
});
this.columns = columns;
this.columnsReloadBasis = false;
Expand All @@ -24,6 +25,8 @@ export class PartitionKeysSchema extends BaseUISchema {

changeColumnOptions(columns) {
this.columns = columns;
if (this.state)
this.state.data = {...this.state.data, columns_updated_at: Date.now()};
}

isEditable(state) {
Expand All @@ -40,19 +43,19 @@ export class PartitionKeysSchema extends BaseUISchema {
},{
label: gettext('Expression'), value: 'expression',
}],
},{
}, {
id: 'pt_column', label: gettext('Column'), type:'select',
deps: ['key_type', ['columns']],
deps: ['key_type', 'columns_updated_at'],
depChange: (state, source)=>{
if(state.key_type == 'expression' || source[0] == 'columns') {
return {
pt_column: undefined,
};
}
},
cell: ()=>({
cell: () => ({
cell: 'select',
optionsReloadBasis: _.join(obj.columns.map((c)=>c.label), ','),//obj.columnsReloadBasis,
optionsReloadBasis: _.join(obj.columns.map((c) => c.label), ','),
options: obj.columns,
controlProps: {
allowClear: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,9 @@ export default class TableSchema extends BaseUISchema {
}

changeColumnOptions(columns) {
let colOptions = (columns||[]).map((c)=>({label: c.name, value: c.name, image:'icon-column'}));
let colOptions = (columns||[]).map(
(c) => ({label: c.name, value: c.name, image:'icon-column'})
);
this.constraintsObj.changeColumnOptions(colOptions);
this.partitionKeysObj.changeColumnOptions(colOptions);
this.partitionsObj.changeColumnOptions(colOptions);
Expand Down Expand Up @@ -749,7 +751,7 @@ export default class TableSchema extends BaseUISchema {
let typeTable = _.find(obj.ofTypeTables||[], (t)=>t.label==state.typname);
finalCols = typeTable.oftype_columns;
}
resolve(()=>{
resolve(() => {
obj.changeColumnOptions(finalCols);
return {
columns: finalCols,
Expand Down

0 comments on commit 110c23b

Please sign in to comment.