private VisInfoHolder DagNodeJson(Dag d) { HashSet <DagNode> nodes = new HashSet <DagNode>(); StringBuilder str = new StringBuilder(); VisInfoHolder vih = new VisInfoHolder { nodes = new List <NodesDataSet>(), edges = new List <EdgesDataSet>() }; foreach (DagEdge edge in d.GetDagEdgeSet()) { nodes.Add(edge.PrevNode); } foreach (DagNode node in nodes) { vih.nodes.Add(new NodesDataSet { id = node.Id, label = node.CompTime.ToString(), color = node.CriticalPath ? "rgba(40, 178, 6, 0.8)" : "rgba(167, 162, 162, 0.65)" }); foreach (DagNode nextNode in node.GetNextNodes()) { bool CpEdge = (node.CriticalPath && nextNode.CriticalPath); vih.edges.Add(new EdgesDataSet { from = node.Id, to = nextNode.Id, color = new Color { color = CpEdge ? "rgba(40, 178, 6, 0.8)" : "rgba(167, 162, 162, 0.65)" }, label = d.FindEdge(node, nextNode)?.CommTime.ToString() }); } } vih.Info = new DagInfo { Nodes = nodes.Count, Edges = d.GetDagEdgeSet().Count, CpTime = d.CpTime }; return(vih); }