mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-23 16:16:02 +00:00
fixed evaluated filters
This commit is contained in:
@@ -161,6 +161,33 @@
|
||||
{ onClick: () => setFilter('TRUE'), text: 'Is True' },
|
||||
{ onClick: () => setFilter('FALSE'), text: 'Is False' },
|
||||
];
|
||||
case 'eval':
|
||||
return [
|
||||
{ onClick: () => setFilter(''), text: 'Clear Filter' },
|
||||
{ onClick: () => filterMultipleValues(), text: 'Filter multiple values' },
|
||||
|
||||
{ onClick: () => openFilterWindow('='), text: 'Equals...' },
|
||||
{ onClick: () => openFilterWindow('<>'), text: 'Does Not Equal...' },
|
||||
{ onClick: () => setFilter('NULL'), text: 'Is Null' },
|
||||
{ onClick: () => setFilter('NOT NULL'), text: 'Is Not Null' },
|
||||
|
||||
{ divider: true },
|
||||
|
||||
{ onClick: () => openFilterWindow('>'), text: 'Greater Than...' },
|
||||
{ onClick: () => openFilterWindow('>='), text: 'Greater Than Or Equal To...' },
|
||||
{ onClick: () => openFilterWindow('<'), text: 'Less Than...' },
|
||||
{ onClick: () => openFilterWindow('<='), text: 'Less Than Or Equal To...' },
|
||||
|
||||
{ divider: true },
|
||||
|
||||
|
||||
{ onClick: () => openFilterWindow('+'), text: 'Contains...' },
|
||||
{ onClick: () => openFilterWindow('~'), text: 'Does Not Contain...' },
|
||||
{ onClick: () => openFilterWindow('^'), text: 'Begins With...' },
|
||||
{ onClick: () => openFilterWindow('!^'), text: 'Does Not Begin With...' },
|
||||
{ onClick: () => openFilterWindow('$'), text: 'Ends With...' },
|
||||
{ onClick: () => openFilterWindow('!$'), text: 'Does Not End With...' },
|
||||
];
|
||||
}
|
||||
|
||||
// return [
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
export let display;
|
||||
export let changeSetState;
|
||||
export let dispatchChangeSet;
|
||||
export let useEvalFilters = false;
|
||||
|
||||
export let isDetailView = false;
|
||||
export let showReferences = false;
|
||||
@@ -181,7 +182,7 @@
|
||||
height={'30%'}
|
||||
skip={!isDynamicStructure || !display?.filterable}
|
||||
>
|
||||
<JsonViewFilters {...$$props} {managerSize} {isDynamicStructure} />
|
||||
<JsonViewFilters {...$$props} {managerSize} {isDynamicStructure} {useEvalFilters} />
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem
|
||||
@@ -191,7 +192,7 @@
|
||||
skip={!display?.filterable || isDynamicStructure || display.filterCount == 0 || isFormView}
|
||||
collapsed={isDetailView}
|
||||
>
|
||||
<JsonViewFilters {...$$props} {managerSize} {isDynamicStructure} />
|
||||
<JsonViewFilters {...$$props} {managerSize} {isDynamicStructure} {useEvalFilters} />
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem
|
||||
|
||||
@@ -335,6 +335,7 @@
|
||||
export let multipleGridsOnTab = false;
|
||||
export let tabControlHiddenTab = false;
|
||||
export let onCustomGridRefresh;
|
||||
export let useEvalFilters = false;
|
||||
// export let generalAllowSave = false;
|
||||
|
||||
export const activator = createActivator('DataGridCore', false);
|
||||
@@ -1548,7 +1549,7 @@
|
||||
{conid}
|
||||
{database}
|
||||
driver={display?.driver}
|
||||
filterType={col.filterType || getFilterType(col.dataType)}
|
||||
filterType={useEvalFilters ? 'eval' : col.filterType || getFilterType(col.dataType)}
|
||||
filter={display.getFilter(col.uniqueName)}
|
||||
setFilter={value => display.setFilter(col.uniqueName, value)}
|
||||
showResizeSplitter
|
||||
|
||||
@@ -58,5 +58,6 @@
|
||||
gridCoreComponent={JslDataGridCore}
|
||||
bind:loadedRows
|
||||
isDynamicStructure={$info?.__isDynamicStructure}
|
||||
useEvalFilters
|
||||
/>
|
||||
{/key}
|
||||
|
||||
@@ -10,8 +10,10 @@
|
||||
export let display;
|
||||
export let filters;
|
||||
export let isDynamicStructure;
|
||||
export let useEvalFilters;
|
||||
|
||||
function computeFilterType(isDynamicStructure, display, uniqueName) {
|
||||
function computeFilterType(isDynamicStructure, display, uniqueName, useEvalFilters) {
|
||||
if (useEvalFilters) return 'eval';
|
||||
if (isDynamicStructure) return 'mongo';
|
||||
const col = display.findColumn(uniqueName);
|
||||
if (col) {
|
||||
@@ -35,7 +37,7 @@
|
||||
</InlineButton>
|
||||
</div>
|
||||
<DataFilterControl
|
||||
filterType={computeFilterType(isDynamicStructure, display, uniqueName)}
|
||||
filterType={computeFilterType(isDynamicStructure, display, uniqueName, useEvalFilters)}
|
||||
filter={filters[uniqueName]}
|
||||
setFilter={value => display.setFilter(uniqueName, value)}
|
||||
/>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
export let managerSize;
|
||||
export let display;
|
||||
export let isDynamicStructure;
|
||||
export let useEvalFilters;
|
||||
|
||||
$: filters = display?.config?.filters;
|
||||
|
||||
@@ -15,6 +16,6 @@
|
||||
|
||||
<ManagerInnerContainer width={managerSize}>
|
||||
{#each allFilterNames as uniqueName}
|
||||
<JsonViewFilterColumn {uniqueName} {display} {filters} {isDynamicStructure} />
|
||||
<JsonViewFilterColumn {uniqueName} {display} {filters} {isDynamicStructure} {useEvalFilters} />
|
||||
{/each}
|
||||
</ManagerInnerContainer>
|
||||
|
||||
@@ -54,6 +54,21 @@
|
||||
{ value: '$', label: 'ends with' },
|
||||
{ value: '!$', label: 'does not end with' },
|
||||
];
|
||||
case 'eval':
|
||||
return [
|
||||
{ value: '=', label: 'eqals' },
|
||||
{ value: '<>', label: 'does not equal' },
|
||||
{ value: '<', label: 'is smaller' },
|
||||
{ value: '>', label: 'is greater' },
|
||||
{ value: '<=', label: 'is smaller or equal' },
|
||||
{ value: '>=', label: 'is greater or equal' },
|
||||
{ value: '+', label: 'contains' },
|
||||
{ value: '~', label: 'does not contain' },
|
||||
{ value: '^', label: 'begins with' },
|
||||
{ value: '!^', label: 'does not begin with' },
|
||||
{ value: '$', label: 'ends with' },
|
||||
{ value: '!$', label: 'does not end with' },
|
||||
];
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user