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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user