Skip to content

Commit ef6ba80

Browse files
committed
Generate full tree diagrams
1 parent a262f7b commit ef6ba80

File tree

3 files changed

+10
-44
lines changed

3 files changed

+10
-44
lines changed

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,6 @@ internal data class Node(
1818
val children: List<Node>,
1919
) {
2020

21-
fun copy(): Node {
22-
return Node(
23-
name = name,
24-
id = id,
25-
parent = parent,
26-
parentId = parentId,
27-
props = props,
28-
state = state,
29-
rendering = rendering,
30-
children = children,
31-
)
32-
}
33-
3421
override fun toString(): String {
3522
return "Node(name='$name', parent='$parent', children=${children})"
3623
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ internal fun RenderDiagram(
4040
var isLoading by remember(traceFile) { mutableStateOf(true) }
4141
var error by remember(traceFile) { mutableStateOf<Throwable?>(null) }
4242
var mainTree by remember { mutableStateOf<Node?>(null) }
43+
var fullTree by remember { mutableStateOf<List<Node>>(emptyList()) }
4344

4445
LaunchedEffect(traceFile) {
4546
val parseResult = parseTrace(traceFile)
@@ -52,6 +53,7 @@ internal fun RenderDiagram(
5253
val parsedFrames = parseResult.trace ?: emptyList()
5354
frames = parsedFrames
5455
mainTree = parseResult.trees.first()
56+
fullTree = parseResult.trees
5557
onFileParse(parsedFrames)
5658
isLoading = false
5759
}
@@ -65,7 +67,7 @@ internal fun RenderDiagram(
6567

6668
if (!isLoading) {
6769
// DrawTree(frames[frameInd], onNodeSelect)
68-
DrawTree(mainTree!!, onNodeSelect)
70+
DrawTree(fullTree[frameInd], onNodeSelect)
6971
}
7072
}
7173

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

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -41,31 +41,13 @@ internal suspend fun parseTrace(
4141
return ParseResult.Failure(e)
4242
}
4343

44-
var mainWorkflowTree: Node? = null
45-
// var parsedTrace = mutableListOf<Node>()
46-
val frameTrees = mutableListOf<Node>()
47-
// unParsedTrace.forEach { renderPass ->
48-
// val parsed = getFrameFromRenderPass(renderPass)
49-
// if (mainWorkflowTree == null) {
50-
// mainWorkflowTree = parsed
51-
// } else {
52-
// mergeFrameIntoMainTree(parsed, mainWorkflowTree!!)
53-
// }
54-
// parsedTrace.add(parsed)
55-
// frameTrees.add(mainWorkflowTree!!.copy())
56-
// }
57-
5844
val parsedTrace = parsedRenderPasses.map { renderPass -> getFrameFromRenderPass(renderPass)}
59-
45+
val frameTrees = mutableListOf<Node>()
6046
parsedTrace.fold(parsedTrace[0]) { tree, frame ->
61-
// We assume that the first render pass is the main workflow tree.
62-
// val parsedFrame = getFrameFromRenderPass(unParsedRenderPass)
6347
val mergedTree = mergeFrameIntoMainTree(frame, tree)
64-
// parsedTrace.add(parsedFrame)
6548
frameTrees.add(mergedTree)
6649
mergedTree
6750
}
68-
6951
return ParseResult.Success(parsedTrace, frameTrees)
7052
}
7153

@@ -124,18 +106,13 @@ internal fun mergeFrameIntoMainTree(
124106
}
125107

126108
return frame.children.fold(main) { mergedTree, child ->
127-
// println(mergedTree)
128-
val parent = mergedTree.children.singleOrNull() { it.id == child.id }
129-
130-
if (parent != null) {
131-
// println("Merging child ${child.id} into parent ${parent.id}")
132-
mergedTree.replaceChild(mergeFrameIntoMainTree(child, parent))
133-
} else {
134-
// println("Adding child ${child.id} to merged tree ${mergedTree.id}")
135-
mergedTree.addChild(child)
136-
}
109+
val parent = mergedTree.children.singleOrNull { it.id == child.id }
110+
if (parent != null) {
111+
mergedTree.replaceChild(mergeFrameIntoMainTree(child, parent))
112+
} else {
113+
mergedTree.addChild(child)
114+
}
137115
}
138-
// println("Merged tree: $it")}
139116
}
140117

141118
internal sealed interface ParseResult {

0 commit comments

Comments
 (0)