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