mirror of
https://github.com/apache/superset.git
synced 2026-04-21 00:54:44 +00:00
feat: Adds drill to detail context menu for ECharts visualizations (#20891)
* feat: Adds drill to detail context menu for ECharts visualizations * Rebases and adds time grain * Fixes selected gauge values * Fixes Treemap edge click * Adds right click to big number trendline * Address some comments
This commit is contained in:
committed by
GitHub
parent
0042ade66f
commit
3df8335f87
@@ -19,18 +19,19 @@
|
||||
import React, { useCallback } from 'react';
|
||||
import { RadarChartTransformedProps } from './types';
|
||||
import Echart from '../components/Echart';
|
||||
import { EventHandlers } from '../types';
|
||||
import { allEventHandlers } from '../utils/eventHandlers';
|
||||
|
||||
export default function EchartsRadar({
|
||||
height,
|
||||
width,
|
||||
echartOptions,
|
||||
setDataMask,
|
||||
labelMap,
|
||||
groupby,
|
||||
selectedValues,
|
||||
formData,
|
||||
}: RadarChartTransformedProps) {
|
||||
export default function EchartsRadar(props: RadarChartTransformedProps) {
|
||||
const {
|
||||
height,
|
||||
width,
|
||||
echartOptions,
|
||||
setDataMask,
|
||||
labelMap,
|
||||
groupby,
|
||||
selectedValues,
|
||||
formData,
|
||||
} = props;
|
||||
const handleChange = useCallback(
|
||||
(values: string[]) => {
|
||||
if (!formData.emitFilter) {
|
||||
@@ -67,17 +68,7 @@ export default function EchartsRadar({
|
||||
[groupby, labelMap, setDataMask, selectedValues],
|
||||
);
|
||||
|
||||
const eventHandlers: EventHandlers = {
|
||||
click: props => {
|
||||
const { name } = props;
|
||||
const values = Object.values(selectedValues);
|
||||
if (values.includes(name)) {
|
||||
handleChange(values.filter(v => v !== name));
|
||||
} else {
|
||||
handleChange([name]);
|
||||
}
|
||||
},
|
||||
};
|
||||
const eventHandlers = allEventHandlers(props, handleChange);
|
||||
|
||||
return (
|
||||
<Echart
|
||||
|
||||
@@ -70,8 +70,16 @@ export function formatLabel({
|
||||
export default function transformProps(
|
||||
chartProps: EchartsRadarChartProps,
|
||||
): RadarChartTransformedProps {
|
||||
const { formData, height, hooks, filterState, queriesData, width, theme } =
|
||||
chartProps;
|
||||
const {
|
||||
formData,
|
||||
height,
|
||||
hooks,
|
||||
filterState,
|
||||
queriesData,
|
||||
width,
|
||||
theme,
|
||||
inContextMenu,
|
||||
} = chartProps;
|
||||
const { data = [] } = queriesData[0];
|
||||
const coltypeMapping = getColtypesMapping(queriesData[0]);
|
||||
|
||||
@@ -91,12 +99,13 @@ export default function transformProps(
|
||||
isCircle,
|
||||
columnConfig,
|
||||
sliceId,
|
||||
emitFilter,
|
||||
}: EchartsRadarFormData = {
|
||||
...DEFAULT_LEGEND_FORM_DATA,
|
||||
...DEFAULT_RADAR_FORM_DATA,
|
||||
...formData,
|
||||
};
|
||||
const { setDataMask = () => {} } = hooks;
|
||||
const { setDataMask = () => {}, onContextMenu } = hooks;
|
||||
|
||||
const colorFn = CategoricalColorNamespace.getScale(colorScheme as string);
|
||||
const numberFormatter = getNumberFormatter(numberFormat);
|
||||
@@ -222,6 +231,7 @@ export default function transformProps(
|
||||
},
|
||||
tooltip: {
|
||||
...defaultTooltip,
|
||||
show: !inContextMenu,
|
||||
trigger: 'item',
|
||||
},
|
||||
legend: {
|
||||
@@ -240,9 +250,11 @@ export default function transformProps(
|
||||
width,
|
||||
height,
|
||||
echartOptions,
|
||||
emitFilter,
|
||||
setDataMask,
|
||||
labelMap: Object.fromEntries(columnsLabelMap),
|
||||
groupby,
|
||||
selectedValues,
|
||||
onContextMenu,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,18 +16,16 @@
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
import { EChartsCoreOption } from 'echarts';
|
||||
import {
|
||||
ChartDataResponseResult,
|
||||
ChartProps,
|
||||
DataRecordValue,
|
||||
QueryFormColumn,
|
||||
QueryFormData,
|
||||
QueryFormMetric,
|
||||
SetDataMaskHook,
|
||||
} from '@superset-ui/core';
|
||||
import {
|
||||
EchartsLegendFormData,
|
||||
EChartTransformedProps,
|
||||
LabelPositionEnum,
|
||||
LegendOrientation,
|
||||
LegendType,
|
||||
@@ -79,13 +77,5 @@ export const DEFAULT_FORM_DATA: EchartsRadarFormData = {
|
||||
isCircle: false,
|
||||
};
|
||||
|
||||
export interface RadarChartTransformedProps {
|
||||
formData: EchartsRadarFormData;
|
||||
height: number;
|
||||
width: number;
|
||||
echartOptions: EChartsCoreOption;
|
||||
setDataMask: SetDataMaskHook;
|
||||
labelMap: Record<string, DataRecordValue[]>;
|
||||
groupby: QueryFormColumn[];
|
||||
selectedValues: Record<number, string>;
|
||||
}
|
||||
export type RadarChartTransformedProps =
|
||||
EChartTransformedProps<EchartsRadarFormData>;
|
||||
|
||||
Reference in New Issue
Block a user