Skip to content

Commit c50c9f5

Browse files
committed
Improvements to Console DataView code
1 parent b8fa7f7 commit c50c9f5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+97
-182
lines changed

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

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,21 @@ import { ResourceFilters, ResourceMetadata, GetDataViewRows } from './types';
2626
import { useConsoleDataViewData } from './useConsoleDataViewData';
2727
import { useConsoleDataViewFilters } from './useConsoleDataViewFilters';
2828

29-
export type ConsoleDataViewProps<TData, TCustomRowData, TFilters> = {
29+
export const initialFiltersDefault: ResourceFilters = { name: '', label: '' };
30+
31+
export type ConsoleDataViewProps<
32+
TData,
33+
TCustomRowData = any,
34+
TFilters extends ResourceFilters = ResourceFilters
35+
> = {
3036
label?: string;
3137
data: TData[];
3238
loaded: boolean;
3339
loadError?: any;
3440
columns: TableColumn<TData>[];
3541
columnLayout?: ColumnLayout;
3642
columnManagementID?: string;
37-
initialFilters: TFilters;
43+
initialFilters?: TFilters;
3844
additionalFilterNodes?: React.ReactNode[];
3945
/**
4046
* By default, `TData` is assumed to be assignable to `K8sResourceCommon` type.
@@ -100,12 +106,17 @@ export const ConsoleDataView = <
100106
}: ConsoleDataViewProps<TData, TCustomRowData, TFilters>) => {
101107
const { t } = useTranslation();
102108

109+
const initialFiltersOrDefault = React.useMemo(
110+
() => initialFilters ?? (initialFiltersDefault as TFilters),
111+
[initialFilters],
112+
);
113+
103114
const { filters, onSetFilters, clearAllFilters, filteredData } = useConsoleDataViewFilters<
104115
TData,
105116
TFilters
106117
>({
107118
data,
108-
initialFilters,
119+
initialFilters: initialFiltersOrDefault,
109120
getObjectMetadata,
110121
matchesAdditionalFilters,
111122
});
@@ -253,5 +264,3 @@ export const actionsCellProps = {
253264
hasLeftBorder: true,
254265
isActionCell: true,
255266
};
256-
257-
export const initialFiltersDefault = { name: '', label: '' };

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export type ConsoleDataViewRow = DataViewTd[];
2323
/**
2424
* Maps Console `RowProps` data to DataView compatible format.
2525
*/
26-
export type GetDataViewRows<TData, TCustomRowData> = (
26+
export type GetDataViewRows<TData, TCustomRowData = any> = (
2727
data: RowProps<TData, TCustomRowData>[],
2828
columns: ConsoleDataViewColumn<TData>[],
2929
) => ConsoleDataViewRow[];

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,11 @@ const NodeList: React.FC<NodeListProps> = ({
545545
[],
546546
);
547547

548+
const initialFilters = React.useMemo<NodeFilters>(
549+
() => ({ ...initialFiltersDefault, status: [], roles: [], architecture: [] }),
550+
[],
551+
);
552+
548553
// Create stable filter nodes with stable option references to prevent filter resets
549554
const additionalFilterNodes = React.useMemo<React.ReactNode[]>(
550555
() => [
@@ -622,9 +627,7 @@ const NodeList: React.FC<NodeListProps> = ({
622627
columns={columns}
623628
columnLayout={columnLayout}
624629
columnManagementID={columnManagementID}
625-
initialFilters={
626-
{ ...initialFiltersDefault, status: [], roles: [], architecture: [] } as NodeFilters
627-
}
630+
initialFilters={initialFilters}
628631
additionalFilterNodes={additionalFilterNodes}
629632
matchesAdditionalFilters={matchesAdditionalFilters}
630633
getDataViewRows={(rowData, tableColumns) =>

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {
44
actionsCellProps,
55
cellIsStickyProps,
66
getNameCellProps,
7-
initialFiltersDefault,
87
ConsoleDataView,
98
} from '@console/app/src/components/data-view/ConsoleDataView';
109
import { GetDataViewRows } from '@console/app/src/components/data-view/types';
@@ -31,7 +30,7 @@ export const tableColumnInfo = [
3130
{ id: '' },
3231
];
3332

34-
const getDataViewRows: GetDataViewRows<PodDisruptionBudgetKind, undefined> = (data, columns) => {
33+
const getDataViewRows: GetDataViewRows<PodDisruptionBudgetKind> = (data, columns) => {
3534
return data.map(({ obj: pdb }) => {
3635
const { name, namespace } = pdb.metadata;
3736
const resourceKind = referenceForModel(PodDisruptionBudgetModel);
@@ -155,7 +154,6 @@ const PodDisruptionBudgetList: React.FCC<PodDisruptionBudgetsListProps> = ({
155154
data={data}
156155
loaded={loaded}
157156
columns={columns}
158-
initialFilters={initialFiltersDefault}
159157
getDataViewRows={getDataViewRows}
160158
hideColumnManagement
161159
/>

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import * as React from 'react';
22
import { useTranslation } from 'react-i18next';
3-
import {
4-
ConsoleDataView,
5-
initialFiltersDefault,
6-
} from '@console/app/src/components/data-view/ConsoleDataView';
3+
import { ConsoleDataView } from '@console/app/src/components/data-view/ConsoleDataView';
74
import { TableProps } from '@console/internal/components/factory';
85
import { LoadingBox } from '@console/internal/components/utils';
96
import { K8sResourceKind } from '@console/internal/module/k8s';
@@ -22,7 +19,6 @@ const HelmReleaseResourcesList: React.FC<TableProps> = (props) => {
2219
loaded={props.loaded}
2320
label={t('helm-plugin~Resources')}
2421
columns={columns}
25-
initialFilters={initialFiltersDefault}
2622
getDataViewRows={getDataViewRows}
2723
hideColumnManagement
2824
data-test="helm-resources-list"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export const HelmReleaseResourceStatus: React.FC<HelmReleaseResourceStatusProps>
3131
);
3232
};
3333

34-
export const getDataViewRows: GetDataViewRows<K8sResourceKind, undefined> = (data, columns) => {
34+
export const getDataViewRows: GetDataViewRows<K8sResourceKind> = (data, columns) => {
3535
return data.map(({ obj: resource }) => {
3636
const kind = referenceFor(resource);
3737
const rowCells = {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { getDataViewRows, HelmReleaseResourceStatus } from '../HelmReleaseResour
55

66
configure({ testIdAttribute: 'data-test' });
77

8-
let testData: RowProps<K8sResourceKind, undefined>[];
8+
let testData: RowProps<K8sResourceKind>[];
99
let testColumns: TableColumn<K8sResourceKind>[];
1010

1111
describe('getDataViewRows', () => {

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import * as React from 'react';
22
import { useTranslation } from 'react-i18next';
3-
import {
4-
ConsoleDataView,
5-
initialFiltersDefault,
6-
} from '@console/app/src/components/data-view/ConsoleDataView';
3+
import { ConsoleDataView } from '@console/app/src/components/data-view/ConsoleDataView';
74
import { TableProps } from '@console/internal/components/factory';
85
import { LoadingBox } from '@console/internal/components/utils';
96
import { K8sResourceKind } from '@console/internal/module/k8s';
@@ -22,7 +19,6 @@ const HelmChartRepositoryList: React.FC<TableProps> = (props) => {
2219
loaded={props.loaded}
2320
label={t('helm-plugin~HelmChartRepositories')}
2421
columns={columns}
25-
initialFilters={initialFiltersDefault}
2622
getDataViewRows={getDataViewRows}
2723
hideColumnManagement
2824
data-test="helm-chart-repositories-list"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const DisabledCell: React.FC<{ disabled?: boolean }> = ({ disabled }) => {
2323
return <>{disabled ? t('helm-plugin~True') : t('helm-plugin~False')}</>;
2424
};
2525

26-
export const getDataViewRows: GetDataViewRows<K8sResourceKind, undefined> = (data, columns) => {
26+
export const getDataViewRows: GetDataViewRows<K8sResourceKind> = (data, columns) => {
2727
return data.map(({ obj }) => {
2828
const objReference = referenceFor(obj);
2929
const context = { [objReference]: obj };

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ const HelmReleaseList: React.FC = () => {
193193
}));
194194
}, []);
195195

196+
const initialFilters = React.useMemo(() => ({ ...initialFiltersDefault, status: [] }), []);
197+
196198
const additionalFilterNodes = React.useMemo<React.ReactNode[]>(
197199
() => [
198200
<DataViewCheckboxFilter
@@ -262,7 +264,7 @@ const HelmReleaseList: React.FC = () => {
262264
loaded={isLoaded}
263265
loadError={secretsLoadError || loadError}
264266
columns={columns}
265-
initialFilters={{ ...initialFiltersDefault, status: [] }}
267+
initialFilters={initialFilters}
266268
additionalFilterNodes={additionalFilterNodes}
267269
getObjectMetadata={getObjectMetadata}
268270
matchesAdditionalFilters={matchesAdditionalFilters}

0 commit comments

Comments
 (0)