Skip to content

Commit ab2fef7

Browse files
fix: reset pagination on search in all pages (apache#60411)
1 parent 5a3c4fc commit ab2fef7

File tree

7 files changed

+44
-33
lines changed

7 files changed

+44
-33
lines changed

airflow-core/src/airflow/ui/src/pages/AssetsList/AssetsList.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import { ExpandCollapseButtons } from "src/components/ExpandCollapseButtons";
3030
import RenderedJsonField from "src/components/RenderedJsonField";
3131
import { SearchBar } from "src/components/SearchBar";
3232
import Time from "src/components/Time";
33-
import { SearchParamsKeys } from "src/constants/searchParams";
33+
import { SearchParamsKeys, type SearchParamsKeysType } from "src/constants/searchParams";
3434
import { CreateAssetEvent } from "src/pages/Asset/CreateAssetEvent";
3535

3636
import { DependencyPopover } from "./DependencyPopover";
@@ -111,13 +111,13 @@ const createColumns = (
111111
},
112112
];
113113

114-
const NAME_PATTERN_PARAM = SearchParamsKeys.NAME_PATTERN;
114+
const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
115115

116116
export const AssetsList = () => {
117117
const { t: translate } = useTranslation(["assets", "common"]);
118118
const [searchParams, setSearchParams] = useSearchParams();
119119

120-
const namePattern = searchParams.get(NAME_PATTERN_PARAM) ?? "";
120+
const namePattern = searchParams.get(NAME_PATTERN) ?? "";
121121

122122
const { setTableURLState, tableURLState } = useTableURLState();
123123
const { pagination, sorting } = tableURLState;
@@ -141,10 +141,11 @@ export const AssetsList = () => {
141141
sorting,
142142
});
143143
if (value) {
144-
searchParams.set(NAME_PATTERN_PARAM, value);
144+
searchParams.set(NAME_PATTERN, value);
145145
} else {
146-
searchParams.delete(NAME_PATTERN_PARAM);
146+
searchParams.delete(NAME_PATTERN);
147147
}
148+
searchParams.delete(OFFSET);
148149
setSearchParams(searchParams);
149150
};
150151

airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,8 @@ export const Connections = () => {
128128
const { t: translate } = useTranslation(["admin", "common"]);
129129
const { setTableURLState, tableURLState } = useTableURLState();
130130
const [searchParams, setSearchParams] = useSearchParams();
131-
const { NAME_PATTERN: NAME_PATTERN_PARAM }: SearchParamsKeysType = SearchParamsKeys;
132-
const [connectionIdPattern, setConnectionIdPattern] = useState(
133-
searchParams.get(NAME_PATTERN_PARAM) ?? undefined,
134-
);
131+
const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
132+
const [connectionIdPattern, setConnectionIdPattern] = useState(searchParams.get(NAME_PATTERN) ?? undefined);
135133

136134
useConnectionTypeMeta(); // Pre-fetch connection type metadata
137135
const { pagination, sorting } = tableURLState;
@@ -160,14 +158,15 @@ export const Connections = () => {
160158

161159
const handleSearchChange = (value: string) => {
162160
if (value) {
163-
searchParams.set(NAME_PATTERN_PARAM, value);
161+
searchParams.set(NAME_PATTERN, value);
164162
} else {
165-
searchParams.delete(NAME_PATTERN_PARAM);
163+
searchParams.delete(NAME_PATTERN);
166164
}
167165
setTableURLState({
168166
pagination: { ...pagination, pageIndex: 0 },
169167
sorting,
170168
});
169+
searchParams.delete(OFFSET);
171170
setSearchParams(searchParams);
172171
setConnectionIdPattern(value);
173172
};

airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskFilters/TaskFilters.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@ import { useSearchParams } from "react-router-dom";
2323
import type { TaskCollectionResponse } from "openapi/requests";
2424
import { SearchBar } from "src/components/SearchBar.tsx";
2525
import { ResetButton } from "src/components/ui";
26-
import { SearchParamsKeys } from "src/constants/searchParams.ts";
26+
import { SearchParamsKeys, type SearchParamsKeysType } from "src/constants/searchParams.ts";
2727
import { AttrSelectFilter } from "src/pages/Dag/Tasks/TaskFilters/AttrSelectFilter.tsx";
2828
import { AttrSelectFilterMulti } from "src/pages/Dag/Tasks/TaskFilters/AttrSelectFilterMulti.tsx";
2929

3030
export const TaskFilters = ({ tasksData }: { readonly tasksData: TaskCollectionResponse | undefined }) => {
31-
const { MAPPED, NAME_PATTERN, OPERATOR, RETRIES, TRIGGER_RULE } = SearchParamsKeys;
31+
const { MAPPED, NAME_PATTERN, OFFSET, OPERATOR, RETRIES, TRIGGER_RULE }: SearchParamsKeysType =
32+
SearchParamsKeys;
3233
const { t: translate } = useTranslation("tasks");
3334
const [searchParams, setSearchParams] = useSearchParams();
3435
const selectedOperators = searchParams.getAll(OPERATOR);
@@ -85,6 +86,7 @@ export const TaskFilters = ({ tasksData }: { readonly tasksData: TaskCollectionR
8586
} else {
8687
searchParams.delete(NAME_PATTERN);
8788
}
89+
searchParams.delete(OFFSET);
8890
setSearchParams(searchParams);
8991
};
9092

airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import { NeedsReviewBadge } from "src/components/NeedsReviewBadge";
4545
import { SearchBar } from "src/components/SearchBar";
4646
import { TogglePause } from "src/components/TogglePause";
4747
import TriggerDAGButton from "src/components/TriggerDag/TriggerDAGButton";
48-
import { SearchParamsKeys } from "src/constants/searchParams";
48+
import { SearchParamsKeys, type SearchParamsKeysType } from "src/constants/searchParams";
4949
import { DagsLayout } from "src/layouts/DagsLayout";
5050
import { useConfig } from "src/queries/useConfig";
5151
import { useDags } from "src/queries/useDags";
@@ -181,8 +181,17 @@ const createColumns = (
181181
},
182182
];
183183

184-
const { FAVORITE, LAST_DAG_RUN_STATE, NAME_PATTERN, NEEDS_REVIEW, OWNERS, PAUSED, TAGS, TAGS_MATCH_MODE } =
185-
SearchParamsKeys;
184+
const {
185+
FAVORITE,
186+
LAST_DAG_RUN_STATE,
187+
NAME_PATTERN,
188+
NEEDS_REVIEW,
189+
OFFSET,
190+
OWNERS,
191+
PAUSED,
192+
TAGS,
193+
TAGS_MATCH_MODE,
194+
}: SearchParamsKeysType = SearchParamsKeys;
186195

187196
const cardDef: CardDef<DAGWithLatestDagRunsResponse> = {
188197
card: ({ row }) => <DagCard dag={row} />,
@@ -231,7 +240,7 @@ export const DagsList = () => {
231240
} else {
232241
searchParams.delete(NAME_PATTERN);
233242
}
234-
searchParams.delete("offset");
243+
searchParams.delete(OFFSET);
235244
setSearchParams(searchParams);
236245
};
237246

airflow-core/src/airflow/ui/src/pages/Pools/Pools.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ export const Pools = () => {
5353
],
5454
});
5555
const [searchParams, setSearchParams] = useSearchParams();
56-
const { NAME_PATTERN: NAME_PATTERN_PARAM }: SearchParamsKeysType = SearchParamsKeys;
57-
const [poolNamePattern, setPoolNamePattern] = useState(searchParams.get(NAME_PATTERN_PARAM) ?? undefined);
56+
const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
57+
const [poolNamePattern, setPoolNamePattern] = useState(searchParams.get(NAME_PATTERN) ?? undefined);
5858

