-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Add flow filter combobox to /runs page #19724
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
- Add FlowFilter component with multi-select combobox for filtering flow runs by specific flows - Support searching/filtering within the dropdown - Wire selected flows to URL query parameter (?flows=uuid1,uuid2) - Sync flow filter to flow runs query using flow_id parameter - Reset pagination to page 1 when filter changes - Add MSW mock for /flows/filter endpoint - Add unit tests for FlowFilter component - Add Storybook story for FlowFilter component Co-Authored-By: [email protected] <[email protected]>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
- Add selectedFlows and onFlowFilterChange props to RunsPageWithState in story - Add required operator property to flows filter in route Co-Authored-By: [email protected] <[email protected]>
| search: (prev) => ({ | ||
| ...prev, | ||
| flows: flowsArray.length > 0 ? flowsArray.join(",") : "", | ||
| page: 1, // Reset pagination when filter changes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If there are no results after the filter is applied then the pagination shows Page 1 of 0. It should show Page 0 of 0 in this case.
| aria-label="All flows" | ||
| onSelect={handleClearAll} | ||
| closeOnSelect={false} | ||
| selected={selectedFlows.size === 0} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| selected={selectedFlows.size === 0} |
| > | ||
| <Checkbox | ||
| checked={selectedFlows.size === 0} | ||
| className="mr-2 pointer-events-none" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| className="mr-2 pointer-events-none" |
| > | ||
| <Checkbox | ||
| checked={selectedFlows.has(flow.id)} | ||
| className="mr-2 pointer-events-none" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| className="mr-2 pointer-events-none" |
| aria-label={flow.name} | ||
| onSelect={() => handleSelectFlow(flow.id)} | ||
| closeOnSelect={false} | ||
| selected={selectedFlows.has(flow.id)} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| selected={selectedFlows.has(flow.id)} |
- Fix pagination to show 'Page 0 of 0' when no results (instead of 'Page 1 of 0') - Remove redundant 'selected' prop from ComboboxCommandItem (using Checkbox instead) - Remove 'className' from Checkbox components Co-Authored-By: [email protected] <[email protected]>
Adds a flow filter combobox to the /runs page that allows filtering flow runs by specific flows. This is part of the Vue to React UI migration effort.
Changes
FlowFiltercomponent with multi-select combobox for filtering flow runs by specific flows?flows=uuid1,uuid2)flowsfilter parameter/flows/filterendpointUpdates since last revision
selectedFlowsandonFlowFilterChangeprops to Storybook storyoperator: "and_"property to flows filterselectedprop from ComboboxCommandItem (using Checkbox for selection state instead)classNamefrom Checkbox componentsHuman Review Checklist
{ operator: "and_", id: { any_: flowIds } }matches the backend contract for/flow_runs/paginatefilteredFlowsuseMemo inflow-filter.tsx(lines 103-109) does client-side filtering even though the API already filters by name - verify this is intentional or remove if redundantLink to Devin run: https://app.devin.ai/sessions/c928c537967849dca2836e219e6d2311
Requested by: [email protected] (@desertaxle)
Checklist
<link to issue>"mint.json.