mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 16:13:58 +00:00
perspective fixes
This commit is contained in:
@@ -715,6 +715,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
|
|||||||
pureName: this.foreignKey.refTableName,
|
pureName: this.foreignKey.refTableName,
|
||||||
conid: this.databaseConfig.conid,
|
conid: this.databaseConfig.conid,
|
||||||
database: this.databaseConfig.database,
|
database: this.databaseConfig.database,
|
||||||
|
objectTypeField: this.table.objectTypeField,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -743,8 +744,9 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
refTable: TableInfo;
|
refTable: TableInfo;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
public owner: NamedObjectInfo,
|
public table: TableInfo | ViewInfo | CollectionInfo,
|
||||||
public column: PerspectiveDataPatternColumn,
|
public column: PerspectiveDataPatternColumn,
|
||||||
|
public tableColumn: ColumnInfo,
|
||||||
dbs: MultipleDatabaseInfo,
|
dbs: MultipleDatabaseInfo,
|
||||||
config: PerspectiveConfig,
|
config: PerspectiveConfig,
|
||||||
setConfig: ChangePerspectiveConfigFunc,
|
setConfig: ChangePerspectiveConfigFunc,
|
||||||
@@ -848,10 +850,11 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get isSortable() {
|
get isSortable() {
|
||||||
return true;
|
return !this.isChildColumn;
|
||||||
}
|
}
|
||||||
|
|
||||||
get filterType(): FilterType {
|
get filterType(): FilterType {
|
||||||
|
if (this.tableColumn) return getFilterType(this.tableColumn.dataType);
|
||||||
return 'mongo';
|
return 'mongo';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,8 +862,9 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
return this.column.columns.map(
|
return this.column.columns.map(
|
||||||
column =>
|
column =>
|
||||||
new PerspectivePatternColumnNode(
|
new PerspectivePatternColumnNode(
|
||||||
this.owner,
|
this.table,
|
||||||
column,
|
column,
|
||||||
|
this.tableColumn,
|
||||||
this.dbs,
|
this.dbs,
|
||||||
this.config,
|
this.config,
|
||||||
this.setConfig,
|
this.setConfig,
|
||||||
@@ -895,8 +899,8 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
return {
|
return {
|
||||||
columnName: this.columnName,
|
columnName: this.columnName,
|
||||||
filterType: this.filterType,
|
filterType: this.filterType,
|
||||||
pureName: this.owner.pureName,
|
pureName: this.table.pureName,
|
||||||
schemaName: this.owner.schemaName,
|
schemaName: this.table.schemaName,
|
||||||
foreignKey: this.foreignKey,
|
foreignKey: this.foreignKey,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1013,6 +1017,7 @@ export class PerspectiveTableNode extends PerspectiveTreeNode {
|
|||||||
pureName: this.table.pureName,
|
pureName: this.table.pureName,
|
||||||
conid: this.databaseConfig.conid,
|
conid: this.databaseConfig.conid,
|
||||||
database: this.databaseConfig.database,
|
database: this.databaseConfig.database,
|
||||||
|
objectTypeField: this.table.objectTypeField,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1309,6 +1314,7 @@ export function getTableChildPerspectiveNodes(
|
|||||||
? new PerspectivePatternColumnNode(
|
? new PerspectivePatternColumnNode(
|
||||||
table,
|
table,
|
||||||
pattern?.columns?.find(x => x.name == col.columnName),
|
pattern?.columns?.find(x => x.name == col.columnName),
|
||||||
|
col,
|
||||||
dbs,
|
dbs,
|
||||||
config,
|
config,
|
||||||
setConfig,
|
setConfig,
|
||||||
@@ -1338,6 +1344,7 @@ export function getTableChildPerspectiveNodes(
|
|||||||
new PerspectivePatternColumnNode(
|
new PerspectivePatternColumnNode(
|
||||||
table,
|
table,
|
||||||
col,
|
col,
|
||||||
|
null,
|
||||||
dbs,
|
dbs,
|
||||||
config,
|
config,
|
||||||
setConfig,
|
setConfig,
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
ChangePerspectiveConfigFunc,
|
ChangePerspectiveConfigFunc,
|
||||||
PerspectiveConfig,
|
PerspectiveConfig,
|
||||||
PerspectiveDisplay,
|
PerspectiveDisplay,
|
||||||
|
PerspectivePatternColumnNode,
|
||||||
PerspectiveTableColumnNode,
|
PerspectiveTableColumnNode,
|
||||||
PerspectiveTreeNode,
|
PerspectiveTreeNode,
|
||||||
PERSPECTIVE_PAGE_SIZE,
|
PERSPECTIVE_PAGE_SIZE,
|
||||||
@@ -41,6 +42,24 @@
|
|||||||
import { getFilterValueExpression } from 'dbgate-filterparser';
|
import { getFilterValueExpression } from 'dbgate-filterparser';
|
||||||
import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte';
|
import StatusBarTabItem from '../widgets/StatusBarTabItem.svelte';
|
||||||
|
|
||||||
|
const TABS_BY_FIELD = {
|
||||||
|
tables: {
|
||||||
|
text: 'table',
|
||||||
|
tabComponent: 'TableDataTab',
|
||||||
|
icon: 'img table',
|
||||||
|
},
|
||||||
|
views: {
|
||||||
|
text: 'view',
|
||||||
|
tabComponent: 'ViewDataTab',
|
||||||
|
icon: 'img view',
|
||||||
|
},
|
||||||
|
collections: {
|
||||||
|
text: 'collection',
|
||||||
|
tabComponent: 'CollectionDataTab',
|
||||||
|
icon: 'img collection',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const dbg = debug('dbgate:PerspectiveTable');
|
const dbg = debug('dbgate:PerspectiveTable');
|
||||||
export const activator = createActivator('PerspectiveTable', true, ['Designer']);
|
export const activator = createActivator('PerspectiveTable', true, ['Designer']);
|
||||||
|
|
||||||
@@ -210,24 +229,28 @@
|
|||||||
const tableNode = root?.findNodeByDesignerId(tableNodeDesignerId);
|
const tableNode = root?.findNodeByDesignerId(tableNodeDesignerId);
|
||||||
|
|
||||||
if (tableNode?.headerTableAttributes) {
|
if (tableNode?.headerTableAttributes) {
|
||||||
const { pureName, schemaName, conid, database } = tableNode?.headerTableAttributes;
|
const { pureName, schemaName, conid, database, objectTypeField } = tableNode?.headerTableAttributes;
|
||||||
res.push({
|
console.log('objectTypeField', objectTypeField);
|
||||||
text: `Open table ${pureName}`,
|
const tab = TABS_BY_FIELD[objectTypeField];
|
||||||
onClick: () => {
|
if (tab) {
|
||||||
openNewTab({
|
res.push({
|
||||||
title: pureName,
|
text: `Open ${tab.text} ${pureName}`,
|
||||||
icon: 'img table',
|
onClick: () => {
|
||||||
tabComponent: 'TableDataTab',
|
openNewTab({
|
||||||
props: {
|
title: pureName,
|
||||||
schemaName,
|
icon: tab.icon,
|
||||||
pureName,
|
tabComponent: tab.tabComponent,
|
||||||
conid: conid,
|
props: {
|
||||||
database: database,
|
schemaName,
|
||||||
objectTypeField: 'tables',
|
pureName,
|
||||||
},
|
conid: conid,
|
||||||
});
|
database: database,
|
||||||
},
|
objectTypeField,
|
||||||
});
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const setColumnDisplay = type => {
|
const setColumnDisplay = type => {
|
||||||
@@ -291,42 +314,39 @@
|
|||||||
const value = display.rows[rowIndex].rowData[columnIndex];
|
const value = display.rows[rowIndex].rowData[columnIndex];
|
||||||
const { dataNode } = column;
|
const { dataNode } = column;
|
||||||
|
|
||||||
if (dataNode instanceof PerspectiveTableColumnNode) {
|
if (
|
||||||
|
dataNode.filterInfo &&
|
||||||
|
(dataNode instanceof PerspectiveTableColumnNode || dataNode instanceof PerspectivePatternColumnNode)
|
||||||
|
) {
|
||||||
const { table } = dataNode;
|
const { table } = dataNode;
|
||||||
let tabComponent = null;
|
|
||||||
let icon = null;
|
const tab = TABS_BY_FIELD[table.objectTypeField];
|
||||||
let objectTypeField = null;
|
const filterExpression = getFilterValueExpression(
|
||||||
if (dataNode.isTable) {
|
value,
|
||||||
tabComponent = 'TableDataTab';
|
dataNode instanceof PerspectiveTableColumnNode ? dataNode.column.dataType : null
|
||||||
icon = 'img table';
|
);
|
||||||
objectTypeField = 'tables';
|
|
||||||
}
|
if (tab) {
|
||||||
if (dataNode.isView) {
|
|
||||||
tabComponent = 'ViewDataTab';
|
|
||||||
icon = 'img view';
|
|
||||||
objectTypeField = 'views';
|
|
||||||
}
|
|
||||||
if (tabComponent) {
|
|
||||||
res.push({
|
res.push({
|
||||||
text: 'Open filtered table',
|
text: 'Open filtered grid',
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
openNewTab(
|
openNewTab(
|
||||||
{
|
{
|
||||||
title: table.pureName,
|
title: table.pureName,
|
||||||
icon,
|
icon: tab.icon,
|
||||||
tabComponent,
|
tabComponent: tab.tabComponent,
|
||||||
props: {
|
props: {
|
||||||
schemaName: table.schemaName,
|
schemaName: table.schemaName,
|
||||||
pureName: table.pureName,
|
pureName: table.pureName,
|
||||||
conid,
|
conid,
|
||||||
database,
|
database,
|
||||||
objectTypeField,
|
objectTypeField: table.objectTypeField,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
grid: {
|
grid: {
|
||||||
filters: {
|
filters: {
|
||||||
[dataNode.columnName]: getFilterValueExpression(value, dataNode.column.dataType),
|
[dataNode.columnName]: filterExpression,
|
||||||
},
|
},
|
||||||
// isFormView: true,
|
// isFormView: true,
|
||||||
},
|
},
|
||||||
@@ -350,7 +370,7 @@
|
|||||||
...n,
|
...n,
|
||||||
filters: {
|
filters: {
|
||||||
...n.filters,
|
...n.filters,
|
||||||
[dataNode.columnName]: getFilterValueExpression(value, dataNode.column.dataType),
|
[dataNode.columnName]: filterExpression,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
: n
|
: n
|
||||||
|
|||||||
Reference in New Issue
Block a user