private void CreateRowLabel(IOutputCell <T> rowLabel, int colLength) { var outTxt = Center(ConcatenateKeyPairs(rowLabel != null ? rowLabel.Row : new KeyValuePair <string, string>[] { }), colLength); Console.Write(outTxt); }
private IEnumerable <int> GetLengthsOfContent(IOutputCell <T> cell) { if (cell == null) { yield return(0); } else { switch (cell.CellType) { case OutputCellType.COLUMN_LABEL: foreach (var value in cell.Column) { yield return(value.Key.Length); yield return(value.Value.Length); } break; case OutputCellType.ROW_LABEL: foreach (var value in cell.Row) { yield return(value.Key.Length); yield return(value.Value.Length); } break; case OutputCellType.DATA: foreach (var value in cell) { yield return(value.Value.ToString().Length); } break; } } }
private IEnumerable <IOutputCell <T>[]> LayerByRow(IEnumerable <IOutputCell <T> > cells, Query <T> query) { var ocells = cells.OrderBy(x => x.YCoords, _allKeysComparer).ToArray(); var colsSegments = ocells.Select(x => x.XCoords).Distinct(_pairsEqualityComparer).ToArray(); var rowSegments = ocells.Select(x => x.YCoords).Distinct(_pairsEqualityComparer).ToArray(); if (query.Axis.HasColumns) { var columns = GetColumnCells(colsSegments, query); yield return(columns.ToArray()); } var index = 0; if (query.Axis.HasColumns && query.Axis.HasRows) { foreach (var row in rowSegments) { var values = new IOutputCell <T> [colsSegments.Length + 1]; values[0] = GetRowCell(row, query); for (var i = 0; i < colsSegments.Length; i++) { if (index >= ocells.Length) { break; } var cell = ocells[index]; if (_pairsEqualityComparer.Equals(cell.YCoords, row)) { var cindex = Array.FindIndex(colsSegments, x => _pairsEqualityComparer.Equals(x, cell.XCoords)); if (cindex >= 0) { values[cindex + 1] = cell; index++; } } } yield return(values); } } if (query.Axis.HasColumns && !query.Axis.HasRows) { var values = new IOutputCell <T> [colsSegments.Length + 1]; values[0] = GetMeasureCell(query.MeasuresOrMetrics, OutputCellType.ROW_LABEL); for (var i = 0; i < colsSegments.Length; i++) { if (index >= ocells.Length) { break; } var cell = ocells[index]; var cindex = Array.FindIndex(colsSegments, x => _pairsEqualityComparer.Equals(x, cell.XCoords)); if (cindex >= 0) { values[cindex + 1] = cell; index++; } } yield return(values); } if (!query.Axis.HasColumns && query.Axis.HasRows) { var header = new IOutputCell <T> [2]; header[1] = GetMeasureCell(query.MeasuresOrMetrics, OutputCellType.COLUMN_LABEL); yield return(header); foreach (var row in rowSegments) { var values = new IOutputCell <T> [2]; values[0] = GetRowCell(row, query); var cell = ocells[index]; if (_pairsEqualityComparer.Equals(cell.YCoords, row)) { values[1] = cell; index++; } yield return(values); } } }