Skip to content

Commit 3fdeb0f

Browse files
AndyCrossIvan Gavryliuk
authored and
Ivan Gavryliuk
committed
Parq wide - Implement horizontal (tensorflow#71)
* As part of tensorflow#69 refactor to break views from core dataset manipulation * tensorflow#69 Allow for navigatable data sets that are wide
1 parent 4fe2758 commit 3fdeb0f

File tree

8 files changed

+272
-102
lines changed

8 files changed

+272
-102
lines changed

src/parq/Display/ColumnDetails.cs

+34-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,42 @@
44

55
namespace parq.Display
66
{
7-
internal class ColumnDetails
7+
public class ColumnDetails
88
{
99
public string columnName { get; set; }
1010
public int columnWidth { get; set; }
11+
12+
public string GetFormattedValue(object rawValue)
13+
{
14+
var value = Convert.ToString(rawValue);
15+
var formatted = new StringBuilder();
16+
var padReq = columnWidth - value.Length;
17+
18+
if (padReq > 0)
19+
{
20+
for (int k = 0; k < padReq; k++)
21+
{
22+
formatted.Append(" ");
23+
}
24+
formatted.Append(value);
25+
}
26+
else if (padReq < 0)
27+
{
28+
if (columnWidth > 3)
29+
{
30+
formatted.Append(value.Substring(0, columnWidth - 3));
31+
formatted.Append("...");
32+
}
33+
else
34+
{
35+
formatted.Append(value.Substring(0, columnWidth));
36+
}
37+
}
38+
else
39+
{
40+
formatted.Append(value);
41+
}
42+
return formatted.ToString();
43+
}
1144
}
1245
}

src/parq/Display/ConsoleSheet.cs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace parq.Display
6+
{
7+
public class ConsoleSheet
8+
{
9+
public IEnumerable<ColumnDetails> Columns { get; set; }
10+
public int IndexStart { get; set; }
11+
public int IndexEnd { get; set; }
12+
}
13+
}

src/parq/Display/DisplayController.cs

+9-62
Original file line numberDiff line numberDiff line change
@@ -8,46 +8,24 @@ namespace parq.Display
88
{
99
internal class DisplayController
1010
{
11-
public void Draw(ParquetDataSet dataSet)
11+
public ViewModel Get(ParquetDataSet dataSet)
1212
{
13-
Console.Clear();
14-
var viewPort = new ViewPort();
13+
var viewModel = new ViewModel();
14+
var columns = GenerateColumnList(dataSet);
15+
viewModel.Columns = columns;
16+
viewModel.Rows = new List<object[]>();
1517

16-
var chosenHeaders = GenerateColumnList(dataSet);
17-
DrawLine(chosenHeaders);
18-
WriteHeaderLine(chosenHeaders);
19-
DrawLine(chosenHeaders);
20-
WriteValues(dataSet, chosenHeaders);
21-
DrawLine(chosenHeaders);
22-
WriteSummary(dataSet);
23-
}
24-
25-
private void WriteSummary(ParquetDataSet dataSet)
26-
{
27-
Console.WriteLine("{0} Rows Affected. Press ENTER to quit;", dataSet.Count);
28-
}
29-
30-
private void WriteValues(ParquetDataSet dataSet, IEnumerable<ColumnDetails> chosenHeaders)
31-
{
3218
for (int i = 0; i < dataSet.Count; i++)
3319
{
3420
var row = dataSet[i];
35-
Console.Write("|");
36-
for (int j = 0; j < row.Length; j++)
37-
{
38-
var value = Convert.ToString(row[j]);
39-
var header = chosenHeaders.ElementAt(j);
40-
var viewModel = new ViewModel { Column = header, RawValue = value };
41-
Console.Write(viewModel.GetFormattedValue());
42-
Console.Write("|");
43-
}
44-
Console.WriteLine();
21+
viewModel.Rows.Add(row);
4522
}
23+
viewModel.RowCount = dataSet.Count;
24+
return viewModel;
4625
}
47-
4826
private IEnumerable<ColumnDetails> GenerateColumnList(ParquetDataSet dataSet)
4927
{
50-
var columnDetails = dataSet.ColumnNames.Select(column =>
28+
var columnDetails = dataSet.ColumnNames.Select(column =>
5129
new ColumnDetails { columnWidth = column.Length, columnName = column });
5230
var parsedSet = new List<ColumnDetails>();
5331
foreach (var column in columnDetails)
@@ -61,36 +39,5 @@ private IEnumerable<ColumnDetails> GenerateColumnList(ParquetDataSet dataSet)
6139
return parsedSet;
6240
}
6341

64-
private void WriteHeaderLine(IEnumerable<ColumnDetails> columnDetails)
65-
{
66-
Console.Write("|");
67-
foreach (string name in columnDetails.Select(cd=>cd.columnName))
68-
{
69-
if (name.Length < AppSettings.Instance.DisplayMinWidth.Value)
70-
{
71-
for (int i = 0; i < AppSettings.Instance.DisplayMinWidth.Value - name.Length; i++)
72-
{
73-
Console.Write(" ");
74-
}
75-
}
76-
Console.Write(name);
77-
Console.Write("|");
78-
}
79-
Console.Write(Environment.NewLine);
80-
}
81-
82-
private void DrawLine(IEnumerable<ColumnDetails> columnHeaderSizes)
83-
{
84-
Console.Write("|");
85-
foreach (int item in columnHeaderSizes.Select(d => d.columnWidth))
86-
{
87-
for (int i = 0; i < item; i++)
88-
{
89-
Console.Write("-");
90-
}
91-
Console.Write("|");
92-
}
93-
Console.Write(Environment.NewLine);
94-
}
9542
}
9643
}

src/parq/Display/ViewModel.cs

+4-34
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,11 @@
44

55
namespace parq.Display
66
{
7-
internal class ViewModel
7+
public class ViewModel
88
{
9-
public ColumnDetails Column { get; set; }
9+
public IEnumerable<ColumnDetails> Columns { get; set; }
1010
public object RawValue { get; set; }
11-
public string GetFormattedValue()
12-
{
13-
var value = Convert.ToString(RawValue);
14-
var formatted = new StringBuilder();
15-
var padReq = Column.columnWidth - value.Length;
16-
17-
if (padReq > 0)
18-
{
19-
for (int k = 0; k < padReq; k++)
20-
{
21-
formatted.Append(" ");
22-
}
23-
formatted.Append(value);
24-
}
25-
else if (padReq < 0)
26-
{
27-
if (Column.columnWidth > 3)
28-
{
29-
formatted.Append(value.Substring(0, Column.columnWidth - 3));
30-
formatted.Append("...");
31-
}
32-
else
33-
{
34-
formatted.Append(value.Substring(0, Column.columnWidth));
35-
}
36-
}
37-
else
38-
{
39-
formatted.Append(value);
40-
}
41-
return formatted.ToString();
42-
}
11+
public List<object[]> Rows { get; internal set; }
12+
public long RowCount { get; internal set; }
4313
}
4414
}

src/parq/Display/ViewPort.cs

+5-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@ public ViewPort() : this(Console.WindowWidth, Console.WindowHeight)
1515
}
1616
public ViewPort(int width, int height)
1717
{
18-
_width = width;
19-
_height = height;
18+
Width = width;
19+
Height = height;
2020
}
21+
22+
public int Width { get => _width; set => _width = value; }
23+
public int Height { get => _height; set => _height = value; }
2124
}
2225
}

0 commit comments

Comments
 (0)