Skip to content

Commit 3b6583c

Browse files
Sem4koksuvorovrain
authored andcommitted
feat(visual): algorithm visualization for Djikstra added
1 parent 0f14b24 commit 3b6583c

File tree

2 files changed

+53
-56
lines changed

2 files changed

+53
-56
lines changed

src/main/kotlin/view/AlgorithmSubMenu.kt

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -99,59 +99,4 @@ fun AlgorithmSubMenu(viewModel: CanvasViewModel) {
9999
)
100100
}
101101
}
102-
}
103-
104-
@OptIn(ExperimentalMaterial3Api::class)
105-
@Composable
106-
fun ShortestPathDialog(
107-
showDialog: MutableState<Boolean>,
108-
onPathSelected: (Int, Int) -> Unit
109-
) {
110-
var startIdx by remember { mutableStateOf(0) }
111-
var endIdx by remember { mutableStateOf(0) }
112-
113-
if (showDialog.value) {
114-
AlertDialog(
115-
onDismissRequest = { showDialog.value = false },
116-
buttons = {
117-
Button(onClick = {
118-
onPathSelected(startIdx, endIdx)
119-
showDialog.value = false
120-
}) {
121-
Text("Найти кратчайший путь")
122-
}
123-
},
124-
text = {
125-
Column {
126-
TextField(
127-
value = startIdx.toString(),
128-
onValueChange = { startIdx = it.toIntOrNull() ?: 0 },
129-
label = { Text("Введите точку отправления") }
130-
)
131-
Spacer(modifier = Modifier.height(8.dp))
132-
TextField(
133-
value = endIdx.toString(),
134-
onValueChange = { endIdx = it.toIntOrNull() ?: 0 },
135-
label = { Text("Введите точку назначения") }
136-
)
137-
}
138-
}
139-
)
140-
}
141-
}
142-
143-
/*
144-
Button(
145-
onClick = {
146-
val graph = viewModel.graph
147-
val painter = GraphPainterByDjikstra(graph, viewModel.graphViewModel, startIdx)
148-
painter.paint()
149-
},
150-
enabled = true,
151-
modifier = Modifier.padding(top = 3.dp),
152-
) {
153-
Text(
154-
text = "Кратчайший путь алгоритмом Дейкстры",
155-
)
156-
}
157-
*/
102+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package view
2+
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.foundation.layout.Spacer
5+
import androidx.compose.foundation.layout.height
6+
import androidx.compose.material.AlertDialog
7+
import androidx.compose.material3.Button
8+
import androidx.compose.material3.ExperimentalMaterial3Api
9+
import androidx.compose.material3.Text
10+
import androidx.compose.material3.TextField
11+
import androidx.compose.runtime.*
12+
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.unit.dp
14+
15+
@OptIn(ExperimentalMaterial3Api::class)
16+
@Composable
17+
fun ShortestPathDialog(
18+
showDialog: MutableState<Boolean>,
19+
onPathSelected: (Int, Int) -> Unit
20+
) {
21+
var startIdx by remember { mutableStateOf(0) }
22+
var endIdx by remember { mutableStateOf(0) }
23+
24+
if (showDialog.value) {
25+
AlertDialog(
26+
onDismissRequest = { showDialog.value = false },
27+
buttons = {
28+
Button(onClick = {
29+
onPathSelected(startIdx, endIdx)
30+
showDialog.value = false
31+
}) {
32+
Text("Найти кратчайший путь")
33+
}
34+
},
35+
text = {
36+
Column {
37+
TextField(
38+
value = startIdx.toString(),
39+
onValueChange = { startIdx = it.toIntOrNull() ?: 0 },
40+
label = { Text("Введите точку отправления") }
41+
)
42+
Spacer(modifier = Modifier.height(8.dp))
43+
TextField(
44+
value = endIdx.toString(),
45+
onValueChange = { endIdx = it.toIntOrNull() ?: 0 },
46+
label = { Text("Введите точку назначения") }
47+
)
48+
}
49+
}
50+
)
51+
}
52+
}

0 commit comments

Comments
 (0)