public void push(NodesStructure a, int i, ColumnNodes[] b)
 {
     if (b[i] == null)
     {
         b[i]            = new ColumnNodes();
         b[i].Columnnode = new List <NodesStructure>();
         b[i].Columnnode.Add(a);
     }
     else
     {
         b[i].Columnnode.Add(a);
     }
 }
 int ascendingBreadth(NodesStructure a, NodesStructure b)
 {
     if ((a.y0 - b.y0) == 0)
     {
         return(0);
     }
     if ((a.y0 - b.y0) < 0)
     {
         return(-1);
     }
     if ((a.y0 - b.y0) > 0)
     {
         return(1);
     }
     return((int)(a.y0 - b.y0));
 }
    private void reorderNodeLinks(NodesStructure source)
    {
        /*        if (linkSort === undefined)
         *      {*/

        foreach (LinksStructure a in source.TargetLinks)
        {
            a.SourceNode.SourceLinks.Sort(ascendingTargetBreadth);
        }
        foreach (LinksStructure a in source.SourceLinks)
        {
            a.TargetNode.TargetLinks.Sort(ascendingSourceBreadth);
        }



        /*   }*/
    }
    public double sourceTop(NodesStructure Sourcenode, NodesStructure Targetnode)
    {
        var y = Targetnode.y0 - (Targetnode.TargetLinks.Count - 1) * py / 2;

        foreach (LinksStructure a  in Targetnode.TargetLinks)
        {
            if (a.SourceNode.Equals(Sourcenode))
            {
                break;
            }
            y += a.width + py;
        }
        foreach (LinksStructure a in Sourcenode.SourceLinks)
        {
            if (a.TargetNode.Equals(Targetnode))
            {
                break;
            }
            y -= a.width;
        }
        return(y);
    }
    private double targetTop(NodesStructure source, NodesStructure target)
    {
        var y = source.y0 - (source.SourceLinks.Count - 1) * py / 2;

        foreach (LinksStructure a in source.SourceLinks)
        {
            if (a.TargetNode.Equals(target))
            {
                break;
            }
            y += a.width + py;
        }
        foreach (LinksStructure a in target.TargetLinks)
        {
            if (a.SourceNode.Equals(source))
            {
                break;
            }
            y -= a.width;
        }
        return(y);
    }
 public int justify(NodesStructure a, int n)
 {
     return(a.SourceLinks.Count > 0 ? a.depth : n - 1);
 }
 private double center(NodesStructure a)
 {
     return(a.TargetLinks.Count != 0 ? a.depth
 : a.SourceLinks.Count != 0 ? a.SourceLinks.Min(c => c.TargetNode.depth) - 1
 : 0);
 }
 private double right(NodesStructure a, int x)
 {
     return(x - 1 - a.height);
 }
 private double left(NodesStructure a)
 {
     return(a.depth);
 }
    public void loadDate(string transportFilepath)
    {
        Boolean FileRightFlag = true;

        graphContainer = transform.parent.gameObject.GetComponent <RectTransform>();
        x0             = 10;
        y0             = 10;
        x1             = x0 + graphContainer.sizeDelta.x - 10;
        y1             = graphContainer.sizeDelta.y + y0 - 20;
        string filepath = "";

        if (transportFilepath != "")
        {
            filepath = transportFilepath;
            if (filepath != "")
            {
                if (!filepath.EndsWith(".json"))
                {
                    Debug.Log(filepath + " is not a json file");
                    FileRightFlag = false;
                }
            }
        }
        else
        {
            if (jsFile != null)
            {
                if (transportFilepath == "")
                {
                    filepath = UnityEditor.AssetDatabase.GetAssetPath(jsFile);
                }
                if (!filepath.EndsWith(".json"))
                {
                    Debug.Log(filepath + " is not a json file");
                    FileRightFlag = false;
                }
            }
        }
        if (filepath != "" && FileRightFlag == true)
        {
            StreamReader streamreader = new StreamReader(filepath);
            JsonReader   js           = new JsonReader(streamreader);
            Root         r            = JsonMapper.ToObject <Root>(js);
            NodesStructures = new NodesStructure[r.nodes.Count];
            for (int i = 0; i < r.nodes.Count; i++)
            {
                NodesStructures[i]             = new NodesStructure();
                NodesStructures[i].name        = r.nodes[i].name;
                NodesStructures[i].layer       = 999;
                NodesStructures[i].index       = i;
                NodesStructures[i].SourceLinks = new List <LinksStructure>();
                NodesStructures[i].TargetLinks = new List <LinksStructure>();
            }
            LinksStructures = new LinksStructure[r.links.Count];
            for (int i = 0; i < r.links.Count; i++)
            {
                /*            NodesStructures[r.links[i].target].addTargetLink(r.links[i].source, r.links[i].target, r.links[i].value,i);
                 *          NodesStructures[r.links[i].source].addSourceLink(r.links[i].source, r.links[i].target, r.links[i].value,i);*/
                LinksStructures[i]            = new LinksStructure();
                LinksStructures[i].value      = r.links[i].value;
                LinksStructures[i].index      = i;
                LinksStructures[i].SourceNode = NodesStructures[r.links[i].source];
                LinksStructures[i].TargetNode = NodesStructures[r.links[i].target];
                NodesStructures[r.links[i].source].SourceLinks.Add(LinksStructures[i]);
                NodesStructures[r.links[i].target].TargetLinks.Add(LinksStructures[i]);
            }
            if (linkSort != null)
            {
                for (int i = 0; i < NodesStructures.Length; i++)
                {
                    NodesStructures[i].SourceLinks.Sort((IComparer <LinksStructure>)linkSort);
                    NodesStructures[i].TargetLinks.Sort((IComparer <LinksStructure>)linkSort);
                }
            }
            for (int i = 0; i < NodesStructures.Length; i++)
            {
                NodesStructures[i].getvalue();
            }
            ComputeNodeHeights();
            ComputeNodeDepths();

            ComputeNodeBreadths();
            computeLinkBreadths();
            Debug.Log("--------------------------------");
            for (int i = 0; i < NodesStructures.Length; i++)
            {
                NodesStructures[i].tostring();
            }

            gameObject.SetActive(false);
            gameObject.transform.parent.GetComponent <NodeShow>().reloadFlag = true;
        }
    }
    public void loadHtmlData(string JsonContent)
    {
        if (JsonContent == "")
        {
            Debug.Log("Online Json file is null");
        }
        else
        {
            JsonReader js = new JsonReader(new StringReader(JsonContent));
            Root       r  = JsonMapper.ToObject <Root>(js);
            NodesStructures = new NodesStructure[r.nodes.Count];
            for (int i = 0; i < r.nodes.Count; i++)
            {
                NodesStructures[i]             = new NodesStructure();
                NodesStructures[i].name        = r.nodes[i].name;
                NodesStructures[i].layer       = 999;
                NodesStructures[i].index       = i;
                NodesStructures[i].SourceLinks = new List <LinksStructure>();
                NodesStructures[i].TargetLinks = new List <LinksStructure>();
            }
            LinksStructures = new LinksStructure[r.links.Count];
            for (int i = 0; i < r.links.Count; i++)
            {
                /*            NodesStructures[r.links[i].target].addTargetLink(r.links[i].source, r.links[i].target, r.links[i].value,i);
                 *          NodesStructures[r.links[i].source].addSourceLink(r.links[i].source, r.links[i].target, r.links[i].value,i);*/
                LinksStructures[i]            = new LinksStructure();
                LinksStructures[i].value      = r.links[i].value;
                LinksStructures[i].index      = i;
                LinksStructures[i].SourceNode = NodesStructures[r.links[i].source];
                LinksStructures[i].TargetNode = NodesStructures[r.links[i].target];
                NodesStructures[r.links[i].source].SourceLinks.Add(LinksStructures[i]);
                NodesStructures[r.links[i].target].TargetLinks.Add(LinksStructures[i]);
            }
            if (linkSort != null)
            {
                for (int i = 0; i < NodesStructures.Length; i++)
                {
                    NodesStructures[i].SourceLinks.Sort((IComparer <LinksStructure>)linkSort);
                    NodesStructures[i].TargetLinks.Sort((IComparer <LinksStructure>)linkSort);
                }
            }
            for (int i = 0; i < NodesStructures.Length; i++)
            {
                NodesStructures[i].getvalue();
            }
            ComputeNodeHeights();
            ComputeNodeDepths();

            ComputeNodeBreadths();
            computeLinkBreadths();

            /*        Debug.Log("--------------------------------");
             *      for (int i = 0; i < NodesStructures.Length; i++)
             *      {
             *          NodesStructures[i].tostring();
             *      }*/

            gameObject.SetActive(false);
            gameObject.transform.parent.GetComponent <NodeShow>().reloadFlag = true;
        }
    }
