Skip to content

Commit 531ad0e

Browse files
committed
feat: improve button labels for questionnaire completion
1 parent 745040a commit 531ad0e

File tree

1 file changed

+15
-11
lines changed
  • apps/frontend/src/routes/_auth/questionnaire/_questionnaire/$id

1 file changed

+15
-11
lines changed

apps/frontend/src/routes/_auth/questionnaire/_questionnaire/$id/remarks.tsx

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Button, Group, isSameOrAfter, Stack, Textarea, useForm } from "@quassel/ui";
2-
import { createFileRoute, Link, useNavigate } from "@tanstack/react-router";
2+
import { createFileRoute, useNavigate } from "@tanstack/react-router";
33
import { i18n } from "../../../../../stores/i18n";
44
import { useStore } from "@nanostores/react";
55
import { $api } from "../../../../../stores/api";
@@ -8,11 +8,11 @@ import { components } from "../../../../../api.gen";
88
import { useQueryClient } from "@tanstack/react-query";
99

1010
export const messages = i18n("questionnaireRemarks", {
11+
actionBack: "Back (Save)",
12+
actionContinueNextPeriod: "Continue with next period",
13+
actionCompleteQuestionnaire: "Complete questionnaire",
1114
title: "Add remarks",
1215
remarkDescription: "Use this field to point out any exceptions to the language exposure like vacations etc...",
13-
backAction: "Back",
14-
saveAction: "Save",
15-
formAction: "Save and complete",
1616
});
1717

1818
type FormValues = {
@@ -36,6 +36,8 @@ function QuestionnaireRemarks() {
3636
const { data: questionnaire } = $api.useSuspenseQuery("get", "/questionnaires/{id}", { params: { path: { id: p.id } } });
3737
const updateMutation = $api.useMutation("patch", "/questionnaires/{id}");
3838

39+
const isLastQuestionnaire = isSameOrAfter(new Date(Date.parse(questionnaire.endedAt)), new Date(), "month");
40+
3941
useEffect(() => {
4042
if (questionnaire) {
4143
f.setValues(questionnaire);
@@ -46,10 +48,15 @@ function QuestionnaireRemarks() {
4648
const onSave = (values: components["schemas"]["QuestionnaireMutationDto"]) =>
4749
updateMutation.mutateAsync({ params: { path: p }, body: values });
4850

51+
const handleBackAndSave = async () => {
52+
await onSave(f.getValues());
53+
n({ to: "/questionnaire/$id/entries", params: p });
54+
};
55+
4956
const handleSubmit = async (values: FormValues) => {
5057
await onSave({ ...values, completedAt: new Date().toISOString() });
5158

52-
if (isSameOrAfter(new Date(Date.parse(questionnaire.endedAt)), new Date(), "month")) {
59+
if (isLastQuestionnaire) {
5360
n({ to: "/questionnaire/completed" });
5461
} else {
5562
await c.invalidateQueries(
@@ -67,14 +74,11 @@ function QuestionnaireRemarks() {
6774
<Textarea {...f.getInputProps("remark")} description={t.remarkDescription} rows={8} />
6875

6976
<Group>
70-
<Link to="/questionnaire/$id/entries" params={p}>
71-
<Button variant="light">{t.backAction}</Button>
72-
</Link>
73-
<Button variant="outline" onClick={() => onSave(f.getValues())} loading={updateMutation.isPending}>
74-
{t.saveAction}
77+
<Button variant="light" onClick={handleBackAndSave} loading={updateMutation.isPending}>
78+
{t.actionBack}
7579
</Button>
7680
<Button type="submit" loading={updateMutation.isPending}>
77-
{t.formAction}
81+
{isLastQuestionnaire ? t.actionCompleteQuestionnaire : t.actionContinueNextPeriod}
7882
</Button>
7983
</Group>
8084
</Stack>

0 commit comments

Comments
 (0)