|
|
@@ -0,0 +1,65 @@
|
|
|
+package com.iscs.bozzys.ui.pages.edit.step
|
|
|
+
|
|
|
+import android.content.Context
|
|
|
+import android.content.Intent
|
|
|
+import androidx.compose.foundation.layout.Box
|
|
|
+import androidx.compose.foundation.layout.PaddingValues
|
|
|
+import androidx.compose.foundation.layout.fillMaxSize
|
|
|
+import androidx.compose.foundation.layout.offset
|
|
|
+import androidx.compose.runtime.Composable
|
|
|
+import androidx.compose.runtime.LaunchedEffect
|
|
|
+import androidx.compose.runtime.derivedStateOf
|
|
|
+import androidx.compose.runtime.getValue
|
|
|
+import androidx.compose.runtime.mutableStateMapOf
|
|
|
+import androidx.compose.runtime.remember
|
|
|
+import androidx.compose.ui.Alignment
|
|
|
+import androidx.compose.ui.Modifier
|
|
|
+import androidx.compose.ui.geometry.Offset
|
|
|
+import androidx.compose.ui.geometry.Size
|
|
|
+import androidx.compose.ui.unit.dp
|
|
|
+import androidx.compose.ui.zIndex
|
|
|
+import com.iscs.bozzys.ui.base.PageBase
|
|
|
+import com.iscs.bozzys.ui.pages.edit.step.compose.ConnectionLayer
|
|
|
+import com.iscs.bozzys.ui.pages.edit.step.compose.Node
|
|
|
+import com.iscs.bozzys.ui.pages.edit.step.compose.NodeItem
|
|
|
+import com.iscs.bozzys.ui.pages.edit.step.compose.ZoomPanContainer
|
|
|
+
|
|
|
+/**
|
|
|
+ * 跳转到编辑流程页面
|
|
|
+ */
|
|
|
+fun Context.openPageEditStep() {
|
|
|
+ startActivity(Intent(this, PageEditStep::class.java))
|
|
|
+}
|
|
|
+
|
|
|
+class PageEditStep : PageBase() {
|
|
|
+ @Composable
|
|
|
+ override fun GetViews(pv: PaddingValues) {
|
|
|
+ val nodes = remember { mutableStateMapOf<String, Node>() }
|
|
|
+ val lines = listOf("A" to "B", "A" to "D", "B" to "C")
|
|
|
+ val ready by remember { derivedStateOf { nodes.isNotEmpty() } }
|
|
|
+ LaunchedEffect(Unit) {
|
|
|
+ nodes["A"] = Node("A", Offset(50f, 0f), Size(80))
|
|
|
+ nodes["B"] = Node("B", Offset(250f, 0f), Size(80))
|
|
|
+ nodes["B"] = Node("D", Offset(250f, 0f), Size(80))
|
|
|
+ nodes["C"] = Node("C", Offset(450f, 0f), Size(80))
|
|
|
+ }
|
|
|
+ ZoomPanContainer(modifier = Modifier.fillMaxSize()) {
|
|
|
+ // 连线操作
|
|
|
+ if (ready) ConnectionLayer(nodes, lines)
|
|
|
+ // 控件显示
|
|
|
+ Box(
|
|
|
+ modifier = Modifier
|
|
|
+ .fillMaxSize()
|
|
|
+ .zIndex(1f),
|
|
|
+ contentAlignment = Alignment.CenterStart
|
|
|
+ ) {
|
|
|
+ NodeItem("A", nodes, Modifier.offset(50.dp, 0.dp))
|
|
|
+ NodeItem("B", nodes, Modifier.offset(250.dp, 0.dp))
|
|
|
+ NodeItem("D", nodes, Modifier.offset(250.dp, 100.dp))
|
|
|
+ NodeItem("C", nodes, Modifier.offset(450.dp, 0.dp))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|