diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bar.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bar.ts index 1ccaeb6ff4..e33daa72ad 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bar.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bar.ts @@ -486,7 +486,7 @@ export class StackBar extends Bar { obj.value = res ?? '' return obj }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } @@ -892,7 +892,7 @@ export class GroupStackBar extends StackBar { obj.value = valueFormatter(param.value, tooltipAttr.tooltipFormatter) return obj }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } @@ -978,7 +978,7 @@ export class PercentageStackBar extends GroupStackBar { obj.value = (Math.round(param.value * 10000) / 100).toFixed(l.reserveDecimalCount) + '%' return obj }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bidirectional-bar.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bidirectional-bar.ts index 66380286c4..bbe21fd69e 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bidirectional-bar.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bidirectional-bar.ts @@ -306,7 +306,7 @@ export class BidirectionalHorizontalBar extends G2PlotChartView< } return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bullet-graph.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bullet-graph.ts index faa1dd3ae1..13cccac048 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bullet-graph.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/bullet-graph.ts @@ -434,7 +434,7 @@ export class BulletGraph extends G2PlotChartView { result.sort((a, b) => (a.color === 'grey' ? 1 : b.color === 'grey' ? -1 : 0)) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/horizontal-bar.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/horizontal-bar.ts index 7ab6b693f5..6787088d03 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/horizontal-bar.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/horizontal-bar.ts @@ -435,7 +435,7 @@ export class HorizontalStackBar extends HorizontalBar { obj.value = res ?? '' return obj }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } @@ -695,7 +695,7 @@ export class HorizontalPercentageStackBar extends HorizontalStackBar { obj.value = (Math.round(param.value * 10000) / 100).toFixed(l.reserveDecimalCount) + '%' return obj }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/progress-bar.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/progress-bar.ts index 8b592bab68..2c5a293d17 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/progress-bar.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/progress-bar.ts @@ -249,7 +249,7 @@ export class ProgressBar extends G2PlotChartView { }) return result.length == 0 ? originalItems : result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/range-bar.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/range-bar.ts index 6520a3a790..b93683e120 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/range-bar.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/range-bar.ts @@ -256,7 +256,7 @@ export class RangeBar extends G2PlotChartView { } return { value: res, values: param.values, name: param.field } }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/waterfall.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/waterfall.ts index ed1f38232f..fca57222c4 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/bar/waterfall.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/bar/waterfall.ts @@ -247,7 +247,7 @@ export class Waterfall extends G2PlotChartView { }) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/line/area.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/line/area.ts index b4709089c4..18126a5216 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/line/area.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/line/area.ts @@ -385,7 +385,7 @@ export class StackArea extends Area { } return obj }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/line/line.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/line/line.ts index a833235d75..854f0acbb0 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/line/line.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/line/line.ts @@ -311,7 +311,7 @@ export class Line extends G2PlotChartView { }) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/others/chart-mix.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/others/chart-mix.ts index 317c28bd67..0012d92a88 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/others/chart-mix.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/others/chart-mix.ts @@ -576,7 +576,7 @@ export class ColumnLineMix extends G2PlotChartView { }) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/others/quadrant.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/others/quadrant.ts index 2315e72735..5b2804a394 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/others/quadrant.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/others/quadrant.ts @@ -403,7 +403,7 @@ export class Quadrant extends G2PlotChartView { } return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/others/scatter.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/others/scatter.ts index 7f144f2538..35d5166706 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/others/scatter.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/others/scatter.ts @@ -259,7 +259,7 @@ export class Scatter extends G2PlotChartView { }) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/pie/pie.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/pie/pie.ts index 80ba364db8..ce858ec6df 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/pie/pie.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/pie/pie.ts @@ -259,7 +259,7 @@ export class Pie extends G2PlotChartView { }) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, shared: true, enterable: true diff --git a/core/core-frontend/src/views/chart/components/js/panel/charts/pie/rose.ts b/core/core-frontend/src/views/chart/components/js/panel/charts/pie/rose.ts index c59e45aae7..aee605373e 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/charts/pie/rose.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/charts/pie/rose.ts @@ -218,7 +218,7 @@ export class Rose extends G2PlotChartView { }) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } diff --git a/core/core-frontend/src/views/chart/components/js/panel/common/common_antv.ts b/core/core-frontend/src/views/chart/components/js/panel/common/common_antv.ts index a8f7d3cec6..edacd158fc 100644 --- a/core/core-frontend/src/views/chart/components/js/panel/common/common_antv.ts +++ b/core/core-frontend/src/views/chart/components/js/panel/common/common_antv.ts @@ -259,7 +259,7 @@ export function getTooltip(chart: Chart) { const value = valueFormatter(param.value, t.tooltipFormatter) return { name: param.field, value } }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } @@ -314,7 +314,7 @@ export function getMultiSeriesTooltip(chart: Chart) { }) return result }, - container: getTooltipContainer(`tooltip-${chart.id}`), + container: getTooltipContainer(`tooltip-${chart.id}`, chart.container), itemTpl: TOOLTIP_TPL, enterable: true } @@ -1689,7 +1689,7 @@ function shouldHideZoom(basicStyle: any): boolean { } const G2_TOOLTIP_WRAPPER = 'g2-tooltip-wrapper' -export function getTooltipContainer(id) { +export function getTooltipContainer(id, chartContainer?: string) { let wrapperDom = document.getElementById(G2_TOOLTIP_WRAPPER) if (!wrapperDom) { wrapperDom = document.createElement('div') @@ -1713,6 +1713,14 @@ export function getTooltipContainer(id) { g2Tooltip.style.position = 'fixed' g2Tooltip.style.left = '0px' g2Tooltip.style.top = '0px' + if (chartContainer) { + const chartDom = document.getElementById(chartContainer) + if (chartDom) { + const rect = chartDom.getBoundingClientRect() + g2Tooltip.style.left = rect.x + 'px' + g2Tooltip.style.top = rect.y + 'px' + } + } const g2TooltipTitle = document.createElement('div') g2TooltipTitle.classList.add('g2-tooltip-title') g2Tooltip.appendChild(g2TooltipTitle) @@ -1842,9 +1850,9 @@ export function configPlotTooltipEvent> plot.options.tooltip.showMarkers = isCarousel ? true : false const wrapperDom = document.getElementById(G2_TOOLTIP_WRAPPER) wrapperDom.style.zIndex = isCarousel && wrapperDom ? carousel_zIndex : '9999' - if (tooltipCtl.tooltip) { - // 处理视图放大后再关闭 tooltip 的 dom 被清除 - const container = tooltipCtl.tooltip.cfg.container + // 处理视图放大后再关闭 tooltip 的 dom 被清除 + const container = plot.chart.getOptions().tooltip?.container + if (container) { // 当下拉菜单不显示时,移除tooltip的hidden-tooltip样式 if (viewTrackBarElement?.getAttribute('aria-expanded') === 'false') { container.classList.toggle('hidden-tooltip', false) @@ -1890,7 +1898,7 @@ export function configPlotTooltipEvent> if (!tooltipCtl) { return } - const container = tooltipCtl.tooltip?.cfg.container + const container = plot.chart.getOptions().tooltip?.container for (const ele of wrapperDom.children) { if (!container || container.id !== ele.id) { ele.style.display = 'none' diff --git a/core/core-frontend/src/views/chart/components/views/components/ChartComponentG2Plot.vue b/core/core-frontend/src/views/chart/components/views/components/ChartComponentG2Plot.vue index 8077479fab..059ab07e9c 100644 --- a/core/core-frontend/src/views/chart/components/views/components/ChartComponentG2Plot.vue +++ b/core/core-frontend/src/views/chart/components/views/components/ChartComponentG2Plot.vue @@ -361,6 +361,7 @@ const renderG2Plot = async (chart, chartView: G2PlotChartView) => { // 在这里清理掉之前图表的空dom configEmptyDataStyle([1], containerId) myChart?.destroy() + chart.container = containerId myChart = await chartView.drawChart({ chartObj: myChart, container: containerId,