mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-01 16:43:59 +00:00
This commit is contained in:
@@ -287,6 +287,17 @@ export abstract class GridDisplay {
|
|||||||
this.reload();
|
this.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setFilters(dct) {
|
||||||
|
this.setConfig((cfg) => ({
|
||||||
|
...cfg,
|
||||||
|
filters: {
|
||||||
|
...cfg.filters,
|
||||||
|
...dct,
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
this.reload();
|
||||||
|
}
|
||||||
|
|
||||||
setSort(uniqueName, order) {
|
setSort(uniqueName, order) {
|
||||||
this.setConfig((cfg) => ({
|
this.setConfig((cfg) => ({
|
||||||
...cfg,
|
...cfg,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export default function DataGridContextMenu({
|
|||||||
setNull,
|
setNull,
|
||||||
reload,
|
reload,
|
||||||
exportGrid,
|
exportGrid,
|
||||||
|
filterSelectedValue,
|
||||||
}) {
|
}) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -35,6 +36,9 @@ export default function DataGridContextMenu({
|
|||||||
<DropDownMenuItem onClick={exportGrid} >
|
<DropDownMenuItem onClick={exportGrid} >
|
||||||
Export
|
Export
|
||||||
</DropDownMenuItem>
|
</DropDownMenuItem>
|
||||||
|
<DropDownMenuItem onClick={filterSelectedValue} keyText="Ctrl+F">
|
||||||
|
Filter selected value
|
||||||
|
</DropDownMenuItem>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import useDimensions from '../utility/useDimensions';
|
|||||||
import axios from '../utility/axios';
|
import axios from '../utility/axios';
|
||||||
import DataFilterControl from './DataFilterControl';
|
import DataFilterControl from './DataFilterControl';
|
||||||
import stableStringify from 'json-stable-stringify';
|
import stableStringify from 'json-stable-stringify';
|
||||||
import { getFilterType } from '@dbgate/filterparser';
|
import { getFilterType, getFilterValueExpression } from '@dbgate/filterparser';
|
||||||
import { cellFromEvent, getCellRange, topLeftCell, isRegularCell, nullCell, emptyCellArray } from './selection';
|
import { cellFromEvent, getCellRange, topLeftCell, isRegularCell, nullCell, emptyCellArray } from './selection';
|
||||||
import keycodes from '../utility/keycodes';
|
import keycodes from '../utility/keycodes';
|
||||||
import DataGridRow from './DataGridRow';
|
import DataGridRow from './DataGridRow';
|
||||||
@@ -560,6 +560,7 @@ export default function DataGridCore(props) {
|
|||||||
reload={() => display.reload()}
|
reload={() => display.reload()}
|
||||||
setNull={setNull}
|
setNull={setNull}
|
||||||
exportGrid={exportGrid}
|
exportGrid={exportGrid}
|
||||||
|
filterSelectedValue={filterSelectedValue}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@@ -824,6 +825,21 @@ export default function DataGridCore(props) {
|
|||||||
setChangeSet(updatedChangeSet);
|
setChangeSet(updatedChangeSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function filterSelectedValue() {
|
||||||
|
const flts = {};
|
||||||
|
for (const cell of selectedCells) {
|
||||||
|
if (!isRegularCell(cell)) continue;
|
||||||
|
const modelIndex = columnSizes.realToModel(cell[1]);
|
||||||
|
const columnName = columns[modelIndex].uniqueName;
|
||||||
|
let value = loadedRows[cell[0]][columnName];
|
||||||
|
let svalue = getFilterValueExpression(value, columns[modelIndex].dataType);
|
||||||
|
if (_.has(flts, columnName)) flts[columnName] += ',' + svalue;
|
||||||
|
else flts[columnName] = svalue;
|
||||||
|
}
|
||||||
|
|
||||||
|
display.setFilters(flts);
|
||||||
|
}
|
||||||
|
|
||||||
function revertAllChanges() {
|
function revertAllChanges() {
|
||||||
setChangeSet(createChangeSet());
|
setChangeSet(createChangeSet());
|
||||||
}
|
}
|
||||||
@@ -936,6 +952,11 @@ export default function DataGridCore(props) {
|
|||||||
revertRowChanges();
|
revertRowChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.keyCode == keycodes.f && event.ctrlKey) {
|
||||||
|
event.preventDefault();
|
||||||
|
filterSelectedValue();
|
||||||
|
}
|
||||||
|
|
||||||
if (event.keyCode == keycodes.z && event.ctrlKey) {
|
if (event.keyCode == keycodes.z && event.ctrlKey) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
undo();
|
undo();
|
||||||
|
|||||||
Reference in New Issue
Block a user