Skip to content

Commit

Permalink
Parq wide - Implement horizontal (tensorflow#71)
Browse files Browse the repository at this point in the history
* As part of tensorflow#69 refactor to break views from core dataset manipulation

* tensorflow#69 Allow for navigatable data sets that are wide
  • Loading branch information
AndyCross authored and Ivan Gavryliuk committed Jul 5, 2017
1 parent 4fe2758 commit 3fdeb0f
Show file tree
Hide file tree
Showing 8 changed files with 272 additions and 102 deletions.
35 changes: 34 additions & 1 deletion src/parq/Display/ColumnDetails.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,42 @@

namespace parq.Display
{
internal class ColumnDetails
public class ColumnDetails
{
public string columnName { get; set; }
public int columnWidth { get; set; }

public string GetFormattedValue(object rawValue)
{
var value = Convert.ToString(rawValue);
var formatted = new StringBuilder();
var padReq = columnWidth - value.Length;

if (padReq > 0)
{
for (int k = 0; k < padReq; k++)
{
formatted.Append(" ");
}
formatted.Append(value);
}
else if (padReq < 0)
{
if (columnWidth > 3)
{
formatted.Append(value.Substring(0, columnWidth - 3));
formatted.Append("...");
}
else
{
formatted.Append(value.Substring(0, columnWidth));
}
}
else
{
formatted.Append(value);
}
return formatted.ToString();
}
}
}
13 changes: 13 additions & 0 deletions src/parq/Display/ConsoleSheet.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace parq.Display
{
public class ConsoleSheet
{
public IEnumerable<ColumnDetails> Columns { get; set; }
public int IndexStart { get; set; }
public int IndexEnd { get; set; }
}
}
71 changes: 9 additions & 62 deletions src/parq/Display/DisplayController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,46 +8,24 @@ namespace parq.Display
{
internal class DisplayController
{
public void Draw(ParquetDataSet dataSet)
public ViewModel Get(ParquetDataSet dataSet)
{
Console.Clear();
var viewPort = new ViewPort();
var viewModel = new ViewModel();
var columns = GenerateColumnList(dataSet);
viewModel.Columns = columns;
viewModel.Rows = new List<object[]>();

var chosenHeaders = GenerateColumnList(dataSet);
DrawLine(chosenHeaders);
WriteHeaderLine(chosenHeaders);
DrawLine(chosenHeaders);
WriteValues(dataSet, chosenHeaders);
DrawLine(chosenHeaders);
WriteSummary(dataSet);
}

private void WriteSummary(ParquetDataSet dataSet)
{
Console.WriteLine("{0} Rows Affected. Press ENTER to quit;", dataSet.Count);
}

private void WriteValues(ParquetDataSet dataSet, IEnumerable<ColumnDetails> chosenHeaders)
{
for (int i = 0; i < dataSet.Count; i++)
{
var row = dataSet[i];
Console.Write("|");
for (int j = 0; j < row.Length; j++)
{
var value = Convert.ToString(row[j]);
var header = chosenHeaders.ElementAt(j);
var viewModel = new ViewModel { Column = header, RawValue = value };
Console.Write(viewModel.GetFormattedValue());
Console.Write("|");
}
Console.WriteLine();
viewModel.Rows.Add(row);
}
viewModel.RowCount = dataSet.Count;
return viewModel;
}

private IEnumerable<ColumnDetails> GenerateColumnList(ParquetDataSet dataSet)
{
var columnDetails = dataSet.ColumnNames.Select(column =>
var columnDetails = dataSet.ColumnNames.Select(column =>
new ColumnDetails { columnWidth = column.Length, columnName = column });
var parsedSet = new List<ColumnDetails>();
foreach (var column in columnDetails)
Expand All @@ -61,36 +39,5 @@ private IEnumerable<ColumnDetails> GenerateColumnList(ParquetDataSet dataSet)
return parsedSet;
}

private void WriteHeaderLine(IEnumerable<ColumnDetails> columnDetails)
{
Console.Write("|");
foreach (string name in columnDetails.Select(cd=>cd.columnName))
{
if (name.Length < AppSettings.Instance.DisplayMinWidth.Value)
{
for (int i = 0; i < AppSettings.Instance.DisplayMinWidth.Value - name.Length; i++)
{
Console.Write(" ");
}
}
Console.Write(name);
Console.Write("|");
}
Console.Write(Environment.NewLine);
}

private void DrawLine(IEnumerable<ColumnDetails> columnHeaderSizes)
{
Console.Write("|");
foreach (int item in columnHeaderSizes.Select(d => d.columnWidth))
{
for (int i = 0; i < item; i++)
{
Console.Write("-");
}
Console.Write("|");
}
Console.Write(Environment.NewLine);
}
}
}
38 changes: 4 additions & 34 deletions src/parq/Display/ViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,11 @@

namespace parq.Display
{
internal class ViewModel
public class ViewModel
{
public ColumnDetails Column { get; set; }
public IEnumerable<ColumnDetails> Columns { get; set; }
public object RawValue { get; set; }
public string GetFormattedValue()
{
var value = Convert.ToString(RawValue);
var formatted = new StringBuilder();
var padReq = Column.columnWidth - value.Length;

if (padReq > 0)
{
for (int k = 0; k < padReq; k++)
{
formatted.Append(" ");
}
formatted.Append(value);
}
else if (padReq < 0)
{
if (Column.columnWidth > 3)
{
formatted.Append(value.Substring(0, Column.columnWidth - 3));
formatted.Append("...");
}
else
{
formatted.Append(value.Substring(0, Column.columnWidth));
}
}
else
{
formatted.Append(value);
}
return formatted.ToString();
}
public List<object[]> Rows { get; internal set; }
public long RowCount { get; internal set; }
}
}
7 changes: 5 additions & 2 deletions src/parq/Display/ViewPort.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@ public ViewPort() : this(Console.WindowWidth, Console.WindowHeight)
}
public ViewPort(int width, int height)
{
_width = width;
_height = height;
Width = width;
Height = height;
}

public int Width { get => _width; set => _width = value; }
public int Height { get => _height; set => _height = value; }
}
}
Loading

0 comments on commit 3fdeb0f

Please sign in to comment.