evui 3.4.155 → 3.4.156
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/evui.common.js +158 -66
- package/dist/evui.common.js.map +1 -1
- package/dist/evui.umd.js +158 -66
- package/dist/evui.umd.js.map +1 -1
- package/dist/evui.umd.min.js +1 -1
- package/dist/evui.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/chart/chart.core.js +2 -2
- package/src/components/chart/element/element.bar.js +5 -0
- package/src/components/chart/element/element.line.js +26 -0
- package/src/components/chart/element/element.tip.js +1 -1
- package/src/components/chart/model/model.store.js +90 -51
- package/src/components/chart/plugins/plugins.interaction.js +21 -7
package/dist/evui.common.js
CHANGED
|
@@ -11235,7 +11235,7 @@ $({ target: 'Number', stat: true }, {
|
|
|
11235
11235
|
/***/ "9224":
|
|
11236
11236
|
/***/ (function(module) {
|
|
11237
11237
|
|
|
11238
|
-
module.exports = JSON.parse("{\"a\":\"3.4.
|
|
11238
|
+
module.exports = JSON.parse("{\"a\":\"3.4.156\"}");
|
|
11239
11239
|
|
|
11240
11240
|
/***/ }),
|
|
11241
11241
|
|
|
@@ -39902,7 +39902,7 @@ var modules = {
|
|
|
39902
39902
|
return null;
|
|
39903
39903
|
}
|
|
39904
39904
|
|
|
39905
|
-
itemPosition = [this.
|
|
39905
|
+
itemPosition = [this.getHitItemByPosition([dataInfo.xp, dataInfo.yp], useApproximate, dataIndex, true)];
|
|
39906
39906
|
} else {
|
|
39907
39907
|
var seriesList = Object.entries(this.seriesList);
|
|
39908
39908
|
var firShowSeriesID;
|
|
@@ -39927,7 +39927,7 @@ var modules = {
|
|
|
39927
39927
|
return null;
|
|
39928
39928
|
}
|
|
39929
39929
|
|
|
39930
|
-
return _this7.
|
|
39930
|
+
return _this7.getHitItemByPosition([(_dataInfo$xp = dataInfo === null || dataInfo === void 0 ? void 0 : dataInfo.xp) !== null && _dataInfo$xp !== void 0 ? _dataInfo$xp : 0, (_dataInfo$yp = dataInfo === null || dataInfo === void 0 ? void 0 : dataInfo.yp) !== null && _dataInfo$yp !== void 0 ? _dataInfo$yp : 0], useApproximate, idx, true);
|
|
39931
39931
|
});
|
|
39932
39932
|
}
|
|
39933
39933
|
|
|
@@ -39951,30 +39951,50 @@ var modules = {
|
|
|
39951
39951
|
},
|
|
39952
39952
|
|
|
39953
39953
|
/**
|
|
39954
|
-
* Find
|
|
39954
|
+
* Find the hit item at the given position (x, y).
|
|
39955
|
+
*
|
|
39956
|
+
* 선택 우선순위:
|
|
39957
|
+
* 1. directHit (bar 박스 내부 클릭) — 가장 가까운 것
|
|
39958
|
+
* 2. hit (line 포인트 근접 등) — 가장 가까운 것
|
|
39959
|
+
* 3. hit이 전혀 없으면 데이터가 있는 첫 시리즈로 fallback (기존 동작 호환)
|
|
39960
|
+
*
|
|
39961
|
+
* 과거에는 "같은 라벨 위에서 값이 가장 큰 시리즈"를 돌려주는 max-value 덮어쓰기 방식이었으나,
|
|
39962
|
+
* bar + line combo 차트에서 작은 bar를 클릭해도 큰 값의 line이 선택되는 버그의 원인이었다.
|
|
39963
|
+
* 이번 수정으로 사용자가 실제로 가리킨 시리즈(hit)가 선택되도록 바뀐다.
|
|
39964
|
+
*
|
|
39955
39965
|
* @param {array} offset position x and y
|
|
39956
39966
|
* @param {boolean} useApproximate if it's true. it'll look for closed item on mouse position
|
|
39957
39967
|
* @param {number} dataIndex selected data index
|
|
39958
39968
|
* @param {boolean} useSelectLabelOrItem used to display select label/item at tooltip location
|
|
39959
39969
|
*
|
|
39960
|
-
* @returns {object}
|
|
39970
|
+
* @returns {object} hit item information
|
|
39961
39971
|
*/
|
|
39962
|
-
|
|
39963
|
-
var
|
|
39972
|
+
getHitItemByPosition: function getHitItemByPosition(offset) {
|
|
39973
|
+
var _ref4;
|
|
39964
39974
|
|
|
39965
39975
|
var useApproximate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
39966
39976
|
var dataIndex = arguments.length > 2 ? arguments[2] : undefined;
|
|
39967
39977
|
var useSelectLabelOrItem = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
39968
39978
|
var seriesIDs = Object.keys(this.seriesList);
|
|
39969
|
-
var isHorizontal = !!this.options.horizontal;
|
|
39970
|
-
|
|
39971
|
-
var
|
|
39972
|
-
var
|
|
39973
|
-
var
|
|
39974
|
-
var
|
|
39979
|
+
var isHorizontal = !!this.options.horizontal; // hit 기반 결과 (최우선)
|
|
39980
|
+
|
|
39981
|
+
var hitType = null;
|
|
39982
|
+
var hitLabel = null;
|
|
39983
|
+
var hitValuePos = null;
|
|
39984
|
+
var hitValue = null;
|
|
39985
|
+
var hitSeriesID = '';
|
|
39986
|
+
var hitDataIndex = null;
|
|
39987
|
+
var hitDistance = Infinity;
|
|
39988
|
+
var hasDirectHit = false; // fallback: hit이 전혀 없을 때 사용할 "데이터 있는 첫 시리즈" 정보
|
|
39989
|
+
|
|
39990
|
+
var fallbackType = null;
|
|
39991
|
+
var fallbackLabel = null;
|
|
39992
|
+
var fallbackValuePos = null;
|
|
39993
|
+
var fallbackValue = null;
|
|
39994
|
+
var fallbackSeriesID = '';
|
|
39995
|
+
var fallbackDataIndex = null;
|
|
39975
39996
|
var acc = 0;
|
|
39976
39997
|
var useStack = false;
|
|
39977
|
-
var maxIndex = null;
|
|
39978
39998
|
|
|
39979
39999
|
for (var ix = 0; ix < seriesIDs.length; ix++) {
|
|
39980
40000
|
var seriesID = seriesIDs[ix];
|
|
@@ -39988,12 +40008,13 @@ var modules = {
|
|
|
39988
40008
|
|
|
39989
40009
|
if (data) {
|
|
39990
40010
|
if (helpers_util.isPieType(item.type)) {
|
|
39991
|
-
|
|
39992
|
-
|
|
39993
|
-
|
|
39994
|
-
|
|
39995
|
-
|
|
39996
|
-
|
|
40011
|
+
// pie 차트는 hit detection 체계가 달라 기존 동작 유지 (단일 pie 시리즈가 일반적)
|
|
40012
|
+
hitType = item.type;
|
|
40013
|
+
hitLabel = seriesID;
|
|
40014
|
+
hitSeriesID = seriesID;
|
|
40015
|
+
hitValuePos = (data.ea - data.sa) / 2;
|
|
40016
|
+
hitValue = data.o;
|
|
40017
|
+
hitDataIndex = data.index;
|
|
39997
40018
|
} else {
|
|
39998
40019
|
var ldata = isHorizontal ? data.y : data.x;
|
|
39999
40020
|
var lp = isHorizontal ? data.yp : data.xp;
|
|
@@ -40006,24 +40027,48 @@ var modules = {
|
|
|
40006
40027
|
useStack = true;
|
|
40007
40028
|
} else {
|
|
40008
40029
|
acc += data.y;
|
|
40009
|
-
}
|
|
40030
|
+
} // fallback 기록: 데이터가 있는 첫 시리즈를 저장
|
|
40031
|
+
|
|
40032
|
+
|
|
40033
|
+
if (fallbackSeriesID === '') {
|
|
40034
|
+
fallbackType = series.type;
|
|
40035
|
+
fallbackLabel = ldata;
|
|
40036
|
+
fallbackValuePos = lp;
|
|
40037
|
+
fallbackValue = g;
|
|
40038
|
+
fallbackSeriesID = seriesID;
|
|
40039
|
+
fallbackDataIndex = index;
|
|
40040
|
+
} // hit 기반 선택: item.hit이 true이고 유효한 좌표가 있을 때만 고려
|
|
40041
|
+
|
|
40042
|
+
|
|
40043
|
+
if (item.hit && data.xp !== undefined && data.yp !== undefined) {
|
|
40044
|
+
var distance = Math.pow(data.xp - offset[0], 2) + Math.pow(data.yp - offset[1], 2);
|
|
40045
|
+
|
|
40046
|
+
if (item.directHit) {
|
|
40047
|
+
// 직접 박스 히트는 최우선. 여러 개이면 가장 가까운 것.
|
|
40048
|
+
if (!hasDirectHit || distance < hitDistance) {
|
|
40049
|
+
hitDistance = distance;
|
|
40050
|
+
hitType = series.type;
|
|
40051
|
+
hitLabel = ldata;
|
|
40052
|
+
hitValuePos = lp;
|
|
40053
|
+
hitValue = g;
|
|
40054
|
+
hitSeriesID = seriesID;
|
|
40055
|
+
hitDataIndex = index;
|
|
40056
|
+
}
|
|
40010
40057
|
|
|
40011
|
-
|
|
40012
|
-
if (
|
|
40013
|
-
|
|
40014
|
-
|
|
40015
|
-
|
|
40016
|
-
|
|
40017
|
-
|
|
40018
|
-
|
|
40058
|
+
hasDirectHit = true;
|
|
40059
|
+
} else if (!hasDirectHit) {
|
|
40060
|
+
// directHit가 없을 때만 일반 hit 거리 비교 참여
|
|
40061
|
+
// (라인 근접 히트가 박스 직접 히트를 이기지 못하도록)
|
|
40062
|
+
if (distance < hitDistance) {
|
|
40063
|
+
hitDistance = distance;
|
|
40064
|
+
hitType = series.type;
|
|
40065
|
+
hitLabel = ldata;
|
|
40066
|
+
hitValuePos = lp;
|
|
40067
|
+
hitValue = g;
|
|
40068
|
+
hitSeriesID = seriesID;
|
|
40069
|
+
hitDataIndex = index;
|
|
40070
|
+
}
|
|
40019
40071
|
}
|
|
40020
|
-
} else if (maxValue === null || maxValue <= g) {
|
|
40021
|
-
maxValue = g;
|
|
40022
|
-
maxSeriesID = seriesID;
|
|
40023
|
-
maxLabel = ldata;
|
|
40024
|
-
maxValuePos = lp;
|
|
40025
|
-
maxIndex = index;
|
|
40026
|
-
maxType = series.type;
|
|
40027
40072
|
}
|
|
40028
40073
|
}
|
|
40029
40074
|
}
|
|
@@ -40031,22 +40076,23 @@ var modules = {
|
|
|
40031
40076
|
}
|
|
40032
40077
|
}
|
|
40033
40078
|
|
|
40079
|
+
var hasHit = hitSeriesID !== '';
|
|
40034
40080
|
return {
|
|
40035
|
-
type:
|
|
40036
|
-
label:
|
|
40037
|
-
pos:
|
|
40038
|
-
value: (
|
|
40039
|
-
sId:
|
|
40081
|
+
type: hasHit ? hitType : fallbackType,
|
|
40082
|
+
label: hasHit ? hitLabel : fallbackLabel,
|
|
40083
|
+
pos: hasHit ? hitValuePos : fallbackValuePos,
|
|
40084
|
+
value: (_ref4 = hasHit ? hitValue : fallbackValue) !== null && _ref4 !== void 0 ? _ref4 : 0,
|
|
40085
|
+
sId: hasHit ? hitSeriesID : fallbackSeriesID,
|
|
40040
40086
|
acc: acc,
|
|
40041
40087
|
useStack: useStack,
|
|
40042
|
-
|
|
40088
|
+
dataIndex: hasHit ? hitDataIndex : fallbackDataIndex
|
|
40043
40089
|
};
|
|
40044
40090
|
},
|
|
40045
40091
|
|
|
40046
40092
|
/**
|
|
40047
40093
|
* @typedef {Object} LabelInfoResult
|
|
40048
40094
|
* @property {number} labelIndex - 선택된 라벨의 인덱스
|
|
40049
|
-
* @property {object} hitInfo - 해당 위치에서의 히트 정보 (
|
|
40095
|
+
* @property {object} hitInfo - 해당 위치에서의 히트 정보 (getHitItemByPosition 반환값)
|
|
40050
40096
|
*/
|
|
40051
40097
|
|
|
40052
40098
|
/**
|
|
@@ -40071,9 +40117,9 @@ var modules = {
|
|
|
40071
40117
|
};
|
|
40072
40118
|
var seriesList = this.data.series;
|
|
40073
40119
|
var pointSize = (_Object$values$sort$ = (_Object$values$sort$2 = Object.values(seriesList).sort(function (a, b) {
|
|
40074
|
-
var
|
|
40120
|
+
var _ref5, _b$pointSize;
|
|
40075
40121
|
|
|
40076
|
-
return (
|
|
40122
|
+
return (_ref5 = (_b$pointSize = b.pointSize) !== null && _b$pointSize !== void 0 ? _b$pointSize : 0 - a.pointSize) !== null && _ref5 !== void 0 ? _ref5 : 0;
|
|
40077
40123
|
})[0]) === null || _Object$values$sort$2 === void 0 ? void 0 : _Object$values$sort$2.pointSize) !== null && _Object$values$sort$ !== void 0 ? _Object$values$sort$ : 3; // default pointSize 3
|
|
40078
40124
|
|
|
40079
40125
|
var _this$options = this.options,
|
|
@@ -40105,10 +40151,10 @@ var modules = {
|
|
|
40105
40151
|
_scrollbarOpt2$interv = _scrollbarOpt2.interval,
|
|
40106
40152
|
interval = _scrollbarOpt2$interv === void 0 ? 1 : _scrollbarOpt2$interv;
|
|
40107
40153
|
|
|
40108
|
-
var
|
|
40109
|
-
|
|
40110
|
-
min =
|
|
40111
|
-
max =
|
|
40154
|
+
var _ref6 = range !== null && range !== void 0 ? range : [0, scale.labels.length],
|
|
40155
|
+
_ref7 = _slicedToArray(_ref6, 2),
|
|
40156
|
+
min = _ref7[0],
|
|
40157
|
+
max = _ref7[1];
|
|
40112
40158
|
|
|
40113
40159
|
var labelCount = Math.floor((+max - +min) / interval) + 1;
|
|
40114
40160
|
var labelGap = (endPoint - startPoint) / labelCount;
|
|
@@ -40134,7 +40180,7 @@ var modules = {
|
|
|
40134
40180
|
|
|
40135
40181
|
labelIndex = scale.labels.length > _index ? _index : -1;
|
|
40136
40182
|
} else {
|
|
40137
|
-
var _hitInfo$
|
|
40183
|
+
var _hitInfo$dataIndex;
|
|
40138
40184
|
|
|
40139
40185
|
var offsetX;
|
|
40140
40186
|
var dataIndex;
|
|
@@ -40149,8 +40195,8 @@ var modules = {
|
|
|
40149
40195
|
offsetX = x;
|
|
40150
40196
|
}
|
|
40151
40197
|
|
|
40152
|
-
hitInfo = this.
|
|
40153
|
-
labelIndex = (_hitInfo$
|
|
40198
|
+
hitInfo = this.getHitItemByPosition([offsetX, y], selectLabel === null || selectLabel === void 0 ? void 0 : selectLabel.useApproximateValue, dataIndex, true);
|
|
40199
|
+
labelIndex = (_hitInfo$dataIndex = hitInfo.dataIndex) !== null && _hitInfo$dataIndex !== void 0 ? _hitInfo$dataIndex : -1;
|
|
40154
40200
|
}
|
|
40155
40201
|
|
|
40156
40202
|
return {
|
|
@@ -42133,7 +42179,7 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42133
42179
|
}, {
|
|
42134
42180
|
key: "findGraphData",
|
|
42135
42181
|
value: function findGraphData(offset, isHorizontal, dataIndex, useSelectLabelOrItem) {
|
|
42136
|
-
var _item$data;
|
|
42182
|
+
var _this$pointSize, _item$data;
|
|
42137
42183
|
|
|
42138
42184
|
var xp = offset[0];
|
|
42139
42185
|
var yp = offset[1];
|
|
@@ -42145,7 +42191,23 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42145
42191
|
var gdata = this.data.filter(function (data) {
|
|
42146
42192
|
return !helpers_util.isNullOrUndefined(data.x);
|
|
42147
42193
|
});
|
|
42148
|
-
var isLinearInterpolation = this.useLinearInterpolation();
|
|
42194
|
+
var isLinearInterpolation = this.useLinearInterpolation(); // line 포인트 "정확 히트" 판정용 반경.
|
|
42195
|
+
// combo 차트에서 line 포인트 중심을 직격한 경우, 같은 좌표의 bar(directHit)보다
|
|
42196
|
+
// line이 우선되도록 item.directHit = true로 표시한다. 그 외(단순 Y축 근접)는 기존처럼 hit만.
|
|
42197
|
+
// 포인트 반지름에 기본 포인트 크기(LINE_OPTION.pointSize)만큼의 클릭 여유 마진을 더하고,
|
|
42198
|
+
// 시각적으로 하이라이트되는 포인트 반경(highlight.maxSize)을 최소 보장값으로 사용한다.
|
|
42199
|
+
|
|
42200
|
+
var directHitRadius = Math.max(((_this$pointSize = this.pointSize) !== null && _this$pointSize !== void 0 ? _this$pointSize : LINE_OPTION.pointSize) + LINE_OPTION.pointSize, LINE_OPTION.highlight.maxSize);
|
|
42201
|
+
|
|
42202
|
+
var isLinePointDirectHit = function isLinePointDirectHit(point) {
|
|
42203
|
+
if (!point || point.xp === undefined || point.yp === undefined) {
|
|
42204
|
+
return false;
|
|
42205
|
+
}
|
|
42206
|
+
|
|
42207
|
+
var dx = xp - point.xp;
|
|
42208
|
+
var dy = yp - point.yp;
|
|
42209
|
+
return dx * dx + dy * dy <= directHitRadius * directHitRadius;
|
|
42210
|
+
};
|
|
42149
42211
|
|
|
42150
42212
|
if (gdata !== null && gdata !== void 0 && gdata.length) {
|
|
42151
42213
|
if (typeof dataIndex === 'number' && this.show) {
|
|
@@ -42160,6 +42222,11 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42160
42222
|
if (yDist <= directHitThreshold) {
|
|
42161
42223
|
item.hit = true;
|
|
42162
42224
|
}
|
|
42225
|
+
|
|
42226
|
+
if (isLinePointDirectHit(point)) {
|
|
42227
|
+
item.hit = true;
|
|
42228
|
+
item.directHit = true;
|
|
42229
|
+
}
|
|
42163
42230
|
}
|
|
42164
42231
|
} else if (typeof this.beforeFindItemIndex === 'number' && this.beforeFindItemIndex !== -1 && this.show && useSelectLabelOrItem) {
|
|
42165
42232
|
item.data = gdata[this.beforeFindItemIndex];
|
|
@@ -42308,6 +42375,11 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42308
42375
|
if (_yDist <= _directHitThreshold) {
|
|
42309
42376
|
item.hit = true;
|
|
42310
42377
|
}
|
|
42378
|
+
|
|
42379
|
+
if (isLinePointDirectHit(_point3)) {
|
|
42380
|
+
item.hit = true;
|
|
42381
|
+
item.directHit = true;
|
|
42382
|
+
}
|
|
42311
42383
|
}
|
|
42312
42384
|
}
|
|
42313
42385
|
}
|
|
@@ -43248,7 +43320,10 @@ var element_bar_Bar = /*#__PURE__*/function () {
|
|
|
43248
43320
|
if (barData[clampedIndex]) {
|
|
43249
43321
|
item.data = barData[clampedIndex];
|
|
43250
43322
|
item.index = clampedIndex;
|
|
43251
|
-
item.hit = this.isPointInBar(offset, barData[clampedIndex]);
|
|
43323
|
+
item.hit = this.isPointInBar(offset, barData[clampedIndex]); // bar 박스 내부 클릭은 "직접 박스 히트"로 표시.
|
|
43324
|
+
// findHitItem에서 line 포인트 근접 히트보다 우선 선택되도록 하기 위함.
|
|
43325
|
+
|
|
43326
|
+
item.directHit = item.hit;
|
|
43252
43327
|
}
|
|
43253
43328
|
|
|
43254
43329
|
return item;
|
|
@@ -43305,7 +43380,9 @@ var element_bar_Bar = /*#__PURE__*/function () {
|
|
|
43305
43380
|
if (inRange) {
|
|
43306
43381
|
item.data = barData;
|
|
43307
43382
|
item.index = barData.index;
|
|
43308
|
-
item.hit = this.isPointInBar(offset, barData);
|
|
43383
|
+
item.hit = this.isPointInBar(offset, barData); // bar 박스 내부 클릭은 "직접 박스 히트"로 표시 (findHitItem 우선순위용).
|
|
43384
|
+
|
|
43385
|
+
item.directHit = item.hit;
|
|
43309
43386
|
return item;
|
|
43310
43387
|
}
|
|
43311
43388
|
|
|
@@ -51814,19 +51891,19 @@ var plugins_interaction_modules = {
|
|
|
51814
51891
|
var useSelectSeries = (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.use) && (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.useClick);
|
|
51815
51892
|
|
|
51816
51893
|
var setSelectedItemInfo = function setSelectedItemInfo() {
|
|
51817
|
-
var hitInfo = _this.
|
|
51894
|
+
var hitInfo = _this.getHitItemByPosition(offset, false);
|
|
51818
51895
|
|
|
51819
51896
|
args.label = hitInfo.label;
|
|
51820
51897
|
args.value = hitInfo.value;
|
|
51821
51898
|
args.seriesId = hitInfo.sId;
|
|
51822
|
-
args.dataIndex = hitInfo.
|
|
51899
|
+
args.dataIndex = hitInfo.dataIndex;
|
|
51823
51900
|
args.acc = hitInfo.acc;
|
|
51824
51901
|
|
|
51825
51902
|
if (hitInfo !== null && hitInfo !== void 0 && hitInfo.sId) {
|
|
51826
51903
|
args.selected = {
|
|
51827
51904
|
eventTarget: 'item',
|
|
51828
51905
|
seriesId: _this.isDeselectItem(hitInfo) ? null : hitInfo.sId,
|
|
51829
|
-
dataIndex: _this.isDeselectItem(hitInfo) ? null : hitInfo.
|
|
51906
|
+
dataIndex: _this.isDeselectItem(hitInfo) ? null : hitInfo.dataIndex
|
|
51830
51907
|
};
|
|
51831
51908
|
}
|
|
51832
51909
|
};
|
|
@@ -52500,7 +52577,10 @@ var plugins_interaction_modules = {
|
|
|
52500
52577
|
var maxv = '';
|
|
52501
52578
|
var maxg = null;
|
|
52502
52579
|
var maxSID = null;
|
|
52503
|
-
var minDistance = Infinity; //
|
|
52580
|
+
var minDistance = Infinity; // directHit(bar 박스 내부 클릭/hover) 시리즈가 발견되었는지 추적.
|
|
52581
|
+
// 한 번이라도 directHit가 있으면 line의 근접 포인트 히트는 hitId 후보에서 배제된다.
|
|
52582
|
+
|
|
52583
|
+
var hasDirectHit = false; // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
|
|
52504
52584
|
|
|
52505
52585
|
var targetDataIndex = this.findClosestDataIndex(offset, sIds);
|
|
52506
52586
|
|
|
@@ -52576,13 +52656,25 @@ var plugins_interaction_modules = {
|
|
|
52576
52656
|
if (maxg === null || maxg <= gdata) {
|
|
52577
52657
|
maxg = gdata;
|
|
52578
52658
|
maxSID = sId;
|
|
52579
|
-
} // 마우스 위치와의 거리 계산하여 가장 가까운 시리즈
|
|
52659
|
+
} // 마우스 위치와의 거리 계산하여 가장 가까운 시리즈 선택.
|
|
52660
|
+
// directHit(bar 박스 내부)가 하나라도 있으면 그중에서만 선택하고,
|
|
52661
|
+
// 라인의 근접 포인트 히트(item.hit=true, directHit=false)는 hitId 후보에서 배제한다.
|
|
52662
|
+
// bar + line combo 차트에서 작은 bar 클릭 시 큰 값의 line이 잡히던 버그 방지.
|
|
52580
52663
|
|
|
52581
52664
|
|
|
52582
52665
|
if (item.hit && item.data.xp !== undefined && item.data.yp !== undefined) {
|
|
52583
52666
|
var distance = Math.pow(item.data.xp - offset[0], 2) + Math.pow(item.data.yp - offset[1], 2);
|
|
52584
52667
|
|
|
52585
|
-
if (
|
|
52668
|
+
if (item.directHit) {
|
|
52669
|
+
// directHit는 최우선. 여러 directHit 중에서는 가장 가까운 것 선택.
|
|
52670
|
+
if (!hasDirectHit || distance < minDistance) {
|
|
52671
|
+
minDistance = distance;
|
|
52672
|
+
hitId = sId;
|
|
52673
|
+
}
|
|
52674
|
+
|
|
52675
|
+
hasDirectHit = true;
|
|
52676
|
+
} else if (!hasDirectHit && distance < minDistance) {
|
|
52677
|
+
// directHit가 없을 때만 일반 hit 거리 비교
|
|
52586
52678
|
minDistance = distance;
|
|
52587
52679
|
hitId = sId;
|
|
52588
52680
|
}
|
|
@@ -53278,7 +53370,7 @@ var plugins_interaction_modules = {
|
|
|
53278
53370
|
isDeselectItem: function isDeselectItem(hitInfo) {
|
|
53279
53371
|
var _this$defaultSelectIt, _this$defaultSelectIt2;
|
|
53280
53372
|
|
|
53281
|
-
return this.options.selectItem.useDeselectItem && (hitInfo === null || hitInfo === void 0 ? void 0 : hitInfo.
|
|
53373
|
+
return this.options.selectItem.useDeselectItem && (hitInfo === null || hitInfo === void 0 ? void 0 : hitInfo.dataIndex) === ((_this$defaultSelectIt = this.defaultSelectItemInfo) === null || _this$defaultSelectIt === void 0 ? void 0 : _this$defaultSelectIt.dataIndex) && (hitInfo === null || hitInfo === void 0 ? void 0 : hitInfo.sId) === ((_this$defaultSelectIt2 = this.defaultSelectItemInfo) === null || _this$defaultSelectIt2 === void 0 ? void 0 : _this$defaultSelectIt2.seriesID) && !isNaN(hitInfo === null || hitInfo === void 0 ? void 0 : hitInfo.dataIndex);
|
|
53282
53374
|
},
|
|
53283
53375
|
|
|
53284
53376
|
/**
|
|
@@ -54952,7 +55044,7 @@ var element_tip_modules = {
|
|
|
54952
55044
|
|
|
54953
55045
|
if (tipType === 'sel') {
|
|
54954
55046
|
if (hitInfo && hitInfo.label !== null) {
|
|
54955
|
-
lastTip.pos = type === 'bar' ? hitInfo.
|
|
55047
|
+
lastTip.pos = type === 'bar' ? hitInfo.dataIndex : hitInfo.label;
|
|
54956
55048
|
ldata = lastTip.pos;
|
|
54957
55049
|
} else if (lastTip.pos !== null) {
|
|
54958
55050
|
ldata = lastTip.pos;
|
|
@@ -56051,10 +56143,10 @@ var chart_core_EvChart = /*#__PURE__*/function () {
|
|
|
56051
56143
|
var lastHitInfo = this.lastHitInfo;
|
|
56052
56144
|
var defaultSelectInfo = this.defaultSelectItemInfo;
|
|
56053
56145
|
|
|
56054
|
-
if (lastHitInfo !== null && lastHitInfo !== void 0 && lastHitInfo.
|
|
56146
|
+
if (lastHitInfo !== null && lastHitInfo !== void 0 && lastHitInfo.dataIndex || (lastHitInfo === null || lastHitInfo === void 0 ? void 0 : lastHitInfo.dataIndex) === 0) {
|
|
56055
56147
|
_selectInfo = {
|
|
56056
56148
|
seriesID: lastHitInfo.sId,
|
|
56057
|
-
dataIndex: lastHitInfo.
|
|
56149
|
+
dataIndex: lastHitInfo.dataIndex
|
|
56058
56150
|
};
|
|
56059
56151
|
} else if (defaultSelectInfo !== null && defaultSelectInfo !== void 0 && defaultSelectInfo.dataIndex || (defaultSelectInfo === null || defaultSelectInfo === void 0 ? void 0 : defaultSelectInfo.dataIndex) === 0) {
|
|
56060
56152
|
_selectInfo = _objectSpread2({}, defaultSelectInfo);
|