Skip to content

Commit 458f390

Browse files
committed
[F] Add filters to issues lists; remove w/o volume condition
1 parent c7a8b99 commit 458f390

File tree

3 files changed

+55
-15
lines changed
  • client/src

3 files changed

+55
-15
lines changed

client/src/frontend/containers/IssuesList/index.js

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,54 @@
1-
import React, { useMemo } from "react";
1+
import { useMemo } from "react";
22
import { useTranslation } from "react-i18next";
3-
import { useFetch, useListFilters, useListQueryParams } from "hooks";
3+
import {
4+
useFetch,
5+
useListFilters,
6+
useListQueryParams,
7+
useFromStore
8+
} from "hooks";
49
import EntityCollectionPlaceholder from "global/components/entity/CollectionPlaceholder";
510
import EntityCollection from "frontend/components/entity/Collection";
611
import CollectionNavigation from "frontend/components/CollectionNavigation";
712
import HeadContent from "global/components/HeadContent";
8-
9-
import { journalIssuesAPI } from "api";
13+
import { journalIssuesAPI, requests } from "api";
1014

1115
export default function IssuesListContainer() {
12-
// Add back in when api supports filters
13-
// const subjects = useFromStore("feSubjects", "select");
16+
const subjects = useFromStore({
17+
requestKey: requests.feSubjects,
18+
action: "select"
19+
});
1420

15-
const filtersReset = useMemo(() => ({ standaloneModeEnforced: false }), []);
21+
const filtersReset = useMemo(
22+
() => ({ standaloneModeEnforced: false, order: "sort_title DESC" }),
23+
[]
24+
);
1625

1726
const { pagination, filters, setFilters } = useListQueryParams({
1827
initFilters: filtersReset
1928
});
2029

21-
const { data: issues, meta } = useFetch({
30+
const { data: issues, meta, loaded } = useFetch({
2231
request: [journalIssuesAPI.index, filters, pagination]
2332
});
2433

2534
const filterProps = useListFilters({
2635
onFilterChange: state => setFilters(state),
2736
initialState: filters,
28-
resetState: filtersReset
37+
resetState: filtersReset,
38+
options: {
39+
entityType: "journalIssue",
40+
sort: true,
41+
subjects,
42+
hideFeatured: true
43+
}
2944
});
3045

3146
const { t } = useTranslation();
3247

33-
const showPlaceholder = "keyword" in filters ? false : !issues?.length;
48+
const showPlaceholder =
49+
"keyword" in filters || "subject" in filters || loaded
50+
? false
51+
: !issues?.length;
3452

3553
if (!issues || !meta) return null;
3654

client/src/frontend/containers/JournalIssuesList/index.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1-
import React, { useMemo } from "react";
1+
import { useMemo } from "react";
22
import { useTranslation } from "react-i18next";
3-
import { useFetch, useListQueryParams, useFromStore } from "hooks";
3+
import {
4+
useFetch,
5+
useListQueryParams,
6+
useFromStore,
7+
useListFilters
8+
} from "hooks";
49
import { journalIssuesAPI } from "api";
510
import useEntityHeadContent from "frontend/components/entity/useEntityHeadContent";
611
import HeadContent from "global/components/HeadContent";
@@ -10,8 +15,13 @@ import { RegisterBreadcrumbs } from "global/components/atomic/Breadcrumbs";
1015
import lh from "helpers/linkHandler";
1116

1217
export default function JournalIssuesList({ journal }) {
13-
const { pagination, filters } = useListQueryParams({
14-
initFilters: { journal_id: journal.id, volume_is_nil: true }
18+
const initFilters = useMemo(
19+
() => ({ journal_id: journal.id, order: "sort_title DESC" }),
20+
[journal.id]
21+
);
22+
23+
const { pagination, filters, setFilters } = useListQueryParams({
24+
initFilters
1525
});
1626

1727
const { data: issues, meta } = useFetch({
@@ -51,6 +61,16 @@ export default function JournalIssuesList({ journal }) {
5161

5262
const headContentProps = useEntityHeadContent(journal);
5363

64+
const filterProps = useListFilters({
65+
onFilterChange: param => setFilters(param),
66+
initialState: filters,
67+
resetState: initFilters,
68+
options: {
69+
entityType: "journalIssue",
70+
sort: true
71+
}
72+
});
73+
5474
if (!journal || !issues || !meta) return null;
5575

5676
return (
@@ -65,6 +85,7 @@ export default function JournalIssuesList({ journal }) {
6585
issues={issues}
6686
issuesMeta={meta}
6787
parentView
88+
filterProps={filterProps}
6889
/>
6990
</>
7091
);

client/src/global/components/list/Filters/types/sort.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ export const sortFilter = (filters, updateFilters, params, t) => {
22
const includePublished = params?.entityType === "project";
33
const includeModified =
44
params?.entityType === "journal" ||
5-
params?.entityType === "projectCollection";
5+
params?.entityType === "projectCollection" ||
6+
params?.entityType === "journalIssue";
67
const alphaSort =
78
params?.entityType === "projectCollection" ? "title" : "sort_title";
89

0 commit comments

Comments
 (0)