refactor: change portfolio list output format from table to line-based
- Replace Rich Table format with line-based output for portfolio list display - Each portfolio item now displays as individual key-value pairs - Simplified output structure with better readability - Update test assertion to match new output format
This commit is contained in:
+16
-23
@@ -39,29 +39,22 @@ def to_plain_data(value: Any) -> Any:
|
||||
|
||||
|
||||
def print_portfolio_table(console: Console, portfolios: list[PortfolioListItem]) -> None:
|
||||
table = Table(title="Portfolios", expand=True)
|
||||
table.add_column("ID", style="cyan", no_wrap=True)
|
||||
table.add_column("Broker")
|
||||
table.add_column("Status", no_wrap=True)
|
||||
table.add_column("Symbol", no_wrap=True)
|
||||
table.add_column("Cash", justify="right")
|
||||
table.add_column("Qty", justify="right")
|
||||
table.add_column("Price", justify="right")
|
||||
table.add_column("Buffer", justify="right")
|
||||
table.add_column("Total", justify="right")
|
||||
for item in portfolios:
|
||||
table.add_row(
|
||||
item.portfolio_id,
|
||||
item.broker,
|
||||
item.status,
|
||||
item.symbol,
|
||||
format_currency(item.cash_balance),
|
||||
f"{item.asset_quantity:g}",
|
||||
format_currency(item.price),
|
||||
format_currency(item.profit_buffer),
|
||||
format_currency(item.total_value),
|
||||
)
|
||||
console.print(table)
|
||||
for i, item in enumerate(portfolios):
|
||||
if i > 0:
|
||||
console.print()
|
||||
lines = [
|
||||
f"id: {item.portfolio_id}",
|
||||
f"broker: {item.broker}",
|
||||
f"status: {item.status}",
|
||||
f"symbol: {item.symbol}",
|
||||
f"cash: {format_currency(item.cash_balance)}",
|
||||
f"qty: {item.asset_quantity:g}",
|
||||
f"price: {format_currency(item.price)}",
|
||||
f"buffer: {format_currency(item.profit_buffer)}",
|
||||
f"total: {format_currency(item.total_value)}",
|
||||
]
|
||||
for line in lines:
|
||||
console.print(line)
|
||||
|
||||
|
||||
def print_portfolio_detail(console: Console, detail: PortfolioDetailResponse) -> None:
|
||||
|
||||
+1
-1
@@ -507,7 +507,7 @@ def test_cli_list_renders_table() -> None:
|
||||
|
||||
assert result.exit_code == 0
|
||||
assert "005930:tv" in result.stdout
|
||||
assert "Portfolios" in result.stdout
|
||||
assert "id: 005930:tv" in result.stdout
|
||||
|
||||
|
||||
def test_cli_status_supports_json_output() -> None:
|
||||
|
||||
Reference in New Issue
Block a user