コード例 #1
0
ファイル: ImportProject.aspx.cs プロジェクト: zxl881203/src
    protected void btnImport_Click(object sender, System.EventArgs e)
    {
        string         physicalApplicationPath = base.Request.PhysicalApplicationPath;
        string         text           = "UploadFiles\\Gantt\\";
        string         str            = physicalApplicationPath + text;
        HttpPostedFile httpPostedFile = base.Request.Files["fupData"];
        string         text2          = System.DateTime.Now.ToString("yyyyMMddhhmmss");
        string         str2           = httpPostedFile.FileName.Substring(httpPostedFile.FileName.LastIndexOf("."));

        text2 += str2;
        if (httpPostedFile.ContentLength > 0)
        {
            httpPostedFile.SaveAs(string.Format("{0}{1}{2}", physicalApplicationPath, text, text2));
            System.Text.StringBuilder    stringBuilder = new System.Text.StringBuilder();
            System.Collections.Hashtable hashtable     = PlusProject.Read(str + text2);
            Project project = new Project();
            project.Load(hashtable);
            project.OrderProjectByStart();
            System.Collections.ArrayList arrayList = (System.Collections.ArrayList)hashtable["Tasks"];
            arrayList          = TreeUtil.ToTree(arrayList, "children", "UID", "ParentTaskUID");
            hashtable["Tasks"] = arrayList;
            string text3 = base.Request["id"];
            this.hfldProjectUID.Value = text3;
            DBProject.ConvertXML(text3, hashtable);
            stringBuilder.Append("alert('系统提示:\\n\\nXML导入成功!');closeTab(true);");
            base.RegisterScript(stringBuilder.ToString());
        }
    }
コード例 #2
0
        private void TestAVLTreeBtn_OnClick(object sender, RoutedEventArgs e)
        {
            Tree tree = new AVLTree(1);

            tree = tree.InsertNode(tree, 2);
            tree = tree.InsertNode(tree, 3);
            tree = tree.InsertNode(tree, 4);
            tree = tree.InsertNode(tree, 5);
            tree = tree.InsertNode(tree, 6);
            tree = tree.InsertNode(tree, 7);
            tree = tree.InsertNode(tree, 8);
            tree = tree.InsertNode(tree, 9);
            tree = tree.InsertNode(tree, 10);
            tree = tree.InsertNode(tree, 11);
            tree = tree.InsertNode(tree, 12);
            tree = tree.InsertNode(tree, 13);
            tree = tree.InsertNode(tree, 14);
            tree = tree.InsertNode(tree, 15);

            Console.WriteLine("Pre---");
            TreeUtil.PreTraverse(tree);

            Console.WriteLine("Middle---");
            TreeUtil.MiddleTraverse(tree);

            Console.WriteLine("After---");
            TreeUtil.AfterTraverse(tree);
        }
コード例 #3
0
        public Tree CreateCommitTree(Commit commit, Commit[] parentsInTargetRepo, Repository targetRepo)
        {
            var modify = new TreeModify();

            modify.AddOrSet(_copyOptions.DirInSrcs[0], commit.Tree);
            return(TreeUtil.CopyTreeToAnotherRepositoryWithModifying(parentsInTargetRepo[0].Tree, targetRepo, modify));
        }
コード例 #4
0
        private static List <TreePatternMatches> SubsumeFrequentTrees(List <TreePatternMatches> treeCollection)
        {
            List <TreePatternMatches> subsumedTreePatterns = new List <TreePatternMatches>();

            foreach (var patternMatches1 in treeCollection.OrderByDescending(x => TreeUtil.SizeOfTree(x.Pattern)))
            {
                var tree1           = patternMatches1.Pattern;
                var matchingMethods = patternMatches1.MatchLocations;
                //Debug.WriteLine("Looking at tree:\n" + TreeUtil.StringRepresentation(tree1));

                bool foundMatchingTree = false;
                foreach (var patternMatches2 in subsumedTreePatterns.OrderByDescending(x => TreeUtil.SizeOfTree(x.Pattern)))
                {
                    var tree2 = patternMatches2.Pattern;
                    if (TreeUtil.IsTreeSubtreeOfTree(tree1.Root, tree2.Root))
                    {
                        //Debug.WriteLine($"subsumed by tree:\n{TreeUtil.StringRepresentation(tree2)}");
                        patternMatches2.SubtreeMatchLocations.UnionWith(patternMatches1.AllMatchLocations);
                        foundMatchingTree = true;
                        // it can only be merged with one tree, so skip out of the loop
                        break;
                    }
                }

                if (!foundMatchingTree)
                {
                    //Debug.WriteLine("did not merge with any tree");
                    subsumedTreePatterns.Add(new TreePatternMatches(tree1, matchingMethods));
                }
            }
            return(subsumedTreePatterns);
        }
