} // 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); //} } }
} // _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()