public ClusteredReportResults GetClusteredResults() { var clusterResults = GetClusterDataSetResults(); CaptionedDendrogramData rowDendrogramData = null; if (clusterResults.RowDendrogram != null) { var captionLevels = new List <CaptionedValues>(); foreach (var headerLevel in RowHeaderLevels) { captionLevels.Add(GetRowHeaderLevel(clusterResults.DataSet.RowLabels, headerLevel)); } rowDendrogramData = new CaptionedDendrogramData(clusterResults.RowDendrogram, captionLevels); } List <CaptionedDendrogramData> columnDendrograms = new List <CaptionedDendrogramData>(); int iResultGroup = 1; Debug.Assert(iResultGroup + Properties.PivotedProperties.SeriesGroups.Count == clusterResults.DataSet.DataFrameGroups.Count); foreach (var group in Properties.PivotedProperties.SeriesGroups) { var columnDendrogramData = clusterResults.ColumnGroupDendrograms[iResultGroup]; CaptionedDendrogramData captionedDendrogramData = null; if (columnDendrogramData != null) { var captionLevels = new List <CaptionedValues>(); foreach (var headerLevel in Properties.GetColumnHeaders(group)) { captionLevels.Add(GetColumnHeaderLevel(clusterResults.DataSet.RowLabels, headerLevel)); } if (captionLevels.Count == 0) { captionLevels.Add(GetDefaultColumnHeader(clusterResults.DataSet.RowLabels, group)); } captionedDendrogramData = new CaptionedDendrogramData(columnDendrogramData, captionLevels); } columnDendrograms.Add(captionedDendrogramData); iResultGroup++; } if (columnDendrograms.All(v => null == v)) { columnDendrograms = null; } var pivotedProperties = Properties.PivotedProperties.ReorderPivots(clusterResults.DataSet.DataFrameGroups .Skip(1) .Select(group => group.FirstOrDefault()?.ColumnHeaders).Cast <IList <int> >().ToList()); pivotedProperties = pivotedProperties.ReorderItemProperties(); return(new ClusteredReportResults(clusterResults.DataSet.RowLabels, Properties.ReplacePivotedProperties(pivotedProperties), rowDendrogramData, columnDendrograms)); }
public ClusteredReportResults(IEnumerable <RowItem> rowItems, ClusteredProperties clusteredProperties, CaptionedDendrogramData rowDendrogramData, IEnumerable <CaptionedDendrogramData> columnDendrogramDatas) : base(rowItems, clusteredProperties.PivotedProperties.ItemProperties) { if (rowDendrogramData != null && rowDendrogramData.DendrogramData.LeafCount != RowItems.Count) { throw new ArgumentException(@"Row count does not match", nameof(rowDendrogramData)); } RowDendrogramData = rowDendrogramData; ClusteredProperties = clusteredProperties; var colDendrograms = ImmutableList.ValueOf(columnDendrogramDatas); if (colDendrograms != null) { if (colDendrograms.Count != clusteredProperties.PivotedProperties.SeriesGroups.Count) { throw new ArgumentException(@"Number of groups does not match", nameof(colDendrograms)); } for (int i = 0; i < colDendrograms.Count; i++) { var dendrogram = colDendrograms[i]; if (dendrogram != null && clusteredProperties.PivotedProperties.SeriesGroups[i].PivotKeys.Count != dendrogram.LeafCount) { throw new ArgumentException(@"Wrong number of columns", nameof(colDendrograms)); } } if (colDendrograms.Any(d => null != d)) { ColumnGroupDendrogramDatas = colDendrograms; } } }