コード例 #5
0
ファイル: TreeUtilUnitTest.cs プロジェクト: tatwd/coding-time
    public void BuildTreeLikeA_Ok()
    {
        var root = TreeUtil.BuildTreeLikeA(2);

        Assert.NotNull(root);
        Assert.Equal(1, root.Val);
    }
コード例 #6
0
        private DQueryDom GetQueryDom()
        {
            var query           = _mQueryContainer.Build();
            var goods           = JoinAlias.Create("goods");
            var pptAlias        = JoinAlias.Create("gppt");
            var propertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog));

            query.From.AddJoin(JoinType.Left, new DQDmoSource(propertyCatalog), DQCondition.EQ(pptAlias, "GoodsPropertyCatalog_ID", propertyCatalog, "ID"));
            query.Columns.Add(DQSelectColumn.Field("ID", "序号"));
            query.Columns.Add(DQSelectColumn.Field("Code", goods, "存货编码"));
            query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goods, "Name"), "存货名称"));
            query.Columns.Add(DQSelectColumn.Field("Spec", goods));
            query.Columns.Add(DQSelectColumn.Field("MainUnit", goods));
            query.Columns.Add(DQSelectColumn.Field("SecondUnit", goods));
            query.Columns.Add(DQSelectColumn.Field("Name", pptAlias, "存货属性"));
            query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(propertyCatalog, "Name"), "属性分类"));
            query.Columns.Add(DQSelectColumn.Field("Store_Name"));
            query.Columns.Add(DQSelectColumn.Field("AccountingUnit_Name"));
            query.Where.Conditions.Add(DQCondition.EQ("AccountingUnit_Domain_ID", DomainContext.Current.ID));
            if (!_goodsPropertyCatalogBox.IsEmpty)
            {
                TreeUtil.AddTreeCondition <GoodsPropertyCatalog>(query, long.Parse(_goodsPropertyCatalogBox.Value), propertyCatalog);
            }
            return(query);
        }
コード例 #7
0
        static void Main(string[] args)
        {
            // Collect trees from stdin
            string line;
            var    inputs = new List <JObject>();

            while ((line = Console.ReadLine()) != null && line != "")
            {
                inputs.Add(JObject.Parse(line));
            }

            var trees = inputs.Select(x => toGenericTree(x)).ToList();

            if (trees.Count <= 50)
            {
                return;
            }
            // Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(trees[0]));

            try {
                var idioms = FindIdiomsInTrees(trees);

                foreach (var idiom in idioms)
                {
                    if (TreeUtil.SizeOfTree(idiom.Pattern) <= 1)
                    {
                        continue;
                    }
                    Console.WriteLine(TreeUtil.StringRepresentation(idiom.Pattern, false));
                }
            } catch (Exception) {
            }
        }
コード例 #8
0
        private DQueryDom GetQueryDom()
        {
            var query           = _mQueryContainer.Build();
            var root            = query.From.RootSource.Alias;
            var pptAlias        = JoinAlias.Create("gppt");
            var propertyCatalog = new JoinAlias(typeof(GoodsPropertyCatalog));
            var alreadySet      = new JoinAlias(typeof(Goods_Accounting_Store));

            query.From.AddJoin(JoinType.Left, new DQDmoSource(propertyCatalog), DQCondition.EQ(pptAlias, "GoodsPropertyCatalog_ID", propertyCatalog, "ID"));
            query.From.AddJoin(JoinType.Left, new DQDmoSource(alreadySet), DQCondition.EQ(root, "ID", alreadySet, "Goods_ID"));
            query.Columns.Add(DQSelectColumn.Field("ID", "存货ID"));
            query.Columns.Add(DQSelectColumn.Field("Code"));
            query.Columns.Add(DQSelectColumn.Field("Name"));
            query.Columns.Add(DQSelectColumn.Field("Spec"));
            query.Columns.Add(DQSelectColumn.Field("MainUnit"));
            query.Columns.Add(DQSelectColumn.Field("SecondUnit"));
            query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(pptAlias, "Name"), "存货属性"));
            query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(propertyCatalog, "Name"), "属性分类"));
            query.Columns.Add(DQSelectColumn.Field("AccountingUnit_Name", alreadySet, "已配会计单位"));
            if (!_goodsPropertyCatalogBox.IsEmpty)
            {
                TreeUtil.AddTreeCondition <GoodsPropertyCatalog>(query, long.Parse(_goodsPropertyCatalogBox.Value), propertyCatalog);
            }
            if (_checkBox.Checked)
            {
                query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(alreadySet, "Goods_ID")));
            }
            return(query);
        }
