/// <summary> /// Restore a CswNbtViewBase that was saved as a string /// </summary> /// <param name="ViewAsString">View saved as a string</param> public CswNbtView restoreView(string ViewAsString) { CswNbtView Ret = null; if (ViewAsString != string.Empty) { CswNbtView RelationshipView = new CswNbtView(_CswNbtResources); RelationshipView.LoadXml(ViewAsString); Ret = RelationshipView; } return(Ret); }
protected void CswViewTree_DataBinding(object sender, EventArgs e) { try { CswTimer DataBindTimer = new CswTimer(); _CswNbtResources.logTimerResult("CswViewListTree.DataBind() started", DataBindTimer.ElapsedDurationInSecondsAsString); EnsureChildControls(); // don't bother databinding on postback -- this prevents losing the currently selected node if (TreeView.SelectedNode == null) { // BZ 8686 if (Page.Session[SessionCachedXmlName] != null && Page.Session[SessionCachedXmlName].ToString() != string.Empty) { TreeView.LoadXml(Page.Session[SessionCachedXmlName].ToString()); } else { XmlDocument XmlDoc = new XmlDocument(); XmlNode DocRoot = XmlDoc.CreateElement("Tree"); XmlDoc.AppendChild(DocRoot); // Views Dictionary <CswNbtViewId, CswNbtView> Views = _CswNbtResources.ViewSelect.getVisibleViews("lower(NVL(v.category, v.viewname)), lower(v.viewname)", false); foreach (CswNbtView View in Views.Values) { // BZ 10121 // This is a performance hit, but since this view list is cached, it's ok CswNbtView CurrentView = new CswNbtView(_CswNbtResources); CurrentView.LoadXml(View.ToXml()); CurrentView.ViewId = View.ViewId; // if( CurrentView.IsFullyEnabled() ) -- Case 20452: getVisibleViews() does this already XmlNode CategoryNode = _getCategoryNode(DocRoot, View.Category); bool ThisSearchable = View.ToXml().ToString().Contains("<Filter"); CategoryNode.AppendChild(_makeTreeViewXmlNode(XmlDoc, CurrentView.ViewId.ToString(), ViewType.View, CurrentView.ViewName, CurrentView.IconFileName, true, ThisSearchable)); } // Actions foreach (CswNbtAction Action in _CswNbtResources.Actions) { if (Action.ShowInList && (_CswNbtResources.ConfigVbls.getConfigVariableValue("loc_use_images") != "0") && _CswNbtResources.Permit.can(Action.Name)) { XmlNode CategoryNode = _getCategoryNode(DocRoot, Action.Category); CategoryNode.AppendChild(_makeTreeViewXmlNode(XmlDoc, Action.ActionId.ToString(), ViewType.Action, Action.Name.ToString().Replace('_', ' '), CswNbtMetaDataObjectClass.IconPrefix16 + "wizard.png", true, false)); } } // Reports CswNbtView ReportView = new CswNbtView(_CswNbtResources); ReportView.ViewName = "CswViewTree.DataBinding.ReportView"; CswNbtMetaDataObjectClass ReportMetaDataObjectClass = _CswNbtResources.MetaData.getObjectClass(CswEnumNbtObjectClass.ReportClass); CswNbtViewRelationship ReportRelationship = ReportView.AddViewRelationship(ReportMetaDataObjectClass, true); ICswNbtTree ReportTree = _CswNbtResources.Trees.getTreeFromView(_CswNbtResources.CurrentNbtUser, ReportView, true, false, false); for (int i = 0; i < ReportTree.getChildNodeCount(); i++) { ReportTree.goToNthChild(i); CswNbtObjClassReport ReportNode = (CswNbtObjClassReport)ReportTree.getNodeForCurrentPosition(); XmlNode CategoryNode = _getCategoryNode(DocRoot, ReportNode.Category.Text); CategoryNode.AppendChild(_makeTreeViewXmlNode(XmlDoc, ReportNode.NodeId.PrimaryKey.ToString(), ViewType.Report, ReportNode.ReportName.Text, "Images/view/report.gif", true, false)); ReportTree.goToParentNode(); } TreeView.LoadXml(XmlDoc.InnerXml); Page.Session.Add(SessionCachedXmlName, XmlDoc.InnerXml); } // if-else( Page.Session[SessionCachedXmlName] != null && Page.Session[SessionCachedXmlName].ToString() != string.Empty ) } // if(TreeView.SelectedNode == null) _CswNbtResources.logTimerResult("CswViewListTree.DataBind() finished", DataBindTimer.ElapsedDurationInSecondsAsString); } catch (Exception ex) { HandleError(ex); } }
protected void _getFilterProps(CswNbtViewEditorData Return) { string viewStr = CurrentView.ToString(); CswNbtView TempView = new CswNbtView(_CswNbtResources); TempView.LoadXml(viewStr); HashSet <string> seenProps = new HashSet <string>(); CswNbtViewRelationship Relationship = (CswNbtViewRelationship)TempView.FindViewNodeByArbitraryId(Request.Relationship.ArbitraryId); if (null != Relationship) { foreach (CswNbtViewProperty viewProp in Relationship.Properties.Where(p => CswEnumNbtFieldType.Button != p.FieldType)) { seenProps.Add(viewProp.TextLabel); Return.Step4.Properties.Add(viewProp); } if (Relationship.SecondType.Equals(CswEnumNbtViewRelatedIdType.PropertySetId)) { CswNbtMetaDataPropertySet PropSet = _CswNbtResources.MetaData.getPropertySet(Relationship.SecondId); if (null != PropSet) { foreach (CswNbtMetaDataObjectClass ObjClass in PropSet.getObjectClasses()) { IEnumerable <CswNbtViewProperty> props = _getProps(ObjClass, TempView, seenProps, Relationship).Where(p => CswEnumNbtFieldType.Button != p.FieldType);; foreach (CswNbtViewProperty vp in props) { Return.Step4.Properties.Add(vp); } } } } else if (Relationship.SecondType.Equals(CswEnumNbtViewRelatedIdType.ObjectClassId)) { CswNbtMetaDataObjectClass ObjClass = _CswNbtResources.MetaData.getObjectClass(Relationship.SecondId); if (null != ObjClass) { IEnumerable <CswNbtViewProperty> props = _getProps(ObjClass, TempView, seenProps, Relationship).Where(p => CswEnumNbtFieldType.Button != p.FieldType);; foreach (CswNbtViewProperty vp in props) { Return.Step4.Properties.Add(vp); } } } else if (Relationship.SecondType.Equals(CswEnumNbtViewRelatedIdType.NodeTypeId)) { CswNbtMetaDataNodeType NodeType = _CswNbtResources.MetaData.getNodeType(Relationship.SecondId); if (null != NodeType) { IEnumerable <CswNbtViewProperty> props = _getProps(NodeType, TempView, seenProps, Relationship).Where(p => CswEnumNbtFieldType.Button != p.FieldType); foreach (CswNbtViewProperty vp in props) { Return.Step4.Properties.Add(vp); } } } } Collection <CswNbtViewProperty> sortedProps = new Collection <CswNbtViewProperty>(); foreach (CswNbtViewProperty prop in Return.Step4.Properties.OrderBy(vp => vp.TextLabel)) { sortedProps.Add(prop); } Return.Step4.Properties = sortedProps; Return.Step4.ViewJson = TempView.ToJson().ToString(); }
/// <summary> /// Get a Collection of all views visible to the current user, and the DataTable /// </summary> public Dictionary <CswNbtViewId, CswNbtView> getVisibleViews(string OrderBy, ICswNbtUser User, bool IncludeEmptyViews, bool MobileOnly, bool SearchableOnly, CswEnumNbtViewRenderingMode ViewRenderingMode, out DataTable ViewsTable, CswCommaDelimitedString LimitToViews = null, bool ForEdit = false) { CswTimer VisibleViewsTimer = new CswTimer(); ViewsTable = null; Dictionary <CswNbtViewId, CswNbtView> Ret = new Dictionary <CswNbtViewId, CswNbtView>(); if (null != User && CswTools.IsPrimaryKey(User.UserId) && CswTools.IsPrimaryKey(User.RoleId)) { if (null == LimitToViews || LimitToViews.Count > 0) { CswStaticSelect ViewsSelect = _CswNbtResources.makeCswStaticSelect("getVisibleViews_select", "getVisibleViewInfo"); ViewsSelect.S4Parameters.Add("getroleid", new CswStaticParam("getroleid", User.RoleId.PrimaryKey.ToString())); ViewsSelect.S4Parameters.Add("getuserid", new CswStaticParam("getuserid", User.UserId.PrimaryKey.ToString())); string AddClause = " "; if (MobileOnly) { AddClause += "and formobile = '" + CswConvert.ToDbVal(true) + "'"; } if (ViewRenderingMode != CswEnumNbtViewRenderingMode.Any) { AddClause += "and viewmode = '" + ViewRenderingMode.ToString() + "'"; } if (null != LimitToViews) { AddClause += "and nodeviewid in (" + LimitToViews.ToString() + ")"; } ViewsSelect.S4Parameters.Add("addclause", new CswStaticParam("addclause", AddClause, true)); if (OrderBy != string.Empty) { ViewsSelect.S4Parameters.Add("orderbyclause", new CswStaticParam("orderbyclause", OrderBy)); } else { ViewsSelect.S4Parameters.Add("orderbyclause", new CswStaticParam("orderbyclause", "lower(v.viewname)")); } ViewsTable = ViewsSelect.getTable(); _CswNbtResources.logTimerResult("CswNbtView.getVisibleViews() data fetched", VisibleViewsTimer.ElapsedDurationInSecondsAsString); Collection <DataRow> RowsToRemove = new Collection <DataRow>(); foreach (DataRow Row in ViewsTable.Rows) { CswNbtView ThisView = new CswNbtView(_CswNbtResources); ThisView.LoadXml(Row["viewxml"].ToString()); if (isVisible(ThisView, User, IncludeEmptyViews, SearchableOnly, ForEdit)) { Ret.Add(ThisView.ViewId, ThisView); } else { RowsToRemove.Add(Row); } } // foreach( DataRow Row in ViewsTable.Rows ) foreach (DataRow Row in RowsToRemove) { ViewsTable.Rows.Remove(Row); } } // if( null == LimitToViews || LimitToViews.Count > 0 ) } // if( null != User && CswTools.IsPrimaryKey( User.UserId ) && CswTools.IsPrimaryKey( User.RoleId ) ) _CswNbtResources.logTimerResult("CswNbtView.getVisibleViews() finished", VisibleViewsTimer.ElapsedDurationInSecondsAsString); return(Ret); }