From 397c686eacad643cac82956c216d389c0320b908 Mon Sep 17 00:00:00 2001 From: jianneng-fit2cloud Date: Wed, 22 Apr 2026 18:48:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=9B=BE=E8=A1=A8):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9E=81=E5=80=BC=E6=A0=87=E7=AD=BE=E7=9A=84=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=92=8C=E6=A0=B7=E5=BC=8F=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/js/panel/charts/g2/bar/bar.ts | 2 +- .../js/panel/charts/g2/bar/group-bar.ts | 28 +++++++++++++++++-- .../js/panel/charts/g2/line/area.ts | 27 +++++++++++++----- .../js/panel/charts/g2/line/line.ts | 27 +++++++++++++----- 4 files changed, 67 insertions(+), 17 deletions(-) diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/bar.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/bar.ts index 2fe47fac3d..3eae5e258d 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/bar.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/bar.ts @@ -182,7 +182,7 @@ export class Bar extends G2ChartView { }, ...position, formatter: (value, data) => { - if (data.extremum) { + if (data.extremum && showExtremumIds.includes(data.quotaList?.[0]?.id)) { return '' } if (!labelAttr.seriesLabelFormatter?.length) { diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/group-bar.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/group-bar.ts index 69e633278f..a9655e8b90 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/group-bar.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/bar/group-bar.ts @@ -66,13 +66,34 @@ export class GroupBar extends StackBar { protected configLabel(chart: Chart, options: ViewSpec): ViewSpec { const customAttr = parseJson(chart.customAttr) const { label: labelAttr } = customAttr - if (!labelAttr.show || !labelAttr.childrenShow) return options + if (!labelAttr.show) return options const { children } = options if (labelAttr.showExtremum) { const { x: xField, y: yField, color: colorField } = children[0].encode addExtremumText(options.children, [], xField, yField, colorField, false) } + + if (!labelAttr.childrenShow) { + if (labelAttr.showExtremum) { + const ghostLabel = { + text: (d: any) => (d.extremum ? '' : ''), + fillOpacity: 0, + fontSize: 0 + } as any + return { + ...options, + children: [ + { + ...children[0], + labels: [ghostLabel] + }, + ...children.slice(1) + ] + } + } + return options + } const position = { position: labelAttr.position === 'middle' ? 'inside' : labelAttr.position, textAlign: 'center', @@ -85,7 +106,10 @@ export class GroupBar extends StackBar { fill: labelAttr.color, fontSize: labelAttr.fontSize, ...position, - formatter: (value, _data) => valueFormatter(value, labelAttr.labelFormatter) + formatter: (value, data) => + data.extremum && labelAttr.showExtremum + ? '' + : valueFormatter(value, labelAttr.labelFormatter) } as any if (!labelAttr.fullDisplay) { label.transform = [{ type: 'overlapHide' }] diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/area.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/area.ts index 8ed284a011..994713888c 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/area.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/area.ts @@ -202,7 +202,11 @@ export class Area extends G2ChartView { labels: [ { text: d => { - if (d.extremum) { + if (d.value === null) { + return '' + } + const isExtremumShown = d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id) + if (isExtremumShown) { return '' } if (!labelAttr.seriesLabelFormatter?.length) { @@ -220,9 +224,6 @@ export class Area extends G2ChartView { style: { opacity: 1, fontSize: d => { - if (d.extremum) { - return 0 - } if (!labelAttr.seriesLabelFormatter?.length) { return 12 } @@ -230,16 +231,22 @@ export class Area extends G2ChartView { if (!labelCfg) { return 12 } + if (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) { + return labelCfg.showExtremum ? labelCfg.fontSize : 0 + } if (!labelCfg.show) { return 0 } return labelCfg.fontSize }, fill: d => { - if (d.extremum || !labelAttr.seriesLabelFormatter?.length) { + if (!labelAttr.seriesLabelFormatter?.length) { return 'black' } const labelCfg = formatterMap?.[d.quotaList[0].id] as SeriesFormatter + if (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) { + return labelCfg?.showExtremum ? labelCfg?.color ?? 'black' : 'black' + } if (!labelCfg?.show) { return 'black' } @@ -249,7 +256,10 @@ export class Area extends G2ChartView { return color }, position: d => { - if (d.extremum || !labelAttr.seriesLabelFormatter?.length) { + if ( + (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) || + !labelAttr.seriesLabelFormatter?.length + ) { return 'top' } const labelCfg = formatterMap?.[d.quotaList[0].id] as SeriesFormatter @@ -260,7 +270,10 @@ export class Area extends G2ChartView { } }, textBaseline: d => { - if (d.extremum || !labelAttr.seriesLabelFormatter?.length) { + if ( + (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) || + !labelAttr.seriesLabelFormatter?.length + ) { return 'bottom' } const labelCfg = formatterMap?.[d.quotaList[0].id] as SeriesFormatter diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/line.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/line.ts index 42f028a311..ab2695c5da 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/line.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/g2/line/line.ts @@ -212,7 +212,11 @@ export class Line extends G2ChartView { labels: [ { text: d => { - if (d.extremum || d.value === null) { + if (d.value === null) { + return '' + } + const isExtremumShown = d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id) + if (isExtremumShown) { return '' } if (!labelAttr.seriesLabelFormatter?.length) { @@ -230,9 +234,6 @@ export class Line extends G2ChartView { style: { opacity: 1, fontSize: d => { - if (d.extremum) { - return 0 - } if (!labelAttr.seriesLabelFormatter?.length) { return 12 } @@ -240,16 +241,22 @@ export class Line extends G2ChartView { if (!labelCfg) { return 12 } + if (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) { + return labelCfg.showExtremum ? labelCfg.fontSize : 0 + } if (!labelCfg.show) { return 0 } return labelCfg.fontSize }, fill: d => { - if (d.extremum || !labelAttr.seriesLabelFormatter?.length) { + if (!labelAttr.seriesLabelFormatter?.length) { return 'black' } const labelCfg = formatterMap?.[d.quotaList[0].id] as SeriesFormatter + if (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) { + return labelCfg?.showExtremum ? labelCfg?.color ?? 'black' : 'black' + } if (!labelCfg?.show) { return 'black' } @@ -259,7 +266,10 @@ export class Line extends G2ChartView { return color }, position: d => { - if (d.extremum || !labelAttr.seriesLabelFormatter?.length) { + if ( + (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) || + !labelAttr.seriesLabelFormatter?.length + ) { return 'top' } const labelCfg = formatterMap?.[d.quotaList[0].id] as SeriesFormatter @@ -270,7 +280,10 @@ export class Line extends G2ChartView { } }, textBaseline: d => { - if (d.extremum || !labelAttr.seriesLabelFormatter?.length) { + if ( + (d.extremum && showExtremumIds.includes(d.quotaList?.[0]?.id)) || + !labelAttr.seriesLabelFormatter?.length + ) { return 'bottom' } const labelCfg = formatterMap?.[d.quotaList[0].id] as SeriesFormatter