From 5d5c7c426ef7f4cfdb11a87864975bf8cd115019 Mon Sep 17 00:00:00 2001 From: Anton Borries Date: Wed, 13 Apr 2022 14:35:37 +0200 Subject: [PATCH 1/6] Add Extra Offset for End Aligned Text --- lib/chart/render/decorations/horizontal_axis_decoration.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/chart/render/decorations/horizontal_axis_decoration.dart b/lib/chart/render/decorations/horizontal_axis_decoration.dart index bcccefc..7b7d98e 100644 --- a/lib/chart/render/decorations/horizontal_axis_decoration.dart +++ b/lib/chart/render/decorations/horizontal_axis_decoration.dart @@ -197,9 +197,11 @@ class HorizontalAxisDecoration extends DecorationPainter { final _positionEnd = size.width + (valuesPadding?.left ?? 0.0); final _positionStart = (valuesPadding?.left ?? 0.0) - marginNeeded().left; + final _alignEndOffset = valuesAlign != TextAlign.end ? 0.0 : (_textWidth(_longestText, legendFontStyle).width - _textPainter.width); + _textPainter.paint( canvas, - Offset(legendPosition == HorizontalLegendPosition.end ? _positionEnd : _positionStart, + Offset((legendPosition == HorizontalLegendPosition.end ? _positionEnd : _positionStart) + _alignEndOffset, _height - axisStep * i * scale - (_textPainter.height + (valuesPadding?.bottom ?? 0.0)))); } From 89b4c4f1453700f3c346fe83a5fe2eb6ca4fd655 Mon Sep 17 00:00:00 2001 From: Anton Borries Date: Wed, 19 Apr 2023 12:27:16 +0200 Subject: [PATCH 2/6] Use num instead of int for lines and labels --- .../render/decorations/horizontal_axis_decoration.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/chart/render/decorations/horizontal_axis_decoration.dart b/lib/chart/render/decorations/horizontal_axis_decoration.dart index 7b7d98e..2b3afd8 100644 --- a/lib/chart/render/decorations/horizontal_axis_decoration.dart +++ b/lib/chart/render/decorations/horizontal_axis_decoration.dart @@ -9,12 +9,12 @@ enum HorizontalLegendPosition { end, } -typedef AxisValueFromValue = String Function(int value); +typedef AxisValueFromValue = String Function(num value); /// Default axis generator, it will just take current index, convert it to string and return it. -String defaultAxisValue(int index) => '$index'; +String defaultAxisValue(num index) => '$index'; -typedef ShowLineForValue = bool Function(int value); +typedef ShowLineForValue = bool Function(num value); /// Decoration for drawing horizontal lines on the chart, decoration can add horizontal axis legend /// @@ -124,7 +124,7 @@ class HorizontalAxisDecoration extends DecorationPainter { void initDecoration(ChartState state) { super.initDecoration(state); if (showValues) { - _longestText = axisValue.call(state.data.maxValue.toInt()).toString(); + _longestText = axisValue.call(state.data.maxValue).toString(); if ((_longestText?.length ?? 0) < (horizontalAxisUnit?.length ?? 0.0)) { _longestText = '0' * (horizontalAxisUnit?.length ?? 0); @@ -156,7 +156,7 @@ class HorizontalAxisDecoration extends DecorationPainter { final gridPath = Path(); for (var i = 0; i * scale * axisStep <= scale * _maxValue; i++) { - final _defaultValue = (axisStep * i + state.data.minValue).toInt(); + final _defaultValue = (axisStep * i + state.data.minValue); final _isPositionStart = legendPosition == HorizontalLegendPosition.start; final _startLine = _isPositionStart ? -(marginNeeded().horizontal * (1 - _endWithChart)) : 0.0; From a8787319a576568fa60be2c9dc5b3513b5d30f36 Mon Sep 17 00:00:00 2001 From: Anton Borries Date: Wed, 19 Apr 2023 12:36:28 +0200 Subject: [PATCH 3/6] Clean up --- .../decorations/horizontal_axis_decoration.dart | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/lib/chart/render/decorations/horizontal_axis_decoration.dart b/lib/chart/render/decorations/horizontal_axis_decoration.dart index 59f22e2..eea8f48 100644 --- a/lib/chart/render/decorations/horizontal_axis_decoration.dart +++ b/lib/chart/render/decorations/horizontal_axis_decoration.dart @@ -168,7 +168,7 @@ class HorizontalAxisDecoration extends DecorationPainter { final gridPath = Path(); for (var i = 0; i * scale * axisStep <= scale * _maxValue; i++) { - final _defaultValue = (axisStep * i + state.data.minValue); + final _defaultValue = axisStep * i + state.data.minValue; final _isPositionStart = legendPosition == HorizontalLegendPosition.start; final _startLine = _isPositionStart @@ -209,18 +209,12 @@ class HorizontalAxisDecoration extends DecorationPainter { final _positionStart = -((valuesPadding?.right ?? 0.0) + _getTextPainter(_longestText).width); - final _alignEndOffset = valuesAlign != TextAlign.end - ? 0.0 - : (_textWidth(_longestText, legendFontStyle).width - - _textPainter.width); - _textPainter.paint( canvas, Offset( - (legendPosition == HorizontalLegendPosition.end - ? _positionEnd - : _positionStart) + - _alignEndOffset, + legendPosition == HorizontalLegendPosition.end + ? _positionEnd + : _positionStart, _height - axisStep * i * scale - (_textPainter.height + (valuesPadding?.bottom ?? 0.0)) + From 43b59f50c2dd77832b9efee2d7af9b9d95268fac Mon Sep 17 00:00:00 2001 From: Anton Borries Date: Wed, 19 Apr 2023 12:38:09 +0200 Subject: [PATCH 4/6] Use num for Decoration --- lib/chart/render/decorations/horizontal_axis_decoration.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/chart/render/decorations/horizontal_axis_decoration.dart b/lib/chart/render/decorations/horizontal_axis_decoration.dart index eea8f48..11fa33b 100644 --- a/lib/chart/render/decorations/horizontal_axis_decoration.dart +++ b/lib/chart/render/decorations/horizontal_axis_decoration.dart @@ -146,7 +146,7 @@ class HorizontalAxisDecoration extends DecorationPainter { final _maxValue = state.data.maxValue - state.data.minValue; for (var i = 0; i * axisStep <= _maxValue; i++) { - final _defaultValue = (axisStep * i + state.data.minValue).toInt(); + final _defaultValue = axisStep * i + state.data.minValue; final _value = axisValue.call(_defaultValue); if ((_longestText?.length ?? 0) < _value.length) { _longestText = _value; From f47000a20004b6ae468b93ecbf3bf05e01e37353 Mon Sep 17 00:00:00 2001 From: Anton Borries Date: Wed, 19 Apr 2023 16:01:19 +0200 Subject: [PATCH 5/6] Fix Errors --- example/lib/charts/showcase_chart_screen.dart | 2 +- test/golden/complex/showcase_test.dart | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/example/lib/charts/showcase_chart_screen.dart b/example/lib/charts/showcase_chart_screen.dart index 59b59cf..27a1d41 100644 --- a/example/lib/charts/showcase_chart_screen.dart +++ b/example/lib/charts/showcase_chart_screen.dart @@ -169,7 +169,7 @@ final List> _chartStates = [ verticalValuesPadding: const EdgeInsets.only(top: 24.0), horizontalAxisValueFromValue: (value) => '${value + 1}h', verticalAxisValueFromIndex: (value) => - ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'][value], + ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'][value.toInt()], textStyle: TextStyle(fontSize: 14.0, color: Colors.black45), ), ], diff --git a/test/golden/complex/showcase_test.dart b/test/golden/complex/showcase_test.dart index e31c424..99e0e44 100644 --- a/test/golden/complex/showcase_test.dart +++ b/test/golden/complex/showcase_test.dart @@ -135,8 +135,15 @@ void main() { bottom: -8.0, right: 8.0, left: 8.0), verticalValuesPadding: const EdgeInsets.only(top: 24.0), horizontalAxisValueFromValue: (value) => '${value + 1}h', - verticalAxisValueFromIndex: (value) => - ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'][value], + verticalAxisValueFromIndex: (value) => [ + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + 'Sun' + ][value.toInt()], textStyle: defaultTextStyle.copyWith( fontSize: 12.0, color: Colors.black45), ), From 77ad338c4d84bc3a133b1377b854a829c0cfbf15 Mon Sep 17 00:00:00 2001 From: Anton Borries Date: Wed, 19 Apr 2023 16:01:25 +0200 Subject: [PATCH 6/6] Add Test --- .../ci/horizontal_decoration_golden.png | Bin 22409 -> 19361 bytes .../horizontal_decoration_test.dart | 12 ++++++++++++ 2 files changed, 12 insertions(+) diff --git a/test/golden/decoration/goldens/ci/horizontal_decoration_golden.png b/test/golden/decoration/goldens/ci/horizontal_decoration_golden.png index 2ad057abbec931d08c5b06f7185bffdb21dc8a01..4d62d5aa15967b08e75513933aa94651d5347cba 100644 GIT binary patch literal 19361 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 M)9;AiI{)y00EEy@Jpcdz literal 22409 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 RYxtQ?X&GqdpRoPs{{f(q true, + lineWidth: 3.0, + axisStep: 4.5, + ), + ], + ), + ), ]); }); }