コード例 #9
0
ファイル: TreeUtilUnitTest.cs プロジェクト: tatwd/coding-time
    public void BuildTreeFromMiddle_Ok()
    {
        var arr  = new [] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        var root = TreeUtil.BuildTreeFromMiddle(arr, 0, arr.Length - 1);

        Assert.NotNull(root);
        Assert.Equal(5, root.Val);
    }
コード例 #10
0
ファイル: DBProject.cs プロジェクト: zxl881203/src
    public static string SaveAll(Hashtable dataProject, string projectUID)
    {
        JSON.Encode(dataProject["Calendars"]);
        SaveAsTask(projectUID);
        DeleteTasks(projectUID);
        ArrayList tasks = TreeUtil.ToList((ArrayList)dataProject["Tasks"], "-1", "children", "UID", "ParentTaskUID");

        InsertTasks(projectUID, tasks);
        return(projectUID);
    }
コード例 #11
0
ファイル: AVLTree.cs プロジェクト: baby-Jie/StudyResources
        public override BinaryTree <T> Add(BinaryTree <T> node, T val)
        {
            if (node == null)
            {
                return(new AVLTree <T>(val, TreeCompareType));
            }

            if (MyCompare(val, node.Val) == 0)
            {
                return(node);
            }

            if (MyCompare(val, node.Val) < 0)
            {
                // 插入左子树
                node.Left = Add(node.Left, val);

                var leftDeep  = TreeUtil.GetBinaryTreeDeep(node.Left);
                var rightDeep = TreeUtil.GetBinaryTreeDeep(node.Right);

                // 调整树的结构
                if (leftDeep - rightDeep > 1)
                {
                    // 左左 右旋转
                    node = RightSingleRotate(node);
                }
                else if (rightDeep - leftDeep > 1)
                {
                    // 左右  左右旋转
                    node = LeftRightRotate(node);
                }
            }
            else
            {
                // 插入右子树
                node.Right = Add(node.Right, val);

                var leftDeep  = TreeUtil.GetBinaryTreeDeep(node.Left);
                var rightDeep = TreeUtil.GetBinaryTreeDeep(node.Right);

                // 调整树的结构
                if (leftDeep - rightDeep > 1)
                {
                    // 右左 右左旋转
                    node = RightLeftRotate(node);
                }
                else if (rightDeep - leftDeep > 1)
                {
                    // 右右 左旋转
                    node = LeftSingleRotate(node);
                }
            }

            return(node);
        }
コード例 #12
0
ファイル: TreeUtilTest.cs プロジェクト: basverweij/aoc2020
        public void Trees(
            int slopeX,
            int slopeY,
            int expected)
        {
            var actual = TreeUtil.Trees(_geo, slopeX, slopeY);

            Assert.That(
                actual,
                Is.EqualTo(expected));
        }
コード例 #13
0
        public ActionResult MenuTree()
        {
            var menuList = CommonService.GetMenus();

            if (!IsSuperAdmin)
            {
                TreeUtil.RemoveNotValid(menuList, CurrentUser.Auths);
            }
            TreeUtil.SetParent(menuList);
            return(JsonNet(menuList, true));
        }
コード例 #14
0
        public TextTree ConvertToCMOrderedTreeMinerTree(ICommonTree tree)
        {
            ICommonTreeNode root = tree.Root;
            Int32           size = (Int32)TreeUtil.SizeOfTree(root);

            textTree = new TextTree(tree.SourceTag, size);

            lastIndex = -1;
            VisitChild(root);

            return(textTree);
        }
コード例 #15
0
    public void GetPathSumFromBottomByStack_Ok(int n)
    {
        var root = TreeUtil.BuildTreeLikeA(n);

        Assert.NotNull(root);
        Assert.Equal(1, root.Val);

        var sums       = TreePathSum.GetPathSumFromBottomByStack(root);
        var onePathSum = 2 * n + 1;

        Assert.Equal(4, sums.Count);
        Assert.Equal(onePathSum, sums[0]);
    }
