Skip to content

Commit ccbbd8a

Browse files
authored
Merge pull request #21001 from sjcobb/fix-21000-line-event
feat(line): add `triggerEvent` option for more control over mouse event
2 parents aa9db72 + 5a575c9 commit ccbbd8a

File tree

5 files changed

+161
-33
lines changed

5 files changed

+161
-33
lines changed

src/chart/line/LineSeries.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,18 @@ export interface LineSeriesOption extends SeriesOption<LineStateOption<CallbackD
120120

121121
data?: (LineDataValue | LineDataItemOption)[]
122122

123+
/**
124+
* @deprecated
125+
* This option has been deprecated since v6.0.1.
126+
* Use `triggerEvent: 'line'` for only line event or `triggerEvent: true` for both line and area event.
127+
*/
123128
triggerLineEvent?: boolean
129+
130+
/**
131+
* Whether to trigger event when hovering on the line or the area
132+
* @since v6.0.1
133+
*/
134+
triggerEvent?: boolean | 'line' | 'area'
124135
}
125136

126137
class LineSeriesModel extends SeriesModel<LineSeriesOption> {
@@ -214,7 +225,12 @@ class LineSeriesModel extends SeriesModel<LineSeriesOption> {
214225
divideShape: 'clone'
215226
},
216227

217-
triggerLineEvent: false
228+
/**
229+
* @deprecated
230+
*/
231+
triggerLineEvent: false,
232+
233+
triggerEvent: false
218234
};
219235

220236
getLegendIcon(opt: LegendIconParams): ECSymbol | Group {

src/chart/line/LineView.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ import { setStatesStylesFromModel, setStatesFlag, toggleHoverEmphasis, SPECIAL_S
5252
import Model from '../../model/Model';
5353
import { setLabelStyle, getLabelStatesModels, labelInner } from '../../label/labelStyle';
5454
import { getDefaultLabel, getDefaultInterpolatedLabel } from '../helper/labelHelper';
55-
5655
import { getECData } from '../../util/innerStore';
5756
import { createFloat32Array } from '../../util/vendor';
5857
import { convertToColorString } from '../../util/format';
58+
import { warnDeprecated } from '../../util/styleCompat';
5959
import { lerp } from 'zrender/src/tool/color';
6060
import Element from 'zrender/src/Element';
6161

@@ -621,7 +621,7 @@ class LineView extends ChartView {
621621
_endLabel: graphic.Text;
622622

623623
_polyline: ECPolyline;
624-
_polygon: ECPolygon;
624+
_polygon?: ECPolygon;
625625

626626
_stackedOnPoints: ArrayLike<number>;
627627
_points: ArrayLike<number>;
@@ -920,21 +920,31 @@ class LineView extends ChartView {
920920
this._step = step;
921921
this._valueOrigin = valueOrigin;
922922

923-
if (seriesModel.get('triggerLineEvent')) {
924-
this.packEventData(seriesModel, polyline);
925-
polygon && this.packEventData(seriesModel, polygon);
923+
const triggerEvent = seriesModel.get('triggerEvent');
924+
const triggerLineEvent = seriesModel.get('triggerLineEvent');
925+
926+
if (__DEV__) {
927+
triggerLineEvent && warnDeprecated('triggerLineEvent', 'Use the `triggerEvent` option instead.');
926928
}
929+
930+
const shouldTriggerLineEvent = triggerLineEvent === true || triggerEvent === true || triggerEvent === 'line';
931+
const shouldTriggerAreaEvent = triggerLineEvent === true || triggerEvent === true || triggerEvent === 'area';
932+
933+
this.packEventData(seriesModel, polyline, shouldTriggerLineEvent);
934+
polygon && this.packEventData(seriesModel, polygon, shouldTriggerAreaEvent);
927935
}
928936

929-
private packEventData(seriesModel: LineSeriesModel, el: Element) {
930-
getECData(el).eventData = {
937+
private packEventData(seriesModel: LineSeriesModel, el: Element, enable: boolean) {
938+
getECData(el).eventData = enable ? {
931939
componentType: 'series',
932940
componentSubType: 'line',
933941
componentIndex: seriesModel.componentIndex,
934942
seriesIndex: seriesModel.seriesIndex,
935943
seriesName: seriesModel.name,
936-
seriesType: 'line'
937-
};
944+
seriesType: 'line',
945+
// for determining this event is triggered by area or line
946+
selfType: el === this._polygon ? 'area' : 'line'
947+
} : null;
938948
}
939949

940950
highlight(

test/polyline-gon-event.html

Lines changed: 123 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/runTest/actions/__meta__.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/runTest/actions/polyline-gon-event.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)