Exemple #1
0
        internal MetaLine(OlapControl AGrid, IList <int> LevelIndexes)
            : this()
        {
            FGrid   = AGrid;
            fLevels = new List <Level>(LevelIndexes.Count);
            var b = 1;

            fIdxArray  = new List <long>(LevelIndexes.Count);
            fHierArray = new List <int>(LevelIndexes.Count);
            fLines     = new SortedList <string, Line>();
            if (LevelIndexes.Count == 0)
            {
                return;
            }

            for (var i = 0; i < LevelIndexes.Count; i++)
            {
                var L = AGrid.FEngine.FLevelsList[LevelIndexes[i]];
                fLevels.Add(L);
                fIdxArray.Add(FLimit);
                fHierArray.Add(b);
                FLimit *= L.CompleteMembersCount;
                b      *= L.FDepth;
            }
            fID = RadarUtils.Join('.', LevelIndexes);
#if DEBUG
            if (fID == "5")
            {
            }
#endif
        }
Exemple #2
0
        internal MetaLine GetMetaline(IList <int> LevelIndexes)
        {
            if (cache_indexes != null && cache_indexes.Length == LevelIndexes.Count &&
                cache_ml != null)
            {
                var b = true;
                for (var i = 0; i < LevelIndexes.Count; i++)
                {
                    if (LevelIndexes[i] != cache_indexes[i])
                    {
                        b = false;
                        break;
                    }
                }
                if (b)
                {
                    return(cache_ml);
                }
            }
            cache_indexes = new int[LevelIndexes.Count];
            LevelIndexes.CopyTo(cache_indexes, 0);

            var key = RadarUtils.Join('.', LevelIndexes);

            MetaLine M;

            FMetaLines.TryGetValue(key, out M);
            if (M != null)
            {
                cache_ml = M;
                return(M);
            }
            M = CreateMetaline(FGrid, LevelIndexes);
            FMetaLines.Add(key, M);
            cache_ml = M;
            return(M);
        }