コード例 #16
0
    public void SaveTree()
    {
        String    dataJSON    = Request["data"];
        String    removedJSON = Request["removed"];
        ArrayList tree        = (ArrayList)JSON.Decode(dataJSON);
        ArrayList removed     = (ArrayList)JSON.Decode(removedJSON);

        //生成节点列表
        ArrayList list = TreeUtil.ToList(tree, "-1", "children", "id", "pid");

        //生成id和num
        for (int i = 0, l = list.Count; i < l; i++)
        {
            Hashtable node = (Hashtable)list[i];
            node["num"] = i;
            if (node["id"] == null || node["id"].ToString() == "")
            {
                node["id"] = Guid.NewGuid().ToString();
            }
        }

        //生成pid
        list = TreeUtil.ToList(tree, "-1", "children", "id", "pid");

        // Add/Update/Move Node
        for (int i = 0, l = list.Count; i < l; i++)
        {
            Hashtable node = (Hashtable)list[i];

            String state = node["_state"] != null ? node["_state"].ToString() : "";
            if (state == "added")
            {
                node["createtime"] = DateTime.Now;
                new TestDB().InsertNode(node);
            }
            else
            {
                new TestDB().UpdateTreeNode(node);
            }
        }
        // Remove Node
        if (removed != null)
        {
            for (int j = 0, len = removed.Count; j < len; j++)
            {
                Hashtable removedNode = (Hashtable)removed[j];
                new TestDB().RemoveNode(removedNode);
            }
        }
    }
コード例 #17
0
ファイル: DBProject.cs プロジェクト: zxl881203/src
    public static string SavePart(Hashtable dataProject)
    {
        string prjId     = dataProject["UID"].ToString();
        string calendars = JSON.Encode(dataProject["Calendars"]);

        SaveCalendars(prjId, calendars, (GetMaxVersion(prjId) + 1).ToString());
        ArrayList list = TreeUtil.ToList((ArrayList)dataProject["Tasks"], "-1", "children", "UID", "ParentTaskUID");
        ArrayList c    = (ArrayList)dataProject["RemovedTasks"];

        if (c != null)
        {
            list.AddRange(c);
        }
        foreach (Hashtable hashtable in list)
        {
            string str3 = Convert.ToString(hashtable["_state"]);
            if (str3 != "")
            {
                hashtable["ProjectUID"] = prjId;
                string str4 = str3;
                if (str4 != null)
                {
                    if (!(str4 == "added"))
                    {
                        if (str4 == "modified")
                        {
                            goto Label_010C;
                        }
                        if (str4 == "removed")
                        {
                            goto Label_0122;
                        }
                    }
                    else
                    {
                        InsertTask(prjId, hashtable);
                    }
                }
            }
            continue;
Label_010C:
            DBUtil.Execute("delete from plus_task where PROJECTUID_ = @ProjectUID and UID_ = @UID ", hashtable);
            InsertTask(prjId, hashtable);
            continue;
Label_0122:
            DBUtil.Execute("delete from plus_task where PROJECTUID_ = @ProjectUID and UID_ = @UID ", hashtable);
        }
        return(prjId);
    }
コード例 #18
0
        protected override DQueryDom GetQueryDom()
        {
            var dom  = base.GetQueryDom();
            var prop = new JoinAlias(typeof(GoodsProperty));

            dom.From.AddJoin(JoinType.Inner, new DQDmoSource(prop), DQCondition.EQ(prop, "ID", dom.From.RootSource.Alias, "GoodsProperty_ID"));
            var catalog = dom.EJoin <GoodsPropertyCatalog>("GoodsPropertyCatalog_ID", JoinType.Left, prop);

            dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(prop, "Name"), "存货属性"));
            dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(catalog, "Name"), "存货属性分类"));

            TreeUtil.AddTreeCondition <GoodsPropertyCatalog>(dom, mQueryContainer, "存货属性分类", catalog);
            DomainUtil.AddDomainPermissionLimit(dom, typeof(GoodsProperty), prop);
            return(dom);
        }
コード例 #19
0
ファイル: CommonService.cs プロジェクト: bijinshu/grainmanage
        /// <summary>
        /// 获取授权url
        /// </summary>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public static List <string> GetUrls(params int[] roleIds)
        {
            var list  = new List <string>();
            var db    = new GrainManageDB();
            var auths = db.Select <string>(string.Format("select Auths from rm_role where Id in({0})", string.Join(",", roleIds)));

            if (auths != null && auths.Any())
            {
                var menus = GetMenus();
                foreach (var item in auths)
                {
                    TreeUtil.GetUrls(menus, item.Split(','), list);
                }
            }
            return(list);
        }
