Пример #1
0
        public SerializedHierarchy(Hierarchy h)
        {
            UnfetchedMembersVisibile = h.UnfetchedMembersVisible;
            UniqueName = h.UniqueName;
            if (h.DisplayName != h.CubeHierarchy.DisplayName)
            {
                DisplayName = h.DisplayName;
            }

            if (h.TotalCaption != RadarUtils.GetResStr("rsTotalCaption"))
            {
                TotalCaption = h.TotalCaption;
            }

            SortType                   = h.SortType;
            FormatString               = h.FormatString;
            TotalAppearance            = h.TotalAppearance;
            AllowResort                = h.AllowResort;
            AllowFilter                = h.AllowFilter;
            AllowPopupOnLevelCaptions  = h.AllowPopupOnLevelCaptions;
            AllowHierarchyEditor       = h.AllowHierarchyEditor;
            AllowPopupOnMembers        = h.AllowPopupOnMembers;
            AllowRegroup               = h.AllowRegroup;
            AllowChangeTotalAppearance = h.AllowChangeTotalAppearance;
            Visible = h.Visible;
            TakeFiltersIntoCalculations = h.TakeFiltersIntoCalculations;
            AllowSwapMembers            = h.AllowSwapMembers;
            AllowMultiselect            = h.AllowMultiselect;
            OverrideSortMethods         = h.OverrideSortMethods;
            ShowEmptyLines = h.FShowEmptyLines;
            if (h.FLevels != null)
            {
                var ll = h.FLevels.Select(L => new SerializedLevel(L)).ToList();
                if (ll.Count > 0)
                {
                    Levels = ll.ToArray();
                }
            }
        }
Пример #2
0
 internal EventMemberSortArgs(MembersSortType SortingMethod)
 {
     this.SortingMethod = SortingMethod;
 }
Пример #3
0
        internal static void Sort(List <Member> members, MembersSortType ASortType)
        {
            //if (members.Count < 2) return;
            if (members.Count < 1)
            {
                return;
            }

            var FParentLevel = members[0].FLevel;
            var Grid         = FParentLevel.Grid;

            if (members.Count > 1)
            {
                if (FParentLevel.FHierarchy != null && FParentLevel.FHierarchy.OverrideSortMethods &&
                    Grid.EventMemberSortAssigned)
                {
                    members.Sort(new CustomComparer(Grid, ASortType));
                }
                else
                {
                    if (ASortType == MembersSortType.msTypeRelated)
                    {
                        members.Sort(new NumberComparer());
                    }
                    if (ASortType == MembersSortType.msNameAsc)
                    {
                        members.Sort(new AlphaAscComparer());
                    }
                    if (ASortType == MembersSortType.msNameDesc)
                    {
                        members.Sort(new AlphaDescComparer());
                    }
                }
            }

            var P        = new List <Member>();
            var IsSorted = true;

            do
            {
                IsSorted = true;
                var ij = -1;
                foreach (var m in members)
                {
                    m.Children.Sort(Grid, ASortType);
                    ij++;
                    if (m is CustomMember && !P.Contains(m))
                    {
                        if (((CustomMember)m).Position == CustomMemberPosition.cmpFirst)
                        {
                            members.Remove(m);
                            members.Insert(0, m);
                        }
                        if (((CustomMember)m).Position == CustomMemberPosition.cmpLast)
                        {
                            members.Remove(m);
                            members.Add(m);
                        }
                        if (((CustomMember)m).Position == CustomMemberPosition.cmpGeneralOrder)
                        {
                            continue;
                        }
                        P.Add(m);
                        IsSorted = false;
                        break;
                    }
                }
            } while (!IsSorted);
        }
Пример #4
0
 internal CustomComparer(OlapControl AGrid, MembersSortType CurrentMethod)
 {
     FGrid   = AGrid;
     FMethod = CurrentMethod;
     E       = new EventMemberSortArgs(CurrentMethod);
 }
Пример #5
0
 internal void Sort(OlapControl Grid, MembersSortType ASortType)
 {
     Sort(this, ASortType);
 }
Пример #6
0
        public SerializedLevel(Level L)
        {
            level   = L;
            Visible = L.Visible;
            if (L.Filter != null)
            {
                Filter = new SerizalizedFilter(L.Filter);
            }
            SortType = L.SortType;
            if (L.Hierarchy.Levels.Count > 0)
            {
                var visible   = new List <string>();
                var unvisible = new List <string>();
                foreach (var m in L.Hierarchy.Levels[0].Members)
                {
                    if (m.FLevel == level)
                    {
                        if (m.Visible && !m.Filtered && !L.Hierarchy.UnfetchedMembersVisible)
                        {
                            visible.Add(m.UniqueName);
                        }

                        if (!m.Visible && L.Hierarchy.UnfetchedMembersVisible)
                        {
                            unvisible.Add(m.UniqueName);
                        }
                    }
                    FillMembersList(m, visible, unvisible);
                }
                if (unvisible.Count > 0)
                {
                    UnvisibleMembers = unvisible.ToArray();
                }
                if (visible.Count > 0)
                {
                    VisibleMembers = visible.ToArray();
                }

                var va = new Dictionary <string, AttributeDispalyMode>();
                foreach (var ia in L.CubeLevel.InfoAttributes)
                {
                    if (ia.DisplayMode != AttributeDispalyMode.None)
                    {
                        va.Add(ia.DisplayName, ia.DisplayMode);
                    }
                }
                if (va.Count > 0)
                {
                    VisibleAttributes     = new string[va.Count];
                    VisibleAttributeModes = new AttributeDispalyMode[va.Count];
                    va.Keys.CopyTo(VisibleAttributes, 0);
                    va.Values.CopyTo(VisibleAttributeModes, 0);
                }
            }


            var lg = new List <SerializedGroupMember>();
            var lc = new List <SerializedCalculatedMember>();

            foreach (var m in L.FUniqueNamesArray.Values)
            {
                if (m is GroupMember)
                {
                    lg.Add(new SerializedGroupMember(m as GroupMember));
                }
                if (m is CalculatedMember)
                {
                    lc.Add(new SerializedCalculatedMember(m as CalculatedMember));
                }
            }
            if (lg.Count > 0)
            {
                GroupMembers = lg.ToArray();
            }
            if (lc.Count > 0)
            {
                CalculatedMembers = lc.ToArray();
            }
        }