Ejemplo n.º 1
0
        public MemberWrapper(string Name, Hierarchy HostHier, Member SourceMember)
            : base(Name, HostHier)
        {
            if(SourceMember is Set)
                throw new ArgumentException("Invalid parameter: Set");

            _mdxParameters.Add(SourceMember, false);
            Initialize(Name);
        }
        public Member ReplaceParameterMember(Member toReplace, Member replaceWith)
        {
            Member ret=null;
            for(int i=0;i<this.Count;i++)
            {
                ret=this[i].ReplaceParameterMember(toReplace, replaceWith);
                if(ret!=null)
                    break;
            }

            return ret;
        }
        public Member ReplaceParameterMember(Member toReplace, Member replaceWith)
        {
            for(int i=0;i<_mdxParameters.Count;i++)
            {
                Object obj=_mdxParameters[i];
                if(toReplace==obj)
                    return (Member)_mdxParameters.ReplaceAtIndex(i, replaceWith);

                // --
                CalculatedMember cmem=obj as CalculatedMember;
                if(cmem!=null)
                {
                    Member ret=cmem.ReplaceParameterMember(toReplace, replaceWith);
                    if(ret!=null)
                        return ret;
                }
            }

            return null;
        }
Ejemplo n.º 4
0
        private CalculatedMember CreateRatioMeasure(string Type , Hierarchy Hier , Member Measure )
        {
            CalculatedMember calcMem=null;
            Hierarchy hostHier=_report.Schema.Hierarchies["[Measures]"];

            switch(Type)
            {
                case "Ratio To Visual Sum":
                    calcMem=new MemToVisAggr(null, hostHier, Measure , Hier , VisualAggregate.AggregateFunction.SUM);
                    break;
                case "Ratio To Visual Avg":
                    calcMem=new MemToVisAggr(null, hostHier, Measure , Hier , VisualAggregate.AggregateFunction.AVG);
                    break;
                case "Ratio To Visual Min":
                    calcMem=new MemToVisAggr(null, hostHier, Measure , Hier , VisualAggregate.AggregateFunction.MIN);
                    break;
                case "Ratio To Visual Max":
                    calcMem=new MemToVisAggr(null, hostHier, Measure , Hier , VisualAggregate.AggregateFunction.MAX);
                    break;
                case "Ratio To Parent Member":
                    calcMem=new MemToParent(null, hostHier, Measure , Hier);
                    break;
                case "Ratio To (All) Member":
                    calcMem=new MemToAll(null, hostHier, Measure , Hier);
                    break;
                default:
                    throw new Exception("Unknown Type");
            }

            return calcMem;
        }
Ejemplo n.º 5
0
        private CalculatedMember CreateCalculatedMeasure(Member Measure1, Member Measure2, string Operation )
        {
            CalculatedMember calcMem=null;
            Hierarchy meaHier=_report.Schema.Hierarchies["[Measures]"];

            switch(Operation)
            {
                case "-":
                    calcMem=new MeasureToMeasure(null, meaHier , Measure1, Measure2, MeasureToMeasure.Operations.SUBTRACT);
                    break;
                case "+":
                    calcMem=new MeasureToMeasure(null, meaHier , Measure1, Measure2, MeasureToMeasure.Operations.ADD);
                    break;
                case "/":
                    calcMem=new MeasureToMeasure(null, meaHier , Measure1, Measure2, MeasureToMeasure.Operations.DIVIDE);
                    break;
                case "*":
                    calcMem=new MeasureToMeasure(null, meaHier , Measure1, Measure2, MeasureToMeasure.Operations.MULTIPLY);
                    break;
                case "Inherite NULL":
                    calcMem=new MeasureInheritedNull(null, meaHier, Measure1 , Measure2);
                    break;
                default:
                    throw new Exception("Unknown Operation");
            }

            return calcMem;
        }