コード例 #20
0
ファイル: DBProject.cs プロジェクト: zxl881203/src
    public static string ImportXML(string progressVerId, Hashtable dataProject)
    {
        StringBuilder builder = new StringBuilder();
        string        str     = JSON.Encode(dataProject["Calendars"]);
        object        obj2    = dataProject["StartDate"];
        object        obj3    = dataProject["FinishDate"];

        builder.Append("\r\n            IF EXISTS(SELECT * FROM plus_BackProject WHERE ProjectGuid=@progressVerId)\r\n\t            UPDATE plus_BackProject SET Calendars=@calendars,Start=@start,Finish=@finish WHERE ProjectGuid=@progressVerId \r\n            ELSE\r\n\t            INSERT INTO plus_BackProject(ProjectGuid,Calendars,Start,Finish) \r\n\t            VALUES(@progressVerId,@calendars,@start,@finish)");
        builder.AppendLine();
        builder.Append("\r\n            DELETE FROM plus_task WHERE PROJECTUID_=@progressVerId");
        builder.AppendLine();
        SqlParameter[] commandParameters = new SqlParameter[] { new SqlParameter("@progressVerId", progressVerId), new SqlParameter("@calendars", str), new SqlParameter("@start", obj2), new SqlParameter("@finish", obj3) };
        SqlHelper.ExecuteNonQuery(CommandType.Text, builder.ToString(), commandParameters);
        ArrayList tasks = TreeUtil.ToList((ArrayList)dataProject["Tasks"], "-1", "children", "UID", "ParentTaskUID");

        InsertTasks(progressVerId, tasks);
        return(progressVerId);
    }
コード例 #21
0
        protected override void OnPreviewMouseWheel(MouseWheelEventArgs e)
        {
            base.OnPreviewMouseWheel(e);

            if (_partTextEditor == null)
            {
                return;
            }

            var textEditor = TreeUtil.FindVisualParent <TextEditor>(e.OriginalSource as DependencyObject);

            if (textEditor == null)
            {
                return;
            }

            var scrollViewer = TreeUtil.FindVisualChild <ScrollViewer>(textEditor);

            if (scrollViewer != null &&
                Keyboard.Modifiers == ModifierKeys.Control &&
                DoubleUtil.GreaterThan(scrollViewer.ScrollableWidth, 0))
            {
                if (e.Delta > 0)
                {
                    _partTextEditor.ScrollToHorizontalOffset(Math.Max(0, _partTextEditor.HorizontalOffset - e.Delta));
                }
                else
                {
                    _partTextEditor.ScrollToHorizontalOffset(_partTextEditor.HorizontalOffset - e.Delta);
                }

                return;
            }

            if (_partTextEditor.VerticalScrollBarVisibility == ScrollBarVisibility.Disabled ||
                scrollViewer != null && DoubleUtil.IsZero(scrollViewer.ScrollableHeight))
            {
                this.RaiseEvent(new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
                {
                    RoutedEvent = MouseWheelEvent,
                    Source      = this
                });
            }
        }
コード例 #22
0
ファイル: ExportProject.aspx.cs プロジェクト: zxl881203/src
    protected void Page_Load(object sender, System.EventArgs e)
    {
        string text = System.Convert.ToString(base.Request["id"]);

        if (!string.IsNullOrEmpty(text))
        {
            System.Collections.Hashtable hashtable = DBProject.LoadProject(text);
            System.Collections.ArrayList tree      = (System.Collections.ArrayList)hashtable["Tasks"];
            hashtable["Tasks"] = TreeUtil.ToList(tree, "-1", "children", "UID", "ParentTaskUID");
            string text2 = System.IO.Path.GetFileNameWithoutExtension(System.Convert.ToString(hashtable["Name"])) + "_" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
            string text3 = HttpContext.Current.Server.MapPath("~/UploadFiles/Gantt/");
            if (!System.IO.Directory.Exists(text3))
            {
                System.IO.Directory.CreateDirectory(text3);
            }
            string text4 = text3 + text2;
            PlusProject.Write(text4, hashtable);
            base.Response.Clear();
            System.IO.FileStream fileStream = null;
            try
            {
                fileStream = new System.IO.FileStream(text4, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
                int    num    = (int)fileStream.Length;
                byte[] buffer = new byte[num];
                int    count  = fileStream.Read(buffer, 0, num);
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(text2));
                HttpContext.Current.Response.OutputStream.Write(buffer, 0, count);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();
            }
            finally
            {
                fileStream.Close();
            }
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(text4);
            fileInfo.Delete();
            base.Response.End();
            return;
        }
        base.Response.Write("请传入正确的项目UID");
    }
