Implement magazine reviews, label details, and year filtering
- Aggregate magazine references from all releases on the Entry detail page. - Display country names and external links (Wikipedia/Website) on the Label detail page. - Add a year filter to the ZXDB Explorer to search entries by release year. Signed-off: junie@lucy.xalior.com
This commit is contained in:
@@ -41,6 +41,7 @@ export default function ZxdbExplorer({
|
||||
const [genreId, setGenreId] = useState<number | "">("");
|
||||
const [languageId, setLanguageId] = useState<string | "">("");
|
||||
const [machinetypeId, setMachinetypeId] = useState<number | "">("");
|
||||
const [year, setYear] = useState<string>("");
|
||||
const [sort, setSort] = useState<"title" | "id_desc">("id_desc");
|
||||
|
||||
const pageSize = 20;
|
||||
@@ -56,6 +57,7 @@ export default function ZxdbExplorer({
|
||||
if (genreId !== "") params.set("genreId", String(genreId));
|
||||
if (languageId !== "") params.set("languageId", String(languageId));
|
||||
if (machinetypeId !== "") params.set("machinetypeId", String(machinetypeId));
|
||||
if (year !== "") params.set("year", year);
|
||||
if (sort) params.set("sort", sort);
|
||||
const res = await fetch(`/api/zxdb/search?${params.toString()}`);
|
||||
if (!res.ok) throw new Error(`Failed: ${res.status}`);
|
||||
@@ -89,13 +91,14 @@ export default function ZxdbExplorer({
|
||||
genreId === "" &&
|
||||
languageId === "" &&
|
||||
machinetypeId === "" &&
|
||||
year === "" &&
|
||||
sort === "id_desc"
|
||||
) {
|
||||
return;
|
||||
}
|
||||
fetchData(q, page);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [page, genreId, languageId, machinetypeId, sort]);
|
||||
}, [page, genreId, languageId, machinetypeId, year, sort]);
|
||||
|
||||
// Load filter lists on mount only if not provided by server
|
||||
useEffect(() => {
|
||||
@@ -161,6 +164,16 @@ export default function ZxdbExplorer({
|
||||
))}
|
||||
</select>
|
||||
</div>
|
||||
<div className="col-auto">
|
||||
<input
|
||||
type="number"
|
||||
className="form-control"
|
||||
style={{ width: 100 }}
|
||||
placeholder="Year"
|
||||
value={year}
|
||||
onChange={(e) => setYear(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
<div className="col-auto">
|
||||
<select className="form-select" value={sort} onChange={(e) => setSort(e.target.value as "title" | "id_desc")}>
|
||||
<option value="title">Sort: Title</option>
|
||||
|
||||
Reference in New Issue
Block a user