nodeToGraph function
Implementation
TTGraphData nodeToGraph(TTNode node, GraphMergePort mergePort) {
final modified = {...node};
TTGraphData nodes = TTGraphData();
final nodeSoul = node.nodeMetaData?.key;
for (final key in node.keys) {
final val = node[key];
if (!isObject(val) || val == null) {
continue;
}
if (val is TTGraphNode) {
if (val.soul.isNotEmpty) {
final edge = {'#': val.soul};
modified[key] = edge;
continue;
}
}
String soul = '';
if (val is TTNode) {
soul = val.nodeMetaData!.key!;
}
if (val is TTLink && val.soul != null && val.soul!.isNotEmpty) {
soul = val.soul!;
}
if (soul.isNotEmpty) {
final edge = {'#': soul};
modified[key] = edge;
final graph = mergePort.addMissingState(nodeToGraph(val, mergePort));
final diff = mergePort.diffGraph(graph, nodes);
nodes = !isNull(diff) ? mergePort.mergeGraph(nodes, diff!) : nodes;
}
}
// print('SD:: ${modified.toString()} $nodeSoul');
TTGraphData raw = TTGraphData();
raw[nodeSoul!] = TTNode.fromJson(modified);
final withMissingState = mergePort.addMissingState(raw);
final graphDiff = mergePort.diffGraph(withMissingState, nodes);
nodes = !isNull(graphDiff) ? mergePort.mergeGraph(nodes, graphDiff!) : nodes;
return nodes;
}