private DataTable getPivotedTable(DataTable table, CurveData <TXValue, TYValue> firstCurve) { const string tableNameSuffix = " Pivoted"; if (firstCurve == null) { return(new DataTable(tableNameSuffix)); } var pivoter = new Pivoter(); var dataFields = GetDataFields(firstCurve); var aggregate = new Aggregate <float, float> { Aggregation = floats => floats.FirstOrDefault(), Name = dataFields.Count == 1 ? dataFields[0] : string.Empty }; var pivotInfo = new PivotInfo(rowFields: GetRowFields(firstCurve), dataFields: dataFields, columnFields: new[] { PANE_CAPTION, CURVE_CAPTION }, aggregates: new[] { aggregate }); var pivotTable = pivoter.PivotData(table.DefaultView, pivotInfo); pivotTable.TableName += tableNameSuffix; //purge empty columns foreach (var column in getEmptyColumns(pivotTable)) { pivotTable.Columns.Remove(column); } PerformSpecificTransformationOnPivotedTable(pivotTable); return(pivotTable); }
public override string TeXChunk(PivotTable table) { var captionText = _builderRepository.ChunkFor(table.Caption); var pivoter = new Pivoter(); var pivotData = pivoter.PivotData(table.Data, table.PivotInfo); return(TableWriter.PivotTable(captionText, table.Label, pivotData.DefaultView, table.Data.Table, table.PivotInfo, table.TexTranslations, table.Converter, _builderRepository)); }