grouping - work with datetimes

This commit is contained in:
Jan Prochazka
2020-06-21 21:44:54 +02:00
parent 9cd2e68f0b
commit 72d38e4b8c
11 changed files with 164 additions and 15 deletions

View File

@@ -5,6 +5,7 @@ import DropDownButton from '../widgets/DropDownButton';
import { DropDownMenuItem, DropDownMenuDivider } from '../modals/DropDownMenu';
import { useSplitterDrag } from '../widgets/Splitter';
import { FontIcon } from '../icons';
import { isTypeDateTime } from '@dbgate/tools';
const HeaderDiv = styled.div`
display: flex;
@@ -69,6 +70,16 @@ export default function ColumnHeaderControl({ column, setSort, onResize, order,
<DropDownMenuItem onClick={() => setGrouping('AVG')}>AVG</DropDownMenuItem>
<DropDownMenuItem onClick={() => setGrouping('COUNT')}>COUNT</DropDownMenuItem>
<DropDownMenuItem onClick={() => setGrouping('COUNT DISTINCT')}>COUNT DISTINCT</DropDownMenuItem>
{isTypeDateTime(column.dataType) && (
<>
<DropDownMenuDivider />
<DropDownMenuItem onClick={() => setGrouping('GROUP:YEAR')}>Group by YEAR</DropDownMenuItem>
<DropDownMenuItem onClick={() => setGrouping('GROUP:MONTH')}>Group by MONTH</DropDownMenuItem>
<DropDownMenuItem onClick={() => setGrouping('GROUP:DAY')}>Group by DAY</DropDownMenuItem>
{/* <DropDownMenuItem onClick={() => setGrouping('GROUP:HOUR')}>Group by HOUR</DropDownMenuItem>
<DropDownMenuItem onClick={() => setGrouping('GROUP:MINUTE')}>Group by MINUTE</DropDownMenuItem> */}
</>
)}
</DropDownButton>
)}
<ResizeHandle className="resizeHandleControl" onMouseDown={onResizeDown} />

View File

@@ -484,14 +484,13 @@ export default function DataGridCore(props) {
React.useEffect(() => {
if (display.groupColumns) {
console.log('SET REFERENCE');
props.onReferenceClick({
schemaName: display.baseTable.schemaName,
pureName: display.baseTable.pureName,
columns: display.groupColumns.map((col) => ({
baseName: col,
refName: col,
dataType: _.get(display.baseTable && display.baseTable.columns.find((x) => x.columnName == col), 'dataType'),
})),
});
}

View File

@@ -106,7 +106,7 @@ export default function TableDataGrid({
..._.fromPairs(
reference.columns.map((col) => [
col.refName,
selectedRows.map((x) => getFilterValueExpression(x[col.baseName])).join(', '),
selectedRows.map((x) => getFilterValueExpression(x[col.baseName], col.dataType)).join(', '),
])
),
};