Bugfix/slider null issue (#166)

* TP-00000 | UiTron version bump(1.0.18)

* TP-00000 | Added fix for slider update

* TP-00000 | version bump

* TP-00000 | Support added for MVEL expression having sameId

* TP-0000 | version bump(1.0.20)

* TP-0000 | version bump(1.0.21)

* TP-39924 | tooltip positioning fix

* TP-39924 | uitron version bump(1.0.22)

* null check applied

* TP-00000 | Slider recomposition issue fixed

---------

Co-authored-by: Aparna Vadlamani <aparna.vadlamani@navi.com>
Co-authored-by: Rajinikanth <maila.rajanikanth@navi.com>
This commit is contained in:
Kishan Kumar
2023-09-04 20:08:43 +05:30
committed by GitHub
parent d14a1338da
commit 3c8fc105bd

View File

@@ -59,16 +59,13 @@ class SliderRendererV2(
private val uiTronRenderer: UiTronRenderer,
) : Renderer<SliderProperty> {
private val LEFT_PADDING = 16.dp
private val DEFAULT_PADDING = 2.dp
private val DEFAULT_TOOLTIP_VERTICAL_OFFSET = 6.dp
private val TOOLTIP_ZINDEX = 1f
private val PREV_VALUE = "prev_value"
private val EXTRA_DATA = "extra_data"
private val defaultHorizontalPadding by lazy {
dpToPx(10)
}
private val TOOLTIP_ZINDEX = 1f
private val DEFAULT_THUMB_WIDTH = 20.dp
private val PREV_VALUE = "prev_value"
@Composable
override fun Render(
@@ -79,11 +76,11 @@ class SliderRendererV2(
) {
if (!property.visible.orTrue()) return
super.Render(property, uiTronData, uiTronViewModel, modifier)
var sliderUiTronData = uiTronData as? SliderDataV2 ?: return
val steps = sliderUiTronData.stepValue?.size.orVal(1) - 1
var sliderUiTronData = uiTronData as? SliderDataV2 ?: return
val steps = remember { mutableIntStateOf(sliderUiTronData.stepValue?.size.orVal(1) - 1) }
val stepToValue = remember { mutableStateOf(mapOf<String, String>()) }
val mvelUuid = remember { mutableStateOf(0) }
val mvelUuid = remember { mutableStateOf(null) }
var sliderStart by remember { mutableFloatStateOf(0f) }
var sliderEnd by remember { mutableFloatStateOf(0f) }
@@ -93,7 +90,14 @@ class SliderRendererV2(
if (position == null || position < 0) return
uiTronViewModel.handle["${property.layoutId.getInputId()}_${PREV_VALUE}"] =
uiTronViewModel.handle.get<String>(property.layoutId.getInputId())
uiTronViewModel.handle["${property.layoutId}_${PREV_VALUE}_${EXTRA_DATA}"] =
uiTronViewModel.handle.get<String>("${property.layoutId}_${EXTRA_DATA}")
uiTronViewModel.handle[property.layoutId.getInputId()] = stepToValue.value[position.toString()]
uiTronViewModel.handle["${property.layoutId}_${EXTRA_DATA}"] =
sliderUiTronData.stepValue?.getOrNull(position)?.data.toString()
}
LaunchedEffect(property.isStateFul) {
@@ -118,7 +122,7 @@ class SliderRendererV2(
val sliderPosition = remember { mutableStateOf(0f) }
LaunchedEffect(sliderUiTronData.stepValues) {
LaunchedEffect(mvelUuid.value) {
val stepMap = mutableMapOf<String, String>()
sliderUiTronData._stepValue = null
sliderUiTronData.stepValue?.forEachIndexed { index, stepValue ->
@@ -128,10 +132,11 @@ class SliderRendererV2(
sliderUiTronData,
sliderUiTronData.sliderValue.orEmpty()
)?.toFloat() ?: 0f
val totalStep = sliderUiTronData.stepValue?.size.orVal(1) - 1
stepToValue.value = stepMap
sliderPosition.value = positionIndex
thumbX = sliderStart + (positionIndex / steps) * (sliderEnd - sliderStart)
steps.value = totalStep
thumbX = sliderStart + (positionIndex / totalStep) * (sliderEnd - sliderStart)
saveSelectionToHandle(positionIndex.toNearestInt())
}
@@ -168,8 +173,7 @@ class SliderRendererV2(
value = sliderPosition.value,
onValueChange = {
sliderPosition.value = it
thumbX =
sliderStart + (it / steps) * (sliderEnd - sliderStart)
thumbX = sliderStart + (it / steps.value) * (sliderEnd - sliderStart)
updateValuesInMvelActionOnSliderChange(
uiTronViewModel,
sliderUiTronData,
@@ -187,15 +191,16 @@ class SliderRendererV2(
stepToValue.value
)
},
valueRange = 0f..(steps.toFloat()),
steps = steps,
valueRange = 0f..(steps.value.toFloat()),
steps = steps.value,
modifier = (modifier ?: Modifier)
.rotate(property.rotation ?: 0f)
.alpha(property.alpha ?: 1.0f)
.onGloballyPositioned { coordinates ->
val posInRoot = coordinates.positionInParent()
sliderStart = posInRoot.x + defaultHorizontalPadding
sliderEnd = posInRoot.x + coordinates.size.width.toFloat() - defaultHorizontalPadding
sliderEnd =
posInRoot.x + coordinates.size.width.toFloat() - defaultHorizontalPadding
},
colors = SliderDefaults.colors(
thumbColor = property.sliderColors.thumbColor?.hexToComposeColor
@@ -335,7 +340,7 @@ class SliderRendererV2(
) {
val sliderValue: String? = stepToValue[sliderPosition.toString()]
sliderData.slideData?.onSlide?.let { uiTronClickData ->
val dataMap = sliderData.stepValue?.get(sliderPosition)?.data
val dataMap = sliderData.stepValue?.getOrNull(sliderPosition)?.data
?.toMutableMap() ?: mutableMapOf()
dataMap[VALUE] = sliderValue
dataMap.toMap().let {
@@ -355,7 +360,7 @@ class SliderRendererV2(
) {
val sliderValue: String? = stepToValue[sliderPosition.toString()]
sliderData.slideData?.onSlideFinish?.let { uiTronClickData ->
val dataMap = sliderData.stepValue?.get(sliderPosition)?.data
val dataMap = sliderData.stepValue?.getOrNull(sliderPosition)?.data
?.toMutableMap() ?: mutableMapOf()
dataMap[VALUE] = sliderValue
dataMap.toMap().let {