This commit is contained in:
Jan Prochazka
2020-10-02 13:51:56 +02:00
parent 73b5b86ace
commit c13f8b4786
3 changed files with 37 additions and 1 deletions

View File

@@ -9,6 +9,7 @@ export default function DataGridContextMenu({
setNull,
reload,
exportGrid,
filterSelectedValue,
}) {
return (
<>
@@ -35,6 +36,9 @@ export default function DataGridContextMenu({
<DropDownMenuItem onClick={exportGrid} >
Export
</DropDownMenuItem>
<DropDownMenuItem onClick={filterSelectedValue} keyText="Ctrl+F">
Filter selected value
</DropDownMenuItem>
</>
);
}

View File

@@ -7,7 +7,7 @@ import useDimensions from '../utility/useDimensions';
import axios from '../utility/axios';
import DataFilterControl from './DataFilterControl';
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 keycodes from '../utility/keycodes';
import DataGridRow from './DataGridRow';
@@ -560,6 +560,7 @@ export default function DataGridCore(props) {
reload={() => display.reload()}
setNull={setNull}
exportGrid={exportGrid}
filterSelectedValue={filterSelectedValue}
/>
);
};
@@ -824,6 +825,21 @@ export default function DataGridCore(props) {
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() {
setChangeSet(createChangeSet());
}
@@ -936,6 +952,11 @@ export default function DataGridCore(props) {
revertRowChanges();
}
if (event.keyCode == keycodes.f && event.ctrlKey) {
event.preventDefault();
filterSelectedValue();
}
if (event.keyCode == keycodes.z && event.ctrlKey) {
event.preventDefault();
undo();