Question.tsx 1.54 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import React from "react";
import { Q_Assay } from "./Q_Assay";
import { Q_Checkbox } from "./Q_Checkbox";
import { Q_Radio } from "./Q_Radio";

export interface BasicQuestionType {
  type: string;
  name: string;
  title: string;
  isRequired: boolean;
  content: any;
}

export interface EssayType extends BasicQuestionType {}
let EssayQ: EssayType = {
  type: "assay",
  name: "Question1",
  title: "Question1",
  isRequired: false,
  content: null,
};

export interface RadioType extends BasicQuestionType {
  content: {
    hasOther: boolean;
Jiwon Yoon's avatar
Jiwon Yoon committed
26
    choices: any[];
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    otherText: string;
  };
}
let RadioQ: RadioType = {
  type: "radio",
  name: "Question2",
  title: "Question2",
  isRequired: false,
  content: {
    hasOther: false,
    otherText: "",
    choices: ["1", "2", "3"],
  },
};

export interface CheckboxType extends BasicQuestionType {
  content: {
Jiwon Yoon's avatar
Jiwon Yoon committed
44
    choices: any[];
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
    maxCount: number;
  };
}
let CheckboxQ: CheckboxType = {
  type: "checkbox",
  name: "Question3",
  title: "Question3",
  isRequired: false,
  content: {
    choices: ["ch1", "ch2", "ch3"],
    maxCount: 2,
  },
};

let questionList: BasicQuestionType[] = [EssayQ, RadioQ, CheckboxQ];

export const Question = () => (
  <>
    {questionList.map((element) => {
      if (element.type === "assay") {
        return <Q_Assay questionList={questionList} element={element} />;
      } else if (element.type === "radio") {
        return <Q_Radio element={element} />;
      } else if (element.type === "checkbox") {
        return <Q_Checkbox element={element} />;
      }
    })}
  </>
);