예제 #12
0
    public List <GameObject> AddGraphVisual(Vector2 graphPosition, float Width, float barHight, string tooltipText, NodesStructure a, int i)
    {
        GameObject           barGameObject        = CreateBar(graphPosition, Width, barHight, a, i);
        BarChartVisualObject barChartVisualObject = new BarChartVisualObject(barGameObject, Width, barHight);

        barChartVisualObject.SetGraphVisualObjectInfo(graphPosition, Width, barHight, tooltipText);
        Button_UI barButtonUI = barGameObject.AddComponent <Button_UI>();

        barButtonUI.MouseOverOnceFunc += () => {
            /* ShowTooltip_Static(tooltipText, graphPosition);*/
        };


        // Hide Tooltip on Mouse Out
        barButtonUI.MouseOutOnceFunc += () => {
            HideTooltip_Static();
        };

        DragNode node = barGameObject.AddComponent <DragNode>();

        node.setRectTransform(barGameObject.GetComponent <RectTransform>(), this.gameObject);
        node.setNodeStructure(a, Width, barHight);
        return(new List <GameObject>()
        {
            barGameObject
        });
    }
예제 #13
0
    private GameObject CreateBar(Vector2 graphPosition, float barWidth, float barHight, NodesStructure Node, int i)
    {
        GameObject gameObject = new GameObject("node:" + Node.name, typeof(Image));

        gameObject.GetComponent <Image>().color = RandomColor1();
        gameObject.transform.SetParent(graphContainer, false);
        gameObject.transform.SetSiblingIndex(0);
        RectTransform rectTransform = gameObject.GetComponent <RectTransform>();

        rectTransform.anchoredPosition = graphPosition;
        rectTransform.sizeDelta        = new Vector2(barWidth, barHight);
        rectTransform.anchorMax        = new Vector2(0, 0);
        rectTransform.anchorMin        = new Vector2(0, 0);
        barlist[i] = gameObject;

        GameObject test = new GameObject("text", typeof(Text));

        test.GetComponent <Text>().fontSize = textFontSize;
        test.GetComponent <Text>().font     = Resources.GetBuiltinResource <Font>("Arial.ttf");
        test.GetComponent <Text>().color    = Color.green;
        test.GetComponent <Text>().text     = Node.name;
        test.transform.SetParent(gameObject.transform);
        test.gameObject.GetComponent <RectTransform>().sizeDelta = new Vector2(100, 20);
        test.transform.localPosition = new Vector3(60, 0, 0);

        return(gameObject);
    }
예제 #14
0
    private void updateBarAndLink(Vector2 graphPosition, float barWidth, float barHight, NodesStructure Node, int i, bool drag)
    {
        GameObject gameObject = GameObjectList[i].gameObject;

        if (drag == false)
        {
            gameObject.GetComponent <Image>().color = RandomColor1();
        }
        else
        {
        }
        gameObject.transform.SetParent(graphContainer, false);
        RectTransform rectTransform = gameObject.GetComponent <RectTransform>();

        rectTransform.anchoredPosition = graphPosition;
        rectTransform.sizeDelta        = new Vector2(barWidth, barHight);
        rectTransform.anchorMax        = new Vector2(0, 0);
        rectTransform.anchorMin        = new Vector2(0, 0);

        DragNode node = gameObject.GetComponent <DragNode>();

        node.setRectTransform(gameObject.GetComponent <RectTransform>(), this.gameObject);
        node.setNodeStructure(Node, barWidth, barHight);
    }
예제 #15
0
 /*
  * Method name: onDrag
  * Argument:
  * Method description:
  */
 public void setNodeStructure(NodesStructure node, float width, float hight)
 {
     a          = node;
     nodewidth  = width;
     nodeheight = hight;
 }