Ejemplo n.º 6
0
 public string IdentifierFromSchemaMember(Member mem)
 {
     Axis axis=mem.Hierarchy.Axis;
     return axis.Ordinal + ":" +  mem.Hierarchy.Ordinal.ToString() + ":" + mem.UniqueName;
 }
        private void CreateMemHierarchy(short AxisOrdinal, HtmlTable hostTable , Member mem, bool HierIsAggregated , byte TreeDepth, bool autoSelect)
        {
            //do not display aggregate, display undlying calc members instead
            if(HierIsAggregated==true && mem.UniqueName==mem.Hierarchy.FilterMember.UniqueName)
            {
                MembersAggregate maggr=mem.Hierarchy.FilterMember as MembersAggregate;
                if(maggr!=null)
                {
                    for(int i=0;i<maggr.Members.Count;i++)
                    {
                        CalculatedMember cmem=maggr.Members[i] as CalculatedMember;
                        if(cmem!=null)
                            this.CreateMemHierarchy(AxisOrdinal, hostTable, cmem, HierIsAggregated, TreeDepth, false); // recursion
                    }
                }
                return;
            }

            string memIdentifier=_contr.IdentifierFromSchemaMember(mem);
            string hierIdentifier=mem.Hierarchy.Axis.Ordinal.ToString() + ":" + mem.Hierarchy.Ordinal.ToString();
            bool memIsSelected=false;
            bool memIsOpen=false;
            bool memIsPlaceholder=false;
            bool memAutoSelectChildren=(mem.Hierarchy.CalculatedMembers.GetMemberChildrenSet(mem.UniqueName)!=null);
            SchemaMember smem=mem as SchemaMember;
            if(smem!=null)
            {
                memIsOpen=smem.IsOpen;
                memIsPlaceholder=smem.IsPlaceholder;
            }

            if(HierIsAggregated)
                memIsSelected=(((MembersAggregate)mem.Hierarchy.FilterMember).Members[mem.UniqueName]!=null?true:false);
            else
                memIsSelected=(mem.Hierarchy.GetMember(mem.UniqueName)!=null);

            HtmlTableRow tr=new HtmlTableRow();
            HtmlTableCell td;
            System.Web.UI.WebControls.Button btn;
            Literal lit;

            // --- node contr col--
            td= new HtmlTableCell();
            td.Attributes.Add("class","sel_C1");
            td.NoWrap=true;
            tr.Cells.Add(td);

            // --- node name col--
            td= new HtmlTableCell();

            lit=new Literal();
            for(int i=0;i<TreeDepth;i++)
                lit.Text=lit.Text + "&nbsp;&nbsp;";
            td.Controls.Add(lit);

            if(memIsOpen)
            {
                btn=new System.Web.UI.WebControls.Button();
                btn.ToolTip="Close";
                btn.ID="sel_close:" + memIdentifier;
                btn.CssClass="sel_close";
                td.Controls.Add(btn);
            }
            else
            {
                if(mem.CanDrillDown)
                {
                    btn=new System.Web.UI.WebControls.Button();
                    btn.ToolTip="Open";
                    btn.ID="sel_open:"+memIdentifier;
                    btn.CssClass="sel_open";
                    td.Controls.Add(btn);
                }
                else
                {
                    // no image
                    lit.Text=lit.Text + "&nbsp;&nbsp;&nbsp;";
                }
            }

            if(memIsPlaceholder==false)
                if(AxisOrdinal==2 && HierIsAggregated==false)
                {
                    HtmlInputRadioButton radio=new HtmlInputRadioButton();
                    radio.Name="m:" + hierIdentifier;
                    radio.ID="m:" + memIdentifier;
                    radio.EnableViewState=false;
                    radio.Checked=(memIsSelected || autoSelect);
                    radio.Disabled=autoSelect;
                    radio.Attributes.Add("class" , "sel_chk");
                    td.Controls.Add(radio);
                }
                else
                {
                    HtmlInputCheckBox chk=new HtmlInputCheckBox();
                    chk.ID="m:" + mem.UniqueName; //note, UniqueName !
                    chk.EnableViewState=false;
                    chk.Checked=(memIsSelected || autoSelect);
                    chk.Disabled=autoSelect;
                    chk.Attributes.Add("class" , "sel_chk");
                    td.Controls.Add(chk);
                }

            lit=new Literal();
            lit.Text=mem.Name;
            td.Controls.Add(lit);

            td.Attributes.Add("class","sel_C");
            td.NoWrap=true;
            tr.Cells.Add(td);

            // --- node select col--
            td= new HtmlTableCell();

            if(AxisOrdinal!=2 && memIsOpen)
            {
                if(!memAutoSelectChildren)
                {
                    btn=new System.Web.UI.WebControls.Button();
                    btn.ToolTip="Auto-Select Children";
                    btn.ID="sel_selauto:"+memIdentifier;
                    btn.CssClass="sel_selauto";
                    td.Controls.Add(btn);

                    btn=new System.Web.UI.WebControls.Button();
                    btn.ToolTip="Select Children";
                    btn.ID="sel_selall:"+memIdentifier;
                    btn.CssClass="sel_selall";
                    td.Controls.Add(btn);
                }

                btn=new System.Web.UI.WebControls.Button();
                btn.ToolTip ="Deselect All Children";
                btn.ID="sel_deselall:"+memIdentifier;
                btn.CssClass="sel_deselall";
                td.Controls.Add(btn);
            }

            td.Attributes.Add("class","sel_C2");
            td.NoWrap=true;
            tr.Cells.Add(td);

            hostTable.Rows.Add(tr);

            if(memIsOpen==false)
                return;

            // next level members if it's schema member
            TreeDepth++;
            if(smem!=null)
            {
                for(int j=0;j<smem.Children.Count;j++)
                    CreateMemHierarchy(AxisOrdinal, hostTable, smem.Children[j] , HierIsAggregated , TreeDepth, memAutoSelectChildren);
            }
        }
