From 1bce7da215c7e8e4d28521316d9b589476692209 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Mon, 18 Dec 2023 20:43:37 +0100
Subject: [PATCH] Improve vertical axis legends

---
 android/gradle.properties                     |  4 +-
 .../metadata/android/en-US/changelogs/51.txt  |  1 +
 .../metadata/android/fr-FR/changelogs/51.txt  |  1 +
 .../widgets/abstracts/custom_bar_chart.dart   | 46 +++----------------
 lib/ui/widgets/abstracts/custom_chart.dart    | 46 ++++++++++++++++++-
 .../widgets/abstracts/custom_line_chart.dart  | 41 ++---------------
 lib/ui/widgets/charts/heatmap.dart            |  4 +-
 lib/ui/widgets/charts/timeline_counts.dart    |  4 ++
 .../widgets/charts/timeline_eclecticism.dart  |  4 ++
 lib/ui/widgets/charts/top_artists_stream.dart |  1 +
 pubspec.yaml                                  |  2 +-
 11 files changed, 72 insertions(+), 82 deletions(-)
 create mode 100644 fastlane/metadata/android/en-US/changelogs/51.txt
 create mode 100644 fastlane/metadata/android/fr-FR/changelogs/51.txt

diff --git a/android/gradle.properties b/android/gradle.properties
index 9e30671..630329d 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=0.0.50
-app.versionCode=50
+app.versionName=0.0.51
+app.versionCode=51
diff --git a/fastlane/metadata/android/en-US/changelogs/51.txt b/fastlane/metadata/android/en-US/changelogs/51.txt
new file mode 100644
index 0000000..9ae924a
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/51.txt
@@ -0,0 +1 @@
+Improve vertical axis legends.
diff --git a/fastlane/metadata/android/fr-FR/changelogs/51.txt b/fastlane/metadata/android/fr-FR/changelogs/51.txt
new file mode 100644
index 0000000..f959527
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/51.txt
@@ -0,0 +1 @@
+Amélioration des axes verticaux des graphiques.
diff --git a/lib/ui/widgets/abstracts/custom_bar_chart.dart b/lib/ui/widgets/abstracts/custom_bar_chart.dart
index 07a0342..9ca47dc 100644
--- a/lib/ui/widgets/abstracts/custom_bar_chart.dart
+++ b/lib/ui/widgets/abstracts/custom_bar_chart.dart
@@ -89,47 +89,15 @@ class CustomBarChart extends CustomChart {
     );
   }
 
