Skip to content
Prev Previous commit
Next Next commit
Changed from breadth-first search to depth-first search when generati…
…ng dot string.
  • Loading branch information
KarlLundengaard committed Aug 2, 2023
commit 37edef8ec2dd047548febffd09c3905e00d25ac5
32 changes: 16 additions & 16 deletions app/criteria_utilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,23 +187,23 @@ def generate_svg(root_node, filename, dummy_input=None):
if node.criterion.doc_string is not None:
tooltip = node.criterion.doc_string
nodes.append(f'{node.label} [label="{label}" tooltip="{tooltip}" shape="{shape}" color="{color}" fillcolor="{fillcolor}" fontcolor="{fontcolor}"]')
if node.children is not None:
for (result, target) in node.children.items():
if result is None:
edges.append(f'{node.label} -> {target.label}')
else:
shape, color, fillcolor, fontcolor = result_params
result_label = f'RESULT_NODE_{str(number_of_result_nodes)}'
result_feedback = feedback_descriptions.get(result,"")
if result_feedback.strip() == "":
result_feedback = 'No new feedback produced'
nodes.append(f'{result_label} [label="{str(result)}" tooltip="{result_feedback}" shape="{shape}" color="{color}" fillcolor="{fillcolor}" fontcolor="{fontcolor}"]')
number_of_result_nodes += 1
edges.append(f'{node.label}:{result_compass[1]} -> {result_label}:{result_compass[0]} [arrowhead="none"]')
edges.append(f'{result_label}:{result_compass[1]} -> {target.label}')
if target not in nodes_already_processed and target not in nodes_to_be_processed:
nodes_to_be_processed.append(target)
if node not in nodes_already_processed:
nodes_already_processed.append(node)
if node.children is not None:
for (result, target) in node.children.items():
if result is None:
edges.append(f'{node.label} -> {target.label}')
else:
shape, color, fillcolor, fontcolor = result_params
result_label = f'RESULT_NODE_{str(number_of_result_nodes)}'
result_feedback = feedback_descriptions.get(result,"")
if result_feedback.strip() == "":
result_feedback = 'No new feedback produced'
nodes.append(f'{result_label} [label="{str(result)}" tooltip="{result_feedback}" shape="{shape}" color="{color}" fillcolor="{fillcolor}" fontcolor="{fontcolor}"]')
number_of_result_nodes += 1
edges.append(f'{node.label}:{result_compass[1]} -> {result_label}:{result_compass[0]} [arrowhead="none"]')
edges.append(f'{result_label}:{result_compass[1]} -> {target.label}')
nodes_to_be_processed.append(target)
dot_preamble = 'digraph {'+'\n'.join(graph_attributes)+'\n'
dot_postamble = '\n}'
dot_string = dot_preamble+"\n".join(nodes+edges)+dot_postamble
Expand Down
40 changes: 20 additions & 20 deletions app/docs/quantity_comparison_graph.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.