Ejemplo n.º 8
0
        public Member ReplaceMember(Member toReplace, Member replaceWith)
        {
            if(toReplace==null || replaceWith==null)
                throw new ArgumentNullException();
            if(toReplace==replaceWith)
                return toReplace;

            CalculatedMember calcToReplace=toReplace as CalculatedMember;
            int existIndex=(calcToReplace!=null ? this.CalculatedMembers.IndexOf(calcToReplace.UniqueName) : this.DataMembers.IndexOf(toReplace.UniqueName));

            // this might be one of nested members
            if(existIndex<0)
            {
                // this might be one of nested members
                if(calcToReplace!=null)
                    return this.CalculatedMembers.ReplaceParameterMember(calcToReplace, replaceWith);

                return null;
            }

            if(calcToReplace!=null)
                this.CalculatedMembers.RemoveAt(existIndex);
            else
                this.DataMembers.RemoveAt(existIndex);

            try
            {
                this.AddMember(replaceWith, false); //add new member
            }
            catch(Exception exc)
            {
                // rollback in case of error
                if(existIndex>=0)
                {
                    if(calcToReplace!=null)
                        this.CalculatedMembers.Insert(existIndex, calcToReplace, false);
                    else
                        this.DataMembers.Insert(existIndex, toReplace, false);
                }

                throw exc;
            }

            return replaceWith;
        }
Ejemplo n.º 9
0
 public void RemoveMember(Member mem)
 {
     CalculatedMember cmem=mem as CalculatedMember;
     if(cmem!=null)
         this.CalculatedMembers.Remove(cmem.UniqueName);
     else
         this.DataMembers.Remove(mem.UniqueName);
 }
Ejemplo n.º 10
0
 public void AddMember(Member mem, bool replaceExisting)
 {
     CalculatedMember cmem=mem as CalculatedMember;
     if(cmem!=null)
         this.CalculatedMembers.Add(cmem, replaceExisting);
     else
         this.DataMembers.Add(mem, replaceExisting);
 }