mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-25 20:06:00 +00:00
refactor - simplified filters component
This commit is contained in:
@@ -63,7 +63,6 @@
|
||||
import WidgetColumnBarItem from '../widgets/WidgetColumnBarItem.svelte';
|
||||
import ColumnManager from './ColumnManager.svelte';
|
||||
import ReferenceManager from './ReferenceManager.svelte';
|
||||
import JsonViewFilters from '../jsonview/JsonViewFilters.svelte';
|
||||
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
||||
import _ from 'lodash';
|
||||
import registerCommand from '../commands/registerCommand';
|
||||
@@ -171,25 +170,19 @@
|
||||
|
||||
<WidgetColumnBarItem
|
||||
title="Filters"
|
||||
name="jsonFilters"
|
||||
height={'30%'}
|
||||
skip={!isDynamicStructure || !display?.filterable}
|
||||
>
|
||||
<JsonViewFilters {...$$props} {managerSize} {isDynamicStructure} {useEvalFilters} />
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem
|
||||
title="Filters"
|
||||
name="tableFilters"
|
||||
height={'15%'}
|
||||
skip={!display?.filterable || isDynamicStructure || display.filterCount == 0 || isFormView}
|
||||
name="filters"
|
||||
height={showReferences && display?.hasReferences ? '15%' : '30%'}
|
||||
show={display?.filterable}
|
||||
collapsed={isDetailView}
|
||||
>
|
||||
<JsonViewFilters {...$$props} {managerSize} {isDynamicStructure} {useEvalFilters} />
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem title="Filters" name="filters" height="30%" show={isFormView}>
|
||||
<FormViewFilters {...$$props} {managerSize} driver={display?.driver} />
|
||||
<FormViewFilters
|
||||
{...$$props}
|
||||
{managerSize}
|
||||
{isDynamicStructure}
|
||||
{useEvalFilters}
|
||||
{isFormView}
|
||||
driver={display?.driver}
|
||||
/>
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem
|
||||
|
||||
@@ -381,7 +381,7 @@
|
||||
import ErrorInfo from '../elements/ErrorInfo.svelte';
|
||||
import { dataGridRowHeight } from './DataGridRowHeightMeter.svelte';
|
||||
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
||||
import { editJsonRowDocument } from '../jsonview/CollectionJsonRow.svelte';
|
||||
import { editJsonRowDocument } from '../formview/CollectionJsonRow.svelte';
|
||||
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
||||
import CollapseButton from './CollapseButton.svelte';
|
||||
import GenerateSqlFromDataModal from '../modals/GenerateSqlFromDataModal.svelte';
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
import InlineButton from '../buttons/InlineButton.svelte';
|
||||
import FontIcon from '../icons/FontIcon.svelte';
|
||||
|
||||
export let column;
|
||||
export let uniqueName;
|
||||
export let display;
|
||||
export let filters;
|
||||
|
||||
@@ -16,6 +16,24 @@
|
||||
export let database;
|
||||
export let schemaName;
|
||||
export let pureName;
|
||||
|
||||
export let useEvalFilters;
|
||||
export let isDynamicStructure;
|
||||
export let isFormView;
|
||||
|
||||
$: column = isFormView
|
||||
? display.display.formColumns.find(x => x.uniqueName == uniqueName)
|
||||
: display.findColumn(uniqueName);
|
||||
|
||||
function computeFilterType(display, column, isFormView, isDynamicStructure, useEvalFilters) {
|
||||
if (useEvalFilters) return 'eval';
|
||||
if (isDynamicStructure) return 'mongo';
|
||||
|
||||
if (column) {
|
||||
return column.filterType || getFilterType(column.dataType);
|
||||
}
|
||||
return 'string';
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if column}
|
||||
@@ -26,16 +44,16 @@
|
||||
square
|
||||
narrow
|
||||
on:click={() => {
|
||||
display.removeFilter(column.uniqueName);
|
||||
display.removeFilter(uniqueName);
|
||||
}}
|
||||
>
|
||||
<FontIcon icon="icon close" />
|
||||
</InlineButton>
|
||||
</div>
|
||||
<DataFilterControl
|
||||
filterType={getFilterType(column.dataType)}
|
||||
filter={filters[column.uniqueName]}
|
||||
setFilter={value => display.setFilter(column.uniqueName, value)}
|
||||
filterType={computeFilterType(display, uniqueName, isFormView, isDynamicStructure, useEvalFilters)}
|
||||
filter={filters[uniqueName]}
|
||||
setFilter={value => display.setFilter(uniqueName, value)}
|
||||
{driver}
|
||||
{conid}
|
||||
{database}
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
export let schemaName;
|
||||
export let pureName;
|
||||
|
||||
export let isDynamicStructure;
|
||||
export let useEvalFilters;
|
||||
export let isFormView;
|
||||
|
||||
$: baseTable = display?.baseTable;
|
||||
$: formFilterColumns = display?.config?.formFilterColumns;
|
||||
$: filters = display?.config?.filters;
|
||||
@@ -23,34 +27,39 @@
|
||||
$: allFilterNames = _.union(_.keys(filters || {}), formFilterColumns || []);
|
||||
</script>
|
||||
|
||||
<div class="m-1">
|
||||
<div>Column filter</div>
|
||||
<div class="flex">
|
||||
<input
|
||||
type="text"
|
||||
value={display?.config?.formColumnFilterText || ''}
|
||||
on:keydown={e => {
|
||||
if (e.keyCode == keycodes.escape) {
|
||||
{#if isFormView}
|
||||
<div class="m-1">
|
||||
<div>Column filter</div>
|
||||
<div class="flex">
|
||||
<input
|
||||
type="text"
|
||||
value={display?.config?.formColumnFilterText || ''}
|
||||
on:keydown={e => {
|
||||
if (e.keyCode == keycodes.escape) {
|
||||
setConfig(x => ({
|
||||
...x,
|
||||
formColumnFilterText: '',
|
||||
}));
|
||||
}
|
||||
}}
|
||||
on:input={e =>
|
||||
setConfig(x => ({
|
||||
...x,
|
||||
formColumnFilterText: '',
|
||||
}));
|
||||
}
|
||||
}}
|
||||
on:input={e =>
|
||||
setConfig(x => ({
|
||||
...x,
|
||||
// @ts-ignore
|
||||
formColumnFilterText: e.target.value,
|
||||
}))}
|
||||
/>
|
||||
// @ts-ignore
|
||||
formColumnFilterText: e.target.value,
|
||||
}))}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<ManagerInnerContainer width={managerSize}>
|
||||
{#each allFilterNames as uniqueName}
|
||||
<FormViewFilterColumn
|
||||
column={display.formColumns.find(x => x.uniqueName == uniqueName)}
|
||||
{isDynamicStructure}
|
||||
{useEvalFilters}
|
||||
{isFormView}
|
||||
{uniqueName}
|
||||
{display}
|
||||
{filters}
|
||||
{driver}
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
<script lang="ts">
|
||||
import DataFilterControl from '../datagrid/DataFilterControl.svelte';
|
||||
|
||||
import ColumnLabel from '../elements/ColumnLabel.svelte';
|
||||
import InlineButton from '../buttons/InlineButton.svelte';
|
||||
import FontIcon from '../icons/FontIcon.svelte';
|
||||
import { getFilterType } from 'dbgate-filterparser';
|
||||
|
||||
export let uniqueName;
|
||||
export let display;
|
||||
export let filters;
|
||||
export let isDynamicStructure;
|
||||
export let useEvalFilters;
|
||||
|
||||
function computeFilterType(isDynamicStructure, display, uniqueName, useEvalFilters) {
|
||||
if (useEvalFilters) return 'eval';
|
||||
if (isDynamicStructure) return 'mongo';
|
||||
const col = display.findColumn(uniqueName);
|
||||
if (col) {
|
||||
return col.filterType || getFilterType(col.dataType);
|
||||
}
|
||||
return 'string';
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="m-1">
|
||||
<div class="space-between">
|
||||
<ColumnLabel columnName={uniqueName} />
|
||||
<InlineButton
|
||||
square
|
||||
narrow
|
||||
on:click={() => {
|
||||
display.removeFilter(uniqueName);
|
||||
}}
|
||||
>
|
||||
<FontIcon icon="icon close" />
|
||||
</InlineButton>
|
||||
</div>
|
||||
<DataFilterControl
|
||||
filterType={computeFilterType(isDynamicStructure, display, uniqueName, useEvalFilters)}
|
||||
filter={filters[uniqueName]}
|
||||
setFilter={value => display.setFilter(uniqueName, value)}
|
||||
/>
|
||||
</div>
|
||||
@@ -1,21 +0,0 @@
|
||||
<script lang="ts">
|
||||
import _ from 'lodash';
|
||||
|
||||
import ManagerInnerContainer from '../elements/ManagerInnerContainer.svelte';
|
||||
import JsonViewFilterColumn from './JsonViewFilterColumn.svelte';
|
||||
|
||||
export let managerSize;
|
||||
export let display;
|
||||
export let isDynamicStructure;
|
||||
export let useEvalFilters;
|
||||
|
||||
$: filters = display?.config?.filters;
|
||||
|
||||
$: allFilterNames = _.keys(filters || {});
|
||||
</script>
|
||||
|
||||
<ManagerInnerContainer width={managerSize}>
|
||||
{#each allFilterNames as uniqueName}
|
||||
<JsonViewFilterColumn {uniqueName} {display} {filters} {isDynamicStructure} {useEvalFilters} />
|
||||
{/each}
|
||||
</ManagerInnerContainer>
|
||||
@@ -36,7 +36,7 @@
|
||||
import CollectionDataGridCore from '../datagrid/CollectionDataGridCore.svelte';
|
||||
import { useCollectionInfo, useConnectionInfo } from '../utility/metadataLoaders';
|
||||
import { extensions } from '../stores';
|
||||
import CollectionJsonView from '../jsonview/CollectionJsonView.svelte';
|
||||
import CollectionJsonView from '../formview/CollectionJsonView.svelte';
|
||||
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
||||
import { showModal } from '../modals/modalTools';
|
||||
import ErrorMessageModal from '../modals/ErrorMessageModal.svelte';
|
||||
|
||||
Reference in New Issue
Block a user