You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by su...@apache.org on 2020/04/02 10:36:17 UTC

[incubator-echarts] branch fix/axis-min-max-fn created (now f3a6b9a)

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

sushuang pushed a change to branch fix/axis-min-max-fn
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git.


      at f3a6b9a  fix: axis min/max function return null: The original PR is:  #12215 cf5812f6aad64e433c0de89c62bd0d84b7f3f0cf Fix from that: (1) The min/max function call should not be called twice (necessary and probably wrong input params). (2) `fixMin` `fixMax` should cover function return. (3) Add more test cases.

This branch includes the following new commits:

     new f3a6b9a  fix: axis min/max function return null: The original PR is:  #12215 cf5812f6aad64e433c0de89c62bd0d84b7f3f0cf Fix from that: (1) The min/max function call should not be called twice (necessary and probably wrong input params). (2) `fixMin` `fixMax` should cover function return. (3) Add more test cases.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



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


[incubator-echarts] 01/01: fix: axis min/max function return null: The original PR is: #12215 cf5812f6aad64e433c0de89c62bd0d84b7f3f0cf Fix from that: (1) The min/max function call should not be called twice (necessary and probably wrong input params). (2) `fixMin` `fixMax` should cover function return. (3) Add more test cases.

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sushuang pushed a commit to branch fix/axis-min-max-fn
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git

commit f3a6b9aa8bab16701c1085c0b20a07aa397fbe39
Author: 100pah <su...@gmail.com>
AuthorDate: Thu Apr 2 18:35:11 2020 +0800

    fix: axis min/max function return null:
    The original PR is:  #12215
    cf5812f6aad64e433c0de89c62bd0d84b7f3f0cf
    Fix from that:
    (1) The min/max function call should not be called twice (necessary and probably wrong input params).
    (2) `fixMin` `fixMax` should cover function return.
    (3) Add more test cases.
---
 src/coord/axisHelper.js    |  37 ++++++--------
 src/coord/radar/Radar.js   |   2 +-
 test/min-max-function.html | 117 ++++++++++++++++++++++++++++++++++++++++-----
 3 files changed, 119 insertions(+), 37 deletions(-)

diff --git a/src/coord/axisHelper.js b/src/coord/axisHelper.js
index 75a4240..d6f7cd3 100644
--- a/src/coord/axisHelper.js
+++ b/src/coord/axisHelper.js
@@ -42,8 +42,6 @@ export function getScaleExtent(scale, model) {
 
     var min = model.getMin();
     var max = model.getMax();
-    var fixMin = min != null;
-    var fixMax = max != null;
     var originalExtent = scale.getExtent();
 
     var axisDataLen;
@@ -107,6 +105,9 @@ export function getScaleExtent(scale, model) {
         });
     }
 
+    var fixMin = min != null;
+    var fixMax = max != null;
+
     if (min == null) {
         min = scaleType === 'ordinal'
             ? (axisDataLen ? 0 : NaN)
@@ -168,7 +169,13 @@ export function getScaleExtent(scale, model) {
         }
     }
 
-    return [min, max];
+    return {
+        extent: [min, max],
+        // "fix" means "fixed", the value should not be
+        // changed in the subsequent steps.
+        fixMin: fixMin,
+        fixMax: fixMax
+    };
 }
 
 function adjustScaleForOverflow(min, max, model, barWidthAndOffset) {
@@ -207,24 +214,8 @@ function adjustScaleForOverflow(min, max, model, barWidthAndOffset) {
 }
 
 export function niceScaleExtent(scale, model) {
-    var extent = getScaleExtent(scale, model);
-    var min = model.getMin();
-    var max = model.getMax();
-    var originalExtent = scale.getExtent();
-
-    if (typeof min === 'function') {
-        min = min({
-            min: originalExtent[0],
-            max: originalExtent[1]
-        });
-    }
-
-    if (typeof max === 'function') {
-        max = max({
-            min: originalExtent[0],
-            max: originalExtent[1]
-        });
-    }
+    var extentInfo = getScaleExtent(scale, model);
+    var extent = extentInfo.extent;
 
     var splitNumber = model.get('splitNumber');
 
@@ -236,8 +227,8 @@ export function niceScaleExtent(scale, model) {
     scale.setExtent(extent[0], extent[1]);
     scale.niceExtent({
         splitNumber: splitNumber,
-        fixMin: min != null,
-        fixMax: max != null,
+        fixMin: extentInfo.fixMin,
+        fixMax: extentInfo.fixMin,
         minInterval: (scaleType === 'interval' || scaleType === 'time')
             ? model.get('minInterval') : null,
         maxInterval: (scaleType === 'interval' || scaleType === 'time')
diff --git a/src/coord/radar/Radar.js b/src/coord/radar/Radar.js
index 818e036..5ddf23a 100644
--- a/src/coord/radar/Radar.js
+++ b/src/coord/radar/Radar.js
@@ -186,7 +186,7 @@ Radar.prototype.update = function (ecModel, api) {
     }
     // Force all the axis fixing the maxSplitNumber.
     zrUtil.each(indicatorAxes, function (indicatorAxis, idx) {
-        var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model);
+        var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model).extent;
         niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);
 
         var axisModel = indicatorAxis.model;
diff --git a/test/min-max-function.html b/test/min-max-function.html
index f1d7821..b4d51c3 100644
--- a/test/min-max-function.html
+++ b/test/min-max-function.html
@@ -21,33 +21,29 @@ 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>
-        <meta name="viewport" content="width=device-width, initial-scale=1" />
+        <script src="lib/jquery.min.js"></script>
+        <script src="lib/facePrint.js"></script>
+        <script src="lib/testHelper.js"></script>
+        <link rel="stylesheet" href="lib/reset.css" />
     </head>
     <body>
         <style>
-            html, body, .chart {
-                width: 100%;
-                margin: 0;
-            }
-
             .chart {
                 height: 400px;
             }
         </style>
+
         <div id="chart-1" class="chart"></div>
+        <div id="main1"></div>
+
+
         <script>
 
             require([
                 'echarts'
-                // 'echarts/chart/bar',
-                // 'echarts/chart/line',
-                // 'echarts/component/tooltip',
-                // 'echarts/component/dataZoom',
-                // 'echarts/component/markPoint',
-                // 'echarts/component/toolbox',
-                // 'zrender/vml/vml'
             ], function (echarts) {
 
                 var chart = echarts.init(document.getElementById('chart-1'));
@@ -125,5 +121,100 @@ under the License.
                 });
             });
         </script>
+
+
+
+
+        <script>
+
+            require([
+                'echarts'
+            ], function (echarts) {
+                function xAxisData() { return ['a', 'b', 'c']; };
+                function seriesData() { return [12, 32, 44]; };
+                var gridWidth = 100;
+                var gridBottom = 80;
+                var gridGap = 50;
+                var gridCurrLeft = gridGap;
+                var nameTextStyle = {align: 'left'};
+
+                function getGridLeft() {
+                    var left = gridCurrLeft;
+                    gridCurrLeft += gridWidth + gridGap;
+                    return left;
+                }
+
+                var option = {
+                    dataZoom: [
+                        {type: 'inside', yAxisIndex: 1},
+                        {type: 'inside', yAxisIndex: 3}
+                    ],
+                    grid: [
+                        {width: gridWidth, bottom: gridBottom, left: getGridLeft()},
+                        {width: gridWidth, bottom: gridBottom, left: getGridLeft()},
+                        {width: gridWidth, bottom: gridBottom, left: getGridLeft()},
+                        {width: gridWidth, bottom: gridBottom, left: getGridLeft()}
+                    ],
+                    xAxis: [
+                        {gridIndex: 0, data: xAxisData()},
+                        {gridIndex: 1, data: xAxisData()},
+                        {gridIndex: 2, data: xAxisData()},
+                        {gridIndex: 3, data: xAxisData()}
+                    ],
+                    yAxis: [{
+                        gridIndex: 0,
+                        name: 'y min/max:\nfunction return null\nno dataZoom',
+                        nameTextStyle: nameTextStyle,
+                        min: function (param) {
+                            return null;
+                        },
+                        max: function (param) {
+                            return null;
+                        }
+                    }, {
+                        gridIndex: 1,
+                        name: 'y min/max:\nfunction return null\ny inside dataZoom',
+                        nameTextStyle: nameTextStyle,
+                        min: function (param) {
+                            return null;
+                        },
+                        max: function (param) {
+                            return null;
+                        }
+                    }, {
+                        gridIndex: 2,
+                        name: 'y min/max:\nnull\nno dataZoom',
+                        nameTextStyle: nameTextStyle,
+                        min: null,
+                        max: null
+                    }, {
+                        gridIndex: 3,
+                        name: 'y min/max:\nnull\ny inside dataZoom',
+                        nameTextStyle: nameTextStyle,
+                        min: null,
+                        max: null
+                    }],
+                    series: [
+                        {type: 'scatter', data: seriesData(), xAxisIndex: 0, yAxisIndex: 0},
+                        {type: 'scatter', data: seriesData(), xAxisIndex: 1, yAxisIndex: 1},
+                        {type: 'scatter', data: seriesData(), xAxisIndex: 2, yAxisIndex: 2},
+                        {type: 'scatter', data: seriesData(), xAxisIndex: 3, yAxisIndex: 3},
+                    ]
+                };
+
+                var chart = testHelper.create(echarts, 'main1', {
+                    title: [
+                        'Y range should be all the same',
+                        'dataZoom should be normal'
+                    ],
+                    option: option
+                });
+
+            });
+
+        </script>
+
+
+
     </body>
 </html>
\ No newline at end of file


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