Beispiel #1
0
        private void ProcessCalculatedMembers(Line l, List <CubeDataNumeric> data)
        {
            var hasCalculatedMembers = false;

            foreach (var ll in l.Levels)
            {
                foreach (var m in ll.FUniqueNamesArray.Values)
                {
                    if (m is CalculatedMember)
                    {
                        hasCalculatedMembers = true;
                        break;
                    }
                }
            }
            if (!hasCalculatedMembers)
            {
                return;
            }

            var data2 = new List <CubeDataNumeric>();

            foreach (var d in data)
            {
                var mm = l.fM.DecodeLineIdx(d.LineIdx);
                var lm = new List <Member>(mm.Length);
                for (var i = 0; i < mm.Length; i++)
                {
                    lm.Add(l.Levels[i].GetMemberByID(mm[i]));
                }
                var a = new ICubeAddress(FGrid, lm);
                a.Measure     = l.Measure;
                a.MeasureMode = l.fMode;
                foreach (var ll in l.Levels)
                {
                    foreach (var m in ll.FUniqueNamesArray.Values)
                    {
                        if (m is CalculatedMember)
                        {
                            a.AddMember(m);
                            object v;
                            CellFormattingProperties f;
                            if (DoCalculate(FGrid, a, out v, out f))
                            {
                                var dn = new CubeDataNumeric();
                                dn.FormattedValue = f.FormattedValue;
                                dn.LineIdx        = a.FLineIdx;
                                dn.MemberIDs      = l.fM.DecodeLineIdx(dn.LineIdx);
                                dn.Value          = Convert.ToDouble(v);
                                data2.Add(dn);
                            }
                        }
                    }
                }
            }

            data.AddRange(data2);
        }
Beispiel #2
0
 internal ChartCellDetails(OlapControl grid, List <Level> clue, int[] memberIDs)
 {
     fGrid   = grid;
     Address = new ICubeAddress(fGrid);
     for (var i = 0; i < clue.Count; i++)
     {
         Address.AddMember(clue[i].GetMemberByID(memberIDs[i]));
     }
 }
Beispiel #3
0
        public ICubeAddress GetCubeAddress(OlapControl grid)
        {
            var a = new ICubeAddress(grid);

            if (!string.IsNullOrEmpty(MeasureUniqueName))
            {
                a.Measure = grid.Measures.Find(MeasureUniqueName);
                if (a.Measure == null)
                {
                    a.Measure = grid.Measures.FindByDisplayName(MeasureDisplayName);
                }

                if (a.Measure != null)
                {
                    a.MeasureMode = a.Measure.ShowModes.Find(MeasureMode);
                }
            }

            if (Levels != null)
            {
                for (var i = 0; i < Levels.Length; i++)
                {
                    var    l = grid.Dimensions.FindLevel(Levels[i]);
                    Member m = null;
                    if (l != null)
                    {
                        m = l.FindMember(Members[i]);
                    }
                    if (m != null)
                    {
                        a.AddMember(m);
                    }
                }
            }

            a.Tag = Tag;

            return(a);
        }