DualDonutChart.kt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package eu.mjdev.desktop.components.charts
  2. import androidx.compose.animation.core.AnimationSpec
  3. import androidx.compose.animation.core.TweenSpec
  4. import androidx.compose.runtime.Composable
  5. import androidx.compose.runtime.derivedStateOf
  6. import androidx.compose.runtime.remember
  7. import androidx.compose.ui.Modifier
  8. import androidx.compose.ui.graphics.Color
  9. import androidx.compose.ui.text.TextStyle
  10. import com.aay.compose.baseComponents.model.LegendPosition
  11. import com.aay.compose.donutChart.DonutChart
  12. import com.aay.compose.donutChart.model.PieChartData
  13. import eu.mjdev.desktop.extensions.Compose.DarkDarkGray
  14. @Composable
  15. fun DualDonutChart(
  16. modifier: Modifier = Modifier,
  17. title: String = "",
  18. textColor: Color = Color.White,
  19. outerCircularColor: Color = Color.White,
  20. innerCircularColor: Color = Color.White,
  21. ratioLineColor: Color = Color.White,
  22. firstValue: Double = 0.0,
  23. secondValue: Double = 0.0,
  24. firstColor: Color = Color.DarkDarkGray,
  25. secondColor: Color = Color.White,
  26. firstTitle: String = "",
  27. secondTitle: String = "",
  28. animation: AnimationSpec<Float> = TweenSpec(durationMillis = 3000),
  29. legendPosition: LegendPosition = LegendPosition.BOTTOM,
  30. ) {
  31. val data = remember(
  32. firstValue,
  33. firstColor,
  34. firstTitle,
  35. secondValue,
  36. secondColor,
  37. secondTitle
  38. ) {
  39. derivedStateOf {
  40. listOf(
  41. PieChartData(firstValue, firstColor, firstTitle),
  42. PieChartData(secondValue, secondColor, secondTitle)
  43. )
  44. }
  45. }
  46. DonutChart(
  47. modifier = modifier,
  48. pieChartData = data.value,
  49. centerTitle = title,
  50. centerTitleStyle = TextStyle(color = textColor),
  51. descriptionStyle = TextStyle(color = textColor),
  52. textRatioStyle = TextStyle(color = textColor),
  53. outerCircularColor = outerCircularColor,
  54. innerCircularColor = innerCircularColor,
  55. ratioLineColor = ratioLineColor,
  56. animation = animation,
  57. legendPosition = legendPosition
  58. )
  59. }