diff --git a/packages/datalib/src/PerspectiveConfig.ts b/packages/datalib/src/PerspectiveConfig.ts index a3e836d0f..bf7d2eea8 100644 --- a/packages/datalib/src/PerspectiveConfig.ts +++ b/packages/datalib/src/PerspectiveConfig.ts @@ -17,8 +17,14 @@ export interface PerspectiveCustomJoinConfig { refColumnName: string; }[]; } + +export interface PerspectiveFilterColumnInfo { + columnName: string; + filterType: string; +} export interface PerspectiveConfig extends PerspectiveConfigColumns { filters: { [uniqueName: string]: string }; + filterInfos: { [uniqueName: string]: PerspectiveFilterColumnInfo }; sort: { [parentUniqueName: string]: { uniqueName: string; @@ -35,6 +41,7 @@ export function createPerspectiveConfig(): PerspectiveConfig { uncheckedColumns: [], customJoins: [], filters: {}, + filterInfos: {}, sort: {}, }; } diff --git a/packages/datalib/src/PerspectiveTreeNode.ts b/packages/datalib/src/PerspectiveTreeNode.ts index 70e9ca0b5..7a463ed4a 100644 --- a/packages/datalib/src/PerspectiveTreeNode.ts +++ b/packages/datalib/src/PerspectiveTreeNode.ts @@ -160,6 +160,13 @@ export abstract class PerspectiveTreeNode { ...cfg.filters, [this.uniqueName]: value, }, + filterInfos: { + ...cfg.filterInfos, + [this.uniqueName]: { + columnName: this.columnName, + filterType: this.filterType, + }, + }, }), true ); diff --git a/packages/web/src/perspectives/PerspectiveFilters.svelte b/packages/web/src/perspectives/PerspectiveFilters.svelte new file mode 100644 index 000000000..9b02568b2 --- /dev/null +++ b/packages/web/src/perspectives/PerspectiveFilters.svelte @@ -0,0 +1,39 @@ + + + + {#each allFilterNames as uniqueName} + + setConfig(cfg => ({ + ...cfg, + filters: { + ...cfg.filters, + [uniqueName]: value, + }, + }))} + onRemoveFilter={value => + setConfig(cfg => ({ + ...cfg, + filters: _.omit(cfg.filters, [uniqueName]), + filterInfos: _.omit(cfg.filterInfos, [uniqueName]), + }))} + /> + {/each} + diff --git a/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte b/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte new file mode 100644 index 000000000..3e8d015e1 --- /dev/null +++ b/packages/web/src/perspectives/PerspectiveFiltersColumn.svelte @@ -0,0 +1,24 @@ + + +
+
+ {columnName} + + + +
+ +
diff --git a/packages/web/src/perspectives/PerspectiveView.svelte b/packages/web/src/perspectives/PerspectiveView.svelte index c8b967445..518cc16f3 100644 --- a/packages/web/src/perspectives/PerspectiveView.svelte +++ b/packages/web/src/perspectives/PerspectiveView.svelte @@ -49,6 +49,8 @@ import registerCommand from '../commands/registerCommand'; import { showModal } from '../modals/modalTools'; import CustomJoinModal from './CustomJoinModal.svelte'; + import JsonViewFilters from '../jsonview/JsonViewFilters.svelte'; + import PerspectiveFilters from './PerspectiveFilters.svelte'; const dbg = debug('dbgate:PerspectiveView'); @@ -114,6 +116,10 @@ {/if} + + + +