private GraphXAxisRootDto GetRoot(DimensionTree allDimensionsTree, DimensionDto xDimension, Measure measure,
                                          IEnumerable <DimensionValueDto> filteredXValues, List <FlatDimensionDto> filters,
                                          DimensionValueDto xValue = null, DimensionDto legendDimension = null)
        {
            GraphXAxisRootDto xAxisRoot;

            if (legendDimension == null)
            {
                xAxisRoot = new DrilldownGraphXAxisRootDto
                {
                    Id          = xValue?.Id ?? 0,
                    Name        = xValue?.Value ?? string.Empty,
                    XAxisLeaves = new List <GraphXAxisLeafDto>()
                };
                var leaf = GetLeaf(allDimensionsTree, xDimension, xValue, measure, filters);
                xAxisRoot.XAxisLeaves.Add(leaf);
            }
            else
            {
                xAxisRoot = new GroupedGraphXAxisRootDto
                {
                    Id          = xValue?.Id ?? 0,
                    Name        = xValue?.Value ?? string.Empty,
                    XAxisLeaves = new List <GraphXAxisLeafDto>()
                };
                foreach (var dimValue in filteredXValues)
                {
                    var leaf = GetLeaf(allDimensionsTree, xDimension, dimValue, measure, filters, legendDimension);
                    xAxisRoot.XAxisLeaves.Add(leaf);
                }
            }

            return(xAxisRoot);
        }
 private DrilldownSeriesViewModel GetSeries(DrilldownGraphXAxisRootDto root)
 {
     var rootXAxisLeaves = root.XAxisLeaves.Cast<DrilldownGraphXAxisLeafDto>().ToList();
     var series = new DrilldownSeriesViewModel
     {
         Id = root.Name,
         Name = root.Name,
         Data = new DrilldownSeriesDataViewModel[rootXAxisLeaves.Count]
     };
     for (int i = 0; i < rootXAxisLeaves.Count; i++)
     {
         series.Data[i] = new DrilldownSeriesDataViewModel
         {
             Drilldown = null,
             Name = rootXAxisLeaves[i].Name,
             Y = rootXAxisLeaves[i].Value
         };
     }
     return series;
 }
        public static DrilldownGraphDto GetDrilldownGraph()
        {
            var root1 = new DrilldownGraphXAxisRootDto
            {
                Name        = "Bakery",
                XAxisLeaves = new List <GraphXAxisLeafDto>
                {
                    new DrilldownGraphXAxisLeafDto
                    {
                        Name  = "Bread",
                        Value = 80
                    },
                    new DrilldownGraphXAxisLeafDto
                    {
                        Name  = "Bun",
                        Value = 150
                    },
                }
            };
            var root2 = new DrilldownGraphXAxisRootDto
            {
                Name        = "Dairy",
                XAxisLeaves = new List <GraphXAxisLeafDto>
                {
                    new DrilldownGraphXAxisLeafDto
                    {
                        Name  = "Milk",
                        Value = 50
                    }
                }
            };

            return(new DrilldownGraphDto
            {
                Name = "Drilldown graph",
                Roots = new List <GraphXAxisRootDto>
                {
                    root1, root2
                }
            });
        }
        private GraphXAxisRootDto GetParentRoot(DimensionTree allDimensionsTree, TreeDimensionDto childDimension,
                                                Measure measure, DimensionValueDto xValue, List <FlatDimensionDto> filters, DimensionDto legendDimension = null)
        {
            GraphXAxisRootDto xAxisRoot;

            if (legendDimension == null)
            {
                xAxisRoot = new DrilldownGraphXAxisRootDto
                {
                    Id          = xValue.Id,
                    Name        = xValue.Value,
                    XAxisLeaves = new List <GraphXAxisLeafDto>()
                };
            }
            else
            {
                xAxisRoot = new GroupedGraphXAxisRootDto
                {
                    Id          = xValue.Id,
                    Name        = xValue.Value,
                    XAxisLeaves = new List <GraphXAxisLeafDto>()
                };
            }
            var parentDimension = allDimensionsTree.GetDimensionDto((int)childDimension.ParentId);
            var xDimValues      = _querier.GetValuesOfDimension(
                parentDimension, new Column {
                Name = childDimension.IdName, Value = xValue.Id.ToString()
            });
            var filteredValues = GetFilteredValues(allDimensionsTree, parentDimension, filters, xDimValues);

            foreach (var dimValue in filteredValues)
            {
                var leaf = GetLeaf(allDimensionsTree, allDimensionsTree.GetDimensionDto((int)childDimension.ParentId), dimValue, measure, filters, legendDimension);
                xAxisRoot.XAxisLeaves.Add(leaf);
            }
            return(xAxisRoot);
        }