Skip to content

Commit 86c2d67

Browse files
authored
Merge pull request #77 from AkYML/bugfix/issue-75-Multiple-Lines-inLineChartIssue
fix multiple-line not drawing issue on line chart
2 parents 9cee720 + bd035bd commit 86c2d67

File tree

3 files changed

+286
-30
lines changed

3 files changed

+286
-30
lines changed

YChartsLib/src/main/java/co/yml/charts/ui/linechart/LineChart.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,18 +78,18 @@ fun LineChart(modifier: Modifier, lineChartData: LineChartData) {
7878
var tapOffset by remember { mutableStateOf(Offset(0f, 0f)) }
7979
var selectionTextVisibility by remember { mutableStateOf(false) }
8080
var identifiedPoint by remember { mutableStateOf(Point(0f, 0f)) }
81-
val line = linePlotData.lines.first()
8281
// Update must required values
83-
val xAxisData = xAxisData.copy(axisBottomPadding = bottomPadding)
82+
val linePoints: List<Point> = linePlotData.lines.flatMap { line -> line.dataPoints.map { it } }
83+
84+
val (xMin, xMax, xAxisScale) = getXAxisScale(linePoints, xAxisData.steps)
85+
val (yMin, _, yAxisScale) = getYAxisScale(linePoints, yAxisData.steps)
86+
val maxElementInYAxis = getMaxElementInYAxis(yAxisScale, yAxisData.steps)
87+
val xAxisData = xAxisData.copy(axisBottomPadding = bottomPadding)
8488
val yAxisData = yAxisData.copy(
8589
axisBottomPadding = LocalDensity.current.run { rowHeight.toDp() },
8690
axisTopPadding = paddingTop
8791
)
8892

89-
val (xMin, xMax, xAxisScale) = getXAxisScale(line.dataPoints, xAxisData.steps)
90-
val (yMin, _, yAxisScale) = getYAxisScale(line.dataPoints, yAxisData.steps)
91-
val maxElementInYAxis = getMaxElementInYAxis(yAxisScale, yAxisData.steps)
92-
9393
ScrollableCanvasContainer(modifier = modifier
9494
.semantics {
9595
contentDescription = lineChartData.accessibilityConfig.chartDescription
@@ -141,9 +141,10 @@ fun LineChart(modifier: Modifier, lineChartData: LineChartData) {
141141
xStart = columnWidth,
142142
scrollOffset = scrollOffset,
143143
zoomScale = xZoom,
144-
chartData = line.dataPoints)
144+
chartData = linePoints)
145145
},
146146
onDraw = { scrollOffset, xZoom ->
147+
linePlotData.lines.forEach { line->
147148
val yBottom = size.height - rowHeight
148149
val yOffset = ((yBottom - paddingTop.toPx()) / maxElementInYAxis)
149150
xOffset = xAxisData.axisStepSize.toPx() * xZoom
@@ -212,6 +213,7 @@ fun LineChart(modifier: Modifier, lineChartData: LineChartData) {
212213
line.selectionHighlightPoint
213214
)
214215
}
216+
}
215217
},
216218
onPointClicked = { offset: Offset, _: Float ->
217219
isTapped = true
@@ -226,6 +228,7 @@ fun LineChart(modifier: Modifier, lineChartData: LineChartData) {
226228
isTapped = false
227229
selectionTextVisibility = false
228230
})
231+
229232
}
230233
if (isTalkBackEnabled) {
231234
with(lineChartData) {

0 commit comments

Comments
 (0)