This is an automated email from the ASF dual-hosted git repository.

ovilia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git


The following commit(s) were added to refs/heads/master by this push:
     new fbb47dd  fix: bar chart abnormal when dataZoom filterMode: 'empty'. 
Fix #9882
fbb47dd is described below

commit fbb47dd8058ca03cc2e3fe3e0e42c1ebf51fa155
Author: sushuang <sushuang0...@gmail.com>
AuthorDate: Thu Mar 28 00:45:24 2019 +0800

    fix: bar chart abnormal when dataZoom filterMode: 'empty'. Fix #9882
---
 src/component/dataZoom/AxisProxy.js |  2 +-
 src/data/List.js                    | 11 ++---
 src/layout/barGrid.js               |  3 +-
 test/bar-others.html                | 83 +++++++++++++++++++++++++++++++++++++
 4 files changed, 90 insertions(+), 9 deletions(-)

diff --git a/src/component/dataZoom/AxisProxy.js 
b/src/component/dataZoom/AxisProxy.js
index 11ed79e..3b00305 100644
--- a/src/component/dataZoom/AxisProxy.js
+++ b/src/component/dataZoom/AxisProxy.js
@@ -390,7 +390,7 @@ AxisProxy.prototype = {
                 each(dataDims, function (dim) {
                     if (filterMode === 'empty') {
                         seriesModel.setData(
-                            seriesData.map(dim, function (value) {
+                            seriesData = seriesData.map(dim, function (value) {
                                 return !isInWindow(value) ? NaN : value;
                             })
                         );
diff --git a/src/data/List.js b/src/data/List.js
index 47faff6..7819050 100644
--- a/src/data/List.js
+++ b/src/data/List.js
@@ -859,14 +859,11 @@ listProto.getValues = function (dimensions, idx /*, stack 
*/) {
  */
 listProto.hasValue = function (idx) {
     var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;
-    var dimensionInfos = this._dimensionInfos;
     for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {
-        if (
-            // Ordinal type can be string or number
-            dimensionInfos[dataDimsOnCoord[i]].type !== 'ordinal'
-            // FIXME check ordinal when using index?
-            && isNaN(this.get(dataDimsOnCoord[i], idx))
-        ) {
+        // Ordinal type originally can be string or number.
+        // But when an ordinal type is used on coord, it can
+        // not be string but only number. So we can also use isNaN.
+        if (isNaN(this.get(dataDimsOnCoord[i], idx))) {
             return false;
         }
     }
diff --git a/src/layout/barGrid.js b/src/layout/barGrid.js
index 127a323..a2d7976 100644
--- a/src/layout/barGrid.js
+++ b/src/layout/barGrid.js
@@ -295,7 +295,8 @@ export function layout(seriesType, ecModel) {
             var value = data.get(valueDim, idx);
             var baseValue = data.get(baseDim, idx);
 
-            if (isNaN(value)) {
+            // If dataZoom in filteMode: 'empty', the baseValue can be set as 
NaN in "axisProxy".
+            if (isNaN(value) || isNaN(baseValue)) {
                 continue;
             }
 
diff --git a/test/bar-others.html b/test/bar-others.html
new file mode 100644
index 0000000..eefacbf
--- /dev/null
+++ b/test/bar-others.html
@@ -0,0 +1,83 @@
+<!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/esl.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>
+
+            var option;
+
+            require([
+                'echarts'/*, 'map/js/china' */
+            ], function (echarts) {
+
+                // $.getJSON('./data/nutrients.json', function (data) {
+                // });
+
+                var option = {
+                    xAxis: {
+                        data: ['a', 'b', 'c', 'd', 'e']
+                    },
+                    yAxis: {},
+                    dataZoom: {
+                        filterMode: 'empty',
+                        start: 90,
+                        end: 90
+                    },
+                    series: {
+                        type: 'bar',
+                        data: [
+                            55,
+                            13,
+                            187,
+                            {value: 123, itemStyle: {color: 'blue'}},
+                            {value: 88, itemStyle: {color: 'yellow'}}
+                        ]
+                    }
+                }
+
+                var chart = testHelper.create(echarts, 'main0', {
+                    title: 'extreme data zoom range with filterMode: "empty": 
Should only **show one bar**',
+                    option: option
+                });
+            });
+
+        </script>
+    </body>
+</html>
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@echarts.apache.org
For additional commands, e-mail: commits-h...@echarts.apache.org

Reply via email to