Skip to content

Commit 0282bea

Browse files
committed
[DOP-29614] Add filters by Run.status and Run.started_by_user
1 parent bec19fa commit 0282bea

File tree

6 files changed

+106
-23
lines changed

6 files changed

+106
-23
lines changed

src/components/base/StatusField.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const statusToColorMap = {
77
RUNNING: "primary",
88
SUCCEEDED: "success",
99
FAILED: "error",
10-
KILLED: "error",
10+
KILLED: "secondary",
1111
UNKNOWN: "warning",
1212
} as const;
1313

src/components/run/RunRaListFilters.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Box, Button, InputAdornment } from "@mui/material";
55
import SearchIcon from "@mui/icons-material/Search";
66
import { TextInput, useListContext } from "react-admin";
77
import { useEffect } from "react";
8+
import RunRaStatusFilter from "./RunRaStatusFilter";
89

910
const weekAgo = (): Date => {
1011
const result = new Date();
@@ -58,6 +59,18 @@ const RunRaListFilters = () => {
5859
</Box>
5960

6061
<Box component="span" mr={2}>
62+
<RunRaStatusFilter />
63+
</Box>
64+
65+
<Box component="span" mr={2}>
66+
<TextInput
67+
source="started_by_user"
68+
label="resources.runs.filters.started_by_user.label"
69+
helperText="resources.runs.filters.started_by_user.helperText"
70+
/>
71+
</Box>
72+
73+
<Box component="span" mr={2} sx={{ flex: 0.6 }}>
6174
{/* Not using SearchInput here because it doesn't match styles with other filters */}
6275
<TextInput
6376
source="search_query"
@@ -74,7 +87,7 @@ const RunRaListFilters = () => {
7487
/>
7588
</Box>
7689

77-
<Box component="span" mr={2} mb={4}>
90+
<Box component="span" mb={4}>
7891
<Button
7992
variant="outlined"
8093
color="primary"
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { ReactElement } from "react";
2+
import { SelectArrayInput, useTranslate } from "react-admin";
3+
4+
const RunRaStatusFilter = (): ReactElement => {
5+
const translate = useTranslate();
6+
7+
return (
8+
<SelectArrayInput
9+
source="status"
10+
choices={[
11+
{
12+
id: "STARTED",
13+
name: translate("statuses.STARTED", {
14+
_: "STARTED",
15+
}),
16+
},
17+
{
18+
id: "SUCCEEDED",
19+
name: translate("statuses.SUCCEEDED", {
20+
_: "SUCCEEDED",
21+
}),
22+
},
23+
{
24+
id: "FAILED",
25+
name: translate("statuses.FAILED", {
26+
_: "FAILED",
27+
}),
28+
},
29+
{
30+
id: "KILLED",
31+
name: translate("statuses.KILLED", {
32+
_: "KILLED",
33+
}),
34+
},
35+
{
36+
id: "UNKNOWN",
37+
name: translate("statuses.UNKNOWN", {
38+
_: "UNKNOWN",
39+
}),
40+
},
41+
]}
42+
helperText="resources.runs.filters.status.helperText"
43+
/>
44+
);
45+
};
46+
export default RunRaStatusFilter;

src/dataProvider/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ const defaultDataProvider: DataProvider = {
4747

4848
if (params.filter) {
4949
for (const field in params.filter) {
50+
const value = params.filter[field];
51+
if (Array.isArray(value)) {
52+
value.forEach((v) => {
53+
url.searchParams.append(field, v);
54+
});
55+
continue;
56+
}
5057
url.searchParams.append(field, params.filter[field]);
5158
}
5259
}

src/i18n/en.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,24 @@ const customEnglishMessages: TranslationMessages = {
186186
filters: {
187187
since: {
188188
label: "Since",
189-
helperText: "Include only runs created after",
189+
helperText: "Minimal created_at",
190190
},
191191
until: {
192192
label: "Until",
193-
helperText: "Include only runs created before",
193+
helperText: "Maximum created_at",
194+
},
195+
status: {
196+
label: "Status",
197+
helperText: "Only selected",
198+
},
199+
started_by_user: {
200+
label: "Started by user",
201+
helperText: "Username (exact match)",
194202
},
195203
search_query: {
196204
label: "Search",
197-
helperText: "Filter by applicationId",
205+
helperText:
206+
"Filter by external ID (including partial match)",
198207
},
199208
apply_button: "Apply",
200209
},
@@ -251,17 +260,18 @@ const customEnglishMessages: TranslationMessages = {
251260
filters: {
252261
since: {
253262
label: "Since",
254-
helperText: "Include only operations created after",
263+
helperText: "Minimal created_at",
255264
},
256265
until: {
257266
label: "Until",
258-
helperText: "Include only operations created before",
267+
helperText: "Maximum created_at",
259268
},
260-
apply_button: "Apply",
261269
search_query: {
262270
label: "Search",
263-
helperText: "Filter by name, group or description",
271+
helperText:
272+
"Filter by name, group or description (partial match)",
264273
},
274+
apply_button: "Apply",
265275
},
266276
pagination: {
267277
all: "All",
@@ -314,11 +324,11 @@ const customEnglishMessages: TranslationMessages = {
314324
filters: {
315325
since: {
316326
label: "Since",
317-
helperText: "Include only events created after",
327+
helperText: "Only events created after",
318328
},
319329
until: {
320330
label: "Until",
321-
helperText: "Include only events created before",
331+
helperText: "Only events created before",
322332
},
323333
depth: {
324334
label: "Depth",

src/i18n/ru.ts

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,16 +184,24 @@ const customRussianMessages: TranslationMessages = {
184184
},
185185
filters: {
186186
since: {
187-
label: "Дата начала",
188-
helperText: "Запуски, созданные после указанной даты",
187+
label: "Начало диапазона",
188+
helperText: "Минимальная дата запуска",
189189
},
190190
until: {
191-
label: "Дата окончания",
192-
helperText: "Запуски, созданные до указанной даты",
191+
label: "Конец диапазона",
192+
helperText: "Максимальная дата запуска",
193+
},
194+
status: {
195+
label: "Статус",
196+
helperText: "Только выбранные",
197+
},
198+
started_by_user: {
199+
label: "Запущен пользователем",
200+
helperText: "Имя пользователя (точное совпадение)",
193201
},
194202
search_query: {
195203
label: "Поиск",
196-
helperText: "Фильтр по applicationId и т.п.",
204+
helperText: "Фильтр по внешнему ID (частичное совпадение)",
197205
},
198206
apply_button: "Применить",
199207
},
@@ -249,12 +257,12 @@ const customRussianMessages: TranslationMessages = {
249257
},
250258
filters: {
251259
since: {
252-
label: "Дата начала",
253-
helperText: "Операции, созданные после указанной даты",
260+
label: "Начало диапазона",
261+
helperText: "Минимальная дата запуска",
254262
},
255263
until: {
256-
label: "Дата окончания",
257-
helperText: "Операции, созданные до указанной даты",
264+
label: "Конец диапазона",
265+
helperText: "Максимальная дата запуска",
258266
},
259267
search_query: {
260268
label: "Поиск",
@@ -308,11 +316,11 @@ const customRussianMessages: TranslationMessages = {
308316
lineage: {
309317
filters: {
310318
since: {
311-
label: "Дата начала",
319+
label: "Начало диапазона",
312320
helperText: "События, созданные после указанной даты",
313321
},
314322
until: {
315-
label: "Дата окончания",
323+
label: "Конец диапазона",
316324
helperText: "События, созданные до указанной даты",
317325
},
318326
depth: {
@@ -370,7 +378,6 @@ const customRussianMessages: TranslationMessages = {
370378
},
371379
statuses: {
372380
STARTED: "ЗАПУЩЕН",
373-
RUNNING: "РАБОТАЕТ",
374381
SUCCEEDED: "УСПЕХ",
375382
FAILED: "ОШИБКА",
376383
KILLED: "УБИТ",

0 commit comments

Comments
 (0)