-  FlTitlesData getTitlesData() {
-    const AxisTitles none = const AxisTitles(
-      sideTitles: SideTitles(showTitles: false),
-    );
-
-    final AxisTitles verticalTitles = AxisTitles(
-      sideTitles: SideTitles(
-        showTitles: true,
-        reservedSize: 35,
-        getTitlesWidget: getVerticalTitlesWidget,
-        interval: this.verticalTicksInterval,
-      ),
-    );
-
-    final AxisTitles verticalSpacer = AxisTitles(
-      sideTitles: SideTitles(
-        showTitles: true,
-        reservedSize: 35,
-        getTitlesWidget: getVerticalTitlesSpacerWidget,
-        interval: this.verticalTicksInterval,
-      ),
-    );
-
-    final AxisTitles horizontalTitles = AxisTitles(
-      sideTitles: SideTitles(
-        showTitles: true,
-        reservedSize: 20,
-        getTitlesWidget: getHorizontalTitlesWidget,
-      ),
-    );
+  Widget getHorizontalTitlesWidget(double value, TitleMeta meta) {
+    return getHorizontalTitlesWidgetWithDate(value, meta);
+  }
 
-    return FlTitlesData(
-      show: true,
-      bottomTitles: horizontalTitles,
-      leftTitles: verticalTitles,
-      topTitles: none,
-      rightTitles: verticalSpacer,
-    );
+  Widget getVerticalLeftTitlesWidget(double value, TitleMeta meta) {
+    return getVerticalTitlesWidgetWithValue(value, meta);
   }
 
-  Widget getHorizontalTitlesWidget(double value, TitleMeta meta) {
-    return getHorizontalTitlesWidgetWithDate(value, meta);
+  Widget getVerticalRightTitlesWidget(double value, TitleMeta meta) {
+    return getVerticalTitlesWidgetWithValue(value, meta);
   }
 }
diff --git a/lib/ui/widgets/abstracts/custom_chart.dart b/lib/ui/widgets/abstracts/custom_chart.dart
index ad555bc..04c5425 100644
--- a/lib/ui/widgets/abstracts/custom_chart.dart
+++ b/lib/ui/widgets/abstracts/custom_chart.dart
@@ -95,8 +95,42 @@ class CustomChart extends StatelessWidget {
   }
 
   FlTitlesData getTitlesData() {
+    const AxisTitles none = const AxisTitles(
+      sideTitles: SideTitles(showTitles: false),
+    );
+
+    final AxisTitles verticalTitlesLeft = AxisTitles(
+      sideTitles: SideTitles(
+        showTitles: true,
+        reservedSize: 35,
+        getTitlesWidget: getVerticalLeftTitlesWidget,
+        interval: this.verticalTicksInterval,
+      ),
+    );
+
+    final AxisTitles verticalTitleRight = AxisTitles(
+      sideTitles: SideTitles(
+        showTitles: true,
+        reservedSize: 35,
+        getTitlesWidget: getVerticalRightTitlesWidget,
+        interval: this.verticalTicksInterval,
+      ),
+    );
+
+    final AxisTitles horizontalTitles = AxisTitles(
+      sideTitles: SideTitles(
+        showTitles: true,
+        reservedSize: 20,
+        getTitlesWidget: getHorizontalTitlesWidget,
+      ),
+    );
+
     return FlTitlesData(
-      show: false,
+      show: true,
+      bottomTitles: horizontalTitles,
+      leftTitles: verticalTitlesLeft,
+      topTitles: none,
+      rightTitles: verticalTitleRight,
     );
   }
 
@@ -104,6 +138,14 @@ class CustomChart extends StatelessWidget {
     return Text('');
   }
 
+  Widget getVerticalLeftTitlesWidget(double value, TitleMeta meta) {
+    return Text('');
+  }
+
+  Widget getVerticalRightTitlesWidget(double value, TitleMeta meta) {
+    return Text('');
+  }
+
   Widget getHorizontalTitlesWidgetWithDate(double value, TitleMeta meta) {
     final DateFormat formatter = DateFormat('dd/MM');
 
@@ -173,7 +215,7 @@ class CustomChart extends StatelessWidget {
     );
   }
 
-  Widget getVerticalTitlesWidget(double value, TitleMeta meta) {
+  Widget getVerticalTitlesWidgetWithValue(double value, TitleMeta meta) {
     String suffix =
         this.verticalAxisTitleSuffix != '' ? ' ' + this.verticalAxisTitleSuffix : '';
 
diff --git a/lib/ui/widgets/abstracts/custom_line_chart.dart b/lib/ui/widgets/abstracts/custom_line_chart.dart
index 6efc4e7..5bd3b96 100644
--- a/lib/ui/widgets/abstracts/custom_line_chart.dart
+++ b/lib/ui/widgets/abstracts/custom_line_chart.dart
@@ -34,42 +34,11 @@ class CustomLineChart extends CustomChart {
     };
   }
 
-  FlTitlesData getTitlesData() {
-    const AxisTitles none = const AxisTitles(
-      sideTitles: SideTitles(showTitles: false),
-    );
-
-    final AxisTitles verticalTitles = AxisTitles(
-      sideTitles: SideTitles(
-        showTitles: true,
-        reservedSize: 35,
-        getTitlesWidget: getVerticalTitlesWidget,
-        interval: this.verticalTicksInterval,
-      ),
-    );
-
-    final AxisTitles verticalSpacer = AxisTitles(
-      sideTitles: SideTitles(
-        showTitles: true,
-        reservedSize: 35,
-        getTitlesWidget: getVerticalTitlesSpacerWidget,
-      ),
-    );
-
-    final AxisTitles horizontalTitles = AxisTitles(
-      sideTitles: SideTitles(
-        showTitles: true,
-        reservedSize: 20,
-        getTitlesWidget: getHorizontalTitlesWidget,
-      ),
-    );
+  Widget getVerticalLeftTitlesWidget(double value, TitleMeta meta) {
+    return getVerticalTitlesWidgetWithValue(value, meta);
+  }
 
-    return FlTitlesData(
-      show: true,
-      bottomTitles: horizontalTitles,
-      leftTitles: verticalSpacer,
-      topTitles: none,
-      rightTitles: verticalTitles,
-    );
+  Widget getVerticalRightTitlesWidget(double value, TitleMeta meta) {
+    return getVerticalTitlesWidgetWithValue(value, meta);
   }
 }
diff --git a/lib/ui/widgets/charts/heatmap.dart b/lib/ui/widgets/charts/heatmap.dart
index b4b1af1..4d867bd 100644
--- a/lib/ui/widgets/charts/heatmap.dart
+++ b/lib/ui/widgets/charts/heatmap.dart
@@ -92,7 +92,7 @@ class ChartHeatmap extends CustomChart {
       sideTitles: SideTitles(
         showTitles: true,
         reservedSize: 40,
-        getTitlesWidget: getVerticalTitlesWidget,
+        getTitlesWidget: getVerticalTitlesWidgetWithValue,
         interval: 1,
       ),
     );
@@ -115,7 +115,7 @@ class ChartHeatmap extends CustomChart {
     );
   }
 
-  Widget getVerticalTitlesWidget(double value, TitleMeta meta) {
+  Widget getVerticalTitlesWidgetWithValue(double value, TitleMeta meta) {
     final String dayShortName = getDayShortName(8 - value.toInt());
 
     return SideTitleWidget(
diff --git a/lib/ui/widgets/charts/timeline_counts.dart b/lib/ui/widgets/charts/timeline_counts.dart
index 84fb8bd..5d57f50 100644
--- a/lib/ui/widgets/charts/timeline_counts.dart
+++ b/lib/ui/widgets/charts/timeline_counts.dart
@@ -74,4 +74,8 @@ class ChartTimelineCounts extends CustomBarChart {
 
     return data;
   }
+
+  Widget getVerticalLeftTitlesWidget(double value, TitleMeta meta) {
+    return getVerticalTitlesSpacerWidget(value, meta);
+  }
 }
diff --git a/lib/ui/widgets/charts/timeline_eclecticism.dart b/lib/ui/widgets/charts/timeline_eclecticism.dart
index 565cdad..56f05aa 100644
--- a/lib/ui/widgets/charts/timeline_eclecticism.dart
+++ b/lib/ui/widgets/charts/timeline_eclecticism.dart
@@ -72,4 +72,8 @@ class ChartTimelineEclecticism extends CustomLineChart {
       ),
     ];
   }
+
+  Widget getVerticalRightTitlesWidget(double value, TitleMeta meta) {
+    return getVerticalTitlesSpacerWidget(value, meta);
+  }
 }
diff --git a/lib/ui/widgets/charts/top_artists_stream.dart b/lib/ui/widgets/charts/top_artists_stream.dart
index 2e43253..6a01a62 100644
--- a/lib/ui/widgets/charts/top_artists_stream.dart
+++ b/lib/ui/widgets/charts/top_artists_stream.dart
@@ -11,6 +11,7 @@ class ChartTopArtistsStream extends CustomLineChart {
   const ChartTopArtistsStream({super.key, required this.chartData});
 
   final double verticalTicksInterval = 10;
+  final String verticalAxisTitleSuffix = '%';
 
   @override
   Widget build(BuildContext context) {
diff --git a/pubspec.yaml b/pubspec.yaml
index 28be42a..1478ee0 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
 
 publish_to: 'none'
 
-version: 0.0.50+50
+version: 0.0.51+51
 
 environment:
   sdk: '^3.0.0'
-- 
GitLab