From a89829ea08af87d867aa7366f6561eacd8a7494c Mon Sep 17 00:00:00 2001 From: Max-vS <117863553+Max-vS@users.noreply.github.com> Date: Thu, 27 Jun 2024 13:47:04 +0200 Subject: [PATCH] feat: add tally matrix field representation (#244) Co-authored-by: stanislav <91570355+stanislavopeida@users.noreply.github.com> --- .../review/[review_id]/reviewForm.tsx | 41 +++++++------ bun.lockb | Bin 286164 -> 287433 bytes components/application/applicationField.tsx | 57 +++++++++++++++--- lib/faker/applications.ts | 27 +++++++++ lib/faker/opportunities.ts | 2 +- lib/schemas/tally.ts | 8 +++ 6 files changed, 108 insertions(+), 27 deletions(-) diff --git a/app/opportunities/[opportunity_id]/review/[review_id]/reviewForm.tsx b/app/opportunities/[opportunity_id]/review/[review_id]/reviewForm.tsx index 7836fe27..82c986d6 100644 --- a/app/opportunities/[opportunity_id]/review/[review_id]/reviewForm.tsx +++ b/app/opportunities/[opportunity_id]/review/[review_id]/reviewForm.tsx @@ -6,7 +6,6 @@ import { Card, CardContent, CardHeader, CardTitle } from "@components/ui/card"; import { ApplicationField } from "@components/application/applicationField"; import { SubmitHandler, useForm } from "react-hook-form"; import { Question, QuestionSchema } from "@lib/schemas/question"; -import { QuestionField } from "./_components/questionField"; import { Form } from "@components/ui/form"; import { api } from "trpc/react"; import { toast } from "sonner"; @@ -15,6 +14,8 @@ import { Tally } from "@lib/types/tally"; import { useRouter } from "next/navigation"; import { DeleteAlertDialog } from "../components/review-altert-dialog"; import Breadcrumbs from "@components/ui/breadcrumbs"; +import { QuestionView } from "../../edit/_components/questionnaire/questionView"; +import { QuestionField } from "./_components/questionField"; interface ReviewFormProps { application: Application; @@ -69,6 +70,8 @@ export const ReviewForm = ({ ); }; + console.log(questions); + return (
{/* eslint-disable-next-line @typescript-eslint/no-misused-promises */} @@ -109,14 +112,16 @@ export const ReviewForm = ({ Application - -
- {applicationFields - .filter((field) => !!field.value) - .map((field) => ( - - ))} -
+ + {applicationFields + .filter((field) => !!field.value) + .map((field, index) => ( + + ))} @@ -126,16 +131,14 @@ export const ReviewForm = ({ Review - -
- {questions.map((question, index) => ( - - ))} -
+ + {questions.map((question, index) => ( + + ))} diff --git a/bun.lockb b/bun.lockb index ff6acacc34ec9dc351082310fc7ad7da5f8321b1..fcfbae40b1d1f218669ad6e56b8261e2a473f490 100755 GIT binary patch delta 54472 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 FjR3FJu@nFR diff --git a/components/application/applicationField.tsx b/components/application/applicationField.tsx index 62471567..55c4e392 100644 --- a/components/application/applicationField.tsx +++ b/components/application/applicationField.tsx @@ -17,10 +17,20 @@ import { Checkbox } from "@components/ui/checkbox"; import { FileText, X } from "lucide-react"; import { FormLabel } from "@components/ui/form"; import { cn } from "@lib/utils"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@components/ui/table"; +import { Badge } from "@components/ui/badge"; interface ApplicationFieldProps { field: TallyField; className?: string; + index?: number; } const ApplicationValue = ({ field }: ApplicationFieldProps) => { @@ -36,7 +46,7 @@ const ApplicationValue = ({ field }: ApplicationFieldProps) => { case "CHECKBOXES": if (Array.isArray(field.value)) { return ( -
+
{field.options!.map((option) => (
{ /> @@ -62,7 +72,7 @@ const ApplicationValue = ({ field }: ApplicationFieldProps) => { return (
-
@@ -95,7 +105,7 @@ const ApplicationValue = ({ field }: ApplicationFieldProps) => { (opt) => opt.id === field.value?.at(0), ); if (selected_value) { - return

{selected_value.text}

; + return

{selected_value.text}

; } return

No value

; @@ -139,15 +149,48 @@ const ApplicationValue = ({ field }: ApplicationFieldProps) => { ))}
); + + case "MATRIX": + return ( + + + + + {field.columns.map((col) => ( + {col.text} + ))} + + + + {field.rows.map((row) => ( + + {row.text} + {field.columns.map((col) => ( + + + + ))} + + ))} + +
+ ); } }; export const ApplicationField = ({ field, className, + index, }: ApplicationFieldProps) => ( -
- {field.label} - +
+ {index && {index}} +
+ {field.label} + +
); diff --git a/lib/faker/applications.ts b/lib/faker/applications.ts index ba74c538..259ddf56 100644 --- a/lib/faker/applications.ts +++ b/lib/faker/applications.ts @@ -7,6 +7,7 @@ enum FieldTypes { CHECKBOXES = "CHECKBOXES", MULTIPLE_CHOICE = "MULTIPLE_CHOICE", DROPDOWN = "DROPDOWN", + MATRIX = "MATRIX", } enum NormalFieldTypes { @@ -146,6 +147,32 @@ function generateTallyFieldDetails( options: multiple_options, }; + case FieldTypes.MATRIX: + const rows = Array.from( + { length: faker.number.int({ min: 3, max: 5 }) }, + () => ({ id: faker.string.uuid(), text: faker.lorem.word() }), + ); + + const columns = Array.from( + { length: faker.number.int({ min: 3, max: 5 }) }, + () => ({ id: faker.string.uuid(), text: faker.word.adjective() }), + ); + const value = rows.reduce( + (acc, row) => { + acc[row.id] = [faker.helpers.arrayElement(columns).id]; + return acc; + }, + {} as Record, + ); + + return { + ...baseField, + type: FieldTypes.MATRIX, + value: value, + rows: rows, + columns: columns, + } + default: if ( Object.values(NormalFieldTypes).includes(fieldType as NormalFieldTypes) diff --git a/lib/faker/opportunities.ts b/lib/faker/opportunities.ts index d4c4749e..31d0249b 100644 --- a/lib/faker/opportunities.ts +++ b/lib/faker/opportunities.ts @@ -113,7 +113,7 @@ function generateQuestionnaire(): Questionnaire { name: faker.color.human(), requiredReviews: faker.number.int({ min: 1, max: 3 }), questions: Array.from( - { length: faker.number.int({ min: 1, max: 5 }) }, + { length: faker.number.int({ min: 3, max: 5 }) }, generateQuestion, ), conditions: [], diff --git a/lib/schemas/tally.ts b/lib/schemas/tally.ts index 778f9c4c..565745f2 100644 --- a/lib/schemas/tally.ts +++ b/lib/schemas/tally.ts @@ -33,6 +33,13 @@ const TallyDropdown = z.object({ options: z.array(z.object({ id: z.string(), text: z.string() })), }); +const TallyMatrix = z.object({ + type: z.literal("MATRIX"), + value: z.record(z.array(z.string())), + columns: z.array(z.object({ id: z.string(), text: z.string() })), + rows: z.array(z.object({ id: z.string(), text: z.string() })), +}); + export const TallyField = z .object({ key: z.string(), @@ -44,6 +51,7 @@ export const TallyField = z TallyMultipleChoice, TallyFileUpload, TallyDropdown, + TallyMatrix, z.object({ type: z .literal("TEXTAREA")