fix: Disable cross filtering on charts with no dimensions (#30176)

This commit is contained in:
Kamil Gabryjelski
2024-09-09 12:43:14 +02:00
committed by GitHub
parent 0744abe87b
commit 3aafd29768
9 changed files with 57 additions and 23 deletions

View File

@@ -110,13 +110,25 @@ export default function EchartsMixedTimeseries({
const handleChange = useCallback(
(seriesName: string, seriesIndex: number) => {
if (!emitCrossFilters) {
const isFirst = isFirstQuery(seriesIndex);
if (
!emitCrossFilters ||
(isFirst && groupby.length === 0) ||
(!isFirst && groupbyB.length === 0)
) {
return;
}
setDataMask(getCrossFilterDataMask(seriesName, seriesIndex).dataMask);
},
[emitCrossFilters, setDataMask, getCrossFilterDataMask],
[
isFirstQuery,
emitCrossFilters,
groupby.length,
groupbyB.length,
setDataMask,
getCrossFilterDataMask,
],
);
const eventHandlers: EventHandlers = {
@@ -140,7 +152,7 @@ export default function EchartsMixedTimeseries({
const isFirst = isFirstQuery(seriesIndex);
const values = [
...(eventParams.name ? [eventParams.name] : []),
...(isFirst ? labelMap : labelMapB)[eventParams.seriesName],
...((isFirst ? labelMap : labelMapB)[eventParams.seriesName] || []),
];
if (data && xAxis.type === AxisType.Time) {
drillToDetailFilters.push({
@@ -179,9 +191,14 @@ export default function EchartsMixedTimeseries({
}),
}),
);
const hasCrossFilter =
(isFirst && groupby.length > 0) || (!isFirst && groupbyB.length > 0);
onContextMenu(pointerEvent.clientX, pointerEvent.clientY, {
drillToDetail: drillToDetailFilters,
crossFilter: getCrossFilterDataMask(seriesName, seriesIndex),
crossFilter: hasCrossFilter
? getCrossFilterDataMask(seriesName, seriesIndex)
: undefined,
drillBy: {
filters: drillByFilters,
groupbyFieldName: isFirst ? 'groupby' : 'groupby_b',