mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 23:45:59 +00:00
filter behaviour refactor
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import type { DatabaseInfo, ForeignKeyInfo, NamedObjectInfo, TableInfo } from 'dbgate-types';
|
import type { DatabaseInfo, FilterBehaviour, ForeignKeyInfo, NamedObjectInfo, TableInfo } from 'dbgate-types';
|
||||||
import uuidv1 from 'uuid/v1';
|
import uuidv1 from 'uuid/v1';
|
||||||
|
|
||||||
// export interface PerspectiveConfigColumns {
|
// export interface PerspectiveConfigColumns {
|
||||||
@@ -31,7 +31,7 @@ export interface PerspectiveCustomJoinConfig {
|
|||||||
|
|
||||||
export interface PerspectiveFilterColumnInfo {
|
export interface PerspectiveFilterColumnInfo {
|
||||||
columnName: string;
|
columnName: string;
|
||||||
filterType: string;
|
filterBehaviour: FilterBehaviour;
|
||||||
pureName: string;
|
pureName: string;
|
||||||
schemaName: string;
|
schemaName: string;
|
||||||
foreignKey: ForeignKeyInfo;
|
foreignKey: ForeignKeyInfo;
|
||||||
|
|||||||
@@ -2,13 +2,14 @@ import type {
|
|||||||
CollectionInfo,
|
CollectionInfo,
|
||||||
ColumnInfo,
|
ColumnInfo,
|
||||||
DatabaseInfo,
|
DatabaseInfo,
|
||||||
|
FilterBehaviour,
|
||||||
ForeignKeyInfo,
|
ForeignKeyInfo,
|
||||||
NamedObjectInfo,
|
NamedObjectInfo,
|
||||||
RangeDefinition,
|
RangeDefinition,
|
||||||
TableInfo,
|
TableInfo,
|
||||||
ViewInfo,
|
ViewInfo,
|
||||||
} from 'dbgate-types';
|
} from 'dbgate-types';
|
||||||
import { equalFullName, isCollectionInfo, isTableInfo, isViewInfo } from 'dbgate-tools';
|
import { detectSqlFilterBehaviour, equalFullName, isCollectionInfo, isTableInfo, isViewInfo, stringFilterBehaviour } from 'dbgate-tools';
|
||||||
import {
|
import {
|
||||||
ChangePerspectiveConfigFunc,
|
ChangePerspectiveConfigFunc,
|
||||||
createPerspectiveNodeConfig,
|
createPerspectiveNodeConfig,
|
||||||
@@ -33,8 +34,7 @@ import _cloneDeepWith from 'lodash/cloneDeepWith';
|
|||||||
import _findIndex from 'lodash/findIndex';
|
import _findIndex from 'lodash/findIndex';
|
||||||
import { PerspectiveDataLoadProps, PerspectiveDataProvider } from './PerspectiveDataProvider';
|
import { PerspectiveDataLoadProps, PerspectiveDataProvider } from './PerspectiveDataProvider';
|
||||||
import stableStringify from 'json-stable-stringify';
|
import stableStringify from 'json-stable-stringify';
|
||||||
import { getFilterType, parseFilter } from 'dbgate-filterparser';
|
import { parseFilter } from 'dbgate-filterparser';
|
||||||
import { FilterType } from 'dbgate-filterparser/lib/types';
|
|
||||||
import { CompoudCondition, Condition, Expression, Select } from 'dbgate-sqltree';
|
import { CompoudCondition, Condition, Expression, Select } from 'dbgate-sqltree';
|
||||||
// import { getPerspectiveDefaultColumns } from './getPerspectiveDefaultColumns';
|
// import { getPerspectiveDefaultColumns } from './getPerspectiveDefaultColumns';
|
||||||
import uuidv1 from 'uuid/v1';
|
import uuidv1 from 'uuid/v1';
|
||||||
@@ -197,8 +197,8 @@ export abstract class PerspectiveTreeNode {
|
|||||||
get columnTitle() {
|
get columnTitle() {
|
||||||
return this.title;
|
return this.title;
|
||||||
}
|
}
|
||||||
get filterType(): FilterType {
|
get filterBehaviour(): FilterBehaviour {
|
||||||
return 'string';
|
return stringFilterBehaviour;
|
||||||
}
|
}
|
||||||
get columnName() {
|
get columnName() {
|
||||||
return null;
|
return null;
|
||||||
@@ -714,8 +714,8 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
get filterType(): FilterType {
|
get filterBehaviour(): FilterBehaviour {
|
||||||
return getFilterType(this.column.dataType);
|
return detectSqlFilterBehaviour(this.column.dataType);
|
||||||
}
|
}
|
||||||
|
|
||||||
get isCircular() {
|
get isCircular() {
|
||||||
@@ -767,7 +767,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
|
|||||||
get filterInfo(): PerspectiveFilterColumnInfo {
|
get filterInfo(): PerspectiveFilterColumnInfo {
|
||||||
return {
|
return {
|
||||||
columnName: this.columnName,
|
columnName: this.columnName,
|
||||||
filterType: this.filterType,
|
filterBehaviour: this.filterBehaviour,
|
||||||
pureName: this.column.pureName,
|
pureName: this.column.pureName,
|
||||||
schemaName: this.column.schemaName,
|
schemaName: this.column.schemaName,
|
||||||
foreignKey: this.foreignKey,
|
foreignKey: this.foreignKey,
|
||||||
@@ -777,7 +777,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
|
|||||||
parseFilterCondition(source = null): Condition {
|
parseFilterCondition(source = null): Condition {
|
||||||
const filter = this.getFilter();
|
const filter = this.getFilter();
|
||||||
if (!filter) return null;
|
if (!filter) return null;
|
||||||
const condition = parseFilter(filter, this.filterType);
|
const condition = parseFilter(filter, this.filterBehaviour);
|
||||||
if (!condition) return null;
|
if (!condition) return null;
|
||||||
return _cloneDeepWith(condition, (expr: Expression) => {
|
return _cloneDeepWith(condition, (expr: Expression) => {
|
||||||
if (expr.exprType == 'placeholder') {
|
if (expr.exprType == 'placeholder') {
|
||||||
@@ -949,8 +949,8 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
return !this.isChildColumn;
|
return !this.isChildColumn;
|
||||||
}
|
}
|
||||||
|
|
||||||
get filterType(): FilterType {
|
get filterBehaviour(): FilterBehaviour {
|
||||||
if (this.tableColumn) return getFilterType(this.tableColumn.dataType);
|
if (this.tableColumn) return detectSqlFilterBehaviour(this.tableColumn.dataType);
|
||||||
return 'mongo';
|
return 'mongo';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1083,7 +1083,7 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
columnName: this.columnName,
|
columnName: this.columnName,
|
||||||
filterType: this.filterType,
|
filterBehaviour: this.filterBehaviour,
|
||||||
pureName: this.table.pureName,
|
pureName: this.table.pureName,
|
||||||
schemaName: this.table.schemaName,
|
schemaName: this.table.schemaName,
|
||||||
foreignKey: this.foreignKey,
|
foreignKey: this.foreignKey,
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
</InlineButton>
|
</InlineButton>
|
||||||
</div>
|
</div>
|
||||||
<DataFilterControl
|
<DataFilterControl
|
||||||
filterType={filterInfo.filterType}
|
filterBehaviour={filterInfo.filterBehaviour}
|
||||||
{filter}
|
{filter}
|
||||||
setFilter={onSetFilter}
|
setFilter={onSetFilter}
|
||||||
{conid}
|
{conid}
|
||||||
|
|||||||
@@ -557,7 +557,7 @@
|
|||||||
filter={column.dataNode.getFilter()}
|
filter={column.dataNode.getFilter()}
|
||||||
setFilter={value => column.dataNode.setFilter(value)}
|
setFilter={value => column.dataNode.setFilter(value)}
|
||||||
columnName={column.dataNode.uniqueName}
|
columnName={column.dataNode.uniqueName}
|
||||||
filterType={column.dataNode.filterType}
|
filterBehaviour={column.dataNode.filterBehaviour}
|
||||||
/>
|
/>
|
||||||
</th>
|
</th>
|
||||||
{/each}
|
{/each}
|
||||||
|
|||||||
Reference in New Issue
Block a user