Example #1
0
        internal CalculatedMember ToCalculatedMember()
        {
            CalculatedMember cm = new CalculatedMember();

            cm.Name = this.Name;
            cm.Mdx  = this.Mdx;
            if (this.MemberName != null && this.MemberName.Length > 0)
            {
                cm.MemberName = this.MemberName;
            }
            if (this.Hierarchy != null && this.Hierarchy.Length > 0)
            {
                cm.Hierarchy = this.Hierarchy;
            }
            if (this.ParentName != null && this.ParentName.Length > 0)
            {
                cm.ParentName = this.ParentName;
            }
            if (this.SolveOrder != 0)
            {
                cm.SolveOrder = this.SolveOrder;
            }
            if (this.Set != false)
            {
                cm.Set = this.Set;
            }

            return(cm);
        }
Example #2
0
        internal void FromCalculatedMember(CalculatedMember cm)
        {
            this.SetAllNull();

            if (cm.Name != null)
            {
                this.Name = cm.Name.Value;
            }
            if (cm.Mdx != null)
            {
                this.Mdx = cm.Mdx.Value;
            }
            if (cm.MemberName != null)
            {
                this.MemberName = cm.MemberName.Value;
            }
            if (cm.Hierarchy != null)
            {
                this.Hierarchy = cm.Hierarchy.Value;
            }
            if (cm.ParentName != null)
            {
                this.ParentName = cm.ParentName.Value;
            }
            if (cm.SolveOrder != null)
            {
                this.SolveOrder = cm.SolveOrder.Value;
            }
            if (cm.Set != null)
            {
                this.Set = cm.Set.Value;
            }
        }
        public void ResetFormattedMember(string uniqueName)
        {
            // get hierarchy and member
            Hierarchy hier = _report.Schema.GetHierarchyFromMemberUniqueName(uniqueName);

            if (hier == null)
            {
                throw new Exception("Unable to resolve hierarchy from " + uniqueName);
            }
            DataMember mem = hier.GetMember(uniqueName);

            if (mem == null)
            {
                throw new Exception("Cannot find member: " + uniqueName);
            }

            CalculatedMember cmem = mem as CalculatedMember;
            MemberWrapper    mw   = cmem as MemberWrapper;

            if (mw != null)          // if it's member wrapper, simply replace it with source member
            {
                cmem.Hierarchy.ReplaceMember(mw, mw.SourceMember);
            }
            else if (cmem != null)          // if other calculated member, set default name and format
            {
                CalculatedMember newMem = cmem.Clone(null);
                newMem.Format = CalculatedMember.FormatEnum.Default;
                newMem.Hierarchy.ReplaceMember(cmem, newMem);
            }
        }