コード例 #23
0
ファイル: DBProject.cs プロジェクト: zxl881203/src
    public static Hashtable LoadProject(string progressVerId)
    {
        ArrayList startFinish = GetStartFinish(progressVerId);

        if (startFinish.Count == 0)
        {
            throw new Exception("没有找到项目, UID:" + progressVerId);
        }
        Hashtable hashtable  = (Hashtable)startFinish[0];
        Hashtable hashtable2 = new Hashtable();

        hashtable2["UID"]         = progressVerId;
        hashtable2["Name"]        = hashtable["NAME_"];
        hashtable2["LastSaved"]   = hashtable["LASTSAVED_"];
        hashtable2["CalendarUID"] = hashtable["CALENDARUID_"];
        hashtable2["StartDate"]   = hashtable["STARTDATE_"];
        hashtable2["FinishDate"]  = hashtable["FINISHDATE_"];
        DataTable startFinishDate = GetStartFinishDate(progressVerId);

        if ((startFinishDate != null) && (startFinishDate.Rows.Count > 0))
        {
            hashtable2["StartDate"]  = startFinishDate.Rows[0]["Start"];
            hashtable2["FinishDate"] = startFinishDate.Rows[0]["Finish"];
        }
        if ((hashtable2["FinishDate"] != null) && (Convert.ToDateTime(hashtable2["FinishDate"].ToString()) <= Convert.ToDateTime(hashtable2["StartDate"].ToString())))
        {
            hashtable2["FinishDate"] = Convert.ToDateTime(hashtable2["StartDate"]).AddMinutes(1.0);
        }
        hashtable2["Calendars"] = (ArrayList)JSON.Decode(hashtable["CALENDARS_"].ToString());
        string calendars = GetCalendars(progressVerId);

        if (!string.IsNullOrEmpty(calendars))
        {
            hashtable2["Calendars"] = (ArrayList)JSON.Decode(calendars);
        }
        ArrayList list2 = TreeUtil.ToTree(SelectTasks(progressVerId), "children", "UID", "ParentTaskUID");

        hashtable2["Tasks"]     = list2;
        hashtable2["Resources"] = new ArrayList();
        return(hashtable2);
    }
コード例 #24
0
        private static List <TreePatternMatches> CanonicalizeFrequentTrees(List <TreePatternMatches> treeCollection)
        {
            var minimizedTreePatternMatches = new List <TreePatternMatches>();

            foreach (var treeMatches in treeCollection)
            {
                var jsonTree           = JsonNodeOperations.ConvertToJsonNode(treeMatches.Pattern.Root);
                var origRepresentation = TreeUtil.StringRepresentation((ICommonTree)jsonTree);
                //Debug.WriteLine("Looking at tree:\n" + origRepresentation);

                var minimizedTree     = JsonNodeOperations.TrimJsonNodeTree(jsonTree);
                var newRepresentation = TreeUtil.StringRepresentation((ICommonTree)minimizedTree);

                if (origRepresentation != newRepresentation)
                {
                    //Debug.WriteLine("minimized tree to:");
                    //Debug.WriteLine(newRepresentation);
                }

                bool foundMatchingTree = false;
                foreach (var treeMatches2 in minimizedTreePatternMatches)
                {
                    if (TreeUtil.IsEqual(minimizedTree, treeMatches2.Pattern))
                    {
                        //Debug.WriteLine($"merging with tree:\n{TreeUtil.StringRepresentation(treeMatches2.Pattern)}");
                        treeMatches.MatchLocations.UnionWith(treeMatches.MatchLocations);
                        foundMatchingTree = true;
                        // it can only be merged with one tree, so skip out of the loop
                        break;
                    }
                }

                if (!foundMatchingTree)
                {
                    //Debug.WriteLine("did not merge with any tree");
                    minimizedTreePatternMatches.Add(new TreePatternMatches(minimizedTree, treeMatches.MatchLocations));
                }
            }
            return(minimizedTreePatternMatches);
        }
