diff --git a/internal/tui/render.go b/internal/tui/render.go index 635a8ca..d6baa99 100644 --- a/internal/tui/render.go +++ b/internal/tui/render.go @@ -108,8 +108,12 @@ func (m *model) viewVirtualsList() string { } for i, v := range m.virtuals { - line := fmt.Sprintf(" %-25s %-12s %d members %s", - v.Name, v.PackageType, len(v.Members), v.Description) + parallel := "-" + if v.ParallelFetch { + parallel = "parallel" + } + line := fmt.Sprintf(" %-25s %-12s %3d members %-8s %s", + v.Name, v.PackageType, len(v.Members), parallel, v.Description) if i == m.cursor { sb.WriteString(selStyle.Render(line)) } else { diff --git a/ui/src/api/types.ts b/ui/src/api/types.ts index 5bc4257..4d00a82 100644 --- a/ui/src/api/types.ts +++ b/ui/src/api/types.ts @@ -31,6 +31,7 @@ export interface Virtual { description: string; members: string[]; managed_by: string; + parallel_fetch: boolean; created_at: string; updated_at: string; } diff --git a/ui/src/pages/Virtuals.tsx b/ui/src/pages/Virtuals.tsx index 41dceb1..0920db8 100644 --- a/ui/src/pages/Virtuals.tsx +++ b/ui/src/pages/Virtuals.tsx @@ -26,6 +26,8 @@ export function Virtuals() { .finally(() => setLoading(false)); }, []); + const selected = virtuals.find(x => x.name === expanded); + function memberLink(name: string) { const remote = remoteMap[name]; if (remote?.repo_type === 'local') { @@ -67,6 +69,13 @@ export function Virtuals() { header: 'Description', render: (v: Virtual) => v.description || —, }, + { + key: 'parallel', + header: 'Parallel', + render: (v: Virtual) => + v.parallel_fetch ? parallel : —, + width: '100px', + }, { key: 'managed', header: 'Managed', @@ -81,30 +90,23 @@ export function Virtuals() { /> )} - {expanded && ( + {selected && (
-

Members of {expanded}

+

Members of {selected.name}

- {(() => { - const v = virtuals.find(x => x.name === expanded); - return v ? ( - - ) : null; - })()} +
)}