Example #4
0
        internal CalculatedMember ToCalculatedMember()
        {
            var cm = new CalculatedMember();

            cm.Name = Name;
            cm.Mdx  = Mdx;
            if ((MemberName != null) && (MemberName.Length > 0))
            {
                cm.MemberName = MemberName;
            }
            if ((Hierarchy != null) && (Hierarchy.Length > 0))
            {
                cm.Hierarchy = Hierarchy;
            }
            if ((ParentName != null) && (ParentName.Length > 0))
            {
                cm.ParentName = ParentName;
            }
            if (SolveOrder != 0)
            {
                cm.SolveOrder = SolveOrder;
            }
            if (Set)
            {
                cm.Set = Set;
            }

            return(cm);
        }
        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 void SetFormattedMember(string uniqueName, string name, string format)
        {
            // get hierarchy and member
            Hierarchy hier = _report.Schema.GetHierarchyFromMemberUniqueName(uniqueName);

//			// debug
//			if(hier.UniqueName=="[Measures]")
//			{
//				TestFormatMeasure(uniqueName, name, format);
//				return;
//			}

            if (hier == null)
            {
                throw new Exception("Unable to resolve hierarchy from " + uniqueName);
            }
            DataMember mem = hier.GetMember(uniqueName);

            if (mem == null)
            {
                throw new Exception("Cannot find member: " + uniqueName);
            }
            if (mem is Set)
            {
                throw new ArgumentException("Cannot format set: + uniqueName");
            }

            // resolve formatEnum
            CalculatedMember.FormatEnum formatEnum = (CalculatedMember.FormatEnum)Enum.Parse(typeof(CalculatedMember.FormatEnum), format, true);

            // format
            CalculatedMember cmem = mem as CalculatedMember;

            if (cmem != null)          // if calculated member, simply set different name and format
            {
                if (cmem.Name == name && formatEnum == cmem.Format)
                {
                    return;                      // if not changed
                }
                CalculatedMember newMem = cmem.Clone(name);
                newMem.Format = formatEnum;
                cmem.Hierarchy.ReplaceMember(cmem, newMem);
            }
            else             // if data member, create new wrapper
            {
                if (mem.Name == name && formatEnum == CalculatedMember.FormatEnum.Default)
                {
                    return;                      // if not changed
                }
                CalculatedMember newMem = new BusinessObjects.Olap.CalculatedMemberTemplates.MemberWrapper(name, hier, mem);
                newMem.Format = formatEnum;
                newMem.Hierarchy.ReplaceMember(mem, newMem);
            }
        }
        public void RemoveVisualAggr(string HierUN, string Aggr)
        {
            VisualAggregate.AggregateFunction aggr = (VisualAggregate.AggregateFunction)System.Enum.Parse(typeof(VisualAggregate.AggregateFunction), Aggr, true);
            Hierarchy hier = _report.Schema.Hierarchies[HierUN];

            CalculatedMember cmem = hier.CalculatedMembers.GetVisualAggregate(aggr);

            if (cmem != null)
            {
                hier.RemoveMember(cmem);
            }
        }
        internal void FromCalculatedMember(CalculatedMember cm)
        {
            this.SetAllNull();

            if (cm.Name != null) this.Name = cm.Name.Value;
            if (cm.Mdx != null) this.Mdx = cm.Mdx.Value;
            if (cm.MemberName != null) this.MemberName = cm.MemberName.Value;
            if (cm.Hierarchy != null) this.Hierarchy = cm.Hierarchy.Value;
            if (cm.ParentName != null) this.ParentName = cm.ParentName.Value;
            if (cm.SolveOrder != null) this.SolveOrder = cm.SolveOrder.Value;
            if (cm.Set != null) this.Set = cm.Set.Value;
        }
Example #9
0
        private OlapReport CreateOLAPReport()
        {
            OlapReport olapReport = new OlapReport
            {
                Name            = "Calculated Report",
                CurrentCubeName = "Adventure Works"
            };

            DimensionElement dimensionElementColumn = new DimensionElement();

            dimensionElementColumn.Name          = "Customer";
            dimensionElementColumn.HierarchyName = "Customer Geography";
            dimensionElementColumn.AddLevel("Customer Geography", "Country");

            MeasureElements measureElementColumn = new MeasureElements();

            measureElementColumn.Elements.Add(new MeasureElement {
                Name = "Internet Sales Amount"
            });
            measureElementColumn.Elements.Add(new MeasureElement {
                Name = "Sales Amount"
            });

            DimensionElement dimensionElementRow = new DimensionElement();

            dimensionElementRow.Name = "Date";
            dimensionElementRow.AddLevel("Fiscal", "Fiscal Year");

            // Calculated measure
            CalculatedMember calculatedMeasure1 = new CalculatedMember();

            calculatedMeasure1.Name       = "Order on Discount Sale";
            calculatedMeasure1.Expression = "[Measures].[Order Quantity] + ([Measures].[Order Quantity] * 0.10)";
            calculatedMeasure1.AddElement(new MeasureElement {
                Name = "Order Quantity"
            });
            olapReport.CalculatedMembers.Add(calculatedMeasure1);

            // Adding column members
            olapReport.CategoricalElements.Add(dimensionElementColumn);
            olapReport.CategoricalElements.Add(calculatedMeasure1);

            // Adding measure element
            olapReport.CategoricalElements.Add(measureElementColumn);

            // Adding row members
            olapReport.SeriesElements.Add(dimensionElementRow);

            return(olapReport);
        }
 public SerializedCalculatedMember(CalculatedMember m)
 {
     Position    = m.Position;
     DisplayName = m.DisplayName;
     UniqueName  = m.UniqueName;
     if (!string.IsNullOrEmpty(m.Description))
     {
         Description = m.Description;
     }
     if (m.Parent != null)
     {
         Parent = m.Parent.UniqueName;
     }
     if (!string.IsNullOrEmpty(m.Expression))
     {
         Expression = m.Expression;
     }
 }
