示例#1
0
        } // runTree()

        public static void runTree(ICswResources CswResources, Contract.Response Response, Contract.Request Request)
        {
            CswNbtResources Resources = (CswNbtResources)CswResources;

            if (null != Resources)
            {
                CswNbtView View = null;
                if (null != Request.ViewId && Request.ViewId.isSet())
                {
                    View = Resources.ViewSelect.restoreView(Request.ViewId);
                }
                else if (null != Request.SessionViewId && Request.SessionViewId.isSet())
                {
                    View = Resources.ViewSelect.getSessionView(Request.SessionViewId);
                }
                //if( null != View )
                //{
                CswNbtSdTrees SdTrees = new CswNbtSdTrees(Resources, View);
                SdTrees.runTree(Response.Data, Request);
                //}
            }
        }
示例#2
0
        } // _treeNodeJObject()

        public void runTree(Contract.Response.ResponseData ResponseData, Contract.Request Request, Int32 PerLevelNodeLimit = Int32.MinValue, Int32 TotalNodeLimit = Int32.MinValue)
        {
            ResponseData.Tree = ResponseData.Tree ?? new Collection <CswExtTree.TreeNode>();
            ICswNbtTree Tree     = null;
            string      RootName = string.Empty;

            if (null != _View)
            {
                Tree = _CswNbtResources.Trees.getTreeFromView(_View, Request.RequireViewPermissions, false, false, PerLevelNodeLimit: PerLevelNodeLimit);
                _View.SaveToCache(Request.IncludeInQuickLaunch);
                RootName = _View.ViewName;
            }

            CswPrimaryKey IncludeNodeId     = null;
            CswNbtNodeKey SelectKey         = null;
            Int32         IncludeNodeTypeId = Int32.MinValue;

            if (null != Request.IncludeNodeKey)
            {
                IncludeNodeId     = Request.IncludeNodeKey.NodeId;
                IncludeNodeTypeId = Request.IncludeNodeKey.NodeTypeId;
                if (null != Tree)
                {
                    Tree.makeNodeCurrent(Request.IncludeNodeKey);
                    if (Tree.isCurrentNodeDefined())
                    {
                        SelectKey = Request.IncludeNodeKey;
                    }
                }
            }
            else if (CswTools.IsPrimaryKey(Request.IncludeNodeId))
            {
                IncludeNodeId = Request.IncludeNodeId;
                CswNbtNode IncludeNode = _CswNbtResources.Nodes[IncludeNodeId];
                if (null != IncludeNode)
                {
                    IncludeNodeTypeId = IncludeNode.NodeTypeId;
                }
                if (null != Tree)
                {
                    SelectKey = Tree.getNodeKeyByNodeId(IncludeNodeId);
                }
            }

            if ((CswTools.IsPrimaryKey(IncludeNodeId) && IncludeNodeTypeId != Int32.MinValue) &&
                (Tree == null ||
                 (Request.IncludeNodeRequired && SelectKey == null)))
            {
                CswNbtMetaDataNodeType IncludeNodeType = _CswNbtResources.MetaData.getNodeType(IncludeNodeTypeId);
                if (null != IncludeNodeType)
                {
                    _View          = IncludeNodeType.CreateDefaultView(false);
                    _View.ViewName = IncludeNodeType.NodeTypeName;
                    _View.Root.ChildRelationships[0].NodeIdsToFilterIn.Add(IncludeNodeId);
                    _View.SaveToCache(Request.IncludeInQuickLaunch);   // case 22713
                    RootName = _View.ViewName;

                    Tree = _CswNbtResources.Trees.getTreeFromView(_View, false, false, false);
                }
            }

            bool HasResults = false;

            if (null != Tree)
            {
                Tree.goToRoot();
                HasResults = (Tree.getChildNodeCount() > 0);
                //ReturnObj["result"] = HasResults.ToString().ToLower();
                //ReturnObj["types"] = getTypes();
                ResponseData.PageSize = _CswNbtResources.CurrentNbtUser.PageSize;

                ResponseData.SelectedNodeKey = null;
                if (HasResults)
                {
                    // Determine the default selected node:
                    // If the requested node to select is on the tree, return it.
                    // If the requested node to select is not on the tree, return the first child of the root.
                    if (SelectKey != null)
                    {
                        Tree.makeNodeCurrent(SelectKey);
                        if (Tree.isCurrentNodeDefined())
                        {
                            ResponseData.SelectedNodeKey = SelectKey;
                        }
                    }
                    if (ResponseData.SelectedNodeKey == null)
                    {
                        switch (Request.DefaultSelect)
                        {
                        case "none":
                            break;

                        case "root":
                            break;

                        case "firstchild":
                            Tree.goToRoot();
                            CswNbtNodeKey CurrentKey = Tree.getNodeKeyForCurrentPosition();
                            while (CurrentKey != null &&
                                   CurrentKey.NodeSpecies != CswEnumNbtNodeSpecies.Plain &&
                                   Tree.getChildNodeCount() > 0)
                            {
                                Tree.goToNthChild(0);
                                CurrentKey = Tree.getNodeKeyForCurrentPosition();
                            }
                            if (CurrentKey != null && CurrentKey.NodeSpecies == CswEnumNbtNodeSpecies.Plain)
                            {
                                ResponseData.SelectedNodeKey = CurrentKey;
                            }
                            break;
                        } // switch( DefaultSelect )
                    }     // if( ReturnObj["selectid"] == null )
                }         // if( HasResults )
                else
                {
                    Request.DefaultSelect = "root";
                }

                Tree.goToRoot();
            }
            //Build the Response:

            ResponseData.Name = RootName;

            //#1: the Root node
            CswExtTree.TreeNode RootNode = new CswExtTree.TreeNode();
            ResponseData.Tree.Add(RootNode);

            RootNode.Name     = RootName;
            RootNode.IsRoot   = true;
            RootNode.Expanded = true;
            RootNode.Path     = "|root";
            RootNode.Id       = "root";
            RootNode.Icon     = "Images/view/viewtree.gif";

            //#2: the columns for the Tree Grid
            ResponseData.Columns.Add(new CswExtJsGridColumn
            {
                dataIndex    = new CswExtJsGridDataIndex(_View.ViewName, "text"),
                xtype        = CswEnumExtJsXType.treecolumn,
                MenuDisabled = true,
                width        = 269,
                header       = "Tree",
                resizable    = false,
            });
            ResponseData.Columns.Add(new CswExtJsGridColumn
            {
                dataIndex    = new CswExtJsGridDataIndex(_View.ViewName, "nodetypeid"),
                header       = "NodeTypeId",
                hidden       = true,
                resizable    = false,
                width        = 0,
                xtype        = CswEnumExtJsXType.gridcolumn,
                MenuDisabled = false
            });
            ResponseData.Columns.Add(new CswExtJsGridColumn
            {
                dataIndex    = new CswExtJsGridDataIndex(_View.ViewName, "objectclassid"),
                header       = "ObjectClassId",
                hidden       = true,
                resizable    = false,
                width        = 0,
                xtype        = CswEnumExtJsXType.gridcolumn,
                MenuDisabled = false
            });
            ResponseData.Columns.Add(new CswExtJsGridColumn
            {
                dataIndex    = new CswExtJsGridDataIndex(_View.ViewName, "nodeid"),
                header       = "NodeId",
                hidden       = true,
                resizable    = false,
                width        = 0,
                xtype        = CswEnumExtJsXType.gridcolumn,
                MenuDisabled = false
            });
            ResponseData.Columns.Add(new CswExtJsGridColumn
            {
                dataIndex    = new CswExtJsGridDataIndex(_View.ViewName, "disabled"),
                header       = "Disabled",
                hidden       = true,
                resizable    = false,
                width        = 0,
                xtype        = CswEnumExtJsXType.booleancolumn,
                MenuDisabled = false
            });


            //#3: The fields to map the columns to the data store
            ResponseData.Fields.Add(new CswExtJsGridField {
                name = "text", type = "string"
            });
            ResponseData.Fields.Add(new CswExtJsGridField {
                name = "nodetypeid", type = "string"
            });
            ResponseData.Fields.Add(new CswExtJsGridField {
                name = "objectclassid", type = "string"
            });
            ResponseData.Fields.Add(new CswExtJsGridField {
                name = "nodeid", type = "string"
            });
            ResponseData.Fields.Add(new CswExtJsGridField {
                name = "disabled", type = "bool"
            });

            //#4: View Properties are columns now too
            Collection <string> UniqueColumnNames = new Collection <string>()
            {
                "text", "nodetypeid", "objectclassid", "nodeid", "disabled"
            };

            CswNbtViewRoot.forEachProperty AddProp = (ViewProperty) =>
            {
                string PropName = ViewProperty.Name.ToLower().Trim();
                bool   HideProp = (null != Request.PropsToShow && false == Request.PropsToShow.Contains(PropName));
                if (false == UniqueColumnNames.Contains(PropName))
                {
                    UniqueColumnNames.Add(PropName);

                    CswExtJsGridColumn Col = new CswExtJsGridColumn
                    {
                        dataIndex    = new CswExtJsGridDataIndex(_View.ViewName, PropName),
                        header       = ViewProperty.Name,
                        hidden       = HideProp,
                        resizable    = false,
                        width        = ViewProperty.Width * 7,
                        xtype        = CswEnumExtJsXType.gridcolumn,
                        MenuDisabled = false
                    };
                    CswExtJsGridField Fld = new CswExtJsGridField {
                        name = PropName, type = "string"
                    };
                    Fld.dataIndex = Col.dataIndex;

                    ResponseData.Columns.Add(Col);
                    ResponseData.Fields.Add(Fld);
                }
            };
            _View.Root.eachRelationship(relationshipCallBack: null, propertyCallBack: AddProp);


            //#5: the tree
            RootNode.Children = new Collection <CswExtTree.TreeNode>();
            if (HasResults)
            {
                Tree.goToRoot();
                int count = 0;
                _runTreeNodesRecursive(Tree, RootNode.Children, RootNode, Request, TotalNodeLimit, ref count);

                if (Int32.MinValue != TotalNodeLimit && count >= TotalNodeLimit && RootNode.Children[0].Name != "Results Truncated")
                {
                    CswExtTree.TreeNode TruncatedTreeNode = _getTreeNode(Tree, RootNode, null);
                    TruncatedTreeNode.Name   = "Results Truncated";
                    TruncatedTreeNode.IsLeaf = true;
                    TruncatedTreeNode.Icon   = "Images/icons/truncated.gif";
                    TruncatedTreeNode.Id     = TruncatedTreeNode.Id + "_truncated";
                    TruncatedTreeNode.NodeId = "";
                    RootNode.Children.Insert(0, TruncatedTreeNode);
                }
            }
            else
            {
                CswExtTree.TreeNode EmptyNode = new CswExtTree.TreeNode();
                EmptyNode.Name     = "No Results";
                EmptyNode.IsLeaf   = true;
                EmptyNode.Selected = true;
                EmptyNode.Id       = "empty";
                EmptyNode.ParentId = RootNode.Id;
                EmptyNode.Path     = RootNode.Path + "|empty";
                RootNode.Children.Add(EmptyNode);
            }
            //}
        } // runTree()