From c87dc4ece5d81ed8cd922f21afe220438174d33c Mon Sep 17 00:00:00 2001 From: Ojakoo Date: Mon, 19 Sep 2022 15:45:20 +0300 Subject: [PATCH] Fix signup list error when opening in new tab --- src/pages/admin/signups/[id]/list.tsx | 61 ++++++++++++++++----------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/src/pages/admin/signups/[id]/list.tsx b/src/pages/admin/signups/[id]/list.tsx index a3723dc..d3c005b 100644 --- a/src/pages/admin/signups/[id]/list.tsx +++ b/src/pages/admin/signups/[id]/list.tsx @@ -26,13 +26,19 @@ const SignupEmailPage: NextPage = () => { const { id } = router.query; useEffect(() => { - const formId = Number(id); - SignupApi.getForm(formId, true) - .then((res) => setSignupForm(res)); - - SignupApi.getSignups(formId).then((res) => setSignups(res)); + const formId = id && Number(id); + if (formId !== undefined && !Number.isNaN(formId)) { + SignupApi.getForm(formId, true).then((res) => { + setSignupForm(res); + }); + SignupApi.getSignups(formId).then((res) => { + setSignups(res); + }); + } }, [id]); + const title = signupForm ? signupForm.title_fi : "Loading..."; + const confirmDelete = async (signup: Signup, question: any) => { if (window.confirm(`Delete: ${signup.id}: ${signup.answer[question.id]}; Are you sure?`) === true) { try { @@ -45,27 +51,25 @@ const SignupEmailPage: NextPage = () => { } }; - const title = signupForm ? signupForm.title_fi : "Loading..."; + const renderData = () => { + if (!signupForm || !signups || signups.length === 0) { + return
No signups.
; + } - // TODO: ATM we filter 'info' questions from table here. Maybe remove them from answer JSON altogether? - const questions = signupForm ? signupForm.questions.filter((q) => q.type !== "info").map((q) => ({ - title: q.title_fi, - id: q.id, - })) : []; + // TODO: ATM we filter 'info' questions from table here. Maybe remove them from answer JSON altogether? + const questions = signupForm ? signupForm.questions.filter((q) => q.type !== "info").map((q) => ({ + title: q.title_fi, + id: q.id, + })) : []; - // Generate 2-dimensional array where rows are signups and columns are answers to questions. - const CSVData = signups.map((s) => questions.map((q) => s.answer[q.id])); - // Add reserve signup "header" - if (signupForm?.quota) { - CSVData.splice(signupForm.quota, 0, ["RESERVE-SIGNUPS"]); - } + // Generate 2-dimensional array where rows are signups and columns are answers to questions. + const CSVData = signups.map((s) => questions.map((q) => s.answer[q.id])); + // Add reserve signup "header" + if (signupForm?.quota) { + CSVData.splice(signupForm.quota, 0, ["RESERVE-SIGNUPS"]); + } - return ( - -

- {title} - : Sign-ups -

+ return ( @@ -81,7 +85,6 @@ const SignupEmailPage: NextPage = () => { - {signups.map((s) => ( @@ -99,6 +102,16 @@ const SignupEmailPage: NextPage = () => { ))}
+ ); + }; + + return ( + +

+ {title} + : Sign-ups +

+ {renderData()}
); };