feat: add fixed submission-blocked Alpha tab
Deploy production / deploy (push) Successful in 53s

This commit is contained in:
yuxuanhui
2026-09-12 23:22:59 +08:00
parent 7547dbc565
commit bbf0e37130
11 changed files with 201 additions and 6 deletions
+26 -4
View File
@@ -184,6 +184,7 @@ export function AlphaPage({
const [filters, setFilters] = useState<Record<string, string>>({});
const [filterOpen, setFilterOpen] = useState(false);
const [selectedViewId, setSelectedViewId] = useState<string | null>(null);
const [submissionBlocked, setSubmissionBlocked] = useState(false);
const [submission, setSubmission] = useState<Submission>("UNSUBMITTED");
const [syncingScope, setSyncingScope] = useState<Submission | null>(null);
const [page, setPage] = useState(1);
@@ -250,12 +251,13 @@ export function AlphaPage({
() => ({
...filters,
submission,
submission_blocked: submissionBlocked || undefined,
sort,
direction,
limit: pageSize,
offset: (page - 1) * pageSize,
}),
[filters, submission, sort, direction, pageSize, page],
[filters, submission, submissionBlocked, sort, direction, pageSize, page],
);
const query = queryString(params);
useEffect(() => {
@@ -286,6 +288,7 @@ export function AlphaPage({
limit: _limit,
offset: _offset,
submission: nextSubmission,
submission_blocked: nextBlocked,
...values
} = action.filters;
const next = Object.fromEntries(
@@ -299,6 +302,7 @@ export function AlphaPage({
setSelected([]);
if (nextSubmission === "SUBMITTED" || nextSubmission === "UNSUBMITTED")
setSubmission(nextSubmission);
setSubmissionBlocked(nextBlocked === true || nextBlocked === "true");
if (nextSort) setSort(String(nextSort));
if (nextDirection) setDirection(String(nextDirection));
}
@@ -352,7 +356,8 @@ export function AlphaPage({
setSelectedViewId(null);
setFilterOpen(false);
setDirection("desc");
setSubmission(value as Submission);
setSubmission(value === "SUBMITTED" ? "SUBMITTED" : "UNSUBMITTED");
setSubmissionBlocked(value === "SUBMISSION_BLOCKED");
setDraft({});
setFilters({});
setPage(1);
@@ -925,17 +930,26 @@ export function AlphaPage({
<section className="library-panel" ref={tablePanel}>
<SavedViews
submission={submission}
submissionBlocked={submissionBlocked}
selectedId={selectedViewId}
onSelect={setSelectedViewId}
onSubmissionChange={changeSubmission}
suspended={overlaySuspended || !active}
onOverlay={onOverlay}
filters={{ ...filters, submission, sort, direction, limit: pageSize }}
filters={{
...filters,
submission,
submission_blocked: submissionBlocked || undefined,
sort,
direction,
limit: pageSize,
}}
columns={displayedColumns}
onRestore={(view) => {
setFilterOpen(false);
const {
submission: savedSubmission,
submission_blocked: savedBlocked,
sort: savedSort,
direction: savedDirection,
limit,
@@ -954,6 +968,9 @@ export function AlphaPage({
setSubmission(
savedSubmission === "SUBMITTED" ? "SUBMITTED" : "UNSUBMITTED",
);
setSubmissionBlocked(
savedBlocked === true || savedBlocked === "true",
);
setSort(String(savedSort || "date_created"));
setDirection(String(savedDirection || "desc"));
if (typeof limit === "number") setPageSize(limit);
@@ -1228,7 +1245,12 @@ export function AlphaPage({
<footer className="table-pagination" aria-label="Alpha 分页">
<div className="alpha-table-meta">
<span className="muted">
{submission === "UNSUBMITTED" ? "待提交" : "已提交"} Alpha{" "}
{submissionBlocked
? "提交受阻"
: submission === "UNSUBMITTED"
? "待提交"
: "已提交"}{" "}
Alpha{" "}
<span className="count-pill">{data.total.toLocaleString()}</span>{" "}
条
</span>