Example #11
0
        private void AddParameterInput(CalculatedMember cmem)
        {
            HtmlTableRow row = new HtmlTableRow();

            this.paramsTable.Rows.Add(row);


            FilteredByNameSet filtLevSet = cmem as FilteredByNameSet;

            if (filtLevSet != null)
            {
                HtmlTableCell cell = new HtmlTableCell();
                row.Cells.Add(cell);

                CalculatedMemberControls.FilteredByNameSetControl control = (CalculatedMemberControls.FilteredByNameSetControl)Page.LoadControl(Request.ApplicationPath + "/OlapReport/CalculatedMemberControls/FilteredByNameSetControl.ascx");
                control._filtByNameSet = filtLevSet;
                cell.Controls.Add(control);
            }
        }
        public void AddCalculatedMeasure(string MeasureName1, string MeasureName2, string Operation)
        {
            Hierarchy measuresHier = _report.Schema.Hierarchies["[Measures]"];
            Member    mea1         = measuresHier.SchemaMembers.Find("[Measures].[" + MeasureName1.Replace("]", "]]") + "]");
            Member    mea2         = measuresHier.SchemaMembers.Find("[Measures].[" + MeasureName2.Replace("]", "]]") + "]");

            if (measuresHier == null)
            {
                throw new Exception("Unknown hierarchy");
            }

            if (mea1 == null || mea2 == null)
            {
                throw new Exception("Unknown measure");
            }

            CalculatedMember calcMem = this.CreateCalculatedMeasure(mea1, mea2, Operation);

            if (calcMem == null)
            {
                return;
            }

            if (measuresHier.Axis.Ordinal == 2)
            {
                if ((measuresHier.FilterMember is CalculatedMember) == false)
                {
                    DataMember existMeasure = measuresHier.FilterMember;
                    measuresHier.ReplaceMember(existMeasure, calcMem);
                }
                else
                {
                    throw new Exception("Cannot add: remove existing calculated member first");
                }
            }
            else
            {
                measuresHier.AddMember(calcMem, true);
            }
        }
        public void AddRatioMeasure(string TypeString, string HierUniqueName, string MeasureName)
        {
            Hierarchy measuresHier = _report.Schema.Hierarchies["[Measures]"];
            Hierarchy ratioHier    = _report.Schema.Hierarchies[HierUniqueName];
            Member    ratioMeasure = measuresHier.SchemaMembers.Find("[Measures].[" + MeasureName.Replace("]", "]]") + "]");

            if (ratioHier == null)
            {
                throw new Exception("Unknown hierarchy");
            }

            if (ratioMeasure == null)
            {
                throw new Exception("Unknown measure");
            }

            CalculatedMember calcMem = this.CreateRatioMeasure(TypeString, ratioHier, ratioMeasure);

            if (calcMem == null)
            {
                return;
            }

            if (measuresHier.Axis.Ordinal == 2)
            {
                if ((measuresHier.FilterMember is CalculatedMember) == false)
                {
                    DataMember existMeasure = measuresHier.FilterMember;
                    measuresHier.ReplaceMember(existMeasure, calcMem);
                }
                else
                {
                    throw new Exception("Cannot add: remove existing calculated member first");
                }
            }
            else
            {
                measuresHier.AddMember(calcMem, true);
            }
        }
        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);
        }
