Merge pull request #15383 from apache/fix-candlestick-tooltip

fix(candlestick): fix overflow data access in tooltip.
diff --git a/src/component/tooltip/TooltipView.ts b/src/component/tooltip/TooltipView.ts
index 6479b11..e18a656 100644
--- a/src/component/tooltip/TooltipView.ts
+++ b/src/component/tooltip/TooltipView.ts
@@ -555,6 +555,11 @@
                     const series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
                     const dataIndex = idxItem.dataIndexInside;
                     const cbParams = series.getDataParams(dataIndex) as TooltipCallbackDataParams;
+                    // Can't find data.
+                    if (cbParams.dataIndex < 0) {
+                        return;
+                    }
+
                     cbParams.axisDim = axisItem.axisDim;
                     cbParams.axisIndex = axisItem.axisIndex;
                     cbParams.axisType = axisItem.axisType;
@@ -929,8 +934,10 @@
 
     // FIXME
     // Should we remove this but leave this to user?
-    private _updateContentNotChangedOnAxis(dataByCoordSys: DataByCoordSys[],
-        cbParamsList: TooltipCallbackDataParams[]) {
+    private _updateContentNotChangedOnAxis(
+        dataByCoordSys: DataByCoordSys[],
+        cbParamsList: TooltipCallbackDataParams[]
+    ) {
         const lastCoordSys = this._lastDataByCoordSys;
         const lastCbParamsList = this._cbParamsList;
         let contentNotChanged = !!lastCoordSys
diff --git a/test/line-case.html b/test/line-case.html
new file mode 100644
index 0000000..066715e
--- /dev/null
+++ b/test/line-case.html
@@ -0,0 +1,460 @@
+<!DOCTYPE html>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+
+<html>
+    <head>
+        <meta charset="utf-8">
+        <meta name="viewport" content="width=device-width, initial-scale=1" />
+        <script src="lib/simpleRequire.js"></script>
+        <script src="lib/config.js"></script>
+        <script src="lib/jquery.min.js"></script>
+        <script src="lib/facePrint.js"></script>
+        <script src="lib/testHelper.js"></script>
+        <!-- <script src="ut/lib/canteen.js"></script> -->
+        <link rel="stylesheet" href="lib/reset.css" />
+    </head>
+    <body>
+        <style>
+        </style>
+
+
+
+        <div id="main0"></div>
+
+
+
+
+
+
+        <script>
+        require([
+            'echarts'
+        ], function (echarts) {
+
+            var option = {
+                backgroundColor: '#fff',
+                animation: false,
+                color: ["#6e2ebf", "#9a2ead", "#87d812", "#20c05b", "#19c6f4", "#0072df"],
+                grid: {
+                    left: '10',
+                    right: '10',
+                    bottom: '20',
+                    containLabel: true
+                },
+                xAxis: [{
+                    type: 'time',
+                    boundaryGap: false
+                }],
+                yAxis: [{
+                    type: 'value',
+                    splitLine: {
+                        show: false
+                    },
+                    max: function(value) {
+                        return 100;
+                    }
+                }],
+                series: [{
+                    id: 'other',
+                    name: 'Other',
+                    type: 'line',
+                    stack: '1',
+                    smooth: 0.2,
+                    lineStyle: {
+                        width: 1
+                    },
+                    showSymbol: false,
+                    areaStyle: {},
+                    data: [
+                        [1626560700000, 10.7],
+                        [1626561600000, 10.6],
+                        [1626562500000, 11.1],
+                        [1626563400000, 14.2],
+                        [1626564300000, 12.2],
+                        [1626565200000, 11.7],
+                        [1626566100000, 12.6],
+                        [1626567000000, 13.4],
+                        [1626567900000, 14.3],
+                        [1626568800000, 10.8],
+                        [1626569700000, 13.3],
+                        [1626570600000, 11.8],
+                        [1626571500000, 12.5],
+                        [1626572400000, 14.4],
+                        [1626573300000, 15.8],
+                        [1626574200000, 10.7],
+                        [1626575100000, 11.9],
+                        [1626576000000, 12.7],
+                        [1626576900000, 14.0],
+                        [1626577800000, 12.6],
+                        [1626578700000, 11.0],
+                        [1626579600000, 10.8],
+                        [1626580500000, 14.0],
+                        [1626581400000, 12.6],
+                        [1626582300000, 12.3],
+                        [1626583200000, 10.6],
+                        [1626584100000, 12.3],
+                        [1626585000000, 13.6],
+                        [1626585900000, 11.7],
+                        [1626586800000, 11.1],
+                        [1626587700000, 13.1],
+                        [1626588600000, 11.6],
+                        [1626589500000, 12.1],
+                        [1626590400000, 12.2],
+                        [1626591300000, 12.3],
+                        [1626592200000, 13.5],
+                        [1626593100000, 23.4],
+                        [1626594000000, 19.2],
+                        [1626594900000, 21.8],
+                        [1626595800000, 11.3],
+                        [1626596700000, 13.2],
+                        [1626597600000, 14.7],
+                        [1626598500000, 12.5],
+                        [1626599400000, 12.0],
+                        [1626600300000, 12.9],
+                        [1626601200000, 13.7],
+                        [1626602100000, 12.1],
+                        [1626603000000, 12.2],
+                        [1626603900000, 14.0],
+                        [1626604800000, 11.8],
+                        [1626605700000, 14.5],
+                        [1626606600000, 12.4],
+                        [1626607500000, 13.0],
+                        [1626608400000, 12.3],
+                        [1626609300000, 14.3],
+                        [1626610200000, 13.4],
+                        [1626611100000, 13.2],
+                        [1626612000000, 12.1],
+                        [1626612900000, 11.7],
+                        [1626613800000, 12.2],
+                        [1626614700000, 12.0],
+                        [1626615600000, 10.9],
+                        [1626616500000, 13.0],
+                        [1626617400000, 11.6],
+                        [1626618300000, 13.1],
+                        [1626619200000, 10.9],
+                        [1626620100000, 10.9],
+                        [1626621000000, 10.8],
+                        [1626621900000, 12.6],
+                        [1626622800000, 12.8],
+                        [1626623700000, 9.9],
+                        [1626624600000, 18.7],
+                        [1626625500000, 12.9],
+                        [1626626400000, 12.9],
+                        [1626627300000, 12.0],
+                        [1626628200000, 10.8],
+                        [1626629100000, 12.7],
+                        [1626630000000, 9.9],
+                        [1626630900000, 21.6],
+                        [1626631800000, 19.8],
+                        [1626632700000, 12.4],
+                        [1626633600000, 11.9],
+                        [1626634500000, 19.6],
+                        [1626635400000, 16.0],
+                        [1626636300000, 11.9],
+                        [1626637200000, 10.9],
+                        [1626638100000, 13.7],
+                        [1626639000000, 15.4],
+                        [1626639900000, 11.8],
+                        [1626640800000, 11.6],
+                        [1626641700000, 12.6],
+                        [1626642600000, 13.3],
+                        [1626643500000, 13.9],
+                        [1626644400000, 10.9],
+                        [1626645300000, 38.6],
+                        [1626646200000, 10.4]
+                    ]
+                },
+                {
+                    id: 'system',
+                    name: 'System',
+                    type: 'line',
+                    stack: '1',
+                    smooth: 0.2,
+                    lineStyle: {
+                        width: 1
+                    },
+                    showSymbol: false,
+                    areaStyle: {},
+                    data: []
+                },
+                {
+                    id: 'ags',
+                    name: 'A Server',
+                    type: 'line',
+                    stack: '1',
+                    smooth: 0.2,
+                    lineStyle: {
+                        width: 1
+                    },
+                    showSymbol: false,
+                    areaStyle: {},
+                    data: [
+                        [1626560700000, 14.3],
+                        [1626561600000, 3.1],
+                        [1626562500000, 4.4],
+                        [1626563400000, 5.4],
+                        [1626564300000, 7.7],
+                        [1626565200000, 3.6],
+                        [1626566100000, 7.5],
+                        [1626567000000, 5.5],
+                        [1626567900000, 11.9],
+                        [1626568800000, 3.9],
+                        [1626569700000, 8.9],
+                        [1626570600000, 7.8],
+                        [1626571500000, 5.9],
+                        [1626572400000, 4.6],
+                        [1626573300000, 8.4],
+                        [1626574200000, 5.4],
+                        [1626575100000, 12.0],
+                        [1626576000000, 4.2],
+                        [1626576900000, 7.4],
+                        [1626577800000, 5.8],
+                        [1626578700000, 8.8],
+                        [1626579600000, 3.1],
+                        [1626580500000, 5.7],
+                        [1626581400000, 6.1],
+                        [1626582300000, 13.9],
+                        [1626583200000, 3.1],
+                        [1626584100000, 5.9],
+                        [1626585000000, 5.9],
+                        [1626585900000, 7.5],
+                        [1626586800000, 3.4],
+                        [1626587700000, 5.7],
+                        [1626588600000, 6.0],
+                        [1626589500000, 9.1],
+                        [1626590400000, 3.2],
+                        [1626591300000, 7.1],
+                        [1626592200000, 5.4],
+                        [1626593100000, 5.9],
+                        [1626594000000, 3.3],
+                        [1626594900000, 7.2],
+                        [1626595800000, 8.2],
+                        [1626596700000, 11.6],
+                        [1626597600000, 3.2],
+                        [1626598500000, 6.9],
+                        [1626599400000, 7.9],
+                        [1626600300000, 5.2],
+                        [1626601200000, 3.5],
+                        [1626602100000, 6.9],
+                        [1626603000000, 5.9],
+                        [1626603900000, 4.6],
+                        [1626604800000, 10.4],
+                        [1626605700000, 5.9],
+                        [1626606600000, 6.4],
+                        [1626607500000, 4.4],
+                        [1626608400000, 5.1],
+                        [1626609300000, 5.4],
+                        [1626610200000, 5.0],
+                        [1626611100000, 5.3],
+                        [1626612000000, 9.2],
+                        [1626612900000, 7.4],
+                        [1626613800000, 4.8],
+                        [1626614700000, 5.8],
+                        [1626615600000, 4.9],
+                        [1626616500000, 7.5],
+                        [1626617400000, 5.1],
+                        [1626618300000, 7.5],
+                        [1626619200000, 12.2],
+                        [1626620100000, 8.4],
+                        [1626621000000, 5.0],
+                        [1626621900000, 7.3],
+                        [1626622800000, 3.3],
+                        [1626623700000, 7.5],
+                        [1626624600000, 5.0],
+                        [1626625500000, 8.4],
+                        [1626626400000, 12.2],
+                        [1626627300000, 7.7],
+                        [1626628200000, 4.9],
+                        [1626629100000, 7.1],
+                        [1626630000000, 3.5],
+                        [1626630900000, 5.6],
+                        [1626631800000, 4.6],
+                        [1626632700000, 7.1],
+                        [1626633600000, 12.6],
+                        [1626634500000, 5.2],
+                        [1626635400000, 5.1],
+                        [1626636300000, 7.5],
+                        [1626637200000, 3.0],
+                        [1626638100000, 5.9],
+                        [1626639000000, 5.2],
+                        [1626639900000, 6.7],
+                        [1626640800000, 15.1],
+                        [1626641700000, 5.5],
+                        [1626642600000, 5.1],
+                        [1626643500000, 6.6],
+                        [1626644400000, 2.9],
+                        [1626645300000, 34.5],
+                        [1626646200000, 5.7]
+                    ]
+                },
+                {
+                    id: 'ptl',
+                    name: 'Z Server',
+                    type: 'line',
+                    stack: '1',
+                    smooth: 0.2,
+                    lineStyle: {
+                        width: 1
+                    },
+                    showSymbol: false,
+                    areaStyle: {},
+                    data: []
+                },
+                {
+                    id: 'ads',
+                    name: 'B Server',
+                    type: 'line',
+                    stack: '1',
+                    smooth: 0.2,
+                    lineStyle: {
+                        width: 1
+                    },
+                    showSymbol: false,
+                    areaStyle: {},
+                    data: []
+                },
+                {
+                    id: 'web',
+                    name: 'C Server',
+                    type: 'line',
+                    stack: '1',
+                    smooth: 0.2,
+                    lineStyle: {
+                        width: 1
+                    },
+                    showSymbol: false,
+                    areaStyle: {},
+                    data: [
+                        [1626560700000, 0.1],
+                        [1626561600000, 0.0],
+                        [1626562500000, 0.1],
+                        [1626563400000, 0.1],
+                        [1626564300000, 0.1],
+                        [1626565200000, 0.1],
+                        [1626566100000, 0.0],
+                        [1626567000000, 0.1],
+                        [1626567900000, 0.1],
+                        [1626568800000, 0.0],
+                        [1626569700000, 0.0],
+                        [1626570600000, 0.1],
+                        [1626571500000, 0.1],
+                        [1626572400000, 0.0],
+                        [1626573300000, 0.0],
+                        [1626574200000, 0.4],
+                        [1626575100000, 0.1],
+                        [1626576000000, 0.0],
+                        [1626576900000, 0.1],
+                        [1626577800000, 0.1],
+                        [1626578700000, 0.2],
+                        [1626579600000, 0.0],
+                        [1626580500000, 0.1],
+                        [1626581400000, 0.1],
+                        [1626582300000, 0.1],
+                        [1626583200000, 0.0],
+                        [1626584100000, 0.0],
+                        [1626585000000, 0.1],
+                        [1626585900000, 0.2],
+                        [1626586800000, 0.2],
+                        [1626587700000, 0.0],
+                        [1626588600000, 0.0],
+                        [1626589500000, 0.1],
+                        [1626590400000, 0.0],
+                        [1626591300000, 0.1],
+                        [1626592200000, 0.0],
+                        [1626593100000, 0.1],
+                        [1626594000000, 0.0],
+                        [1626594900000, 0.1],
+                        [1626595800000, 0.1],
+                        [1626596700000, 0.3],
+                        [1626597600000, 0.0],
+                        [1626598500000, 0.1],
+                        [1626599400000, 0.1],
+                        [1626600300000, 0.2],
+                        [1626601200000, 0.0],
+                        [1626602100000, 0.1],
+                        [1626603000000, 0.0],
+                        [1626603900000, 0.2],
+                        [1626604800000, 0.1],
+                        [1626605700000, 0.1],
+                        [1626606600000, 0.1],
+                        [1626607500000, 0.2],
+                        [1626608400000, 0.1],
+                        [1626609300000, 0.1],
+                        [1626610200000, 0.1],
+                        [1626611100000, 0.2],
+                        [1626612000000, 0.0],
+                        [1626612900000, 0.1],
+                        [1626613800000, 0.0],
+                        [1626614700000, 0.2],
+                        [1626615600000, 0.1],
+                        [1626616500000, 0.1],
+                        [1626617400000, 0.0],
+                        [1626618300000, 0.1],
+                        [1626619200000, 0.0],
+                        [1626620100000, 0.0],
+                        [1626621000000, 0.0],
+                        [1626621900000, 0.1],
+                        [1626622800000, 0.0],
+                        [1626623700000, 0.1],
+                        [1626624600000, 0.1],
+                        [1626625500000, 0.2],
+                        [1626626400000, 0.1],
+                        [1626627300000, 0.1],
+                        [1626628200000, 0.1],
+                        [1626629100000, 0.2],
+                        [1626630000000, 0.0],
+                        [1626630900000, 0.0],
+                        [1626631800000, 0.1],
+                        [1626632700000, 0.1],
+                        [1626633600000, 0.0],
+                        [1626634500000, 0.1],
+                        [1626635400000, 0.1],
+                        [1626636300000, 0.2],
+                        [1626637200000, 0.0],
+                        [1626638100000, 0.0],
+                        [1626639000000, 0.1],
+                        [1626639900000, 0.1],
+                        [1626640800000, 0.0],
+                        [1626641700000, 0.1],
+                        [1626642600000, 0.1],
+                        [1626643500000, 0.1],
+                        [1626644400000, 0.1],
+                        [1626645300000, 0.1],
+                        [1626646200000, 0.1]
+                    ]
+                }]
+            };
+            var chart = testHelper.create(echarts, 'main0', {
+                title: [
+                    'Test case from https://github.com/apache/echarts/issues/15380'
+                ],
+                option: option
+                // height: 300,
+                // buttons: [{text: 'btn-txt', onclick: function () {}}],
+                // recordCanvas: true,
+            });
+        });
+        </script>
+
+
+    </body>
+</html>
+