diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx b/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx index 499f072a5084..2063ab95dee6 100644 --- a/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx +++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/PivotTableChart.tsx @@ -144,6 +144,7 @@ export default function PivotTableChart(props: PivotTableProps) { metricColorFormatters, dateFormatters, onContextMenu, + timeGrainSqla, } = props; const theme = useTheme(); @@ -375,14 +376,15 @@ export default function PivotTableChart(props: PivotTableProps) { if (colKey && colKey.length > 1) { colKey.forEach((val, i) => { const col = cols[i]; - const formattedVal = - dateFormatters[col]?.(val as number) || String(val); + const formatter = dateFormatters[col]; + const formattedVal = formatter?.(val as number) || String(val); if (i > 0) { filters.push({ col, op: '==', val, formattedVal, + grain: formatter ? timeGrainSqla : undefined, }); } }); @@ -390,20 +392,21 @@ export default function PivotTableChart(props: PivotTableProps) { if (rowKey) { rowKey.forEach((val, i) => { const col = rows[i]; - const formattedVal = - dateFormatters[col]?.(val as number) || String(val); + const formatter = dateFormatters[col]; + const formattedVal = formatter?.(val as number) || String(val); filters.push({ col, op: '==', val, formattedVal, + grain: formatter ? timeGrainSqla : undefined, }); }); } onContextMenu(e.clientX, e.clientY, filters); } }, - [cols, dateFormatters, onContextMenu, rows], + [cols, dateFormatters, onContextMenu, rows, timeGrainSqla], ); return ( diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts index dce9f037e25f..546882274f0f 100644 --- a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts +++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/transformProps.ts @@ -101,6 +101,7 @@ export default function transformProps(chartProps: ChartProps) { emitFilter, metricsLayout, conditionalFormatting, + timeGrainSqla, } = formData; const { selectedFilters } = filterState; const granularity = extractTimegrain(rawFormData); @@ -165,5 +166,6 @@ export default function transformProps(chartProps: ChartProps) { metricColorFormatters, dateFormatters, onContextMenu, + timeGrainSqla, }; } diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts b/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts index accd68a2e4e8..9c0523b582b6 100644 --- a/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts +++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/types.ts @@ -27,6 +27,7 @@ import { QueryFormMetric, QueryFormColumn, BinaryQueryObjectFilterClause, + TimeGranularity, } from '@superset-ui/core'; import { ColorFormatters } from '@superset-ui/chart-controls'; @@ -78,6 +79,7 @@ interface PivotTableCustomizeProps { clientY: number, filters?: BinaryQueryObjectFilterClause[], ) => void; + timeGrainSqla?: TimeGranularity; } export type PivotTableQueryFormData = QueryFormData &