5959
const { setTableURLState, tableURLState } = useTableURLState();
6060
const { pagination, sorting } = tableURLState;
@@ -70,10 +70,11 @@ export const Pools = () => {
7070

7171
const handleSearchChange = (value: string) => {
7272
if (value) {
73-
searchParams.set(NAME_PATTERN_PARAM, value);
73+
searchParams.set(NAME_PATTERN, value);
7474
} else {
75-
searchParams.delete(NAME_PATTERN_PARAM);
75+
searchParams.delete(NAME_PATTERN);
7676
}
77+
searchParams.delete(OFFSET);
7778
setSearchParams(searchParams);
7879
setPoolNamePattern(value);
7980
};

airflow-core/src/airflow/ui/src/pages/TaskInstance/AssetEvents.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@ import { useAssetServiceGetAssetEvents, useTaskInstanceServiceGetMappedTaskInsta
2525
import { AssetEvents as AssetEventsTable } from "src/components/Assets/AssetEvents";
2626
import { useTableURLState } from "src/components/DataTable/useTableUrlState";
2727
import { SearchBar } from "src/components/SearchBar";
28-
import { SearchParamsKeys } from "src/constants/searchParams";
28+
import { SearchParamsKeys, type SearchParamsKeysType } from "src/constants/searchParams";
2929
import { isStatePending, useAutoRefresh } from "src/utils";
3030

3131
export const AssetEvents = () => {
3232
const { dagId = "", mapIndex = "-1", runId = "", taskId = "" } = useParams();
33+
const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
3334
const [searchParams, setSearchParams] = useSearchParams();
3435
const { t: translate } = useTranslation(["assets"]);
3536

36-
const [assetNameSearch, setAssetNameSearch] = useState(
37-
searchParams.get(SearchParamsKeys.NAME_PATTERN) ?? "",
38-
);
37+
const [assetNameSearch, setAssetNameSearch] = useState(searchParams.get(NAME_PATTERN) ?? "");
3938

4039
const parsedMapIndex = parseInt(mapIndex, 10);
4140

@@ -65,10 +64,11 @@ export const AssetEvents = () => {
6564
pagination: { ...pagination, pageIndex: 0 },
6665
});
6766
if (value) {
68-
searchParams.set(SearchParamsKeys.NAME_PATTERN, value);
67+
searchParams.set(NAME_PATTERN, value);
6968
} else {
70-
searchParams.delete(SearchParamsKeys.NAME_PATTERN);
69+
searchParams.delete(NAME_PATTERN);
7170
}
71+
searchParams.delete(OFFSET);
7272
setSearchParams(searchParams);
7373
};
7474

airflow-core/src/airflow/ui/src/pages/Variables/Variables.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,8 @@ export const Variables = () => {
115115
sorting: [{ desc: false, id: "key" }],
116116
}); // To make multiselection smooth
117117
const [searchParams, setSearchParams] = useSearchParams();
118-
const { NAME_PATTERN: NAME_PATTERN_PARAM }: SearchParamsKeysType = SearchParamsKeys;
119-
const [variableKeyPattern, setVariableKeyPattern] = useState(
120-
searchParams.get(NAME_PATTERN_PARAM) ?? undefined,
121-
);
118+
const { NAME_PATTERN, OFFSET }: SearchParamsKeysType = SearchParamsKeys;
119+
const [variableKeyPattern, setVariableKeyPattern] = useState(searchParams.get(NAME_PATTERN) ?? undefined);
122120
const { pagination, sorting } = tableURLState;
123121
const [sort] = sorting;
124122
const orderBy = sort ? [`${sort.desc ? "-" : ""}${sort.id === "value" ? "_val" : sort.id}`] : ["-key"];
@@ -146,14 +144,15 @@ export const Variables = () => {
146144

147145
const handleSearchChange = (value: string) => {
148146
if (value) {
149-
searchParams.set(NAME_PATTERN_PARAM, value);
147+
searchParams.set(NAME_PATTERN, value);
150148
} else {
151-
searchParams.delete(NAME_PATTERN_PARAM);
149+
searchParams.delete(NAME_PATTERN);
152150
}
153151
setTableURLState({
154152
pagination: { ...pagination, pageIndex: 0 },
155153
sorting,
156154
});
155+
searchParams.delete(OFFSET);
157156
setSearchParams(searchParams);
158157
setVariableKeyPattern(value);
159158
};

0 commit comments

Comments
 (0)