[ML] Replaces Select Data View page with inline data source picker in AIOps and Data Visualizer pages#266672
[ML] Replaces Select Data View page with inline data source picker in AIOps and Data Visualizer pages#266672KodeRad wants to merge 32 commits into
Conversation
|
@KodeRad this is shaping up well! Dropping some other early feedback in this thread:
Screen.Recording.2026-05-01.at.14.18.10.mov
|
|
Catch flakiness early (recommended): run the flaky test runner against this PR before merging. The data drift source selection flow now opens an inline popover instead of navigating to a separate page, introducing new async UI interactions (popover open → filter → click) that are timing-sensitive. Trigger a run with the Flaky Test Runner UI or post this comment on the PR: Share feedback in the #appex-qa channel. Posted via Macroscope — Flaky Test Runner nudge |
3fff743 to
affeed1
Compare
affeed1 to
c343079
Compare
5d050cb to
7f8c6f0
Compare
53cee7b to
aff39e6
Compare
…ata Drift and AIOps pages
- Updated DataSourcePicker component to include a new prop `requireTimeBased`, which filters data views to only those with a time field. - Modified ChangePointDetectionPage, LogCategorizationPage, and LogRateAnalysisPage to utilize the updated DataSourcePicker with the new prop. - Removed obsolete AIOps breadcrumbs from routing files to streamline navigation. This change improves the user experience by ensuring that only relevant data views are presented in the picker for time-sensitive analyses.
- Changed the navigation paths for the Log Categorization, Log Rate Analysis, and Change Point Detection buttons in the OverviewPage component to reflect updated routes. - This improves the accuracy of navigation within the AIOps section of the application.
- Enhanced the DataVisualizerStateContextProvider and IndexDataVisualizer components to accept a new `headerContent` prop, allowing for customizable header content. - Updated IndexDataVisualizerView to render the `headerContent` within the layout, improving flexibility for displaying additional information. - Implemented similar changes in ChangePointDetectionPage, LogCategorizationPage, and LogRateAnalysisPage to handle scenarios where no data view is selected, displaying an empty prompt along with the header content. This update enhances the user experience by providing more context and information in the data visualizer components.
- Updated ChangePointDetectionPage, LogCategorizationPage, and LogRateAnalysisPage to include a new `pageTitle` prop, enhancing the header content flexibility. - Modified MlDataSourcePicker to add a `title` attribute to the trigger for improved accessibility.
…izer components - Updated FileDataVisualizerPage and IndexDataVisualizerPage to call getMlNodeCount within a useEffect hook, ensuring it runs only once on component mount. - This change improves performance and adheres to React best practices for managing side effects.
…er usage - Introduced a mock implementation for OpenSessionPanel in the Discover plugin to enhance testing capabilities. - Simplified the usage of MlDataSourcePicker across various AIOps components by removing the currentSavedSearch prop, streamlining the component's interface and improving code clarity.
- Removed the OpenSessionPanel from the Discover plugin - Updated the DiscoverStart interface to reflect the removal of OpenSessionPanel, ensuring type consistency across the application. - Adjusted the MlDataSourcePicker to utilize the new MlOpenSessionFlyout component for session management, enhancing the user experience.
|
Pinging @elastic/ml-ui (:ml) |
peteharverson
left a comment
There was a problem hiding this comment.
Tested latest changes and LGTM
🤖 GitHub commentsExpand to view the GitHub comments
Just comment with:
|
nreese
left a comment
There was a problem hiding this comment.
compressed unified search prop LGTM
code review only
| body={ | ||
| <p> | ||
| <FormattedMessage | ||
| id="xpack.ml.indexDataVisualizer.noDataViewBody" |
There was a problem hiding this comment.
super duper nit: since they are all the same messages across 3 places within ml, maybe xpack.ml.common.noDataViewBody is sufficient here
yansavitski
left a comment
There was a problem hiding this comment.
x-pack/solutions/search/plugins/serverless_search/public/navigation_tree.ts and x-pack/solutions/search/plugins/enterprise_search/public/navigation_tree.ts LGTM
💛 Build succeeded, but was flaky
Failed CI StepsMetrics [docs]Module Count
Async chunks
Page load bundle
Unknown metric groupsasync chunk count
ESLint disabled line counts
Total ESLint disabled count
History
cc @KodeRad |
Kibana Exploratory Testing — execution reportRun Metadata
FindingsNo findings -- all journeys completed without issues. Additional detailsScreenshotsScreenshots are available in the workflow artifacts. Workflow run: View workflow run |

Summary
Fixes #231608
Removes the intermediate Select Data View page and replaces it with an inline data source picker embedded in the page header for AIOps tools (Log Rate Analysis, Log Pattern Analysis, Change Point Detection) and Data Visualizer pages (Index data visualizer, Data drift). Users navigate directly to the analysis page and pick or switch the data view/Discover session inline, without an extra selection step.
Changes
New
MlDataSourcePickercomponent (@kbn/aiops-components)DataViewPickerMlOpenSessionFlyoutMlOpenSessionFlyout— flyout backed bySavedObjectFinderlisting saved Discover sessions (ES|QL sessions filtered out)Routing & navigation
DATA_VISUALIZER_INDEX_SELECTandDATA_DRIFT_INDEX_SELECTroute constants and their route handlersDataSourceContextProviderresolves the data view from the query-string (?index=/?savedSearchId=)indexDataVisualizerPagedeep-link IDPage headings & selector cards
Data Drift page
PageHeadernow accepts an optionalheaderContentprop; when provided it renders the inline picker in place of the plain data-view titleEuiPageHeaderto a manualEuiFlexGroupfor finer controlIndex data visualizer
DataVisualizerDataViewManagementpopover component; field-editor access moved intoMlDataSourcePicker'sonAddFieldUnified Search
DataViewPickercompressed?: booleanprop (defaulttrue) so ML's inline header picker can render at standard height without breaking existing toolbar usagesSolution navigation trees
indexDataVisualizerPagedeep link node from Observability, Serverless Observability, Enterprise Search, Serverless Search, and Security ML navigation treesTests
tsdb_logs_data_visualizer) updated to use the inline picker instead ofsavedObjectsFinderTableonChangeDataView, Discover session flyout open/close/select,onDataViewCreated,onAddFieldguarded by permissionsTest plan
DataViewPicker compressed={false}renders at standard height in the page header; existing toolbar usage (compressed={true}default) is unaffectedScreenshots
🤖 Generated with Claude Code Reviewed by Human