This is an automated email from the ASF dual-hosted git repository. shenyi 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 4d3ae67 FIX #11176 xAxis.axisTick.interval appears different between echart4 and echart3.8 (#11186) 4d3ae67 is described below commit 4d3ae67512053b62025ee140711ab89321422f50 Author: Leon.Y <zhangyi462...@gmail.com> AuthorDate: Thu Oct 17 23:45:53 2019 -0700 FIX #11176 xAxis.axisTick.interval appears different between echart4 and echart3.8 (#11186) * FIX #11138 DOC ERROR * fix issues/11176 * delete console.log * add test demo * fix bug axis tick with dataZoom attr --- src/coord/Axis.js | 20 +++++++++++---- test/axis-interval.html | 66 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 78 insertions(+), 8 deletions(-) diff --git a/src/coord/Axis.js b/src/coord/Axis.js index 16bdd79..1257cc5 100644 --- a/src/coord/Axis.js +++ b/src/coord/Axis.js @@ -186,7 +186,6 @@ Axis.prototype = { opt = opt || {}; var tickModel = opt.tickModel || this.getTickModel(); - var result = createAxisTicks(this, tickModel); var ticks = result.ticks; @@ -198,8 +197,11 @@ Axis.prototype = { }, this); var alignWithLabel = tickModel.get('alignWithLabel'); + var dataExtent = this.scale.getExtent(); + var tickLen = this.scale.getTicks().length + dataExtent[0]; + fixOnBandTicksCoords( - this, ticksCoords, result.tickCategoryInterval, alignWithLabel, opt.clamp + this, ticksCoords, result.tickCategoryInterval, alignWithLabel, opt.clamp,tickLen ); return ticksCoords; @@ -292,7 +294,7 @@ function fixExtentWithBands(extent, nTick) { // splitLine/spliteArea should layout appropriately corresponding // to displayed labels. (So we should not use `getBandWidth` in this // case). -function fixOnBandTicksCoords(axis, ticksCoords, tickCategoryInterval, alignWithLabel, clamp) { +function fixOnBandTicksCoords(axis, ticksCoords, tickCategoryInterval, alignWithLabel, clamp,tickLen) { var ticksLen = ticksCoords.length; if (!axis.onBand || alignWithLabel || !ticksLen) { @@ -301,12 +303,16 @@ function fixOnBandTicksCoords(axis, ticksCoords, tickCategoryInterval, alignWith var axisExtent = axis.getExtent(); var last; + var diffSize; if (ticksLen === 1) { ticksCoords[0].coord = axisExtent[0]; last = ticksCoords[1] = {coord: axisExtent[0]}; } else { - var shift = (ticksCoords[1].coord - ticksCoords[0].coord); + + var crossLen = ticksCoords[ticksLen-1].tickValue - ticksCoords[0].tickValue; + var shift = (ticksCoords[ticksLen-1].coord - ticksCoords[0].coord) / crossLen; + each(ticksCoords, function (ticksItem) { ticksItem.coord -= shift / 2; var tickCategoryInterval = tickCategoryInterval || 0; @@ -315,7 +321,11 @@ function fixOnBandTicksCoords(axis, ticksCoords, tickCategoryInterval, alignWith ticksItem.coord -= shift / ((tickCategoryInterval + 1) * 2); } }); - last = {coord: ticksCoords[ticksLen - 1].coord + shift}; + + diffSize = tickLen - ticksCoords[ticksLen - 1].tickValue; + + last = {coord: ticksCoords[ticksLen - 1].coord + shift * diffSize}; + ticksCoords.push(last); } diff --git a/test/axis-interval.html b/test/axis-interval.html index 7e73a22..8050f32 100644 --- a/test/axis-interval.html +++ b/test/axis-interval.html @@ -54,9 +54,8 @@ under the License. <div class="chart" id="main1"></div> <h1>[ Test time axis interval ] should not overlap when data zoom.</h1> <div class="chart" id="main2"></div> - - - + <h1>[ Test xAxis.axisTick.interval ] let list = [true, false, true, true];axisTick.interval = function(index){return list[index]} </h1> + <div class="chart" id="main3"></div> @@ -338,6 +337,67 @@ under the License. </script> +<script> + + require([ + 'echarts' + ], function (echarts) { + + let dataIndex = 0; + + let testArr = [ + [true, false, true, true], + [true, false, true, false], + [false, true, true, false], + [false, true, false, true], + [false, false, true, true], + [true, true, false, false] + ]; + + function print(index){ + return `intervalList = [${testArr[index].toString()}] ,currentIndex is ${index}` + } + + var option = { + title:{ + text:print(dataIndex) + }, + xAxis: { + type: 'category', + data: ['Mon', 'Tue', 'Wed', 'Thu'], + axisTick: { + show: true, + interval: function (index) { + // return index && !!x2Data[index] + return testArr[dataIndex][index] + }, + length:50, + alignWithLabel: false, + }, + }, + yAxis: { + type: 'value' + }, + series: [{ + data: [820, 932, 901, 934], + type: 'bar' + }] + }; + let ec = echarts.init(document.getElementById('main3')); + + setInterval(function(){ + let next = ++dataIndex; + dataIndex = next > 5 ? 0: next; + option.title.text = print(dataIndex); + ec.setOption(option); + },6000); + + ec.setOption(option); + + }); + +</script> + --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@echarts.apache.org For additional commands, e-mail: commits-h...@echarts.apache.org