Esempio n. 1
0
        private GraphModel GraphSetup()
        {
            GraphDB db    = new GraphDB();
            var     graph = new GraphModel();

            //get all the nodes
            foreach (var node in db.Nodes)
            {
                var dataVertex = new DataVertex()
                {
                    ID = node.Id, Text = node.label
                };
                graph.AddVertex(dataVertex);
                nodeList.Add(node.Id, node.label);
            }

            var vlist = graph.Vertices.ToList();

            //add all the edges
            foreach (var node in vlist)
            {
                Dictionary <int, int> edges = new Dictionary <int, int>();
                foreach (var edge in db.Edges.Where(x => x.FromNode == node.ID))
                {
                    var dataEdge = new DataEdge(node, vlist[vlist.FindIndex(x => x.ID == edge.ToNode)]);
                    graph.AddEdge(dataEdge);
                    edges.Add(edge.ToNode, 1);
                }

                vertices.Add(node.ID, edges);
            }

            return(graph);
        }
Esempio n. 2
0
 public static void CreateEdges(ref GraphModel graphModel)
 {
     for (int i = 0; i < graphModel.Vertices.Count(); i++)
     {
         for (int j = i; j < graphModel.Vertices.Count(); j++)
         {
             if (graphModel.MatrixSmezh[i, j] != EdgeType.none)
             {
                 graphModel.AddEdge(new EdgeData(graphModel.Vertices.ElementAt(i), graphModel.Vertices.ElementAt(j), graphModel.MatrixSmezh[i, j]));
             }
         }
     }
 }
Esempio n. 3
0
        private GraphModel GraphSetup()
        {
            GraphDB db = new GraphDB();
            var graph = new GraphModel();

            //get all the nodes
            foreach (var node in db.Nodes)
            {
                var dataVertex = new DataVertex() { ID = node.Id, Text = node.label };
                graph.AddVertex(dataVertex);
                nodeList.Add(node.Id,node.label);
            }

            var vlist = graph.Vertices.ToList();

            //add all the edges
            foreach (var node in vlist)
            {
                Dictionary<int,int> edges =  new Dictionary<int, int>();
                foreach (var edge in db.Edges.Where(x => x.FromNode == node.ID))
                {
                    var dataEdge = new DataEdge(node, vlist[vlist.FindIndex(x => x.ID == edge.ToNode)]);
                    graph.AddEdge(dataEdge);
                    edges.Add(edge.ToNode,1);
                }

                vertices.Add(node.ID,edges);

            }

            return graph;
        }
Esempio n. 4
0
 public static GraphModel ParseGraphJson(string json, string root)
 {
     ZLog.Log("ParseGraphJson..." + json.Length);
     if (string.IsNullOrEmpty(json))
     {
         return(null);
     }
     try
     {
         var        obj   = JsonMapper.ToObject(json);
         GraphModel model = new GraphModel(root)
         {
             name = (string)obj["name"],
         };
         if (((IDictionary)obj).Contains("parent"))
         {
             model.Parent = (string)obj["parent"];
         }
         var center = (string)obj["center"];
         model.SetCenter(center);
         var nodes = obj["nodes"];
         if (nodes != null && nodes.IsArray)
         {
             foreach (JsonData item in nodes)
             {
                 NodeInfo node = new NodeInfo
                 {
                     UID    = (string)item["uid"],
                     name   = (string)item["name"],
                     avatar = (string)item["avatar"],
                     type   = (string)item["type"],
                     parent = center
                 };
                 if (string.IsNullOrEmpty(node.avatar))
                 {
                     node.avatar = Path.Combine(root, "cover/" + node.name + ".png");
                 }
                 node.fullPath = Path.Combine(root, "entity/entity_" + node.UID + ".json");
                 model.AddNode(node, null);
             }
         }
         var edges = obj["edges"];
         if (edges != null && edges.IsArray)
         {
             foreach (JsonData item in edges)
             {
                 LinkInfo edge = new LinkInfo
                 {
                     UID       = (string)item["uid"],
                     name      = (string)item["name"],
                     direction = (DirectionType)(int)item["direction"]
                 };
                 var from = (string)item["from"];
                 edge.from = model.GetNode(from);
                 var to = (string)item["to"];
                 edge.to = model.GetNode(to);
                 if (((IDictionary)item).Contains("type"))
                 {
                     edge.type = (string)item["type"];
                 }
                 model.AddEdge(edge);
             }
             model.CheckVirtualNodes();
         }
         return(model);
     }
     catch (Exception e)
     {
         ZLog.Warning(json);
         ZLog.Warning(e.Message);
         return(null);
     }
 }