Add link to IWC (Intergalactic Workflow Commission) curated workflows at https://iwc.galaxyproject.org/ in Galaxy's workflow list interface. Implement BOTH a tab approach and a banner approach so you can decide which works better.
- IWC has 100+ vetted bioinformatics workflows
- Current WorkflowList has 3 tabs: My workflows, Shared with me, Public workflows
- No existing IWC integration in frontend
- Uses Vue 3 + Bootstrap Vue + TypeScript
- Route-driven tab system with activeList prop
New file: client/src/components/Workflow/List/IWCContent.vue
Landing page with:
- Info about IWC (100+ curated workflows)
- List of features (tested pipelines, sample data, training, versioning)
- Prominent "Browse IWC Workflows" button with ExternalLink
- Instructions on how to import from IWC
- Bootstrap alert styling for professional appearance
File: client/src/components/Workflow/List/WorkflowList.vue
Changes:
- Update Props interface (line ~34): Add "iwc" to activeList type
- Add computed property:
const iwcTab = computed(() => props.activeList === "iwc") - Add fourth BNavItem after line ~413:
<BNavItem id="iwc" :active="activeList === 'iwc'" to="/workflows/list_iwc"> IWC Workflows </BNavItem>
- Wrap FilterMenu and ListHeader (~line 416-470) in
<div v-if="!iwcTab"> - Replace main content area (~line 473-521) with:
<IWCContent v-if="iwcTab" /> <div v-else> <!-- existing workflow cards content --> </div>
- Import IWCContent component at top
File: client/src/entry/analysis/router.js
Add after workflows/list_published route (~line 415):
{
path: "workflows/list_iwc",
component: WorkflowList,
props: (route) => ({
activeList: "iwc",
query: { ...route.query },
}),
}File: client/src/components/Workflow/List/workflowFilters.ts
Add IWC case to getWorkflowFilters() after line ~153:
} else if (activeList === "iwc") {
return new Filtering({}, undefined, false, false);Update helpHtml() function to handle "iwc" case (return empty).
File: client/src/stores/userStore.ts
Add after hasSeenUploadHelp line (~40):
const hasSeenIwcBanner = useUserLocalStorageFromHashId(
"user-store-seen-iwc-banner",
false,
hashedUserId
);Export in return statement with other exports.
New file: client/src/components/Workflow/List/IWCBanner.vue
Dismissible info alert with:
- Star icon (warning color)
- Text: "Looking for curated workflows? Check out the IWC..."
- ExternalLink to https://iwc.galaxyproject.org/
- BAlert with dismissible prop
- @dismissed handler sets hasSeenIwcBanner to true
- Left border accent (warning color)
- Flexbox layout: icon left, text right
File: client/src/components/Workflow/List/WorkflowList.vue
Changes:
- Import IWCBanner at top
- Add
<IWCBanner />after BreadcrumbHeading, before BNav tabs (~line 395)
Tab Approach:
client/src/components/Workflow/List/WorkflowList.vue- Tab and conditional renderingclient/src/entry/analysis/router.js- Route definitionclient/src/components/Workflow/List/workflowFilters.ts- Filter configclient/src/components/Workflow/List/IWCContent.vue- New component
Banner Approach:
client/src/components/Workflow/List/WorkflowList.vue- Banner integrationclient/src/stores/userStore.ts- Preference storageclient/src/components/Workflow/List/IWCBanner.vue- New component
Shared:
client/src/components/ExternalLink.vue- Used by both (existing)
Red-to-green testing per your preferences:
Tab Tests:
- Write test: Route to /workflows/list_iwc renders IWCContent
- Implement tab changes
- Write test: IWC tab shows active state
- Write test: FilterMenu/ListHeader hidden on IWC tab
- Write test: External link opens in new tab
Banner Tests:
- Write test: Banner renders on first visit
- Implement banner
- Write test: Banner dismissed persists across sessions
- Write test: Banner shows on all workflow tabs
- Write test: External link opens in new tab
Compare:
- Visibility: Which gets more clicks?
- User feedback: Which feels more natural?
- Maintenance: Banner is simpler, tab has more room for expansion
- Intrusiveness: Banner takes vertical space, tab takes nav space
Choose one, remove the other.
- Track IWC link clicks with analytics?
- Should dismissed banner ever reappear (e.g., after 30 days)?
- Show banner/tab to anonymous users same as logged-in users?
- Add direct "Import from IWC" button to WorkflowListActions?