public IEnumerable <FlatDimensionDto> GetFilterValues(AssociationRule rule)
        {
            var ret = new List <FlatDimensionDto>();

            foreach (var condition in rule.ConditionValues)
            {
                var dimension    = _data.GetDimension(condition.Dimension.Id);
                var dimensionDto = new FlatDimensionDto
                {
                    Id              = dimension.Id,
                    Name            = dimension.Name,
                    DimensionValues = new List <DimensionValueDto>(),
                    DatasetName     = rule.MiningTask.DataSet.Name,
                    Prefix          = rule.MiningTask.DataSet.GetPrefix()
                };
                var allValues = _data.GetAllDimValues(dimension.Id);
                var dimValue  = allValues.Single(dv => dv.Value == condition.Value);
                dimensionDto.DimensionValues.Add(new DimensionValueDto
                {
                    Dimension = dimensionDto,
                    Value     = dimValue.Value,
                    Id        = _querier.GetValuesOfDimension(dimensionDto, new Column
                    {
                        Name  = Constants.String.Value,
                        Value = dimValue.Value
                    }).Single().Id
                });
                ret.Add(dimensionDto);
            }
            return(ret);
        }
Exemple #2
0
        private List <FlatDimensionDto> GetFilters(FilterViewModel filter)
        {
            var ret = new List <FlatDimensionDto>();

            // do not filter dimensions where all values are true
            foreach (var dim in filter.Dimensions)
            {
                var dimension    = Data.GetDimension(dim.DimensionId);
                var dimensionDto = new FlatDimensionDto
                {
                    Id              = dimension.Id,
                    Name            = dimension.Name,
                    DimensionValues = new List <DimensionValueDto>()
                };
                // do not include dimensions with all values checked
                if (!dim.Values.Select(v => v.Checked).Contains(false))
                {
                    continue;
                }
                foreach (var value in dim.Values)
                {
                    if (value.Checked)
                    {
                        dimensionDto.DimensionValues.Add(new DimensionValueDto {
                            Id = value.Id
                        });
                    }
                }
                ret.Add(dimensionDto);
            }
            return(ret);
        }
        private GraphXAxisLeafDto GetLeaf(DimensionTree allDimensionsTree, DimensionDto xDimension, DimensionValueDto xValue, Measure measure,
                                          List <FlatDimensionDto> filters, DimensionDto legendDimension = null)
        {
            if (legendDimension == null)
            {
                var conditionDto = new FlatDimensionDto
                {
                    Id              = xDimension.Id,
                    DatasetName     = xDimension.DatasetName,
                    Name            = xDimension.Name,
                    DimensionValues = new List <DimensionValueDto> {
                        new DimensionValueDto {
                            Id = xValue.Id
                        }
                    }
                };
                return(new DrilldownGraphXAxisLeafDto
                {
                    Id = xValue.Id,
                    Name = xValue.Value,
                    Value = _querier.GetFactTableSum(allDimensionsTree,
                                                     filters, new[] { conditionDto }.ToList(), measure)
                });
            }
            var leaf = new GroupedGraphXAxisLeafDto
            {
                Id           = xValue.Id,
                Name         = xValue.Value,
                LegendValues = new List <GraphLegendValueDto>()
            };
            var legendFilteredValues = GetFilteredValues(allDimensionsTree, legendDimension, filters, legendDimension.DimensionValues);

            foreach (var legendValue in legendFilteredValues)
            {
                var xDimensionDto = new FlatDimensionDto
                {
                    Id              = xDimension.Id,
                    DatasetName     = xDimension.DatasetName,
                    Name            = xDimension.Name,
                    DimensionValues = new[] { new DimensionValueDto {
                                                  Id = xValue.Id
                                              } }.ToList()
                };
                var legendDimensionDto = new FlatDimensionDto
                {
                    Id              = legendDimension.Id,
                    DatasetName     = legendDimension.DatasetName,
                    Name            = legendDimension.Name,
                    DimensionValues = new[] { new DimensionValueDto {
                                                  Id = legendValue.Id
                                              } }.ToList()
                };
                leaf.LegendValues.Add(new GraphLegendValueDto
                {
                    Legend = new GraphLegendDto
                    {
                        Id   = legendValue.Id,
                        Name = legendValue.Value
                    },
                    Value = _querier.GetFactTableSum(allDimensionsTree, filters, new[] { xDimensionDto, legendDimensionDto }.ToList(), measure)
                });
            }
            return(leaf);
        }