From 2e5d3ce3e74af47317a7c3586f43b3851f24a23f Mon Sep 17 00:00:00 2001 From: "amnah.a" Date: Fri, 3 Nov 2023 15:38:15 +0300 Subject: [PATCH 1/2] fix hide x-axis of bar chart --- .../com/aay/compose/barChart/components/BarChartContent.kt | 5 +++-- .../kotlin/com/aay/compose/lineChart/ChartContent.kt | 1 - common/src/commonMain/kotlin/com/aay/common/App.kt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt b/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt index 842039d8..25e1a70b 100644 --- a/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt +++ b/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt @@ -3,6 +3,7 @@ package com.aay.compose.barChart.components import androidx.compose.animation.core.* import androidx.compose.foundation.Canvas +import androidx.compose.foundation.background import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.layout.* import androidx.compose.foundation.rememberScrollState @@ -82,10 +83,10 @@ internal fun BarChartContent( } ) { Canvas( - modifier = Modifier.fillMaxSize() + modifier = Modifier.size(height = boxHeight, width = boxWidth) ) { - val spacingY = (boxHeight / 10) + val spacingY = (boxHeight - ((boxHeight - 20.0.dp.toPx().toDp() )/ 1.1f.toDp().toPx())) xRegionWidth = ((barWidth + spaceBetweenBars) * barsParameters.size) + spaceBetweenGroups xRegionWidthWithoutSpacing = xRegionWidth - spaceBetweenGroups maxWidth = (xRegionWidth * xAxisData.size) - spaceBetweenGroups diff --git a/chart/src/commonMain/kotlin/com/aay/compose/lineChart/ChartContent.kt b/chart/src/commonMain/kotlin/com/aay/compose/lineChart/ChartContent.kt index 41db76e2..c27ba1f5 100644 --- a/chart/src/commonMain/kotlin/com/aay/compose/lineChart/ChartContent.kt +++ b/chart/src/commonMain/kotlin/com/aay/compose/lineChart/ChartContent.kt @@ -5,7 +5,6 @@ import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.tween import androidx.compose.foundation.Canvas -import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.* diff --git a/common/src/commonMain/kotlin/com/aay/common/App.kt b/common/src/commonMain/kotlin/com/aay/common/App.kt index 9b6e6132..9a554dde 100644 --- a/common/src/commonMain/kotlin/com/aay/common/App.kt +++ b/common/src/commonMain/kotlin/com/aay/common/App.kt @@ -6,11 +6,11 @@ import androidx.compose.runtime.Composable fun App() { /** Sample of Line Chart **/ - LineChartSample() +// LineChartSample() /** Sample of Bar Chart **/ -// BarChartSample() + BarChartSample() /** Sample of Donut Chart **/ // DonutChartSample() From 8a28bbb01b2d9632d506217b9ff57c3a258a8fd3 Mon Sep 17 00:00:00 2001 From: "amnah.a" Date: Fri, 3 Nov 2023 15:53:03 +0300 Subject: [PATCH 2/2] add modifier to bar chart --- .../commonMain/kotlin/com/aay/compose/barChart/BarChart.kt | 5 ++++- .../com/aay/compose/barChart/components/BarChartContent.kt | 4 ++-- .../kotlin/com/aay/compose/utils/ChartDefaultValues.kt | 3 +++ .../src/commonMain/kotlin/com/aay/common/BarChartSample.kt | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/chart/src/commonMain/kotlin/com/aay/compose/barChart/BarChart.kt b/chart/src/commonMain/kotlin/com/aay/compose/barChart/BarChart.kt index 92b097bd..d905bb98 100644 --- a/chart/src/commonMain/kotlin/com/aay/compose/barChart/BarChart.kt +++ b/chart/src/commonMain/kotlin/com/aay/compose/barChart/BarChart.kt @@ -43,6 +43,7 @@ import com.aay.compose.utils.ChartDefaultValues */ @Composable fun BarChart( + modifier: Modifier = ChartDefaultValues.barModifier, chartParameters: List = ChartDefaultValues.barParameters, gridColor: Color = ChartDefaultValues.gridColor, xAxisData: List = emptyList(), @@ -83,6 +84,7 @@ fun BarChart( } BarChartContent( + modifier = modifier, barsParameters = chartParameters, gridColor = gridColor, xAxisData = xAxisData, @@ -119,7 +121,7 @@ fun BarChart( barWidth = barWidth, spaceBetweenBars = spaceBetweenBars, spaceBetweenGroups = spaceBetweenGroups, - modifier = Modifier.weight(1f), + modifier = modifier.weight(1f), barCornerRadius = barCornerRadius ) @@ -142,6 +144,7 @@ fun BarChart( LegendPosition.DISAPPEAR -> { BarChartContent( + modifier = modifier, barsParameters = chartParameters, gridColor = gridColor, xAxisData = xAxisData, diff --git a/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt b/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt index 25e1a70b..d4011e9b 100644 --- a/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt +++ b/chart/src/commonMain/kotlin/com/aay/compose/barChart/components/BarChartContent.kt @@ -29,6 +29,7 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalTextApi::class) @Composable internal fun BarChartContent( + modifier: Modifier = Modifier, barsParameters: List, gridColor: Color, xAxisData: List, @@ -44,7 +45,6 @@ internal fun BarChartContent( barWidth: Dp, spaceBetweenBars: Dp, spaceBetweenGroups: Dp, - modifier: Modifier = Modifier, barCornerRadius: Dp ) { @@ -86,7 +86,7 @@ internal fun BarChartContent( modifier = Modifier.size(height = boxHeight, width = boxWidth) ) { - val spacingY = (boxHeight - ((boxHeight - 20.0.dp.toPx().toDp() )/ 1.1f.toDp().toPx())) + val spacingY = (boxHeight - ((boxHeight - 20.0.dp.toPx().toDp()) / 1.1f.toDp().toPx())) xRegionWidth = ((barWidth + spaceBetweenBars) * barsParameters.size) + spaceBetweenGroups xRegionWidthWithoutSpacing = xRegionWidth - spaceBetweenGroups maxWidth = (xRegionWidth * xAxisData.size) - spaceBetweenGroups diff --git a/chart/src/commonMain/kotlin/com/aay/compose/utils/ChartDefaultValues.kt b/chart/src/commonMain/kotlin/com/aay/compose/utils/ChartDefaultValues.kt index 331d7df8..beb977f1 100644 --- a/chart/src/commonMain/kotlin/com/aay/compose/utils/ChartDefaultValues.kt +++ b/chart/src/commonMain/kotlin/com/aay/compose/utils/ChartDefaultValues.kt @@ -1,6 +1,8 @@ package com.aay.compose.utils import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -59,4 +61,5 @@ internal object ChartDefaultValues { val gridOrientation = GridOrientation.HORIZONTAL val legendPosition = LegendPosition.TOP val barCornerRadius = 0.dp + val barModifier = Modifier.fillMaxSize() } \ No newline at end of file diff --git a/common/src/commonMain/kotlin/com/aay/common/BarChartSample.kt b/common/src/commonMain/kotlin/com/aay/common/BarChartSample.kt index cbad2263..ee4a1db4 100644 --- a/common/src/commonMain/kotlin/com/aay/common/BarChartSample.kt +++ b/common/src/commonMain/kotlin/com/aay/common/BarChartSample.kt @@ -35,6 +35,7 @@ fun BarChartSample() { Box(Modifier.fillMaxSize().padding(24.dp)) { BarChart( + modifier = Modifier.fillMaxSize(), chartParameters = testBarParameters, gridColor = Color.DarkGray, xAxisData = listOf("2016", "2017", "2018", "2019", "2020", "2021", "2022"),