From 0f86a100b838fc19ade0962cef6cd5591a8013a2 Mon Sep 17 00:00:00 2001 From: plainheart Date: Mon, 7 Nov 2022 00:37:07 +0800 Subject: [PATCH] fix(heatmap): fix heatmap label may overlap when the dataZoom is enabled --- src/chart/heatmap/HeatmapView.ts | 8 ++- test/heatmap.html | 112 ++++++++++++++++++++++++++++- test/runTest/actions/__meta__.json | 2 +- test/runTest/actions/heatmap.json | 2 +- 4 files changed, 118 insertions(+), 6 deletions(-) diff --git a/src/chart/heatmap/HeatmapView.ts b/src/chart/heatmap/HeatmapView.ts index 88933e278d..d0de889ba1 100644 --- a/src/chart/heatmap/HeatmapView.ts +++ b/src/chart/heatmap/HeatmapView.ts @@ -33,7 +33,7 @@ import { StageHandlerProgressParams, Dictionary, OptionDataValue } from '../../u import type Cartesian2D from '../../coord/cartesian/Cartesian2D'; import type Calendar from '../../coord/calendar/Calendar'; import { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle'; -import Element from 'zrender/src/Element'; +import type Element from 'zrender/src/Element'; // Coord can be 'geo' 'bmap' 'amap' 'leaflet'... interface GeoLikeCoordSys extends CoordinateSystem { @@ -94,7 +94,7 @@ function getIsInContinuousRange(dataExtent: number[], range: number[]) { function isGeoCoordSys(coordSys: CoordinateSystem): coordSys is GeoLikeCoordSys { const dimensions = coordSys.dimensions; - // Not use coorSys.type === 'geo' because coordSys maybe extended + // Not use coordSys.type === 'geo' because coordSys maybe extended return dimensions[0] === 'lng' && dimensions[1] === 'lat'; } @@ -235,6 +235,8 @@ class HeatmapView extends ChartView { // Ignore empty data and out of extent data if (isNaN(data.get(dataDims[2], idx) as number) + || isNaN(dataDimX as number) + || isNaN(dataDimY as number) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] @@ -271,7 +273,7 @@ class HeatmapView extends ChartView { }); } - // Optimization for large datset + // Optimization for large dataset if (data.hasItemOption) { const itemModel = data.getItemModel(idx); const emphasisModel = itemModel.getModel('emphasis'); diff --git a/test/heatmap.html b/test/heatmap.html index 36276aad4a..a4cacdecd7 100644 --- a/test/heatmap.html +++ b/test/heatmap.html @@ -23,6 +23,8 @@ + + @@ -39,6 +41,7 @@
+
+ + - \ No newline at end of file + diff --git a/test/runTest/actions/__meta__.json b/test/runTest/actions/__meta__.json index a72207f78b..fa5ae814fd 100644 --- a/test/runTest/actions/__meta__.json +++ b/test/runTest/actions/__meta__.json @@ -105,7 +105,7 @@ "graphic-cases": 2, "graphic-draggable": 1, "graphic-transition": 3, - "heatmap": 1, + "heatmap": 2, "heatmap-gap-bug": 1, "heatmap-map": 1, "homepage3": 1, diff --git a/test/runTest/actions/heatmap.json b/test/runTest/actions/heatmap.json index 671b155d21..d8b1813dd5 100644 --- a/test/runTest/actions/heatmap.json +++ b/test/runTest/actions/heatmap.json @@ -1 +1 @@ -[{"name":"Action 1","ops":[{"type":"mousedown","time":264,"x":12,"y":447},{"type":"mousemove","time":324,"x":12,"y":447},{"type":"mousemove","time":535,"x":13,"y":491},{"type":"mouseup","time":703,"x":13,"y":491},{"time":704,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":740,"x":13,"y":491},{"type":"mousemove","time":941,"x":12,"y":583},{"type":"mousemove","time":1142,"x":12,"y":584},{"type":"mousemove","time":1358,"x":13,"y":589},{"type":"mousedown","time":1366,"x":13,"y":589},{"type":"mousemove","time":1573,"x":14,"y":552},{"type":"mousemove","time":1773,"x":15,"y":546},{"type":"mouseup","time":1923,"x":15,"y":546},{"time":1924,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2087,"x":15,"y":546},{"type":"mousemove","time":2288,"x":14,"y":522},{"type":"mousemove","time":2488,"x":14,"y":519},{"type":"mousemove","time":2700,"x":14,"y":517},{"type":"mousemove","time":2874,"x":14,"y":518},{"type":"mousemove","time":3074,"x":14,"y":521},{"type":"mousemove","time":3336,"x":14,"y":522},{"type":"mousedown","time":3444,"x":14,"y":522},{"type":"mouseup","time":3551,"x":14,"y":522},{"time":3552,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1603891145024}] \ No newline at end of file +[{"name":"Action 1","ops":[{"type":"mousedown","time":264,"x":12,"y":447},{"type":"mousemove","time":324,"x":12,"y":447},{"type":"mousemove","time":535,"x":13,"y":491},{"type":"mouseup","time":703,"x":13,"y":491},{"time":704,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":740,"x":13,"y":491},{"type":"mousemove","time":941,"x":12,"y":583},{"type":"mousemove","time":1142,"x":12,"y":584},{"type":"mousemove","time":1358,"x":13,"y":589},{"type":"mousedown","time":1366,"x":13,"y":589},{"type":"mousemove","time":1573,"x":14,"y":552},{"type":"mousemove","time":1773,"x":15,"y":546},{"type":"mouseup","time":1923,"x":15,"y":546},{"time":1924,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":2087,"x":15,"y":546},{"type":"mousemove","time":2288,"x":14,"y":522},{"type":"mousemove","time":2488,"x":14,"y":519},{"type":"mousemove","time":2700,"x":14,"y":517},{"type":"mousemove","time":2874,"x":14,"y":518},{"type":"mousemove","time":3074,"x":14,"y":521},{"type":"mousemove","time":3336,"x":14,"y":522},{"type":"mousedown","time":3444,"x":14,"y":522},{"type":"mouseup","time":3551,"x":14,"y":522},{"time":3552,"delay":400,"type":"screenshot-auto"}],"scrollY":0,"scrollX":0,"timestamp":1603891145024},{"name":"Action 2","ops":[{"type":"mousemove","time":336,"x":711,"y":515},{"type":"mousemove","time":545,"x":750,"y":446},{"type":"mousemove","time":752,"x":751,"y":426},{"type":"mousemove","time":957,"x":756,"y":417},{"type":"mousemove","time":1169,"x":766,"y":421},{"type":"mousemove","time":1369,"x":769,"y":425},{"type":"mousemove","time":1574,"x":773,"y":425},{"type":"mousedown","time":1708,"x":776,"y":425},{"type":"mousemove","time":1790,"x":776,"y":425},{"type":"mousemove","time":1835,"x":778,"y":425},{"type":"mousemove","time":2042,"x":778,"y":395},{"type":"mousemove","time":2244,"x":778,"y":365},{"type":"mousemove","time":2452,"x":778,"y":345},{"type":"mousemove","time":2662,"x":778,"y":322},{"type":"mousemove","time":2868,"x":778,"y":290},{"type":"mousemove","time":3069,"x":778,"y":272},{"type":"mousemove","time":3282,"x":779,"y":261},{"type":"mousemove","time":3545,"x":782,"y":295},{"type":"mousemove","time":3890,"x":782,"y":403},{"type":"mousemove","time":4098,"x":780,"y":422},{"type":"mousemove","time":4308,"x":778,"y":438},{"type":"mouseup","time":4393,"x":776,"y":439},{"time":4394,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":4518,"x":768,"y":424},{"type":"mousemove","time":4723,"x":766,"y":414},{"type":"mousedown","time":4875,"x":763,"y":411},{"type":"mousemove","time":4953,"x":763,"y":410},{"type":"mousemove","time":5167,"x":770,"y":362},{"type":"mousemove","time":5368,"x":770,"y":294},{"type":"mousemove","time":5575,"x":766,"y":256},{"type":"mousemove","time":5779,"x":764,"y":237},{"type":"mousemove","time":5992,"x":764,"y":233},{"type":"mouseup","time":6129,"x":764,"y":232},{"time":6130,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":6202,"x":758,"y":247},{"type":"mousemove","time":6412,"x":513,"y":515},{"type":"mousemove","time":6618,"x":415,"y":562},{"type":"mousemove","time":6818,"x":402,"y":572},{"type":"mousedown","time":7015,"x":399,"y":575},{"type":"mousemove","time":7028,"x":399,"y":575},{"type":"mousemove","time":7240,"x":471,"y":566},{"type":"mousemove","time":7452,"x":570,"y":560},{"type":"mousemove","time":7654,"x":667,"y":560},{"type":"mousemove","time":7856,"x":722,"y":560},{"type":"mousemove","time":8060,"x":731,"y":560},{"type":"mousemove","time":8271,"x":536,"y":561},{"type":"mousemove","time":8479,"x":346,"y":565},{"type":"mousemove","time":8690,"x":271,"y":567},{"type":"mouseup","time":8876,"x":264,"y":567},{"time":8877,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":8895,"x":264,"y":567},{"type":"mousemove","time":9102,"x":211,"y":560},{"type":"mousedown","time":9226,"x":209,"y":560},{"type":"mousemove","time":9313,"x":225,"y":560},{"type":"mousemove","time":9518,"x":446,"y":556},{"type":"mousemove","time":9719,"x":553,"y":550},{"type":"mousemove","time":9931,"x":608,"y":548},{"type":"mousemove","time":10137,"x":685,"y":547},{"type":"mousemove","time":10345,"x":709,"y":543},{"type":"mousemove","time":10584,"x":710,"y":543},{"type":"mouseup","time":10611,"x":710,"y":543},{"time":10612,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":10620,"x":710,"y":543},{"type":"mousemove","time":10826,"x":534,"y":567},{"type":"mousemove","time":11034,"x":544,"y":571},{"type":"mousemove","time":11242,"x":550,"y":571},{"type":"mousedown","time":11277,"x":550,"y":571},{"type":"mousemove","time":11384,"x":542,"y":571},{"type":"mousemove","time":11591,"x":221,"y":574},{"type":"mousemove","time":11797,"x":48,"y":577},{"type":"mousemove","time":12013,"x":1,"y":577},{"type":"mousemove","time":12203,"x":17,"y":564},{"type":"mousemove","time":12409,"x":550,"y":527},{"type":"mousedown","time":12516,"x":573,"y":520},{"type":"mousemove","time":12626,"x":573,"y":520},{"type":"mouseup","time":12662,"x":576,"y":520},{"time":12663,"delay":400,"type":"screenshot-auto"},{"type":"mousemove","time":12862,"x":576,"y":521}],"scrollY":1058,"scrollX":0,"timestamp":1667752510456}] \ No newline at end of file