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; }
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; }
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; }
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 + " "; 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 + " "; } } 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); } }
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; }
public void RemoveMember(Member mem) { CalculatedMember cmem=mem as CalculatedMember; if(cmem!=null) this.CalculatedMembers.Remove(cmem.UniqueName); else this.DataMembers.Remove(mem.UniqueName); }
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); }