コード例 #25
0
ファイル: DBProject.cs プロジェクト: zxl881203/src
    public static void ConvertXML(string prjId, Hashtable dataProject)
    {
        int           num2    = GetMaxVersion(prjId) + 1;
        StringBuilder builder = new StringBuilder();

        builder.Append("\r\n            INSERT INTO plus_BackTask (UID_,ID_ ,NAME_ ,START_ ,FINISH_ ,DURATION_ ,WORK_ ,PERCENTCOMPLETE_ ,WEIGHT_ ,CONSTRAINTTYPE_ ,\r\n                CONSTRAINTDATE_ ,MILESTONE_ ,SUMMARY_ ,CRITICAL_ ,PRIORITY_ ,NOTES_ ,DEPARTMENT_ ,PRINCIPAL_ ,PREDECESSORLINK_ ,FIXEDDATE_ ,\r\n                PARENTTASKUID_ ,PROJECTUID_ ,ACTUALSTART_ ,ACTUALFINISH_ ,ACTUALDURATION_ ,ASSIGNMENTS_ ,WBS_ ,CRITICAL2_ ,Version)\r\n            SELECT UID_ ,ID_ ,NAME_ ,START_ ,FINISH_ ,DURATION_ ,WORK_ ,PERCENTCOMPLETE_ , WEIGHT_ ,CONSTRAINTTYPE_ ,CONSTRAINTDATE_ ,\r\n                MILESTONE_ ,SUMMARY_ ,CRITICAL_ ,PRIORITY_ ,NOTES_ ,DEPARTMENT_ ,PRINCIPAL_ , PREDECESSORLINK_ ,FIXEDDATE_ ,PARENTTASKUID_ ,\r\n                PROJECTUID_ ,ACTUALSTART_ ,ACTUALFINISH_ ,ACTUALDURATION_ ,ASSIGNMENTS_ ,WBS_ ,CRITICAL2_ ,@nextVersion FROM plus_task \r\n            WHERE PROJECTUID_=@prjId");
        builder.AppendLine();
        builder.Append("DELETE FROM plus_task WHERE PROJECTUID_ =@prjId");
        builder.AppendLine();
        string str  = JSON.Encode(dataProject["Calendars"]);
        object obj2 = dataProject["StartDate"];
        object obj3 = dataProject["FinishDate"];

        builder.Append("\r\n            --更新项目时间\r\n          --  UPDATE PT_PrjInfo SET StartDate=@start, EndDate=@finish WHERE PrjGuid=@prjId\r\n            DECLARE @currentBackProject INT  --项目的备份信息\r\n            SELECT @currentBackProject=COUNT(*) FROM  plus_BackProject WHERE ProjectGuid=@prjId AND Version=@nextVersion\r\n            IF EXISTS(SELECT PROJECTUID_ FROM plus_BackTask WHERE PROJECTUID_=@prjId AND Version=@nextVersion) --有数据备份\r\n                BEGIN\r\n                    IF(@currentBackProject=0) \r\n                        INSERT INTO plus_BackProject(ProjectGuid,Calendars,Version,Start,Finish) \r\n                            SELECT UID_,CALENDARS_,@nextVersion,STARTDATE_,FINISHDATE_ FROM plus_project WHERE UID_=@prjId\r\n                     --添加xml中的Calendars信息\r\n                    INSERT INTO plus_BackProject(ProjectGuid,Calendars,Version,Start,Finish)  VALUES( @prjId,@XmlCalendars,@nextVersion+1,@start,@finish)\r\n                END \r\n            ELSE --无数据备份\r\n                BEGIN\r\n                    IF(@currentBackProject>0) \r\n                        BEGIN\r\n                            DELETE FROM plus_BackProject WHERE ProjectGuid=@prjId AND Version=@nextVersion\r\n                            INSERT INTO plus_BackProject(ProjectGuid,Calendars,Version,Start,Finish)  VALUES( @prjId,@XmlCalendars,@nextVersion,@start,@finish)\r\n                        END\r\n                    ELSE\r\n                        INSERT INTO plus_BackProject(ProjectGuid,Calendars,Version,Start,Finish)  VALUES( @prjId,@XmlCalendars,@nextVersion,@start,@finish)\r\n                END");
        builder.AppendLine();
        string calendars = GetCalendars(prjId, num2.ToString());

        SqlParameter[] commandParameters = new SqlParameter[] { new SqlParameter("@nextVersion", num2), new SqlParameter("@prjId", prjId), new SqlParameter("@calendars", calendars), new SqlParameter("@start", obj2), new SqlParameter("@finish", obj3), new SqlParameter("@XmlCalendars", str) };
        SqlHelper.ExecuteNonQuery(CommandType.Text, builder.ToString(), commandParameters);
        ArrayList tasks = TreeUtil.ToList((ArrayList)dataProject["Tasks"], "-1", "children", "UID", "ParentTaskUID");

        InsertTasks(prjId, tasks);
    }
コード例 #26
0
        protected override DQueryDom GetQueryDom()
        {
            var dom           = base.GetQueryDom();
            var goodsProperty = dom.EJoin <GoodsProperty>();

            dom.Columns.Add(DQSelectColumn.Field("ID"));
            dom.Columns.Add(DQSelectColumn.Field("Name"));
            dom.Columns.Add(DQSelectColumn.Field("Spec"));
            dom.Columns.Add(DQSelectColumn.Field("GoodsProperty_Name"));
            dom.Columns.Add(DQSelectColumn.Field("GoodsPropertyCatalog_Name", goodsProperty));
            dom.Columns.Add(DQSelectColumn.Field("SecondUnit"));
            dom.Columns.Add(DQSelectColumn.Field("MainUnit"));
            dom.Columns.Add(DQSelectColumn.Field("MainUnitRatio"));
            dom.Columns.Add(DQSelectColumn.Field("SecondUnitRatio"));
            dom.Columns.Add(DQSelectColumn.Field("UnitConvertDirection"));
            dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet <decimal?>("null"), "主数量"));
            dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet <decimal?>("null"), "辅数量"));

            TreeUtil.AddTreeCondition <GoodsPropertyCatalog>(dom, mQueryContainer, "存货属性分类", null, goodsProperty);

            dom.Where.Conditions.Add(DQCondition.EQ("Stopped", false));
            return(dom);
        }
