Skip to content

Commit 4255a8f

Browse files
committed
More fix for PR comments
1. Clarified component positions with modifiers 2. Removed unnecessary comments 3. Simplified JsonParser
1 parent 1a6d868 commit 4255a8f

File tree

6 files changed

+55
-78
lines changed

6 files changed

+55
-78
lines changed

workflow-trace-viewer/src/jvmMain/kotlin/com/squareup/workflow1/traceviewer/App.kt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import androidx.compose.runtime.setValue
1010
import androidx.compose.ui.Alignment
1111
import androidx.compose.ui.Modifier
1212
import com.squareup.workflow1.traceviewer.model.Node
13-
import com.squareup.workflow1.traceviewer.ui.InfoPanel
1413
import com.squareup.workflow1.traceviewer.ui.RenderDiagram
14+
import com.squareup.workflow1.traceviewer.ui.RightInfoPanel
1515
import com.squareup.workflow1.traceviewer.ui.StateSelectTab
1616
import com.squareup.workflow1.traceviewer.util.SandboxBackground
1717
import com.squareup.workflow1.traceviewer.util.UploadFile
@@ -29,38 +29,38 @@ public fun App(
2929
var workflowFrames by remember { mutableStateOf<List<Node>>(emptyList()) }
3030
var frameIndex by remember { mutableIntStateOf(0) }
3131

32-
Box {
32+
Box(
33+
modifier = modifier
34+
) {
3335
// Main content
3436
if (selectedTraceFile != null) {
3537
SandboxBackground {
3638
RenderDiagram(
3739
traceFile = selectedTraceFile!!,
38-
traceInd = frameIndex,
40+
frameInd = frameIndex,
3941
onFileParse = { workflowFrames = it },
4042
onNodeSelect = { selectedNode = it }
4143
)
4244
}
4345
}
4446

45-
// Top trace selector row
4647
StateSelectTab(
4748
frames = workflowFrames,
4849
currentIndex = frameIndex,
4950
onIndexChange = { frameIndex = it },
5051
modifier = Modifier.align(Alignment.TopCenter)
5152
)
5253

53-
// Right side information panel
54-
InfoPanel(selectedNode)
54+
RightInfoPanel(selectedNode)
5555

56-
// Bottom left upload button
57-
val onReset = {
58-
selectedNode = null
59-
frameIndex = 0
60-
}
56+
// The states are reset when a new file is selected.
6157
UploadFile(
62-
onReset = onReset,
63-
onFileSelect = { selectedTraceFile = it }
58+
onFileSelect = {
59+
selectedTraceFile = it
60+
selectedNode = null
61+
frameIndex = 0
62+
},
63+
modifier = Modifier.align(Alignment.BottomStart)
6464
)
6565
}
6666
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.squareup.workflow1.traceviewer
22

3+
import androidx.compose.foundation.layout.fillMaxSize
4+
import androidx.compose.ui.Modifier
35
import androidx.compose.ui.window.singleWindowApplication
46

57
/**
68
* Main entry point for the desktop application, see [README.md] for more details.
79
*/
810
fun main() {
911
singleWindowApplication(title = "Workflow Trace Viewer") {
10-
App()
12+
App(Modifier.fillMaxSize())
1113
}
1214
}

workflow-trace-viewer/src/jvmMain/kotlin/com/squareup/workflow1/traceviewer/ui/WorkflowInfoPanel.kt

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ import com.squareup.workflow1.traceviewer.model.Node
3333
* @param selectedNode The currently selected workflow node, or null if no node is selected.
3434
*/
3535
@Composable
36-
public fun InfoPanel(
36+
public fun RightInfoPanel(
3737
selectedNode: Node?,
3838
modifier: Modifier = Modifier
3939
) {
40-
// This row is ordered RTL
40+
// This row is aligned to the right of the screen.
4141
Row {
4242
Spacer(modifier = Modifier.weight(1f))
4343

@@ -51,28 +51,23 @@ public fun InfoPanel(
5151
.align(Alignment.Top)
5252
) {
5353
Icon(
54-
imageVector = if (panelOpen) Filled.KeyboardArrowLeft else Filled.KeyboardArrowRight,
54+
imageVector = if (panelOpen) Filled.KeyboardArrowRight else Filled.KeyboardArrowLeft,
5555
contentDescription = if (panelOpen) "Close Panel" else "Open Panel",
5656
modifier = Modifier
5757
)
5858
}
5959

60-
// based on open/close, display the node details (Column)
6160
if (panelOpen) {
62-
PanelDetails(
61+
NodePanelDetails(
6362
selectedNode,
6463
Modifier.fillMaxWidth(.35f)
6564
)
6665
}
6766
}
6867
}
6968

70-
/**
71-
* The text details of the selected node. This should be closely coupled with the [Node]
72-
* data class to see what information should be displayed.
73-
*/
7469
@Composable
75-
private fun PanelDetails(
70+
private fun NodePanelDetails(
7671
node: Node?,
7772
modifier: Modifier = Modifier
7873
) {

workflow-trace-viewer/src/jvmMain/kotlin/com/squareup/workflow1/traceviewer/ui/WorkflowTree.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import androidx.compose.ui.Modifier
2020
import androidx.compose.ui.graphics.Color
2121
import androidx.compose.ui.unit.dp
2222
import com.squareup.workflow1.traceviewer.model.Node
23-
import com.squareup.workflow1.traceviewer.util.fetchTrace
23+
import com.squareup.workflow1.traceviewer.util.parseTrace
2424
import io.github.vinceglb.filekit.PlatformFile
2525

2626
/**
@@ -30,22 +30,22 @@ import io.github.vinceglb.filekit.PlatformFile
3030
@Composable
3131
public fun RenderDiagram(
3232
traceFile: PlatformFile,
33-
traceInd: Int,
33+
frameInd: Int,
3434
onFileParse: (List<Node>) -> Unit,
3535
onNodeSelect: (Node) -> Unit,
3636
) {
37-
var nodes by remember { mutableStateOf<List<Node>>(emptyList()) }
37+
var frames by remember { mutableStateOf<List<Node>>(emptyList()) }
3838
var isLoading by remember { mutableStateOf(true) }
3939

4040
LaunchedEffect(traceFile) {
4141
isLoading = true
42-
nodes = fetchTrace(traceFile)
43-
onFileParse(nodes)
42+
frames = parseTrace(traceFile)
43+
onFileParse(frames)
4444
isLoading = false
4545
}
4646

4747
if (!isLoading) {
48-
DrawTree(nodes[traceInd], onNodeSelect)
48+
DrawTree(frames[frameInd], onNodeSelect)
4949
}
5050

5151
// TODO: catch errors and display UI here
@@ -68,10 +68,9 @@ private fun DrawTree(
6868
.fillMaxSize(),
6969
horizontalAlignment = Alignment.CenterHorizontally,
7070
) {
71-
// draws the node itself
7271
DrawNode(node, onNodeSelect)
7372

74-
// draws the node's children recursively
73+
// Draws the node's children recursively.
7574
Row(
7675
horizontalArrangement = Arrangement.Center,
7776
verticalAlignment = Alignment.Top
Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.squareup.workflow1.traceviewer.util
22

3-
import androidx.compose.ui.Modifier
43
import com.squareup.moshi.JsonAdapter
54
import com.squareup.moshi.JsonDataException
65
import com.squareup.moshi.Moshi
@@ -12,31 +11,25 @@ import io.github.vinceglb.filekit.readString
1211
import java.io.IOException
1312

1413
/**
15-
* Parses the data from the given file and initiates the workflow tree
16-
*/
17-
public suspend fun fetchTrace(
18-
file: PlatformFile?,
19-
modifier: Modifier = Modifier
20-
): List<Node> {
21-
val jsonString = file?.readString()
22-
return jsonString?.let { parseTrace(it) } ?: emptyList()
23-
}
24-
25-
/**
26-
* Parses a JSON string into [Node] with Moshi adapters. Moshi automatically throws JsonDataException
14+
* Parses a given file's JSON String into [Node] with Moshi adapters. Moshi automatically throws JsonDataException
2715
* and IOException
2816
* @throws JsonDataException malformed JSON data or an error reading.
2917
* @throws IOException JSON is correct, but mismatch between class and JSON structure.
3018
*/
31-
public fun parseTrace(
32-
json: String
19+
public suspend fun parseTrace(
20+
file: PlatformFile,
3321
): List<Node> {
22+
val jsonString = file.readString()
23+
3424
val moshi = Moshi.Builder()
3525
.add(KotlinJsonAdapterFactory())
3626
.build()
3727

3828
val workflowList = Types.newParameterizedType(List::class.java, Node::class.java)
3929
val workflowAdapter: JsonAdapter<List<Node>> = moshi.adapter(workflowList)
40-
val root = workflowAdapter.fromJson(json) ?: emptyList()
41-
return root
30+
val trace = workflowAdapter.fromJson(jsonString)
31+
if (trace == null) {
32+
throw JsonDataException("Could not parse JSON")
33+
}
34+
return trace
4235
}
Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
package com.squareup.workflow1.traceviewer.util
22

3-
import androidx.compose.foundation.layout.Box
4-
import androidx.compose.foundation.layout.fillMaxSize
53
import androidx.compose.foundation.layout.padding
64
import androidx.compose.foundation.shape.CircleShape
75
import androidx.compose.material.Button
86
import androidx.compose.material.ButtonDefaults.buttonColors
97
import androidx.compose.material.Text
108
import androidx.compose.runtime.Composable
11-
import androidx.compose.ui.Alignment
129
import androidx.compose.ui.Modifier
1310
import androidx.compose.ui.graphics.Color
1411
import androidx.compose.ui.unit.dp
@@ -23,36 +20,27 @@ import io.github.vinceglb.filekit.dialogs.compose.rememberFilePickerLauncher
2320
*/
2421
@Composable
2522
public fun UploadFile(
26-
onReset: () -> Unit,
2723
onFileSelect: (PlatformFile?) -> Unit,
2824
modifier: Modifier = Modifier,
2925
) {
30-
Box(
31-
modifier
32-
.padding(16.dp)
33-
.fillMaxSize()
26+
val launcher = rememberFilePickerLauncher(
27+
type = FileKitType.File(listOf("json", "txt")),
28+
title = "Select Workflow Trace File"
3429
) {
35-
val launcher = rememberFilePickerLauncher(
36-
type = FileKitType.File(listOf("json", "txt")),
37-
title = "Select Workflow Trace File"
38-
) {
39-
onReset()
40-
onFileSelect(it)
41-
}
30+
onFileSelect(it)
31+
}
4232

43-
Button(
44-
onClick = { launcher.launch() },
45-
modifier = Modifier
46-
.align(Alignment.BottomStart),
47-
shape = CircleShape,
48-
colors = buttonColors(Color.Black)
49-
) {
50-
Text(
51-
text = "+",
52-
color = Color.White,
53-
fontSize = 24.sp,
54-
fontWeight = androidx.compose.ui.text.font.FontWeight.Bold
55-
)
56-
}
33+
Button(
34+
onClick = { launcher.launch() },
35+
modifier = modifier.padding(16.dp),
36+
shape = CircleShape,
37+
colors = buttonColors(Color.Black)
38+
) {
39+
Text(
40+
text = "+",
41+
color = Color.White,
42+
fontSize = 24.sp,
43+
fontWeight = androidx.compose.ui.text.font.FontWeight.Bold
44+
)
5745
}
5846
}

0 commit comments

Comments
 (0)