feat(form): show response totals and queue numbers

This commit is contained in:
2026-07-26 15:54:20 +07:00 Unverified
parent 1b58d2c363
commit 73bd6ef5d2
6 changed files with 148 additions and 10 deletions
+12 -1
View File
@@ -15,6 +15,7 @@ import { DeleteFormButton } from "@/components/delete-buttons";
import { AdminShellServer } from "@/components/admin-shell-server";
import { createDefaultForm } from "./actions";
import { RealtimeRefresh } from "@/components/realtime-refresh";
import { getFormSubmissionStats } from "@/lib/form-submission-stats";
export const dynamic = "force-dynamic";
@@ -22,6 +23,10 @@ export default async function AdminFormsPage() {
const formsList = await db.query.forms.findMany({
orderBy: (f, { desc }) => [desc(f.createdAt)],
});
const submissionStats = await getFormSubmissionStats(
formsList.map((form) => form.id),
null
);
return (
<AdminShellServer>
@@ -48,6 +53,7 @@ export default async function AdminFormsPage() {
<TableRow>
<TableHead>Title</TableHead>
<TableHead>Status</TableHead>
<TableHead>Responses</TableHead>
<TableHead>Created</TableHead>
<TableHead className="text-right">Actions</TableHead>
</TableRow>
@@ -55,7 +61,7 @@ export default async function AdminFormsPage() {
<TableBody>
{formsList.length === 0 ? (
<TableRow>
<TableCell colSpan={4} className="h-24 text-center text-muted-foreground">
<TableCell colSpan={5} className="h-24 text-center text-muted-foreground">
No forms found. Create one to get started.
</TableCell>
</TableRow>
@@ -76,6 +82,11 @@ export default async function AdminFormsPage() {
)}
</Link>
</TableCell>
<TableCell className="p-0 align-middle">
<Link href={`/admin/form/${form.id}/result`} className="flex items-center p-3 h-full w-full">
{submissionStats.get(form.id)?.totalAnswers ?? 0}
</Link>
</TableCell>
<TableCell className="p-0 align-middle">
<Link href={`/admin/form/${form.id}`} className="flex items-center p-3 h-full w-full">
{form.createdAt ? new Date(form.createdAt).toLocaleDateString() : 'N/A'}