Skip to content

Conversation

@vojtechszocs
Copy link
Contributor

  • ConsoleDataView component prop initialFilters is now optional
  • GetDataViewRows type now has TCustomRowData type param fallback

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 11, 2025
@openshift-ci openshift-ci bot requested review from cajieh and kyoto November 11, 2025 18:09
@openshift-ci openshift-ci bot added component/core Related to console core functionality component/helm Related to helm-plugin approved Indicates a PR has been approved by an approver from all required OWNERS files. component/monitoring Related to monitoring labels Nov 11, 2025
@vojtechszocs vojtechszocs force-pushed the data-view-improvements branch from dd8bd06 to 341fbf3 Compare November 11, 2025 18:13
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 11, 2025
* Maps Console `RowProps` data to DataView compatible format.
*/
export type GetDataViewRows<TData, TCustomRowData> = (
export type GetDataViewRows<TData, TCustomRowData = any> = (
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using any instead of unknown for compatibility with existing RowProps signature

RowProps<D, R extends any = {}>

@vojtechszocs vojtechszocs changed the title Improvements to Console DataView code CONSOLE-4838: Improvements to Console DataView code Nov 11, 2025
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Nov 11, 2025
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Nov 11, 2025

@vojtechszocs: This pull request references CONSOLE-4838 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "4.21.0" version, but no target version was set.

In response to this:

  • ConsoleDataView component prop initialFilters is now optional
  • GetDataViewRows type now has TCustomRowData type param fallback

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@rhamilto
Copy link
Member

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 11, 2025
@vojtechszocs
Copy link
Contributor Author

This PR contains code improvements, no impact on existing functionality or docs.

/label px-approved
/label docs-approved

@openshift-ci openshift-ci bot added px-approved Signifies that Product Support has signed off on this PR docs-approved Signifies that Docs has signed off on this PR labels Nov 12, 2025
@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 13, 2025
@vojtechszocs vojtechszocs force-pushed the data-view-improvements branch from 341fbf3 to c50c9f5 Compare November 19, 2025 18:07
@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Nov 19, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 19, 2025

Walkthrough

ConsoleDataView now exposes an exported initialFiltersDefault and makes initialFilters optional; GetDataViewRows gained a default for its second generic parameter. Many list components stopped passing initialFiltersDefault or replaced inline filter objects with memoized initialFilters. Several getDataViewRows type annotations were simplified.

Changes

Cohort / File(s) Summary
Core type & component updates
frontend/packages/console-app/src/components/data-view/types.ts, frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx
Added default TCustomRowData = any to GetDataViewRows; made ConsoleDataViewProps.initialFilters optional; introduced exported initialFiltersDefault and use it as the component fallback when initialFilters is not provided.
Removed initialFiltersDefault imports / props
frontend/public/components/*, frontend/public/components/*.*x, frontend/packages/helm-plugin/src/components/..., frontend/public/components/monitoring/... (many files)
Deleted initialFiltersDefault named imports and removed initialFilters={initialFiltersDefault} props from many ConsoleDataView usages across the codebase.
Memoized initialFilters introduced
frontend/packages/console-app/src/components/nodes/NodesPage.tsx, frontend/packages/helm-plugin/src/components/list-page/HelmReleaseList.tsx, frontend/public/components/RBAC/bindings.tsx, frontend/public/components/RBAC/role.jsx, frontend/public/components/namespace.jsx, frontend/public/components/pod-list.tsx, frontend/public/components/cluster-settings/cluster-operator.tsx, frontend/public/components/template-instance.tsx, ...
Replaced inline initial filter object literals with useMemo-created initialFilters constants in several list components; some extend initialFiltersDefault with resource-specific keys (e.g., status, requester, role-kind).
GetDataViewRows type signature simplifications
many files including frontend/packages/helm-plugin/..., frontend/public/components/*
Removed explicit second generic parameter (commonly , undefined) from GetDataViewRows<...> annotations and updated corresponding getDataViewRows function/type signatures to rely on the new default generic.
Tests updated for types
frontend/packages/helm-plugin/src/components/details-page/resources/__tests__/HelmReleaseResourcesRow.spec.tsx
Adjusted test type annotations to match simplified GetDataViewRows/RowProps usage (removed explicit second generic parameter).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–30 minutes

Areas requiring extra attention:

  • Confirm type inference for GetDataViewRows<TData> usages where code previously supplied the second generic (ensure no unintended widening to any).
  • Verify ConsoleDataView fallback uses initialFiltersDefault correctly and preserves behavior for callers that previously passed it explicitly.
  • Review useMemo dependency arrays for added memoized initialFilters to avoid stale closures.
  • Search for any remaining references to initialFiltersDefault that may be unresolved.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between f61b13e and b34dc56.

📒 Files selected for processing (1)
  • frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (5)
frontend/public/components/template-instance.tsx (1)

167-167: Consider defining initialFilters as a module-level constant.

Since initialFilters has an empty dependency array and combines static values, it could be defined outside the component as a constant to avoid the memoization overhead entirely:

+const initialFilters = { ...initialFiltersDefault, status: [] };
+
 export const TemplateInstanceList: React.FC<TemplateInstanceListProps> = ({
   data,
   loaded,
   ...props
 }) => {
   const { t } = useTranslation();
   const columns = useTemplateInstanceColumns();

   const templateInstanceStatusFilterOptions = React.useMemo<DataViewFilterOption[]>(() => {
     // ...
   }, [t]);

-  const initialFilters = React.useMemo(() => ({ ...initialFiltersDefault, status: [] }), []);
frontend/public/components/cluster-settings/cluster-operator.tsx (1)

218-218: Consider defining initialFilters as a module-level constant.

Similar to the template-instance component, this initialFilters could be a module-level constant instead of using memoization:

+const initialFilters = { ...initialFiltersDefault, status: [] };
+
 export const ClusterOperatorList: React.FC<ClusterOperatorListProps> = ({
   data,
   loaded,
   ...props
 }) => {
   const { t } = useTranslation();
   const columns = useClusterOperatorColumns();

   const clusterOperatorStatusFilterOptions = React.useMemo<DataViewFilterOption[]>(() => {
     // ...
   }, [t]);

-  const initialFilters = React.useMemo(() => ({ ...initialFiltersDefault, status: [] }), []);
frontend/public/components/pod-list.tsx (1)

512-512: Consider defining initialFilters as a module-level constant.

Consistent with the pattern in other files, this could be a module-level constant to avoid memoization overhead:

+const initialFilters = { ...initialFiltersDefault, status: [] };
+
 export const PodList: FC<PodListProps> = ({
   showNamespaceOverride,
   showNodes,
   // ...
 }) => {
   const { t } = useTranslation();
   const columns = usePodsColumns(showNodes);

   const podMetrics = useSelector<RootState, UIActions.PodMetrics>(({ UI }) => {
     return UI.getIn(['metrics', 'pod']);
   });

   const columnManagementID = referenceForModel(PodModel);

   const columnLayout = useMemo<ColumnLayout>(
     // ...
   );

   const podStatusFilterOptions = useMemo<DataViewFilterOption[]>(
     // ...
   );

-  const initialFilters = useMemo(() => ({ ...initialFiltersDefault, status: [] }), []);
frontend/public/components/secret.tsx (1)

52-96: Stronger GetDataViewRows<SecretKind> typing is good; consider propagating types

Confining getDataViewRows to GetDataViewRows<SecretKind> matches how the rows are built and improves safety without changing behavior. To fully benefit, consider (optionally) tightening the surrounding types by:

  • Typing useSecretsColumns as TableColumn<SecretKind>[], and
  • Instantiating <ConsoleDataView<SecretKind>> with SecretsListProps['data'] refined to SecretKind[].

This would make the whole list pipeline consistently typed around SecretKind.

frontend/public/components/RBAC/bindings.tsx (1)

317-317: Consider simplifying the type parameters.

The second type parameter undefined can now be omitted since GetDataViewRows defaults it to any. The type could be simplified to ConsoleDataView<BindingKind, BindingFilters>.

Apply this diff to simplify:

-      <ConsoleDataView<BindingKind, undefined, BindingFilters>
+      <ConsoleDataView<BindingKind, BindingFilters>
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 5bde0aa and c50c9f5.

📒 Files selected for processing (53)
  • frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx (2 hunks)
  • frontend/packages/console-app/src/components/data-view/types.ts (1 hunks)
  • frontend/packages/console-app/src/components/nodes/NodesPage.tsx (2 hunks)
  • frontend/packages/console-app/src/components/pdb/PDBList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesRow.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/details-page/resources/__tests__/HelmReleaseResourcesRow.spec.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryRow.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/HelmReleaseList.tsx (2 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryRow.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesRow.tsx (1 hunks)
  • frontend/public/components/RBAC/bindings.tsx (3 hunks)
  • frontend/public/components/RBAC/role.jsx (2 hunks)
  • frontend/public/components/alert-manager.tsx (1 hunks)
  • frontend/public/components/build-config.tsx (1 hunks)
  • frontend/public/components/build.tsx (1 hunks)
  • frontend/public/components/cluster-settings/cluster-operator.tsx (4 hunks)
  • frontend/public/components/cluster-settings/related-objects.tsx (0 hunks)
  • frontend/public/components/configmap.tsx (1 hunks)
  • frontend/public/components/control-plane-machine-set.tsx (2 hunks)
  • frontend/public/components/cron-job.tsx (1 hunks)
  • frontend/public/components/custom-resource-definition.tsx (1 hunks)
  • frontend/public/components/daemon-set.tsx (2 hunks)
  • frontend/public/components/default-resource.tsx (1 hunks)
  • frontend/public/components/deployment-config.tsx (2 hunks)
  • frontend/public/components/deployment.tsx (2 hunks)
  • frontend/public/components/group.tsx (1 hunks)
  • frontend/public/components/hpa.tsx (1 hunks)
  • frontend/public/components/image-stream.tsx (1 hunks)
  • frontend/public/components/job.tsx (1 hunks)
  • frontend/public/components/limit-range.tsx (1 hunks)
  • frontend/public/components/machine-autoscaler.tsx (1 hunks)
  • frontend/public/components/machine-config-pool.tsx (0 hunks)
  • frontend/public/components/machine-config.tsx (1 hunks)
  • frontend/public/components/machine-health-check.tsx (1 hunks)
  • frontend/public/components/machine-set.tsx (0 hunks)
  • frontend/public/components/machine.tsx (0 hunks)
  • frontend/public/components/monitoring/alertmanager/alertmanager-config.tsx (0 hunks)
  • frontend/public/components/namespace.jsx (4 hunks)
  • frontend/public/components/pod-list.tsx (5 hunks)
  • frontend/public/components/prometheus.tsx (2 hunks)
  • frontend/public/components/replicaset.jsx (0 hunks)
  • frontend/public/components/replication-controller.jsx (0 hunks)
  • frontend/public/components/resource-quota.jsx (0 hunks)
  • frontend/public/components/secret.tsx (1 hunks)
  • frontend/public/components/service-account.jsx (0 hunks)
  • frontend/public/components/service-monitor.jsx (0 hunks)
  • frontend/public/components/stateful-set.tsx (1 hunks)
  • frontend/public/components/template-instance.tsx (4 hunks)
  • frontend/public/components/user.tsx (1 hunks)
💤 Files with no reviewable changes (10)
  • frontend/public/components/machine-set.tsx
  • frontend/public/components/resource-quota.jsx
  • frontend/public/components/replication-controller.jsx
  • frontend/public/components/machine-config-pool.tsx
  • frontend/public/components/service-account.jsx
  • frontend/public/components/service-monitor.jsx
  • frontend/public/components/cluster-settings/related-objects.tsx
  • frontend/public/components/monitoring/alertmanager/alertmanager-config.tsx
  • frontend/public/components/machine.tsx
  • frontend/public/components/replicaset.jsx
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • frontend/packages/console-app/src/components/data-view/types.ts
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesRow.tsx
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesRow.tsx
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryRow.tsx
  • frontend/public/components/secret.tsx
  • frontend/public/components/stateful-set.tsx
  • frontend/packages/console-app/src/components/nodes/NodesPage.tsx
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryList.tsx
  • frontend/public/components/build-config.tsx
  • frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryRow.tsx
  • frontend/packages/helm-plugin/src/components/list-page/HelmReleaseList.tsx
  • frontend/public/components/machine-health-check.tsx
  • frontend/public/components/build.tsx
  • frontend/public/components/RBAC/role.jsx
  • frontend/public/components/namespace.jsx
  • frontend/public/components/deployment-config.tsx
  • frontend/public/components/default-resource.tsx
  • frontend/public/components/machine-config.tsx
  • frontend/public/components/job.tsx
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesList.tsx
  • frontend/public/components/machine-autoscaler.tsx
  • frontend/public/components/daemon-set.tsx
  • frontend/public/components/hpa.tsx
  • frontend/public/components/limit-range.tsx
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesList.tsx
  • frontend/public/components/pod-list.tsx
  • frontend/public/components/deployment.tsx
  • frontend/public/components/cluster-settings/cluster-operator.tsx
  • frontend/public/components/control-plane-machine-set.tsx
  • frontend/public/components/configmap.tsx
  • frontend/public/components/image-stream.tsx
  • frontend/public/components/custom-resource-definition.tsx
  • frontend/public/components/alert-manager.tsx
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryList.tsx
  • frontend/public/components/template-instance.tsx
  • frontend/packages/helm-plugin/src/components/details-page/resources/__tests__/HelmReleaseResourcesRow.spec.tsx
  • frontend/public/components/RBAC/bindings.tsx
  • frontend/packages/console-app/src/components/pdb/PDBList.tsx
  • frontend/public/components/user.tsx
  • frontend/public/components/prometheus.tsx
  • frontend/public/components/cron-job.tsx
  • frontend/public/components/group.tsx
🔇 Additional comments (49)
frontend/public/components/alert-manager.tsx (1)

126-126: LGTM! Clean type simplification.

The removal of the second generic type parameter aligns with the broader refactor that adds a default type parameter fallback to GetDataViewRows. This reduces boilerplate while maintaining the same functionality.

frontend/public/components/cron-job.tsx (2)

93-93: LGTM: Type signature simplified correctly.

The removal of the second type parameter aligns with the PR's objective to add a default fallback to GetDataViewRows. The function implementation remains correct and consistent with the new type signature.


369-385: LGTM: ConsoleDataView usage correctly updated.

The removal of the initialFilters prop is consistent with it now being optional in ConsoleDataView. All required props are properly provided, and the component is correctly wrapped in a Suspense boundary.

frontend/public/components/custom-resource-definition.tsx (2)

300-300: LGTM! Clean type signature simplification.

The removal of the explicit undefined second generic parameter and the simplified function signature correctly align with the PR's API improvements. The function now leverages the default type parameter fallback in GetDataViewRows.


363-371: LGTM! ConsoleDataView usage correctly updated.

The removal of the initialFilters prop is appropriate since it's now optional per the PR objectives. All required props are properly provided and the component usage is consistent with the refactored API.

frontend/public/components/default-resource.tsx (3)

167-174: LGTM! Type signature simplification improves code clarity.

The removal of the explicit undefined second generic parameter from RowProps<K8sResourceKind, undefined>[] to RowProps<K8sResourceKind>[] leverages the new type parameter fallback, reducing boilerplate while maintaining type safety.


35-40: LGTM! Clean removal of unused import.

The removal of initialFiltersDefault from the import statement is correct and aligns with the prop now being optional with an internal default in ConsoleDataView.


338-355: LGTM! Simplified component usage aligns with API improvement.

The removal of the explicit initialFilters prop is appropriate now that ConsoleDataView handles this internally with an optional prop and default value. This simplifies the component usage while maintaining the same functionality.

frontend/public/components/hpa.tsx (2)

266-266: LGTM! Type signature simplification.

The removal of the second generic parameter (previously undefined) makes the type signature cleaner and more concise, aligning with the updated GetDataViewRows type definition that now provides a default fallback.


387-407: LGTM! Clean integration with optional initialFilters.

The component correctly uses ConsoleDataView without explicitly passing initialFilters, relying on the new optional prop behavior. This simplifies the component while maintaining the same functionality.

frontend/public/components/control-plane-machine-set.tsx (2)

279-279: LGTM! Type signature simplified correctly.

The removal of the second generic parameter aligns with the PR's objective to provide a default type parameter fallback for GetDataViewRows. This simplification improves code clarity without affecting functionality.


337-337: LGTM! Type signature simplified correctly.

The removal of the second generic parameter aligns with the PR's objective to make initialFilters optional in ConsoleDataView. This simplification maintains functionality while improving code clarity.

frontend/public/components/namespace.jsx (2)

425-425: LGTM! Performance optimization through memoization.

The memoized initialFilters object prevents unnecessary object recreation on each render and provides a stable reference to ConsoleDataView, which can prevent unnecessary child re-renders. The empty dependency array is appropriate since initialFiltersDefault is an imported constant.

Also applies to: 469-469


807-807: LGTM! Consistent pattern applied.

The same memoization pattern is applied consistently in ProjectList, matching the approach in NamespacesList. This provides the same performance benefits and maintains code consistency across both list components.

Also applies to: 853-853

frontend/packages/console-app/src/components/nodes/NodesPage.tsx (1)

548-551: Stable initialFilters memoization and wiring into ConsoleDataView look correct

Deriving initialFilters once with a memoized object that extends initialFiltersDefault and then passing that reference into ConsoleDataView aligns with the intended filter shape (NodeFilters) and should prevent unnecessary filter resets or re-renders; no issues spotted here.

Also applies to: 630-630

frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryRow.tsx (1)

31-31: LGTM! Type signature simplification aligns with the PR-wide refactor.

The removal of the explicit undefined second type parameter is consistent with the updated GetDataViewRows type definition that now provides a default type parameter fallback.

frontend/public/components/job.tsx (1)

78-78: LGTM! Type signature simplified correctly.

This change aligns with the PR-wide refactor to use the default type parameter for GetDataViewRows.

frontend/public/components/image-stream.tsx (1)

349-349: LGTM! Type signature update is consistent with the PR refactor.

frontend/public/components/machine-config.tsx (1)

142-142: LGTM! Type signature simplified appropriately.

frontend/public/components/build-config.tsx (1)

212-212: LGTM! Type signature update is correct.

frontend/public/components/prometheus.tsx (1)

20-86: Typed getDataViewRows alignment with GetDataViewRows<K8sResourceKind> looks correct

Importing GetDataViewRows and constraining getDataViewRows to GetDataViewRows<K8sResourceKind> matches the existing implementation shape ((data, columns) => [...]) without altering behavior, and improves type clarity around data and columns.

frontend/packages/helm-plugin/src/components/details-page/resources/__tests__/HelmReleaseResourcesRow.spec.tsx (1)

8-35: RowProps generic update is consistent with new defaulted type parameter

Dropping the explicit undefined from RowProps<K8sResourceKind, undefined>[] to RowProps<K8sResourceKind>[] matches the new RowProps signature while keeping the existing test data (rowData: undefined) valid, with no behavioral impact on the tests.

frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryList.tsx (1)

3-25: Removal of explicit initialFilters wiring in favor of ConsoleDataView defaults looks safe

Importing only ConsoleDataView and omitting initialFilters on the JSX keeps the list configuration minimal while delegating to the component’s default filter setup; the rest of the props are unchanged, so list behavior should remain consistent.

frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryList.tsx (1)

3-25: ConsoleDataView import cleanup and reliance on default filters is appropriate

Using only ConsoleDataView and dropping the explicit initialFilters prop aligns this list with the updated data-view API, reducing configuration noise while preserving the rest of the list behavior.

frontend/packages/helm-plugin/src/components/list-page/HelmReleaseList.tsx (1)

196-196: LGTM! Well-implemented memoization pattern.

The memoized initialFilters correctly merges the default filters with a custom status filter array, preventing unnecessary re-renders while maintaining the existing filter behavior.

Also applies to: 267-267

frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesList.tsx (1)

3-3: LGTM! Clean simplification.

Removing the unused initialFiltersDefault import and prop aligns with making initialFilters optional in ConsoleDataView. The component now relies on default filtering behavior.

frontend/packages/helm-plugin/src/components/list-page/RepositoriesList.tsx (1)

3-3: LGTM! Consistent refactoring.

The removal of initialFiltersDefault usage aligns with the PR's goal of making initialFilters optional. The component now uses default filtering behavior.

frontend/public/components/RBAC/role.jsx (1)

457-457: LGTM! Appropriate memoization for custom filters.

The RolesList component correctly memoizes initialFilters to include the custom role-kind filter array, while BindingsListComponent now relies on default filtering. The pattern is consistent with the broader refactoring effort.

Also applies to: 493-493

frontend/packages/helm-plugin/src/components/list-page/RepositoriesRow.tsx (1)

31-31: LGTM! Type signature simplified correctly.

The updated type signature leverages the new default type parameter for GetDataViewRows, eliminating the need to explicitly specify undefined for the second generic parameter.

frontend/public/components/configmap.tsx (1)

39-39: LGTM! Clean refactoring on multiple fronts.

The changes combine type signature simplification with the removal of explicit initialFilters usage, both aligning with the PR's improvements to the data view system.

frontend/packages/console-app/src/components/data-view/types.ts (1)

26-26: LGTM! Core type improvement with backward compatibility.

Adding the default type parameter TCustomRowData = any enables all downstream components to omit the second generic parameter when not needed. The use of any maintains compatibility with the existing RowProps signature as noted in the previous review comment.

frontend/public/components/machine-health-check.tsx (1)

36-36: LGTM! Consistent with PR-wide improvements.

The type signature update and removal of explicit initialFilters usage align perfectly with the refactoring pattern applied across the codebase, simplifying the data view implementation without functional changes.

frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesRow.tsx (1)

34-34: LGTM! Type signature simplified.

The removal of the second generic parameter improves ergonomics while maintaining type safety, as GetDataViewRows now defaults the second type parameter to any.

frontend/public/components/user.tsx (1)

73-73: LGTM! Simplified type signature.

The type signature correctly removes the explicit undefined parameter, relying on the new default behavior of GetDataViewRows.

frontend/public/components/RBAC/bindings.tsx (2)

193-193: LGTM! Type signature simplified.

The removal of the explicit undefined parameter aligns with the new GetDataViewRows default behavior.


269-270: Good use of memoized custom filters.

Correctly extends initialFiltersDefault with the custom role-kind filter for this component's specific filtering needs.

frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryRow.tsx (1)

26-26: LGTM! Type signature simplified.

Consistent with the broader refactor to make the second generic parameter optional.

frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx (3)

29-30: Good addition of default constant.

Exporting initialFiltersDefault allows components that need to extend the default filters (like bindings.tsx) to do so consistently.


43-43: LGTM! Prop now optional.

Making initialFilters optional improves the API ergonomics while maintaining backward compatibility.


109-112: Proper default handling.

The memoized fallback to initialFiltersDefault correctly implements the optional prop behavior, and the cast to TFilters is necessary for type safety.

frontend/public/components/machine-autoscaler.tsx (1)

64-64: LGTM! Type signature simplified.

Consistent with the refactor pattern across the codebase.

frontend/public/components/deployment-config.tsx (1)

299-299: LGTM! Type signature simplified.

Consistent refactor removing the explicit undefined parameter.

frontend/public/components/stateful-set.tsx (1)

23-23: LGTM! Clean import.

The import is consistent with other files in the refactor.

frontend/packages/console-app/src/components/pdb/PDBList.tsx (1)

33-33: LGTM! Type signature simplified correctly.

The update from GetDataViewRows<PodDisruptionBudgetKind, undefined> to GetDataViewRows<PodDisruptionBudgetKind> aligns with the PR's goal to add a default type parameter fallback for TCustomRowData.

frontend/public/components/deployment.tsx (1)

29-29: LGTM! Clean API simplification.

The removal of initialFiltersDefault and the simplified GetDataViewRows<DeploymentKind> type signature are consistent with making initialFilters optional in the ConsoleDataView component.

Also applies to: 223-223

frontend/public/components/daemon-set.tsx (1)

9-9: LGTM! Consistent with the PR-wide refactoring.

The changes follow the same pattern of simplifying the type signature and removing explicit initialFiltersDefault usage, which improves API ergonomics.

Also applies to: 32-32

frontend/public/components/group.tsx (1)

31-31: LGTM! Type signature correctly simplified.

The update to GetDataViewRows<GroupKind> and the removal of unused type imports streamline the code while maintaining existing functionality.

Also applies to: 36-36

frontend/public/components/build.tsx (1)

360-360: LGTM! Type signature updated correctly.

The simplified GetDataViewRows<K8sResourceKind> type aligns with the PR's objective to add a default type parameter fallback.

frontend/public/components/limit-range.tsx (1)

24-24: LGTM! Consistent refactoring applied.

The changes to import statements and type signature follow the same clean pattern applied across all reviewed files, successfully simplifying the DataView API.

Also applies to: 32-32

@vojtechszocs vojtechszocs force-pushed the data-view-improvements branch from c50c9f5 to f61b13e Compare November 19, 2025 18:14
@openshift-merge-robot openshift-merge-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Nov 19, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between c50c9f5 and f61b13e.

📒 Files selected for processing (53)
  • frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx (2 hunks)
  • frontend/packages/console-app/src/components/data-view/types.ts (1 hunks)
  • frontend/packages/console-app/src/components/nodes/NodesPage.tsx (2 hunks)
  • frontend/packages/console-app/src/components/pdb/PDBList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesRow.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/details-page/resources/__tests__/HelmReleaseResourcesRow.spec.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryRow.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/HelmReleaseList.tsx (2 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryRow.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesList.tsx (1 hunks)
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesRow.tsx (1 hunks)
  • frontend/public/components/RBAC/bindings.tsx (3 hunks)
  • frontend/public/components/RBAC/role.jsx (2 hunks)
  • frontend/public/components/alert-manager.tsx (1 hunks)
  • frontend/public/components/build-config.tsx (1 hunks)
  • frontend/public/components/build.tsx (1 hunks)
  • frontend/public/components/cluster-settings/cluster-operator.tsx (4 hunks)
  • frontend/public/components/cluster-settings/related-objects.tsx (0 hunks)
  • frontend/public/components/configmap.tsx (1 hunks)
  • frontend/public/components/control-plane-machine-set.tsx (2 hunks)
  • frontend/public/components/cron-job.tsx (1 hunks)
  • frontend/public/components/custom-resource-definition.tsx (1 hunks)
  • frontend/public/components/daemon-set.tsx (2 hunks)
  • frontend/public/components/default-resource.tsx (1 hunks)
  • frontend/public/components/deployment-config.tsx (2 hunks)
  • frontend/public/components/deployment.tsx (2 hunks)
  • frontend/public/components/group.tsx (1 hunks)
  • frontend/public/components/hpa.tsx (1 hunks)
  • frontend/public/components/image-stream.tsx (1 hunks)
  • frontend/public/components/job.tsx (1 hunks)
  • frontend/public/components/limit-range.tsx (1 hunks)
  • frontend/public/components/machine-autoscaler.tsx (1 hunks)
  • frontend/public/components/machine-config-pool.tsx (0 hunks)
  • frontend/public/components/machine-config.tsx (1 hunks)
  • frontend/public/components/machine-health-check.tsx (1 hunks)
  • frontend/public/components/machine-set.tsx (0 hunks)
  • frontend/public/components/machine.tsx (0 hunks)
  • frontend/public/components/monitoring/alertmanager/alertmanager-config.tsx (0 hunks)
  • frontend/public/components/namespace.jsx (4 hunks)
  • frontend/public/components/pod-list.tsx (5 hunks)
  • frontend/public/components/prometheus.tsx (2 hunks)
  • frontend/public/components/replicaset.jsx (0 hunks)
  • frontend/public/components/replication-controller.jsx (0 hunks)
  • frontend/public/components/resource-quota.jsx (0 hunks)
  • frontend/public/components/secret.tsx (1 hunks)
  • frontend/public/components/service-account.jsx (0 hunks)
  • frontend/public/components/service-monitor.jsx (0 hunks)
  • frontend/public/components/stateful-set.tsx (1 hunks)
  • frontend/public/components/template-instance.tsx (4 hunks)
  • frontend/public/components/user.tsx (1 hunks)
💤 Files with no reviewable changes (10)
  • frontend/public/components/cluster-settings/related-objects.tsx
  • frontend/public/components/machine-config-pool.tsx
  • frontend/public/components/replication-controller.jsx
  • frontend/public/components/machine-set.tsx
  • frontend/public/components/service-account.jsx
  • frontend/public/components/monitoring/alertmanager/alertmanager-config.tsx
  • frontend/public/components/replicaset.jsx
  • frontend/public/components/resource-quota.jsx
  • frontend/public/components/service-monitor.jsx
  • frontend/public/components/machine.tsx
🚧 Files skipped from review as they are similar to previous changes (32)
  • frontend/public/components/default-resource.tsx
  • frontend/packages/helm-plugin/src/components/details-page/resources/tests/HelmReleaseResourcesRow.spec.tsx
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesRow.tsx
  • frontend/packages/helm-plugin/src/components/details-page/resources/HelmReleaseResourcesList.tsx
  • frontend/public/components/namespace.jsx
  • frontend/public/components/hpa.tsx
  • frontend/public/components/RBAC/bindings.tsx
  • frontend/public/components/cluster-settings/cluster-operator.tsx
  • frontend/public/components/deployment-config.tsx
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryRow.tsx
  • frontend/public/components/alert-manager.tsx
  • frontend/public/components/build.tsx
  • frontend/public/components/RBAC/role.jsx
  • frontend/public/components/daemon-set.tsx
  • frontend/packages/console-app/src/components/nodes/NodesPage.tsx
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesRow.tsx
  • frontend/packages/console-app/src/components/data-view/types.ts
  • frontend/packages/helm-plugin/src/components/list-page/HelmReleaseList.tsx
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryList.tsx
  • frontend/public/components/secret.tsx
  • frontend/public/components/cron-job.tsx
  • frontend/public/components/machine-health-check.tsx
  • frontend/packages/helm-plugin/src/components/list-page/RepositoriesList.tsx
  • frontend/public/components/pod-list.tsx
  • frontend/public/components/limit-range.tsx
  • frontend/public/components/machine-autoscaler.tsx
  • frontend/public/components/deployment.tsx
  • frontend/public/components/custom-resource-definition.tsx
  • frontend/packages/helm-plugin/src/components/list-page/HelmChartRepositoryRow.tsx
  • frontend/public/components/image-stream.tsx
  • frontend/public/components/user.tsx
  • frontend/public/components/machine-config.tsx
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • frontend/public/components/stateful-set.tsx
  • frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx
  • frontend/public/components/job.tsx
  • frontend/packages/console-app/src/components/pdb/PDBList.tsx
  • frontend/public/components/build-config.tsx
  • frontend/public/components/configmap.tsx
  • frontend/public/components/prometheus.tsx
  • frontend/public/components/group.tsx
  • frontend/public/components/control-plane-machine-set.tsx
  • frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryList.tsx
  • frontend/public/components/template-instance.tsx
🔇 Additional comments (17)
frontend/public/components/control-plane-machine-set.tsx (2)

279-279: LGTM! Type signature simplified.

The removal of the second generic parameter aligns with the PR's goal to simplify GetDataViewRows typing by providing a default fallback for TCustomRowData.


337-337: LGTM! Generic parameter simplified.

The removal of the second generic parameter is consistent with the updated type definitions and improves code clarity.

frontend/public/components/group.tsx (3)

31-31: LGTM! Clean import statement.

The import cleanup appropriately removes unused types while retaining the necessary GetDataViewRows type.


36-75: LGTM! Simplified type signature.

The function signature correctly adopts the simplified generic usage (GetDataViewRows<GroupKind>) and removes the unused customData parameter, aligning with the PR objectives. The function logic remains sound.


123-135: LGTM! Simplified component usage.

The removal of the initialFilters prop is appropriate as it is now optional per the PR objectives. The component will correctly use the default filter configuration.

frontend/public/components/job.tsx (2)

78-78: Clean type simplification.

The removal of the explicit undefined second type parameter leverages the new default fallback in GetDataViewRows, making the code more concise without sacrificing type safety.


308-324: LGTM! Consistent refactoring.

The removal of the initialFilters prop aligns with the PR objective of making it optional. The component maintains all required props and functionality.

frontend/public/components/build-config.tsx (2)

136-136: LGTM: Type signature simplification.

The removal of the explicit undefined second type parameter aligns with the PR objective that GetDataViewRows now has a default fallback for TCustomRowData.


322-334: LGTM: Consistent with optional initialFilters prop.

The removal of the initialFilters prop aligns with the PR objective that ConsoleDataView component's initialFilters is now optional. The component will use default filtering behavior.

frontend/public/components/configmap.tsx (2)

39-39: LGTM! Type signature simplified correctly.

The removal of the explicit undefined second type parameter is a clean simplification now that GetDataViewRows has a default fallback for TCustomRowData.


134-142: LGTM! Removal of initialFilters prop aligns with PR objectives.

The ConsoleDataView component now uses its default filtering behavior since initialFilters is optional. This simplification is consistent with the PR's goal of making the prop optional while maintaining existing functionality.

frontend/public/components/template-instance.tsx (1)

167-167: LGTM! Memoized initial filters implementation is correct.

The memoized initialFilters properly extends initialFiltersDefault with the custom status filter field and is correctly passed to ConsoleDataView. The empty dependency array is appropriate since initialFiltersDefault is a constant, preventing unnecessary recreations on re-renders.

Also applies to: 196-196

frontend/public/components/prometheus.tsx (1)

20-86: Type update for GetDataViewRows and getDataViewRows signature looks correct

Using GetDataViewRows<K8sResourceKind> without the second generic cleanly adopts the new default type parameter, and the (data, columns) signature matches the expected ConsoleDataView API while preserving existing row-mapping behavior. No issues from a correctness, readability, or maintainability standpoint in this block.

frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx (1)

29-29: LGTM: Clear default export.

The exported initialFiltersDefault constant provides a well-defined default filter configuration that consumers can reference if needed.

frontend/packages/helm-plugin/src/components/list-page/ProjectHelmChartRepositoryList.tsx (1)

3-3: LGTM: Simplified usage aligns with optional initialFilters.

The removal of initialFiltersDefault import and prop simplifies the component code while maintaining the same filtering behavior through the new default in ConsoleDataView.

Also applies to: 16-25

frontend/public/components/stateful-set.tsx (1)

23-23: LGTM: Consistent with the optional initialFilters pattern.

The removal of explicit initialFiltersDefault usage simplifies the code while preserving the default filtering behavior.

Also applies to: 80-90

frontend/packages/console-app/src/components/pdb/PDBList.tsx (1)

33-33: LGTM: Type signature simplification and consistent prop usage.

The simplified GetDataViewRows<PodDisruptionBudgetKind> type signature leverages the new default TCustomRowData parameter, and the removal of initialFilters prop aligns with the optional prop pattern across the codebase.

Also applies to: 151-159

Comment on lines 109 to 112
const initialFiltersOrDefault = React.useMemo(
() => initialFilters ?? (initialFiltersDefault as TFilters),
[initialFilters],
);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

Type assertion may be unsafe for extended filter types.

The cast initialFiltersDefault as TFilters on line 110 assumes that TFilters only contains the name and label fields. If a consumer uses ConsoleDataView with a filter type that extends ResourceFilters with additional required fields, this assertion will compile but produce an incomplete object at runtime, potentially causing bugs.

Consider a safer approach that preserves type safety:

  const initialFiltersOrDefault = React.useMemo(
-    () => initialFilters ?? (initialFiltersDefault as TFilters),
+    () => initialFilters ?? ({ ...initialFiltersDefault } as TFilters),
    [initialFilters],
  );

Better yet, require consumers with custom filter types to always provide initialFilters, or document that TFilters must not have additional required fields beyond ResourceFilters:

// Option 1: Make initialFilters required when TFilters has extra fields
export type ConsoleDataViewProps<
  TData,
  TCustomRowData = any,
  TFilters extends ResourceFilters = ResourceFilters
> = {
  // ... other props
  initialFilters: TFilters extends ResourceFilters 
    ? TFilters | undefined 
    : TFilters;
  // ... rest
};

// Option 2: Add JSDoc warning
/**
 * @param initialFilters - Optional. When omitted, defaults to { name: '', label: '' }.
 * If TFilters extends ResourceFilters with additional fields, initialFilters must be provided.
 */

Run the following to check if any consumers are using extended filter types:


🏁 Script executed:

#!/bin/bash
# Search for ConsoleDataView usage with custom filter types that might extend ResourceFilters
rg -nP --type=tsx --type=ts 'ConsoleDataView<[^>]+,\s*[^>]+,\s*\{[^}]*\}>' -A5 -B5

Length of output: 27


🏁 Script executed:

#!/bin/bash
# Fix the search - ripgrep doesn't need type flags for ts/tsx, just use -g patterns
# First, let's look at the ConsoleDataView.tsx file to understand the types
cat frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx | head -150

Length of output: 4468


🏁 Script executed:

#!/bin/bash
# Find ResourceFilters definition
rg -n "type ResourceFilters|interface ResourceFilters" -A5

Length of output: 498


🏁 Script executed:

#!/bin/bash
# Search for ConsoleDataView usage in tsx/ts files (corrected syntax)
rg -n "ConsoleDataView<" -g "*.tsx" -g "*.ts" -A3 -B3

Length of output: 19853


🏁 Script executed:

#!/bin/bash
# Find all custom filter type definitions mentioned in ConsoleDataView usages
rg -n "type PodFilters|type HelmReleaseFilters|type TemplateInstanceFilters|type NodeFilters|type ReceiverFilters|type BindingFilters|type RelatedObjectsFilters|type ClusterOperatorFilters" -A8

Length of output: 5619


🏁 Script executed:

#!/bin/bash
# Also search for interface definitions of these filters
rg -n "interface PodFilters|interface HelmReleaseFilters|interface TemplateInstanceFilters|interface NodeFilters|interface ReceiverFilters|interface BindingFilters|interface RelatedObjectsFilters|interface ClusterOperatorFilters" -A8

Length of output: 908


🏁 Script executed:

#!/bin/bash
# Check if major consumers (PodList, HelmReleaseList, NodesPage) pass initialFilters
rg -n "ConsoleDataView<PodKind|HelmRelease|NodeRowItem" -A20 | grep -E "initialFilters|ConsoleDataView<"

Length of output: 1011


🏁 Script executed:

#!/bin/bash
# Check the useConsoleDataViewFilters function to see if it accesses extended filter fields
cat frontend/packages/console-app/src/components/data-view/useConsoleDataViewFilters.ts | head -100

Length of output: 2378


The type assertion issue is confirmed as a legitimate type safety concern.

The verification reveals that while current consumers (HelmReleaseList, PodList, NodesPage) all explicitly provide initialFilters, thereby avoiding runtime exposure to incomplete objects, the type assertion as TFilters on line 110 is genuinely unsafe. It bypasses TypeScript's type checking and creates a false sense of security.

Custom filter types like PodFilters, HelmReleaseFilters, NodeFilters, and others extend ResourceFilters with additional required fields (status, roles, architecture, etc.). If a future consumer relies on the default initialization without providing initialFilters, or if code later accesses extended filter fields from the default, an incomplete object would be passed through, potentially causing bugs.

Fix the type assertion to preserve type safety:

  const initialFiltersOrDefault = React.useMemo(
-    () => initialFilters ?? (initialFiltersDefault as TFilters),
+    () => initialFilters ?? ({ ...initialFiltersDefault } as TFilters),
    [initialFilters],
  );

Alternatively, make initialFilters required when TFilters has additional fields, or add clear documentation that custom filter types must always provide initialFilters:

/**
 * @param initialFilters - Required when TFilters extends ResourceFilters with additional fields.
 * If omitted, only { name: '', label: '' } is provided as default.
 */
🤖 Prompt for AI Agents
In frontend/packages/console-app/src/components/data-view/ConsoleDataView.tsx
around lines 109 to 112, remove the unsafe type assertion "as TFilters" and
preserve type safety by making the default value a Partial of the generic
instead of pretending it's a full TFilters: change the prop types so
initialFiltersDefault is Partial<TFilters> (or ResourceFilters) and compute
initialFiltersOrDefault as React.useMemo(() => initialFilters ??
(initialFiltersDefault as Partial<TFilters>), [initialFilters,
initialFiltersDefault]) (i.e. stop asserting the default is a full TFilters),
then add a short JSDoc on the component props stating that callers must supply
initialFilters when their TFilters extend ResourceFilters with additional
required fields (or alternatively make initialFilters required for those flavors
via a conditional generic in props).

columnLayout?: ColumnLayout;
columnManagementID?: string;
initialFilters: TFilters;
initialFilters?: TFilters;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this work to remove the useMemo in line 109?

Suggested change
initialFilters?: TFilters;
initialFilters?: TFilters = initialFilters;

Copy link
Member

@logonoff logonoff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Nov 19, 2025
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 19, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: logonoff, rhamilto, vojtechszocs

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@vojtechszocs
Copy link
Contributor Author

/retest

1 similar comment
@vojtechszocs
Copy link
Contributor Author

/retest

@vojtechszocs
Copy link
Contributor Author

Local build and testing shows there are no issues

/verified by vojtechszocs

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Nov 20, 2025
@openshift-ci-robot
Copy link
Contributor

@vojtechszocs: This PR has been marked as verified by vojtechszocs.

In response to this:

Local build and testing shows there are no issues

/verified by vojtechszocs

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link
Contributor

/retest-required

Remaining retests: 0 against base HEAD f2eb83d and 2 for PR HEAD b34dc56 in total

@openshift-ci-robot
Copy link
Contributor

/retest-required

Remaining retests: 0 against base HEAD 569b5f4 and 1 for PR HEAD b34dc56 in total

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Nov 21, 2025

@vojtechszocs: all tests passed!

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@openshift-merge-bot openshift-merge-bot bot merged commit e4eda13 into openshift:main Nov 22, 2025
8 checks passed
@logonoff logonoff deleted the data-view-improvements branch November 22, 2025 12:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. component/core Related to console core functionality component/helm Related to helm-plugin component/monitoring Related to monitoring docs-approved Signifies that Docs has signed off on this PR jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. px-approved Signifies that Product Support has signed off on this PR verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants