From 8be4e475c6aea3de089556d9dc4df4951f16ebed Mon Sep 17 00:00:00 2001 From: MeetzhDing <3303652975@qq.com> Date: Tue, 9 Aug 2022 12:49:01 +0800 Subject: [PATCH 1/2] feat(axis): provide splitLine.showMinLine and splitLine.showMaxLine --- src/component/axis/CartesianAxisView.ts | 25 +++++++++ src/coord/axisCommonTypes.ts | 4 ++ src/coord/axisDefault.ts | 4 +- test/axis-interval.html | 72 +++++++++++++++++++++++-- 4 files changed, 101 insertions(+), 4 deletions(-) diff --git a/src/component/axis/CartesianAxisView.ts b/src/component/axis/CartesianAxisView.ts index 3cc48e3041..808029fcad 100644 --- a/src/component/axis/CartesianAxisView.ts +++ b/src/component/axis/CartesianAxisView.ts @@ -29,6 +29,7 @@ import CartesianAxisModel from '../../coord/cartesian/AxisModel'; import GridModel from '../../coord/cartesian/GridModel'; import { Payload } from '../../util/types'; import { isIntervalOrLogScale } from '../../scale/helper'; +import IntervalScale from '../../scale/Interval'; const axisBuilderAttrs = [ 'axisLine', 'axisTickLabel', 'axisName' @@ -135,6 +136,30 @@ const axisElementBuilders: Record 2 && axisScale.getInterval) { + const interval = axisScale.getInterval() || null; + + const showMinLine = splitLineModel.get('showMinLine'); + if (showMinLine === false + || (showMinLine === 'auto' + && ticksCoords[1].tickValue - ticksCoords[0].tickValue < interval + ) + ) { + ticksCoords.shift(); + } + + const showMaxLine = splitLineModel.get('showMaxLine'); + if (showMaxLine === false + || (showMaxLine === 'auto' + && ticksCoords[ticksCoords.length - 1].tickValue + - ticksCoords[ticksCoords.length - 2].tickValue < interval + ) + ) { + ticksCoords.pop(); + } + } + const p1 = []; const p2 = []; diff --git a/src/coord/axisCommonTypes.ts b/src/coord/axisCommonTypes.ts index e3241cb02e..756253e24b 100644 --- a/src/coord/axisCommonTypes.ts +++ b/src/coord/axisCommonTypes.ts @@ -244,6 +244,10 @@ interface MinorTickOption { interface SplitLineOption { show?: boolean, + // true | false | 'auto'(true when nick tick) + showMinLine?: boolean | 'auto', + // true | false | 'auto'(true when nick tick) + showMaxLine?: boolean | 'auto', interval?: 'auto' | number | ((index:number, value: string) => boolean) // colors will display in turn lineStyle?: LineStyleOption diff --git a/src/coord/axisDefault.ts b/src/coord/axisDefault.ts index 05bc4083ee..2b955fc242 100644 --- a/src/coord/axisDefault.ts +++ b/src/coord/axisDefault.ts @@ -97,7 +97,9 @@ const defaultOption: AxisBaseOption = { color: ['#E0E6F1'], width: 1, type: 'solid' - } + }, + showMinLine: true, + showMaxLine: true }, splitArea: { show: false, diff --git a/test/axis-interval.html b/test/axis-interval.html index b84c3c8ba7..cb0fac67a0 100644 --- a/test/axis-interval.html +++ b/test/axis-interval.html @@ -69,6 +69,7 @@

Test xAxis.axisTick.interval

+
- \ No newline at end of file + From 7d34f5c9d7e5a9bcc46a7635836668f5ef360598 Mon Sep 17 00:00:00 2001 From: MeetzhDing <3303652975@qq.com> Date: Thu, 10 Nov 2022 00:33:00 +0800 Subject: [PATCH 2/2] feat(axis): provide splitLine.showMinLine and splitLine.showMaxLine --- src/component/axis/CartesianAxisView.ts | 6 +- test/axis-interval.html | 120 ++++++++++++++++++------ 2 files changed, 93 insertions(+), 33 deletions(-) diff --git a/src/component/axis/CartesianAxisView.ts b/src/component/axis/CartesianAxisView.ts index 808029fcad..8d99105aac 100644 --- a/src/component/axis/CartesianAxisView.ts +++ b/src/component/axis/CartesianAxisView.ts @@ -138,10 +138,10 @@ const axisElementBuilders: Record 2 && axisScale.getInterval) { - const interval = axisScale.getInterval() || null; + const interval = axisScale.getInterval(); const showMinLine = splitLineModel.get('showMinLine'); - if (showMinLine === false + if (!showMinLine || (showMinLine === 'auto' && ticksCoords[1].tickValue - ticksCoords[0].tickValue < interval ) @@ -150,7 +150,7 @@ const axisElementBuilders: RecordTest xAxis.axisTick.interval
-
+ +

Test xAxis.splitLine.showMinLine/showMaxLine

+
+
+
- -