Пример #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        ud = new UserDAL();
        vd = new VersionDAL();

        //debug
        //User u = new User();
        //u.user_id = 1;
        //ud.SelectByID(ref u);
        //Session["user"] = u;

        if (Session["user"] == null)
        {
            Response.Write("<script>alert('please login.');window.location.href='login.aspx';</script>");
            return;
        }

        string vid_str = Request.QueryString["vid"];

        //debug
        //vid_str = "6";
        //Response.Write("<script>alert('shit" +vid_str+"');</script>");
        if (vid_str == null)
        {
            //error
            Response.Write("<script>alert('invalid vid1 : vid is null.');window.opener=null;window.close();</script>");
            return;
        }

        int vid;

        if (int.TryParse(vid_str, out vid) == false)
        {
            //error
            Response.Write("<script>alert('invalid vid2.');window.opener=null;window.close();</script>");
            return;
        }

        v            = new Version();
        v.version_id = vid;
        if (vd.SelectByID(ref v) == false)
        {
            Response.Write("<script>alert('invalid vid in url.');window.opener=null;window.close();</script>");
            return;
        }
    }
Пример #2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        wd = new WarehouseDAL();
        vd = new VersionDAL();
        bd = new BranchDAL();

        if (int.TryParse(Request.QueryString["wid"], out wid) == false)
        {
            //error
        }

        if (int.TryParse(Request.QueryString["vid"], out vid) == false)
        {
            //error
        }

        if (wid == 0 || vid == 0)
        {
            //error
        }

        //debug!!!!!!!!!!!!!!!!!!!!!!!
        //wid = 1;
        //vid = 1;
        //User u = new User();
        //u.user_id = 1;
        //UserDAL ud = new UserDAL();
        //ud.SelectByID(ref u);
        //Session["user"] = u;

        w = new Warehouse();
        w.warehouse_id = wid;
        if (!wd.SelectedByID(ref w))
        {
            //error
        }

        v            = new Version();
        v.version_id = vid;
        if (!vd.SelectByID(ref v))
        {
            //error
        }

        b           = new Branch();
        b.branch_id = v.branch_id;
        if (!bd.SelectByID(ref b))
        {
            //error
        }

        //head
        headName.InnerText = w.warehouse_name;
        headDesc.InnerText = w.warehouse_description;

        //current version
        curBran.InnerText = "当前分支:" + b.branch_name;
        curVer.InnerText  = "当前版本:" + v.version_id.ToString();
        curTime.InnerText = "修改时间:" + v.timestamp;
        curDesc.InnerText = "当前版本描述:" + v.description;

        //draw
        if (!DrawGraph())
        {
        }

        //file
        fileInit();
    }
Пример #3
0
    protected bool DrawGraph()
    {
        List <Branch> branchList = new List <Branch>();
        ArrayList     nodes      = new ArrayList();
        ArrayList     edges      = new ArrayList();

        if (!bd.SelectByWarehouseID(wid, ref branchList))
        {
            //error
            return(false);
        }

        //find master
        int masterBranchID = -1;
        int masterStart    = -1;

        foreach (Branch b in branchList)
        {
            if (b.branch_name == "master")
            {
                masterBranchID = b.branch_id;
                masterStart    = b.start_id;
                break;
            }
        }

        if (masterBranchID == -1)
        {
            //error
            return(false);
        }

        int curX   = 0;
        int curY   = 0;
        int edgeID = 0;

        //draw master
        Version v = new Version();

        v.version_id = masterStart;
        bool isFirst = true;

        while (v.version_id != 0)
        {
            if (!vd.SelectByID(ref v))
            {
                break;
            }
            Node n = new Node();
            n.vid   = v.version_id;
            n.lable = "master:" + n.vid.ToString();
            n.x     = curX;
            n.y     = curY;
            curX   += 10;
            nodes.Add(n);
            if (!isFirst)
            {
                Edge e = new Edge();
                e.src    = v.prev_id;
                e.dest   = v.version_id;
                e.edgeId = edgeID;
                edgeID++;
                edges.Add(e);
            }
            else
            {
                isFirst = false;
            }
            v.version_id = v.next_id;
        }

        //draw branches
        foreach (Branch b in branchList)
        {
            if (b.branch_id == masterBranchID)
            {
                continue;
            }
            for (int i = 0; i < nodes.Count; ++i)
            {
            }
            curX         = 0;
            curY        += 10;
            isFirst      = true;
            v.version_id = b.start_id;
            while (v.version_id != 0)
            {
                if (!vd.SelectByID(ref v))
                {
                    break;
                }
                if (isFirst)
                {
                    int i = 0;
                    for (; i < nodes.Count; ++i)
                    {
                        if (v.prev_id == ((Node)nodes[i]).vid)
                        {
                            curX = 10 * i;
                        }
                    }
                    isFirst = false;
                }

                Node n = new Node();
                n.vid   = v.version_id;
                n.lable = b.branch_name + ":" + n.vid.ToString();
                n.x     = curX;
                n.y     = curY;
                curX   += 10;
                nodes.Add(n);

                Edge e = new Edge();
                e.src    = v.prev_id;
                e.dest   = v.version_id;
                e.edgeId = edgeID;
                edgeID++;
                edges.Add(e);

                v.version_id = v.next_id;
            }
        }

        //js
        string js = "<script>var g = {nodes: [],edges: []};";

        foreach (Node n in nodes)
        {
            js += "g.nodes.push({id:'" + n.vid.ToString() + "',label:'" + n.lable + "',x:" + n.x.ToString() + ",y:" + n.y.ToString() + ",size:10,color:'#666'});";
        }

        foreach (Edge e in edges)
        {
            js += "g.edges.push({id:'" + e.edgeId.ToString() + "',source:'" + e.src.ToString() + "',target:'" + e.dest.ToString() + "',size:10,color: '#ccc',hover_color:'#000'}); ";
        }

        js += "s = new sigma({graph: g,renderer:{container: document.getElementById('graph-container'),type: 'canvas'},settings:{doubleClickEnabled: false,minEdgeSize: 0.5,maxEdgeSize: 4,enableEdgeHovering: true,edgeHoverColor: 'edge',defaultEdgeHoverColor: '#000',edgeHoverSizeRatio: 1,edgeHoverExtremities: true,}});";

        js += "s.bind('clickNode doubleClickNode rightClickNode', function (e) {var str = '' + e.data.node.label;var arr = str.split(':', 2);document.getElementById('selectedBranch').innerText = '选中分支:' + arr[0];document.getElementById('selectedVersion').innerText= arr[1];document.getElementById('hidValue').value = arr[1];});</script>";

        graph_script.InnerHtml = js;
        return(true);
    }