コード例 #27
0
ファイル: DBProject.cs プロジェクト: zxl881203/src
    public static Hashtable LoadProject(string projectUID, string version)
    {
        ArrayList list = DBUtil.Select("select * from plus_project where UID_ ='" + projectUID + "'");

        if (list.Count == 0)
        {
            throw new Exception("没有找到项目, UID:" + projectUID);
        }
        Hashtable hashtable  = (Hashtable)list[0];
        Hashtable hashtable2 = new Hashtable();

        hashtable2["UID"]         = projectUID;
        hashtable2["Name"]        = hashtable["NAME_"];
        hashtable2["LastSaved"]   = hashtable["LASTSAVED_"];
        hashtable2["CalendarUID"] = hashtable["CALENDARUID_"];
        hashtable2["StartDate"]   = hashtable["STARTDATE_"];
        hashtable2["FinishDate"]  = hashtable["FINISHDATE_"];
        DataTable startFinishDate = GetStartFinishDate(projectUID, version);

        if ((startFinishDate != null) && (startFinishDate.Rows.Count > 0))
        {
            hashtable2["StartDate"]  = startFinishDate.Rows[0]["Start"];
            hashtable2["FinishDate"] = startFinishDate.Rows[0]["Finish"];
        }
        hashtable2["Calendars"] = (ArrayList)JSON.Decode(hashtable["CALENDARS_"].ToString());
        string calendars = GetCalendars(projectUID, version);

        if (!string.IsNullOrEmpty(calendars))
        {
            hashtable2["Calendars"] = (ArrayList)JSON.Decode(calendars);
        }
        ArrayList list2 = TreeUtil.ToTree(SelectTasks(projectUID, version), "children", "UID", "ParentTaskUID");

        hashtable2["Tasks"]     = list2;
        hashtable2["Resources"] = new ArrayList();
        return(hashtable2);
    }
コード例 #28
0
ファイル: ExportProject.aspx.cs プロジェクト: zxl881203/src
    protected void Page_Load(object sender, System.EventArgs e)
    {
        string text    = System.Convert.ToString(base.Request["id"]);
        string version = base.Request["version"];

        if (!string.IsNullOrEmpty(text))
        {
            System.Collections.Hashtable hashtable = DBProject.LoadProject(text, version);
            System.Collections.ArrayList tree      = (System.Collections.ArrayList)hashtable["Tasks"];
            hashtable["Tasks"] = TreeUtil.ToList(tree, "-1", "children", "UID", "ParentTaskUID");
            string text2 = System.IO.Path.GetFileNameWithoutExtension(System.Convert.ToString(hashtable["Name"])) + "_" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".xml";
            string text3 = HttpContext.Current.Server.MapPath("~/UploadFiles/Gantt/" + text2);
            PlusProject.Write(text3, hashtable);
            base.Response.Clear();
            base.Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(text2, System.Text.Encoding.UTF8));
            base.Response.WriteFile(text3);
            base.Response.Flush();
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(text3);
            fileInfo.Delete();
            base.Response.End();
            return;
        }
        base.Response.Write("请传入正确的项目UID");
    }
コード例 #29
0
        private void DoubleClickDemo(MouseButtonEventArgs e)
        {
            var listBoxItem = TreeUtil.FindVisualParent <ListBoxItem>(e.OriginalSource as DependencyObject);

            if (listBoxItem == null)
            {
                return;
            }

            var model = listBoxItem.DataContext as DisplayDemoViewModel;

            if (model == null)
            {
                return;
            }

            if (!_regionManager.Regions.ContainsRegionWithName(RegionNames.Content))
            {
                return;
            }

            var region   = _regionManager.Regions[RegionNames.Content];
            var viewType = typeof(DemoControl);

            var demoView = region.Views.FirstOrDefault(v => v.GetType() == viewType);

            if (demoView != null)
            {
                _eventAggregator.GetEvent <OpenDemoTypeEvent>().Publish(model.Type);
                _eventAggregator.GetEvent <NavigationContentEvent>().Publish(new NavigationContentPayload {
                    IsChild = true, ViewType = viewType, ViewName = Service.Models.ResourcesMap.DemoTypeNameDic[model.Type]
                });

                region.Activate(demoView);
            }
        }
コード例 #30
0
 public int CalculateHeight()
 {
     return(TreeUtil.CalculatetHeight(this));
 }