public void SetData(DataSchema dataSchema, ReportResults reportResults, ClusteringSpec clusteringSpec) { _clusterSpecRows.Clear(); _clusterSpecRows.AddRange(MakeRows(dataSchema, reportResults, clusteringSpec)); comboDistanceMetric.SelectedItem = ClusterMetricType.FromName(clusteringSpec?.DistanceMetric) ?? ClusterMetricType.DEFAULT; }
public ClusteringSpec GetClusteringSpec() { var clusteringSpec = new ClusteringSpec(_clusterSpecRows.Select(row => new ClusteringSpec.ValueSpec(row.ColumnRef, row.Transform))); clusteringSpec = clusteringSpec.ChangeDistanceMetric((comboDistanceMetric.SelectedItem as ClusterMetricType)?.Name); return(clusteringSpec); }
public void ApplyLayout(ViewLayout viewLayout) { BindingListView.TransformStack = new TransformStack(viewLayout.RowTransforms, 0); foreach (var format in viewLayout.ColumnFormats) { ColumnFormats.SetFormat(format.Item1, format.Item2); } ClusteringSpec = viewLayout.ClusterSpec; }
public void ApplySort(ListSortDescriptionCollection sorts) { RowFilter = RowFilter.ChangeListSortDescriptionCollection(sorts); if (ClusteringSpec != null && sorts.Count > 0) { ClusteringSpec = ClusteringSpec.RemoveRole(ClusterRole.ROWHEADER); } // Fire an event so that the NavBar updates to show that the DataGridView is sorting OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1)); }
public ViewLayout ChangeClusterSpec(ClusteringSpec clusterSpec) { return(ChangeProp(ImClone(this), im => im.ClusterSpec = clusterSpec)); }
public static ViewLayout ReadXml(XmlReader reader) { var viewLayout = new ViewLayout(reader.GetAttribute("name")); if (reader.IsEmptyElement) { reader.ReadElementString("layout"); return(viewLayout); } reader.Read(); var columnFormats = new List <Tuple <ColumnId, ColumnFormat> >(); var rowTransforms = new List <IRowTransform>(); ClusteringSpec clusterSpec = null; while (true) { if (reader.IsStartElement("columnFormat")) { var columnFormat = ColumnFormat.EMPTY; var strWidth = reader.GetAttribute("width"); if (strWidth != null) { columnFormat = columnFormat.ChangeWidth(int.Parse(strWidth)); } columnFormat = columnFormat.ChangeFormat(reader.GetAttribute("format")); columnFormats.Add(Tuple.Create(ColumnId.ParsePersistedString(reader.GetAttribute("column")), columnFormat)); if (reader.IsEmptyElement) { reader.ReadElementString("columnFormat"); } else { reader.Skip(); } } else if (reader.IsStartElement("pivot")) { rowTransforms.Add(PivotSpec.ReadXml(reader)); } else if (reader.IsStartElement("rowFilter")) { rowTransforms.Add(RowFilter.ReadXml(reader)); } else if (reader.IsStartElement("cluster")) { clusterSpec = ClusteringSpec.ReadXml(reader); } else if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); break; } else { reader.Skip(); } } viewLayout.ColumnFormats = ImmutableList.ValueOf(columnFormats); viewLayout.RowTransforms = ImmutableList.ValueOf(rowTransforms); viewLayout.ClusterSpec = clusterSpec; return(viewLayout); }
public IEnumerable <ClusterSpecRow> MakeRows(DataSchema dataSchema, ReportResults reportResults, ClusteringSpec clusteringSpec) { var pivotedProperties = new PivotedProperties(reportResults.ItemProperties); pivotedProperties = pivotedProperties.ChangeSeriesGroups(pivotedProperties.CreateSeriesGroups()); if (clusteringSpec == null || clusteringSpec.Values.Count == 0) { clusteringSpec = ClusteringSpec.GetDefaultClusteringSpec(CancellationToken.None, reportResults, pivotedProperties); } var transforms = clusteringSpec?.ToValueTransformDictionary() ?? new Dictionary <ClusteringSpec.ColumnRef, ClusterRole>(); foreach (var p in pivotedProperties.UngroupedProperties) { var columnRef = ClusteringSpec.ColumnRef.FromPropertyDescriptor(p); if (columnRef == null) { continue; } var row = new ClusterSpecRow(columnRef, null, p.ColumnCaption.GetCaption(dataSchema.DataSchemaLocalizer), false, p.PropertyType); if (transforms.TryGetValue(columnRef, out ClusterRole transform)) { row.Transform = transform.Name; } yield return(row); } for (int columnGroupIndex = 0; columnGroupIndex < pivotedProperties.SeriesGroups.Count; columnGroupIndex++) { var group = pivotedProperties.SeriesGroups[columnGroupIndex]; foreach (var series in group.SeriesList) { var columnRef = ClusteringSpec.ColumnRef.FromPivotedPropertySeries(series); if (columnRef == null) { continue; } bool equalInAllRows = true; foreach (var propertyDescriptor in series.PropertyDescriptors) { if (reportResults.RowItems.Select(propertyDescriptor.GetValue) .Where(value => null != value).Distinct().Skip(1).Any()) { equalInAllRows = false; break; } } var row = new ClusterSpecRow(columnRef, columnGroupIndex, series.SeriesCaption.GetCaption(dataSchema.DataSchemaLocalizer), equalInAllRows, series.PropertyType); if (transforms.TryGetValue(columnRef, out ClusterRole transform)) { row.Transform = transform.Name; } yield return(row); } } }
public QueryParameters ChangeIsClusteringRequested(ClusteringSpec clusteringSpec) { return(ChangeProp(ImClone(this), im => im.ClusteringSpec = clusteringSpec)); }