Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        /// <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);
        }