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.umd.js
CHANGED
|
@@ -11244,7 +11244,7 @@ $({ target: 'Number', stat: true }, {
|
|
|
11244
11244
|
/***/ "9224":
|
|
11245
11245
|
/***/ (function(module) {
|
|
11246
11246
|
|
|
11247
|
-
module.exports = JSON.parse("{\"a\":\"3.4.
|
|
11247
|
+
module.exports = JSON.parse("{\"a\":\"3.4.156\"}");
|
|
11248
11248
|
|
|
11249
11249
|
/***/ }),
|
|
11250
11250
|
|
|
@@ -39911,7 +39911,7 @@ var modules = {
|
|
|
39911
39911
|
return null;
|
|
39912
39912
|
}
|
|
39913
39913
|
|
|
39914
|
-
itemPosition = [this.
|
|
39914
|
+
itemPosition = [this.getHitItemByPosition([dataInfo.xp, dataInfo.yp], useApproximate, dataIndex, true)];
|
|
39915
39915
|
} else {
|
|
39916
39916
|
var seriesList = Object.entries(this.seriesList);
|
|
39917
39917
|
var firShowSeriesID;
|
|
@@ -39936,7 +39936,7 @@ var modules = {
|
|
|
39936
39936
|
return null;
|
|
39937
39937
|
}
|
|
39938
39938
|
|
|
39939
|
-
return _this7.
|
|
39939
|
+
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);
|
|
39940
39940
|
});
|
|
39941
39941
|
}
|
|
39942
39942
|
|
|
@@ -39960,30 +39960,50 @@ var modules = {
|
|
|
39960
39960
|
},
|
|
39961
39961
|
|
|
39962
39962
|
/**
|
|
39963
|
-
* Find
|
|
39963
|
+
* Find the hit item at the given position (x, y).
|
|
39964
|
+
*
|
|
39965
|
+
* 선택 우선순위:
|
|
39966
|
+
* 1. directHit (bar 박스 내부 클릭) — 가장 가까운 것
|
|
39967
|
+
* 2. hit (line 포인트 근접 등) — 가장 가까운 것
|
|
39968
|
+
* 3. hit이 전혀 없으면 데이터가 있는 첫 시리즈로 fallback (기존 동작 호환)
|
|
39969
|
+
*
|
|
39970
|
+
* 과거에는 "같은 라벨 위에서 값이 가장 큰 시리즈"를 돌려주는 max-value 덮어쓰기 방식이었으나,
|
|
39971
|
+
* bar + line combo 차트에서 작은 bar를 클릭해도 큰 값의 line이 선택되는 버그의 원인이었다.
|
|
39972
|
+
* 이번 수정으로 사용자가 실제로 가리킨 시리즈(hit)가 선택되도록 바뀐다.
|
|
39973
|
+
*
|
|
39964
39974
|
* @param {array} offset position x and y
|
|
39965
39975
|
* @param {boolean} useApproximate if it's true. it'll look for closed item on mouse position
|
|
39966
39976
|
* @param {number} dataIndex selected data index
|
|
39967
39977
|
* @param {boolean} useSelectLabelOrItem used to display select label/item at tooltip location
|
|
39968
39978
|
*
|
|
39969
|
-
* @returns {object}
|
|
39979
|
+
* @returns {object} hit item information
|
|
39970
39980
|
*/
|
|
39971
|
-
|
|
39972
|
-
var
|
|
39981
|
+
getHitItemByPosition: function getHitItemByPosition(offset) {
|
|
39982
|
+
var _ref4;
|
|
39973
39983
|
|
|
39974
39984
|
var useApproximate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
39975
39985
|
var dataIndex = arguments.length > 2 ? arguments[2] : undefined;
|
|
39976
39986
|
var useSelectLabelOrItem = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
39977
39987
|
var seriesIDs = Object.keys(this.seriesList);
|
|
39978
|
-
var isHorizontal = !!this.options.horizontal;
|
|
39979
|
-
|
|
39980
|
-
var
|
|
39981
|
-
var
|
|
39982
|
-
var
|
|
39983
|
-
var
|
|
39988
|
+
var isHorizontal = !!this.options.horizontal; // hit 기반 결과 (최우선)
|
|
39989
|
+
|
|
39990
|
+
var hitType = null;
|
|
39991
|
+
var hitLabel = null;
|
|
39992
|
+
var hitValuePos = null;
|
|
39993
|
+
var hitValue = null;
|
|
39994
|
+
var hitSeriesID = '';
|
|
39995
|
+
var hitDataIndex = null;
|
|
39996
|
+
var hitDistance = Infinity;
|
|
39997
|
+
var hasDirectHit = false; // fallback: hit이 전혀 없을 때 사용할 "데이터 있는 첫 시리즈" 정보
|
|
39998
|
+
|
|
39999
|
+
var fallbackType = null;
|
|
40000
|
+
var fallbackLabel = null;
|
|
40001
|
+
var fallbackValuePos = null;
|
|
40002
|
+
var fallbackValue = null;
|
|
40003
|
+
var fallbackSeriesID = '';
|
|
40004
|
+
var fallbackDataIndex = null;
|
|
39984
40005
|
var acc = 0;
|
|
39985
40006
|
var useStack = false;
|
|
39986
|
-
var maxIndex = null;
|
|
39987
40007
|
|
|
39988
40008
|
for (var ix = 0; ix < seriesIDs.length; ix++) {
|
|
39989
40009
|
var seriesID = seriesIDs[ix];
|
|
@@ -39997,12 +40017,13 @@ var modules = {
|
|
|
39997
40017
|
|
|
39998
40018
|
if (data) {
|
|
39999
40019
|
if (helpers_util.isPieType(item.type)) {
|
|
40000
|
-
|
|
40001
|
-
|
|
40002
|
-
|
|
40003
|
-
|
|
40004
|
-
|
|
40005
|
-
|
|
40020
|
+
// pie 차트는 hit detection 체계가 달라 기존 동작 유지 (단일 pie 시리즈가 일반적)
|
|
40021
|
+
hitType = item.type;
|
|
40022
|
+
hitLabel = seriesID;
|
|
40023
|
+
hitSeriesID = seriesID;
|
|
40024
|
+
hitValuePos = (data.ea - data.sa) / 2;
|
|
40025
|
+
hitValue = data.o;
|
|
40026
|
+
hitDataIndex = data.index;
|
|
40006
40027
|
} else {
|
|
40007
40028
|
var ldata = isHorizontal ? data.y : data.x;
|
|
40008
40029
|
var lp = isHorizontal ? data.yp : data.xp;
|
|
@@ -40015,24 +40036,48 @@ var modules = {
|
|
|
40015
40036
|
useStack = true;
|
|
40016
40037
|
} else {
|
|
40017
40038
|
acc += data.y;
|
|
40018
|
-
}
|
|
40039
|
+
} // fallback 기록: 데이터가 있는 첫 시리즈를 저장
|
|
40040
|
+
|
|
40041
|
+
|
|
40042
|
+
if (fallbackSeriesID === '') {
|
|
40043
|
+
fallbackType = series.type;
|
|
40044
|
+
fallbackLabel = ldata;
|
|
40045
|
+
fallbackValuePos = lp;
|
|
40046
|
+
fallbackValue = g;
|
|
40047
|
+
fallbackSeriesID = seriesID;
|
|
40048
|
+
fallbackDataIndex = index;
|
|
40049
|
+
} // hit 기반 선택: item.hit이 true이고 유효한 좌표가 있을 때만 고려
|
|
40050
|
+
|
|
40051
|
+
|
|
40052
|
+
if (item.hit && data.xp !== undefined && data.yp !== undefined) {
|
|
40053
|
+
var distance = Math.pow(data.xp - offset[0], 2) + Math.pow(data.yp - offset[1], 2);
|
|
40054
|
+
|
|
40055
|
+
if (item.directHit) {
|
|
40056
|
+
// 직접 박스 히트는 최우선. 여러 개이면 가장 가까운 것.
|
|
40057
|
+
if (!hasDirectHit || distance < hitDistance) {
|
|
40058
|
+
hitDistance = distance;
|
|
40059
|
+
hitType = series.type;
|
|
40060
|
+
hitLabel = ldata;
|
|
40061
|
+
hitValuePos = lp;
|
|
40062
|
+
hitValue = g;
|
|
40063
|
+
hitSeriesID = seriesID;
|
|
40064
|
+
hitDataIndex = index;
|
|
40065
|
+
}
|
|
40019
40066
|
|
|
40020
|
-
|
|
40021
|
-
if (
|
|
40022
|
-
|
|
40023
|
-
|
|
40024
|
-
|
|
40025
|
-
|
|
40026
|
-
|
|
40027
|
-
|
|
40067
|
+
hasDirectHit = true;
|
|
40068
|
+
} else if (!hasDirectHit) {
|
|
40069
|
+
// directHit가 없을 때만 일반 hit 거리 비교 참여
|
|
40070
|
+
// (라인 근접 히트가 박스 직접 히트를 이기지 못하도록)
|
|
40071
|
+
if (distance < hitDistance) {
|
|
40072
|
+
hitDistance = distance;
|
|
40073
|
+
hitType = series.type;
|
|
40074
|
+
hitLabel = ldata;
|
|
40075
|
+
hitValuePos = lp;
|
|
40076
|
+
hitValue = g;
|
|
40077
|
+
hitSeriesID = seriesID;
|
|
40078
|
+
hitDataIndex = index;
|
|
40079
|
+
}
|
|
40028
40080
|
}
|
|
40029
|
-
} else if (maxValue === null || maxValue <= g) {
|
|
40030
|
-
maxValue = g;
|
|
40031
|
-
maxSeriesID = seriesID;
|
|
40032
|
-
maxLabel = ldata;
|
|
40033
|
-
maxValuePos = lp;
|
|
40034
|
-
maxIndex = index;
|
|
40035
|
-
maxType = series.type;
|
|
40036
40081
|
}
|
|
40037
40082
|
}
|
|
40038
40083
|
}
|
|
@@ -40040,22 +40085,23 @@ var modules = {
|
|
|
40040
40085
|
}
|
|
40041
40086
|
}
|
|
40042
40087
|
|
|
40088
|
+
var hasHit = hitSeriesID !== '';
|
|
40043
40089
|
return {
|
|
40044
|
-
type:
|
|
40045
|
-
label:
|
|
40046
|
-
pos:
|
|
40047
|
-
value: (
|
|
40048
|
-
sId:
|
|
40090
|
+
type: hasHit ? hitType : fallbackType,
|
|
40091
|
+
label: hasHit ? hitLabel : fallbackLabel,
|
|
40092
|
+
pos: hasHit ? hitValuePos : fallbackValuePos,
|
|
40093
|
+
value: (_ref4 = hasHit ? hitValue : fallbackValue) !== null && _ref4 !== void 0 ? _ref4 : 0,
|
|
40094
|
+
sId: hasHit ? hitSeriesID : fallbackSeriesID,
|
|
40049
40095
|
acc: acc,
|
|
40050
40096
|
useStack: useStack,
|
|
40051
|
-
|
|
40097
|
+
dataIndex: hasHit ? hitDataIndex : fallbackDataIndex
|
|
40052
40098
|
};
|
|
40053
40099
|
},
|
|
40054
40100
|
|
|
40055
40101
|
/**
|
|
40056
40102
|
* @typedef {Object} LabelInfoResult
|
|
40057
40103
|
* @property {number} labelIndex - 선택된 라벨의 인덱스
|
|
40058
|
-
* @property {object} hitInfo - 해당 위치에서의 히트 정보 (
|
|
40104
|
+
* @property {object} hitInfo - 해당 위치에서의 히트 정보 (getHitItemByPosition 반환값)
|
|
40059
40105
|
*/
|
|
40060
40106
|
|
|
40061
40107
|
/**
|
|
@@ -40080,9 +40126,9 @@ var modules = {
|
|
|
40080
40126
|
};
|
|
40081
40127
|
var seriesList = this.data.series;
|
|
40082
40128
|
var pointSize = (_Object$values$sort$ = (_Object$values$sort$2 = Object.values(seriesList).sort(function (a, b) {
|
|
40083
|
-
var
|
|
40129
|
+
var _ref5, _b$pointSize;
|
|
40084
40130
|
|
|
40085
|
-
return (
|
|
40131
|
+
return (_ref5 = (_b$pointSize = b.pointSize) !== null && _b$pointSize !== void 0 ? _b$pointSize : 0 - a.pointSize) !== null && _ref5 !== void 0 ? _ref5 : 0;
|
|
40086
40132
|
})[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
|
|
40087
40133
|
|
|
40088
40134
|
var _this$options = this.options,
|
|
@@ -40114,10 +40160,10 @@ var modules = {
|
|
|
40114
40160
|
_scrollbarOpt2$interv = _scrollbarOpt2.interval,
|
|
40115
40161
|
interval = _scrollbarOpt2$interv === void 0 ? 1 : _scrollbarOpt2$interv;
|
|
40116
40162
|
|
|
40117
|
-
var
|
|
40118
|
-
|
|
40119
|
-
min =
|
|
40120
|
-
max =
|
|
40163
|
+
var _ref6 = range !== null && range !== void 0 ? range : [0, scale.labels.length],
|
|
40164
|
+
_ref7 = _slicedToArray(_ref6, 2),
|
|
40165
|
+
min = _ref7[0],
|
|
40166
|
+
max = _ref7[1];
|
|
40121
40167
|
|
|
40122
40168
|
var labelCount = Math.floor((+max - +min) / interval) + 1;
|
|
40123
40169
|
var labelGap = (endPoint - startPoint) / labelCount;
|
|
@@ -40143,7 +40189,7 @@ var modules = {
|
|
|
40143
40189
|
|
|
40144
40190
|
labelIndex = scale.labels.length > _index ? _index : -1;
|
|
40145
40191
|
} else {
|
|
40146
|
-
var _hitInfo$
|
|
40192
|
+
var _hitInfo$dataIndex;
|
|
40147
40193
|
|
|
40148
40194
|
var offsetX;
|
|
40149
40195
|
var dataIndex;
|
|
@@ -40158,8 +40204,8 @@ var modules = {
|
|
|
40158
40204
|
offsetX = x;
|
|
40159
40205
|
}
|
|
40160
40206
|
|
|
40161
|
-
hitInfo = this.
|
|
40162
|
-
labelIndex = (_hitInfo$
|
|
40207
|
+
hitInfo = this.getHitItemByPosition([offsetX, y], selectLabel === null || selectLabel === void 0 ? void 0 : selectLabel.useApproximateValue, dataIndex, true);
|
|
40208
|
+
labelIndex = (_hitInfo$dataIndex = hitInfo.dataIndex) !== null && _hitInfo$dataIndex !== void 0 ? _hitInfo$dataIndex : -1;
|
|
40163
40209
|
}
|
|
40164
40210
|
|
|
40165
40211
|
return {
|
|
@@ -42142,7 +42188,7 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42142
42188
|
}, {
|
|
42143
42189
|
key: "findGraphData",
|
|
42144
42190
|
value: function findGraphData(offset, isHorizontal, dataIndex, useSelectLabelOrItem) {
|
|
42145
|
-
var _item$data;
|
|
42191
|
+
var _this$pointSize, _item$data;
|
|
42146
42192
|
|
|
42147
42193
|
var xp = offset[0];
|
|
42148
42194
|
var yp = offset[1];
|
|
@@ -42154,7 +42200,23 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42154
42200
|
var gdata = this.data.filter(function (data) {
|
|
42155
42201
|
return !helpers_util.isNullOrUndefined(data.x);
|
|
42156
42202
|
});
|
|
42157
|
-
var isLinearInterpolation = this.useLinearInterpolation();
|
|
42203
|
+
var isLinearInterpolation = this.useLinearInterpolation(); // line 포인트 "정확 히트" 판정용 반경.
|
|
42204
|
+
// combo 차트에서 line 포인트 중심을 직격한 경우, 같은 좌표의 bar(directHit)보다
|
|
42205
|
+
// line이 우선되도록 item.directHit = true로 표시한다. 그 외(단순 Y축 근접)는 기존처럼 hit만.
|
|
42206
|
+
// 포인트 반지름에 기본 포인트 크기(LINE_OPTION.pointSize)만큼의 클릭 여유 마진을 더하고,
|
|
42207
|
+
// 시각적으로 하이라이트되는 포인트 반경(highlight.maxSize)을 최소 보장값으로 사용한다.
|
|
42208
|
+
|
|
42209
|
+
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);
|
|
42210
|
+
|
|
42211
|
+
var isLinePointDirectHit = function isLinePointDirectHit(point) {
|
|
42212
|
+
if (!point || point.xp === undefined || point.yp === undefined) {
|
|
42213
|
+
return false;
|
|
42214
|
+
}
|
|
42215
|
+
|
|
42216
|
+
var dx = xp - point.xp;
|
|
42217
|
+
var dy = yp - point.yp;
|
|
42218
|
+
return dx * dx + dy * dy <= directHitRadius * directHitRadius;
|
|
42219
|
+
};
|
|
42158
42220
|
|
|
42159
42221
|
if (gdata !== null && gdata !== void 0 && gdata.length) {
|
|
42160
42222
|
if (typeof dataIndex === 'number' && this.show) {
|
|
@@ -42169,6 +42231,11 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42169
42231
|
if (yDist <= directHitThreshold) {
|
|
42170
42232
|
item.hit = true;
|
|
42171
42233
|
}
|
|
42234
|
+
|
|
42235
|
+
if (isLinePointDirectHit(point)) {
|
|
42236
|
+
item.hit = true;
|
|
42237
|
+
item.directHit = true;
|
|
42238
|
+
}
|
|
42172
42239
|
}
|
|
42173
42240
|
} else if (typeof this.beforeFindItemIndex === 'number' && this.beforeFindItemIndex !== -1 && this.show && useSelectLabelOrItem) {
|
|
42174
42241
|
item.data = gdata[this.beforeFindItemIndex];
|
|
@@ -42317,6 +42384,11 @@ var element_line_Line = /*#__PURE__*/function () {
|
|
|
42317
42384
|
if (_yDist <= _directHitThreshold) {
|
|
42318
42385
|
item.hit = true;
|
|
42319
42386
|
}
|
|
42387
|
+
|
|
42388
|
+
if (isLinePointDirectHit(_point3)) {
|
|
42389
|
+
item.hit = true;
|
|
42390
|
+
item.directHit = true;
|
|
42391
|
+
}
|
|
42320
42392
|
}
|
|
42321
42393
|
}
|
|
42322
42394
|
}
|
|
@@ -43257,7 +43329,10 @@ var element_bar_Bar = /*#__PURE__*/function () {
|
|
|
43257
43329
|
if (barData[clampedIndex]) {
|
|
43258
43330
|
item.data = barData[clampedIndex];
|
|
43259
43331
|
item.index = clampedIndex;
|
|
43260
|
-
item.hit = this.isPointInBar(offset, barData[clampedIndex]);
|
|
43332
|
+
item.hit = this.isPointInBar(offset, barData[clampedIndex]); // bar 박스 내부 클릭은 "직접 박스 히트"로 표시.
|
|
43333
|
+
// findHitItem에서 line 포인트 근접 히트보다 우선 선택되도록 하기 위함.
|
|
43334
|
+
|
|
43335
|
+
item.directHit = item.hit;
|
|
43261
43336
|
}
|
|
43262
43337
|
|
|
43263
43338
|
return item;
|
|
@@ -43314,7 +43389,9 @@ var element_bar_Bar = /*#__PURE__*/function () {
|
|
|
43314
43389
|
if (inRange) {
|
|
43315
43390
|
item.data = barData;
|
|
43316
43391
|
item.index = barData.index;
|
|
43317
|
-
item.hit = this.isPointInBar(offset, barData);
|
|
43392
|
+
item.hit = this.isPointInBar(offset, barData); // bar 박스 내부 클릭은 "직접 박스 히트"로 표시 (findHitItem 우선순위용).
|
|
43393
|
+
|
|
43394
|
+
item.directHit = item.hit;
|
|
43318
43395
|
return item;
|
|
43319
43396
|
}
|
|
43320
43397
|
|
|
@@ -51823,19 +51900,19 @@ var plugins_interaction_modules = {
|
|
|
51823
51900
|
var useSelectSeries = (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.use) && (selectSeriesOpt === null || selectSeriesOpt === void 0 ? void 0 : selectSeriesOpt.useClick);
|
|
51824
51901
|
|
|
51825
51902
|
var setSelectedItemInfo = function setSelectedItemInfo() {
|
|
51826
|
-
var hitInfo = _this.
|
|
51903
|
+
var hitInfo = _this.getHitItemByPosition(offset, false);
|
|
51827
51904
|
|
|
51828
51905
|
args.label = hitInfo.label;
|
|
51829
51906
|
args.value = hitInfo.value;
|
|
51830
51907
|
args.seriesId = hitInfo.sId;
|
|
51831
|
-
args.dataIndex = hitInfo.
|
|
51908
|
+
args.dataIndex = hitInfo.dataIndex;
|
|
51832
51909
|
args.acc = hitInfo.acc;
|
|
51833
51910
|
|
|
51834
51911
|
if (hitInfo !== null && hitInfo !== void 0 && hitInfo.sId) {
|
|
51835
51912
|
args.selected = {
|
|
51836
51913
|
eventTarget: 'item',
|
|
51837
51914
|
seriesId: _this.isDeselectItem(hitInfo) ? null : hitInfo.sId,
|
|
51838
|
-
dataIndex: _this.isDeselectItem(hitInfo) ? null : hitInfo.
|
|
51915
|
+
dataIndex: _this.isDeselectItem(hitInfo) ? null : hitInfo.dataIndex
|
|
51839
51916
|
};
|
|
51840
51917
|
}
|
|
51841
51918
|
};
|
|
@@ -52509,7 +52586,10 @@ var plugins_interaction_modules = {
|
|
|
52509
52586
|
var maxv = '';
|
|
52510
52587
|
var maxg = null;
|
|
52511
52588
|
var maxSID = null;
|
|
52512
|
-
var minDistance = Infinity; //
|
|
52589
|
+
var minDistance = Infinity; // directHit(bar 박스 내부 클릭/hover) 시리즈가 발견되었는지 추적.
|
|
52590
|
+
// 한 번이라도 directHit가 있으면 line의 근접 포인트 히트는 hitId 후보에서 배제된다.
|
|
52591
|
+
|
|
52592
|
+
var hasDirectHit = false; // 1. 먼저 공통으로 사용할 데이터 인덱스 결정
|
|
52513
52593
|
|
|
52514
52594
|
var targetDataIndex = this.findClosestDataIndex(offset, sIds);
|
|
52515
52595
|
|
|
@@ -52585,13 +52665,25 @@ var plugins_interaction_modules = {
|
|
|
52585
52665
|
if (maxg === null || maxg <= gdata) {
|
|
52586
52666
|
maxg = gdata;
|
|
52587
52667
|
maxSID = sId;
|
|
52588
|
-
} // 마우스 위치와의 거리 계산하여 가장 가까운 시리즈
|
|
52668
|
+
} // 마우스 위치와의 거리 계산하여 가장 가까운 시리즈 선택.
|
|
52669
|
+
// directHit(bar 박스 내부)가 하나라도 있으면 그중에서만 선택하고,
|
|
52670
|
+
// 라인의 근접 포인트 히트(item.hit=true, directHit=false)는 hitId 후보에서 배제한다.
|
|
52671
|
+
// bar + line combo 차트에서 작은 bar 클릭 시 큰 값의 line이 잡히던 버그 방지.
|
|
52589
52672
|
|
|
52590
52673
|
|
|
52591
52674
|
if (item.hit && item.data.xp !== undefined && item.data.yp !== undefined) {
|
|
52592
52675
|
var distance = Math.pow(item.data.xp - offset[0], 2) + Math.pow(item.data.yp - offset[1], 2);
|
|
52593
52676
|
|
|
52594
|
-
if (
|
|
52677
|
+
if (item.directHit) {
|
|
52678
|
+
// directHit는 최우선. 여러 directHit 중에서는 가장 가까운 것 선택.
|
|
52679
|
+
if (!hasDirectHit || distance < minDistance) {
|
|
52680
|
+
minDistance = distance;
|
|
52681
|
+
hitId = sId;
|
|
52682
|
+
}
|
|
52683
|
+
|
|
52684
|
+
hasDirectHit = true;
|
|
52685
|
+
} else if (!hasDirectHit && distance < minDistance) {
|
|
52686
|
+
// directHit가 없을 때만 일반 hit 거리 비교
|
|
52595
52687
|
minDistance = distance;
|
|
52596
52688
|
hitId = sId;
|
|
52597
52689
|
}
|
|
@@ -53287,7 +53379,7 @@ var plugins_interaction_modules = {
|
|
|
53287
53379
|
isDeselectItem: function isDeselectItem(hitInfo) {
|
|
53288
53380
|
var _this$defaultSelectIt, _this$defaultSelectIt2;
|
|
53289
53381
|
|
|
53290
|
-
return this.options.selectItem.useDeselectItem && (hitInfo === null || hitInfo === void 0 ? void 0 : hitInfo.
|
|
53382
|
+
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);
|
|
53291
53383
|
},
|
|
53292
53384
|
|
|
53293
53385
|
/**
|
|
@@ -54961,7 +55053,7 @@ var element_tip_modules = {
|
|
|
54961
55053
|
|
|
54962
55054
|
if (tipType === 'sel') {
|
|
54963
55055
|
if (hitInfo && hitInfo.label !== null) {
|
|
54964
|
-
lastTip.pos = type === 'bar' ? hitInfo.
|
|
55056
|
+
lastTip.pos = type === 'bar' ? hitInfo.dataIndex : hitInfo.label;
|
|
54965
55057
|
ldata = lastTip.pos;
|
|
54966
55058
|
} else if (lastTip.pos !== null) {
|
|
54967
55059
|
ldata = lastTip.pos;
|
|
@@ -56060,10 +56152,10 @@ var chart_core_EvChart = /*#__PURE__*/function () {
|
|
|
56060
56152
|
var lastHitInfo = this.lastHitInfo;
|
|
56061
56153
|
var defaultSelectInfo = this.defaultSelectItemInfo;
|
|
56062
56154
|
|
|
56063
|
-
if (lastHitInfo !== null && lastHitInfo !== void 0 && lastHitInfo.
|
|
56155
|
+
if (lastHitInfo !== null && lastHitInfo !== void 0 && lastHitInfo.dataIndex || (lastHitInfo === null || lastHitInfo === void 0 ? void 0 : lastHitInfo.dataIndex) === 0) {
|
|
56064
56156
|
_selectInfo = {
|
|
56065
56157
|
seriesID: lastHitInfo.sId,
|
|
56066
|
-
dataIndex: lastHitInfo.
|
|
56158
|
+
dataIndex: lastHitInfo.dataIndex
|
|
56067
56159
|
};
|
|
56068
56160
|
} else if (defaultSelectInfo !== null && defaultSelectInfo !== void 0 && defaultSelectInfo.dataIndex || (defaultSelectInfo === null || defaultSelectInfo === void 0 ? void 0 : defaultSelectInfo.dataIndex) === 0) {
|
|
56069
56161
|
_selectInfo = _objectSpread2({}, defaultSelectInfo);
|