Example #15
0
        OlapReport CalculatedReport()
        {
            // CubeModel cubeModel = new CubeModel(ConnectionString);
            OlapReport olapReport = new OlapReport();

            olapReport.CurrentCubeName = "Adventure Works";

            DimensionElement dimensionElementColumn = new DimensionElement();

            //Specifying the Name for the Dimension Element
            dimensionElementColumn.Name          = "Customer";
            dimensionElementColumn.HierarchyName = "Customer Geography";
            dimensionElementColumn.AddLevel("Customer Geography", "Country");

            DimensionElement internalDimension = new DimensionElement();

            internalDimension.Name = "Product";
            internalDimension.AddLevel("Product Categories", "Category");

            //// Calculated Measure
            CalculatedMember calculatedMeasure1 = new CalculatedMember();

            calculatedMeasure1.Name       = "Oder on Discount";
            calculatedMeasure1.Expression = "[Measures].[Order Quantity] + ([Measures].[Order Quantity] * 0.10)";
            calculatedMeasure1.AddElement(new MeasureElement {
                Name = "Order Quantity"
            });

            //// Calculated Measure
            CalculatedMember calculatedMeasure2 = new CalculatedMember();

            calculatedMeasure2.Name = "Sales Range";
            calculatedMeasure2.AddElement(new MeasureElement {
                Name = "Sales Amount"
            });
            calculatedMeasure2.Expression = "IIF([Measures].[Sales Amount]>200000,\"High\",\"Low\")";

            // Calculated Dimension
            CalculatedMember calculateDimension = new CalculatedMember();

            calculateDimension.Name       = "Bikes & Components";
            calculateDimension.Expression = "([Product].[Product Categories].[Category].[Bikes] + [Product].[Product Categories].[Category].[Components] )";
            calculateDimension.AddElement(internalDimension);

            MeasureElements measureElementColumn = new MeasureElements();

            measureElementColumn.Elements.Add(new MeasureElement {
                Name = "Sales Amount"
            });
            measureElementColumn.Elements.Add(new MeasureElement {
                Name = "Order Quantity"
            });

            DimensionElement dimensionElementRow = new DimensionElement();

            //Specifying the Dimension Name
            dimensionElementRow.Name = "Date";
            dimensionElementRow.AddLevel("Fiscal", "Fiscal Year");


            //// Adding Calculated members in calculated member collection
            olapReport.CalculatedMembers.Add(calculatedMeasure1);
            olapReport.CalculatedMembers.Add(calculateDimension);
            olapReport.CalculatedMembers.Add(calculatedMeasure2);

            // Adding Column Members
            olapReport.CategoricalElements.Add(dimensionElementColumn);
            olapReport.CategoricalElements.Add(calculateDimension);
            //Adding Measure Element
            olapReport.CategoricalElements.Add(measureElementColumn);
            olapReport.CategoricalElements.Add(calculatedMeasure1);
            olapReport.CategoricalElements.Add(calculatedMeasure2);

            //Adding Row Members
            olapReport.SeriesElements.Add(dimensionElementRow);

            return(olapReport);
        }
        private OlapReport CreateOlapReport(string Report)
        {
            OlapReport olapReport = new OlapReport()
            {
                Name = "Default Report"
            };

            olapReport.CurrentCubeName = "Adventure Works";

            if (Report == "Paging")
            {
                olapReport.EnablePaging = true;
                olapReport.PagerOptions.SeriesPageSize      = 5;
                olapReport.PagerOptions.CategoricalPageSize = 3;

                DimensionElement dimensionElement = new DimensionElement()
                {
                    Name = "Customer"
                };
                dimensionElement.AddLevel("Customer", "Customer");
                olapReport.CategoricalElements.Add(dimensionElement);

                DimensionElement dimensionElementRow = new DimensionElement()
                {
                    Name = "Customer", HierarchyName = "Customer"
                };
                dimensionElementRow.AddLevel("Customer Geography", "Country");
                olapReport.SeriesElements.Add(dimensionElementRow);

                MeasureElements measureElementColumn = new MeasureElements();
                measureElementColumn.Elements.Add(new MeasureElement {
                    Name = "Internet Sales Amount"
                });
                olapReport.CategoricalElements.Add(measureElementColumn);
            }
            else if (Report == "CalculatedMember")
            {
                DimensionElement internalDimension = new DimensionElement();
                internalDimension.Name = "Product";
                internalDimension.AddLevel("Product Categories", "Category");

                //// Calculated Measure
                CalculatedMember calculatedMeasure1 = new CalculatedMember();
                calculatedMeasure1.Name       = "Oder on Discount";
                calculatedMeasure1.Expression = "[Measures].[Order Quantity] + ([Measures].[Order Quantity] * 0.10)";
                calculatedMeasure1.AddElement(new MeasureElement {
                    Name = "Order Quantity"
                });

                // Calculated Dimension
                CalculatedMember calculateDimension = new CalculatedMember();
                calculateDimension.Name       = "Bikes & Components";
                calculateDimension.Expression = "([Product].[Product Categories].[Category].[Bikes] + [Product].[Product Categories].[Category].[Components] )";
                calculateDimension.AddElement(internalDimension);

                MeasureElements measureElementColumn = new MeasureElements();
                measureElementColumn.Elements.Add(new MeasureElement {
                    Name = "Sales Amount"
                });
                measureElementColumn.Elements.Add(new MeasureElement {
                    Name = "Order Quantity"
                });

                DimensionElement dimensionElementRow = new DimensionElement();
                //Specifying the Dimension Name
                dimensionElementRow.Name = "Date";
                dimensionElementRow.AddLevel("Fiscal", "Fiscal Year");


                //// Adding Calculated members in calculated member collection
                olapReport.CalculatedMembers.Add(calculatedMeasure1);
                olapReport.CalculatedMembers.Add(calculateDimension);

                ///Adding Measure Element
                olapReport.CategoricalElements.Add(measureElementColumn);
                olapReport.CategoricalElements.Add(calculatedMeasure1);

                ///Adding Row Members
                olapReport.SeriesElements.Add(dimensionElementRow);
                olapReport.SeriesElements.Add(calculateDimension);
            }
            else if (Report == "KPI")
            {
                DimensionElement dimensionElement = new DimensionElement()
                {
                    Name = "Date"
                };
                dimensionElement.AddLevel("Fiscal", "Fiscal Year");
                olapReport.CategoricalElements.Add(dimensionElement);

                DimensionElement dimensionElementRow = new DimensionElement()
                {
                    Name = "Customer", HierarchyName = "Customer"
                };
                dimensionElementRow.AddLevel("Customer Geography", "Country");
                olapReport.SeriesElements.Add(dimensionElementRow);

                MeasureElements measureElementColumn = new MeasureElements();
                measureElementColumn.Elements.Add(new MeasureElement {
                    Name = "Internet Sales Amount"
                });
                olapReport.CategoricalElements.Add(measureElementColumn);

                KpiElements kpiElement = new KpiElements();
                kpiElement.Elements.Add(new KpiElement
                {
                    Name          = "Revenue",
                    ShowKPIStatus = false,
                    ShowKPIGoal   = false,
                    ShowKPITrend  = true,
                    ShowKPIValue  = false
                });
                olapReport.CategoricalElements.Add(kpiElement);
            }
            else
            {
                MeasureElements measureElement = new MeasureElements();
                measureElement.Elements.Add(new MeasureElement {
                    UniqueName = "[Measures].[Customer Count]"
                });

                DimensionElement dimensionElementRow = new DimensionElement();
                dimensionElementRow.Name = "Date";
                dimensionElementRow.AddLevel("Fiscal", "Fiscal Year");

                olapReport.SeriesElements.Add(dimensionElementRow);
                olapReport.CategoricalElements.Add(measureElement);
            }
            return(olapReport);
        }
        internal static JsonDialog MakeHTMLMember(OlapControl grid, Level level, CalculatedMember member)
        {
            var result = new JsonDialog();

            result.width = 500;
            string uniqueName;
            string displayName;
            string expression;

            if (member == null)
            {
                uniqueName  = "NULL";
                displayName = RadarUtils.GetResStr("rsTypeNameMember");
                expression  = "0";
            }
            else
            {
                uniqueName  = member.UniqueName;
                displayName = member.DisplayName;
                expression  = member.Expression;
            }

            var writer = new HtmlTextWriter();

            writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            if (member == null)
            {
                result.title = RadarUtils.GetResStr("rsNewCalculatedMember");
            }
            else
            {
                result.title = string.Format(RadarUtils.GetResStr("rsEditPropName"), member.DisplayName);
            }

            if (member == null)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                writer.Write(RadarUtils.GetResStr("exprt_Caption") + ":");

                writer.RenderEndTag(); //td
                writer.RenderEndTag(); // tr

                writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                writer.AddStyleAttribute(HtmlTextWriterStyle.PaddingLeft, "20px");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                writer.AddAttribute(HtmlTextWriterAttribute.Id, "OCM_tbDisplayName");
                writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
                writer.AddAttribute("class", "ui-widget-content");
                writer.AddStyleAttribute("width", "95%");
                writer.AddAttribute(HtmlTextWriterAttribute.Value, displayName);
                writer.RenderBeginTag(HtmlTextWriterTag.Input);
                writer.RenderEndTag(); // input

                writer.RenderEndTag(); //td
                writer.RenderEndTag(); // tr
            }

            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            writer.Write(RadarUtils.GetResStr("rsExpression") + ":");

            writer.RenderEndTag(); //td
            writer.RenderEndTag(); // tr

            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

            writer.AddStyleAttribute(HtmlTextWriterStyle.PaddingLeft, "20px");
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            writer.AddAttribute(HtmlTextWriterAttribute.Class, "ui-widget-content");
            writer.AddAttribute(HtmlTextWriterAttribute.Id, "OCM_tbExpression");
            writer.AddAttribute(HtmlTextWriterAttribute.Value, expression);
            writer.AddStyleAttribute("width", "95%");
            writer.AddStyleAttribute("height", "150px");
            writer.RenderBeginTag(HtmlTextWriterTag.Textarea);
            writer.RenderEndTag(); // textarea

            writer.RenderEndTag(); //td
            writer.RenderEndTag(); // tr
            writer.RenderEndTag(); // table

            result.buttons = new[]
            {
                new JsonDialogButton
                {
                    text = RadarUtils.GetResStr("rsOk"),
                    code = "RadarSoft.$('#" + grid.ClientID +
                           "').data('grid').applyCalculated('applycalcmember|" +
                           level.UniqueName + "|" + uniqueName + "')"
                },
                new JsonDialogButton
                {
                    text = RadarUtils.GetResStr("rsCancel"),
                    code = "RadarSoft.$(this).dialog('close')"
                }
            };

            result.data = writer.ToString();
            return(result);
        }
        internal CalculatedMember ToCalculatedMember()
        {
            CalculatedMember cm = new CalculatedMember();
            cm.Name = this.Name;
            cm.Mdx = this.Mdx;
            if (this.MemberName != null && this.MemberName.Length > 0) cm.MemberName = this.MemberName;
            if (this.Hierarchy != null && this.Hierarchy.Length > 0) cm.Hierarchy = this.Hierarchy;
            if (this.ParentName != null && this.ParentName.Length > 0) cm.ParentName = this.ParentName;
            if (this.SolveOrder != 0) cm.SolveOrder = this.SolveOrder;
            if (this.Set != false) cm.Set = this.Set;

            return cm;
        }
        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);
                }
            }
        }