private string AppendDataForParent(IRowReceiveRelation rr, string parentRelNode, string label) { var sb = new StringBuilder(); var otherAttributes = OtherAttributes(rr); sb.AppendLine($"Node{rr.ID} [label=\"{rr.Values[label]}\" {otherAttributes}];"); if (parentRelNode != null) { sb.AppendLine($"{parentRelNode} -> Node{rr.ID};"); } var rels = rr.Relations; foreach (var relName in rels.Keys) { if (rels[relName].Count == 0) { continue; } string relNode = $"NodeRel{relName + "_" + rr.ID}"; sb.AppendLine($"{relNode} [label=\"{ReplaceStringForJavascript(relName)}\"];"); sb.AppendLine($"Node{rr.ID} -> {relNode};"); foreach (var childRel in rels[relName]) { sb.AppendLine(AppendDataForParent(childRel, relNode, label)); } } return(sb.ToString()); }
public void Add(string name, IRowReceiveRelation rel) { if (!Relations.ContainsKey(name)) { Relations.Add(name, new List <IRowReceiveRelation>()); } Relations[name].Add(rel); }
private void FilterRow(IRowReceiveRelation rowReceiveRelation) { if (rowReceiveRelation == null) { return; } foreach (var item in rowReceiveRelation.Relations) { foreach (var rr in item.Value) { FilterRow(rr); } if (Result(search(Filter)(item.Key, NameRelation))) { ret.AddRange(item.Value); } } }
void Add(IRowReceiveRelation rel) { if (rel == null) { return; } ret.Add(rel); foreach (var relationChild in rel.Relations) { foreach (var item in relationChild.Value) { item.Values.Add("NameRelation", relationChild.Key); Add(item); } } }
void RemoveRelational(IRowReceiveRelation rr) { if (rr == null) { return; } var keys = rr.Relations.Keys.ToArray(); if (existsProperties) { foreach (var item in keys.Intersect(ExcludeRelations)) { rr.Relations.Remove(item); } } foreach (var item in rr.Relations.SelectMany(it => it.Value)) { RemoveRelational(item); } }