Skip to content

Commit 2b298b4

Browse files
authored
[DOP-22571] add Datasets and Jobs tabs for Location page (#88)
1 parent 1780d43 commit 2b298b4

File tree

7 files changed

+153
-2
lines changed

7 files changed

+153
-2
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { ReactElement } from "react";
2+
import { ListActions } from "@/components/base";
3+
import {
4+
List,
5+
TextField,
6+
DatagridConfigurable,
7+
SearchInput,
8+
minLength,
9+
useTranslate,
10+
} from "react-admin";
11+
12+
const DatasetRaListForLocation = ({
13+
locationId,
14+
}: {
15+
locationId: number;
16+
}): ReactElement => {
17+
const translate = useTranslate();
18+
19+
const datasetFilters = [
20+
<SearchInput
21+
key="search_query"
22+
source="search_query"
23+
alwaysOn
24+
validate={minLength(3)}
25+
placeholder={translate(
26+
"resources.datasets.filters.search_query.placeholder",
27+
)}
28+
/>,
29+
];
30+
31+
return (
32+
<List
33+
resource="datasets"
34+
filter={{ location_id: locationId }}
35+
filters={datasetFilters}
36+
actions={<ListActions />}
37+
storeKey={false}
38+
title={false}
39+
>
40+
<DatagridConfigurable bulkActionButtons={false}>
41+
<TextField
42+
source="data.name"
43+
label="resources.datasets.fields.name"
44+
sortable={false}
45+
/>
46+
</DatagridConfigurable>
47+
</List>
48+
);
49+
};
50+
51+
export default DatasetRaListForLocation;

src/components/dataset/index.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,12 @@ import DatasetRaShow from "./DatasetRaShow";
22
import DatasetRaList from "./DatasetRaList";
33
import DatasetRaRepr from "./DatasetRaRepr";
44
import DatasetRaTag from "./DatasetRaTag";
5+
import DatasetRaListForLocation from "./DatasetRaListForLocation";
56

6-
export { DatasetRaShow, DatasetRaList, DatasetRaRepr, DatasetRaTag };
7+
export {
8+
DatasetRaShow,
9+
DatasetRaList,
10+
DatasetRaRepr,
11+
DatasetRaTag,
12+
DatasetRaListForLocation,
13+
};
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { ReactElement } from "react";
2+
3+
import { ListActions } from "@/components/base";
4+
import {
5+
List,
6+
TextField,
7+
DatagridConfigurable,
8+
SearchInput,
9+
minLength,
10+
useTranslate,
11+
} from "react-admin";
12+
import JobRaTypeField from "./JobRaTypeField";
13+
14+
const JobRaListForLocation = ({
15+
locationId,
16+
}: {
17+
locationId: number;
18+
}): ReactElement => {
19+
const translate = useTranslate();
20+
21+
const jobFilters = [
22+
<SearchInput
23+
key="search_query"
24+
source="search_query"
25+
alwaysOn
26+
validate={minLength(3)}
27+
placeholder={translate(
28+
"resources.jobs.filters.search_query.placeholder",
29+
)}
30+
/>,
31+
];
32+
33+
return (
34+
<List
35+
resource="jobs"
36+
filter={{ location_id: locationId }}
37+
filters={jobFilters}
38+
actions={<ListActions />}
39+
title={false}
40+
storeKey={false}
41+
>
42+
<DatagridConfigurable bulkActionButtons={false}>
43+
<JobRaTypeField
44+
source="data.type"
45+
label="resources.jobs.fields.type"
46+
/>
47+
<TextField
48+
source="data.name"
49+
label="resources.jobs.fields.name"
50+
sortable={false}
51+
/>
52+
</DatagridConfigurable>
53+
</List>
54+
);
55+
};
56+
57+
export default JobRaListForLocation;

src/components/job/index.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,12 @@ import JobRaShow from "./JobRaShow";
22
import JobRaList from "./JobRaList";
33
import JobRaRepr from "./JobRaRepr";
44
import JobIconWithType from "./JobIconWithType";
5+
import JobRaListForLocation from "./JobRaListForLocation";
56

6-
export { JobRaShow, JobRaList, JobRaRepr, JobIconWithType };
7+
export {
8+
JobRaShow,
9+
JobRaList,
10+
JobRaRepr,
11+
JobIconWithType,
12+
JobRaListForLocation,
13+
};

src/components/location/LocationRaShow.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ReactElement } from "react";
22
import {
3+
TabbedShowLayout,
34
ArrayField,
45
Datagrid,
56
Show,
@@ -10,6 +11,8 @@ import {
1011
WrapperField,
1112
} from "react-admin";
1213
import LocationIconWithType from "./LocationIconWithType";
14+
import { JobRaListForLocation } from "@/components/job";
15+
import { DatasetRaListForLocation } from "@/components/dataset";
1316

1417
const LocationRaShow = (): ReactElement => {
1518
return (
@@ -43,6 +46,24 @@ const LocationRaShow = (): ReactElement => {
4346
<UrlField source="url" label="URL" target="_blank" />
4447
</Datagrid>
4548
</ArrayField>
49+
<TabbedShowLayout>
50+
<TabbedShowLayout.Tab label="resources.locations.tabs.datasets">
51+
<WithRecord
52+
render={(record) => (
53+
<DatasetRaListForLocation
54+
locationId={record.id}
55+
/>
56+
)}
57+
/>
58+
</TabbedShowLayout.Tab>
59+
<TabbedShowLayout.Tab label="resources.locations.tabs.jobs">
60+
<WithRecord
61+
render={(record) => (
62+
<JobRaListForLocation locationId={record.id} />
63+
)}
64+
/>
65+
</TabbedShowLayout.Tab>
66+
</TabbedShowLayout>
4667
</SimpleShowLayout>
4768
</Show>
4869
);

src/i18n/en.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ const customEnglishMessages: TranslationMessages = {
6161
placeholder: "Filter by name or address",
6262
},
6363
},
64+
tabs: {
65+
datasets: "Datasets",
66+
jobs: "Jobs",
67+
},
6468
},
6569
datasets: {
6670
name: "Dataset |||| Datasets",

src/i18n/ru.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ const customRussianMessages: TranslationMessages = {
6161
placeholder: "Фильтр по имени или адресу",
6262
},
6363
},
64+
tabs: {
65+
datasets: "Датасеты",
66+
jobs: "Джобы",
67+
},
6468
},
6569
datasets: {
6670
name: "Датасет |||| Датасеты",

0 commit comments

Comments
 (0)