Show parallel fetch as its own column in UI and TUI
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful

This commit is contained in:
2026-10-25 19:19:20 +11:00
parent 8cad89db68
commit 00c67879ce
2 changed files with 26 additions and 27 deletions
+3 -3
View File
@@ -108,11 +108,11 @@ func (m *model) viewVirtualsList() string {
} }
for i, v := range m.virtuals { for i, v := range m.virtuals {
parallel := "" parallel := "-"
if v.ParallelFetch { if v.ParallelFetch {
parallel = "parallel " parallel = "parallel"
} }
line := fmt.Sprintf(" %-25s %-12s %d members %s%s", line := fmt.Sprintf(" %-25s %-12s %3d members %-8s %s",
v.Name, v.PackageType, len(v.Members), parallel, v.Description) v.Name, v.PackageType, len(v.Members), parallel, v.Description)
if i == m.cursor { if i == m.cursor {
sb.WriteString(selStyle.Render(line)) sb.WriteString(selStyle.Render(line))
+23 -24
View File
@@ -26,6 +26,8 @@ export function Virtuals() {
.finally(() => setLoading(false)); .finally(() => setLoading(false));
}, []); }, []);
const selected = virtuals.find(x => x.name === expanded);
function memberLink(name: string) { function memberLink(name: string) {
const remote = remoteMap[name]; const remote = remoteMap[name];
if (remote?.repo_type === 'local') { if (remote?.repo_type === 'local') {
@@ -67,6 +69,13 @@ export function Virtuals() {
header: 'Description', header: 'Description',
render: (v: Virtual) => v.description || <span className="text-muted">—</span>, render: (v: Virtual) => v.description || <span className="text-muted">—</span>,
}, },
{
key: 'parallel',
header: 'Parallel',
render: (v: Virtual) =>
v.parallel_fetch ? <Badge variant="green">parallel</Badge> : <span className="text-muted">—</span>,
width: '100px',
},
{ {
key: 'managed', key: 'managed',
header: 'Managed', header: 'Managed',
@@ -81,33 +90,23 @@ export function Virtuals() {
/> />
)} )}
{expanded && ( {selected && (
<div className="virtual-detail-panel"> <div className="virtual-detail-panel">
<h3 className="section-label">Members of {expanded}</h3> <h3 className="section-label">Members of {selected.name}</h3>
<p className="text-muted">
Parallel fetch: {virtuals.find(v => v.name === expanded)?.parallel_fetch ? 'enabled' : 'disabled'}
</p>
<ul className="member-list"> <ul className="member-list">
{virtuals {selected.members?.map((m, i) => {
.find(v => v.name === expanded) const remote = remoteMap[m];
?.members?.map((m, i) => { const typeLabel = remote?.repo_type === 'local' ? 'local' : 'remote';
const remote = remoteMap[m]; return (
const typeLabel = remote?.repo_type === 'local' ? 'local' : 'remote'; <li key={m}>
return ( <span className="member-priority">{i + 1}</span>
<li key={m}> <Link to={memberLink(m)} className="mono">{m}</Link>
<span className="member-priority">{i + 1}</span> <Badge variant={typeLabel === 'local' ? 'yellow' : 'default'}>{typeLabel}</Badge>
<Link to={memberLink(m)} className="mono">{m}</Link> </li>
<Badge variant={typeLabel === 'local' ? 'yellow' : 'default'}>{typeLabel}</Badge> );
</li> })}
);
})}
</ul> </ul>
{(() => { <UsageInstructions packageType={selected.package_type} repoClass="virtual" name={selected.name} defaultOpen />
const v = virtuals.find(x => x.name === expanded);
return v ? (
<UsageInstructions packageType={v.package_type} repoClass="virtual" name={v.name} defaultOpen />
) : null;
})()}
</div> </div>
)} )}
</div> </div>