|
|
@ -29,6 +29,7 @@ import androidx.compose.ui.text.style.TextAlign
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
|
import com.chihsuanwu.freescroll.freeScroll
|
|
|
|
import com.chihsuanwu.freescroll.freeScroll
|
|
|
|
import com.chihsuanwu.freescroll.rememberFreeScrollState
|
|
|
|
import com.chihsuanwu.freescroll.rememberFreeScrollState
|
|
|
|
|
|
|
|
import com.iqball.app.domains.getStepName
|
|
|
|
import com.iqball.app.model.tactic.StepNodeInfo
|
|
|
|
import com.iqball.app.model.tactic.StepNodeInfo
|
|
|
|
import com.iqball.app.ui.theme.SelectedStepNode
|
|
|
|
import com.iqball.app.ui.theme.SelectedStepNode
|
|
|
|
import com.iqball.app.ui.theme.StepNode
|
|
|
|
import com.iqball.app.ui.theme.StepNode
|
|
|
@ -76,12 +77,13 @@ fun StepsTree(root: StepNodeInfo, selectedNodeId: Int, onNodeSelected: (StepNode
|
|
|
|
},
|
|
|
|
},
|
|
|
|
contentAlignment = Alignment.TopCenter
|
|
|
|
contentAlignment = Alignment.TopCenter
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
StepsTreeContent(root, selectedNodeId, onNodeSelected, nodesOffsets)
|
|
|
|
StepsTreeContent(root, root, selectedNodeId, onNodeSelected, nodesOffsets)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
|
private fun StepsTreeContent(
|
|
|
|
private fun StepsTreeContent(
|
|
|
|
|
|
|
|
root: StepNodeInfo,
|
|
|
|
node: StepNodeInfo,
|
|
|
|
node: StepNodeInfo,
|
|
|
|
selectedNodeId: Int,
|
|
|
|
selectedNodeId: Int,
|
|
|
|
onNodeSelected: (StepNodeInfo) -> Unit,
|
|
|
|
onNodeSelected: (StepNodeInfo) -> Unit,
|
|
|
@ -93,6 +95,7 @@ private fun StepsTreeContent(
|
|
|
|
modifier = Modifier
|
|
|
|
modifier = Modifier
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
StepPiece(
|
|
|
|
StepPiece(
|
|
|
|
|
|
|
|
name = getStepName(root, node.id),
|
|
|
|
node = node,
|
|
|
|
node = node,
|
|
|
|
isSelected = selectedNodeId == node.id,
|
|
|
|
isSelected = selectedNodeId == node.id,
|
|
|
|
onNodeSelected = { onNodeSelected(node) },
|
|
|
|
onNodeSelected = { onNodeSelected(node) },
|
|
|
@ -110,6 +113,7 @@ private fun StepsTreeContent(
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
for (children in node.children) {
|
|
|
|
for (children in node.children) {
|
|
|
|
StepsTreeContent(
|
|
|
|
StepsTreeContent(
|
|
|
|
|
|
|
|
root = root,
|
|
|
|
node = children,
|
|
|
|
node = children,
|
|
|
|
selectedNodeId = selectedNodeId,
|
|
|
|
selectedNodeId = selectedNodeId,
|
|
|
|
onNodeSelected = onNodeSelected,
|
|
|
|
onNodeSelected = onNodeSelected,
|
|
|
@ -122,6 +126,7 @@ private fun StepsTreeContent(
|
|
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
@Composable
|
|
|
|
fun StepPiece(
|
|
|
|
fun StepPiece(
|
|
|
|
|
|
|
|
name: String,
|
|
|
|
node: StepNodeInfo,
|
|
|
|
node: StepNodeInfo,
|
|
|
|
isSelected: Boolean,
|
|
|
|
isSelected: Boolean,
|
|
|
|
onNodeSelected: () -> Unit,
|
|
|
|
onNodeSelected: () -> Unit,
|
|
|
@ -136,7 +141,7 @@ fun StepPiece(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
Text(
|
|
|
|
Text(
|
|
|
|
text = node.id.toString(),
|
|
|
|
text = name,
|
|
|
|
textAlign = TextAlign.Center,
|
|
|
|
textAlign = TextAlign.Center,
|
|
|
|
color = if (isSelected) Color.White else Color.Black,
|
|
|
|
color = if (isSelected) Color.White else Color.Black,
|
|
|
|
modifier = Modifier
|
|
|
|
modifier = Modifier
|
|
|
|