From 2f9136a7f2996e367288aa1cc89aea0fe93f46b1 Mon Sep 17 00:00:00 2001 From: Avior Date: Thu, 12 Jan 2023 23:13:19 +0100 Subject: [PATCH 1/2] fix: grouped barchart not displaying second bar if y is the same Signed-off-by: Avior --- library/src/main/java/com/dzeio/charts/Entry.kt | 5 ++++- library/src/main/java/com/dzeio/charts/axis/XAxis.kt | 2 +- library/src/main/java/com/dzeio/charts/series/BarSerie.kt | 2 +- library/src/main/java/com/dzeio/charts/series/BaseSerie.kt | 6 ++++++ library/src/main/java/com/dzeio/charts/series/LineSerie.kt | 3 +-- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/dzeio/charts/Entry.kt b/library/src/main/java/com/dzeio/charts/Entry.kt index 526fec8..dbd7e2a 100644 --- a/library/src/main/java/com/dzeio/charts/Entry.kt +++ b/library/src/main/java/com/dzeio/charts/Entry.kt @@ -1,10 +1,13 @@ package com.dzeio.charts +import com.dzeio.charts.series.SerieInterface + /** * A Base entry for any charts */ data class Entry( var x: Double, var y: Float, - var color: Int? = null + var color: Int? = null, + var serie: SerieInterface? = null ) diff --git a/library/src/main/java/com/dzeio/charts/axis/XAxis.kt b/library/src/main/java/com/dzeio/charts/axis/XAxis.kt index a6833e2..9c411bb 100644 --- a/library/src/main/java/com/dzeio/charts/axis/XAxis.kt +++ b/library/src/main/java/com/dzeio/charts/axis/XAxis.kt @@ -52,7 +52,7 @@ class XAxis( } override fun getPositionOnRect(entry: Entry, drawableSpace: RectF): Double { - val result = drawableSpace.width() * (entry.x - x) / getDataWidth() + val result = drawableSpace.left + drawableSpace.width() * (entry.x - x) / getDataWidth() if (view.type == ChartType.GROUPED) { val serie = view.series.find { it.entries.contains(entry) } val index = view.series.indexOf(serie) diff --git a/library/src/main/java/com/dzeio/charts/series/BarSerie.kt b/library/src/main/java/com/dzeio/charts/series/BarSerie.kt index 2700d86..3905f6c 100644 --- a/library/src/main/java/com/dzeio/charts/series/BarSerie.kt +++ b/library/src/main/java/com/dzeio/charts/series/BarSerie.kt @@ -64,7 +64,7 @@ class BarSerie( // calculated height in percent from 0 to 100 var top = view.yAxis.getPositionOnRect(entry, drawableSpace) - var posX = drawableSpace.left + view.xAxis.getPositionOnRect( + var posX = view.xAxis.getPositionOnRect( entry, drawableSpace ).toFloat() diff --git a/library/src/main/java/com/dzeio/charts/series/BaseSerie.kt b/library/src/main/java/com/dzeio/charts/series/BaseSerie.kt index 23c032f..a88e3d5 100644 --- a/library/src/main/java/com/dzeio/charts/series/BaseSerie.kt +++ b/library/src/main/java/com/dzeio/charts/series/BaseSerie.kt @@ -25,6 +25,12 @@ sealed class BaseSerie( override var yAxisPosition: YAxisPosition = YAxisPosition.RIGHT override var entries: ArrayList = arrayListOf() + set(values) { + for (value in values) { + value.serie = this + } + field = values + } override fun getDisplayedEntries(): ArrayList { val minX = view.xAxis.x diff --git a/library/src/main/java/com/dzeio/charts/series/LineSerie.kt b/library/src/main/java/com/dzeio/charts/series/LineSerie.kt index 8076bf9..45fbb85 100644 --- a/library/src/main/java/com/dzeio/charts/series/LineSerie.kt +++ b/library/src/main/java/com/dzeio/charts/series/LineSerie.kt @@ -68,8 +68,7 @@ class LineSerie( entriesCurrentY[entry.x]!!.value = top } - val posX = (drawableSpace.left + - view.xAxis.getPositionOnRect(entry, drawableSpace) + + val posX = (view.xAxis.getPositionOnRect(entry, drawableSpace) + view.xAxis.getEntryWidth(drawableSpace) / 2f).toFloat() // handle color recoloration From 7760a30d609634f1c4e08bbe8471e07827909895 Mon Sep 17 00:00:00 2001 From: Avior Date: Thu, 12 Jan 2023 23:23:56 +0100 Subject: [PATCH 2/2] fix: ktlint issue Signed-off-by: Avior --- library/src/main/java/com/dzeio/charts/series/LineSerie.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/dzeio/charts/series/LineSerie.kt b/library/src/main/java/com/dzeio/charts/series/LineSerie.kt index 45fbb85..8b3d72c 100644 --- a/library/src/main/java/com/dzeio/charts/series/LineSerie.kt +++ b/library/src/main/java/com/dzeio/charts/series/LineSerie.kt @@ -68,8 +68,10 @@ class LineSerie( entriesCurrentY[entry.x]!!.value = top } - val posX = (view.xAxis.getPositionOnRect(entry, drawableSpace) + - view.xAxis.getEntryWidth(drawableSpace) / 2f).toFloat() + val posX = ( + view.xAxis.getPositionOnRect(entry, drawableSpace) + + view.xAxis.getEntryWidth(drawableSpace) / 2f + ).toFloat() // handle color recoloration val paint = Paint(linePaint)