question.helper.tsx 3.01 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import React from "react";
import {
  QCheckbox,
  QDate,
  QDropdown,
  QEssay,
  QFile,
  QRadio,
  QRating,
  ACheckbox,
  ADate,
  ADropdown,
  AEssay,
  AFile,
  ARadio,
  ARating,
  REssay,
  RCheckbox,
  RRadio,
  RDropdown,
  RFile,
  RRating,
  RDate,
} from "../forms";
import { CreateQuestionData, IAnswer, IQuestionData } from "../types";

export const getElementByQuestionType = (
  element: CreateQuestionData,
  handleQuestion: Function,
  isEditing: boolean
) => {
  switch (element.type) {
    case "singletext":
      return (
        <QEssay
          element={element}
          isEditing={isEditing}
          handleQuestion={handleQuestion}
        />
      );
    case "radio":
      return (
        <QRadio
          handleQuestion={handleQuestion}
          element={element}
          isEditing={isEditing}
        />
      );
    case "checkbox":
      return (
        <QCheckbox
          handleQuestion={handleQuestion}
          element={element}
          isEditing={isEditing}
        />
      );
    case "dropdown":
      return (
        <QDropdown
          handleQuestion={handleQuestion}
          element={element}
          isEditing={isEditing}
        />
      );
    case "file":
      return (
        <QFile
          element={element}
          isEditing={isEditing}
          handleQuestion={handleQuestion}
        />
      );
    case "rating":
      return (
        <QRating
          handleQuestion={handleQuestion}
          element={element}
          isEditing={isEditing}
        />
      );
    case "date":
      return <QDate />;
    default:
      return <></>;
  }
};

export const getAnswerElementByType = (
  element: IQuestionData,
  answer: IAnswer
) => {
  switch (element.type) {
    case "singletext":
      return <AEssay element={element} answer={answer} />;
    case "radio":
      return <ARadio answer={answer} element={element} />;
    case "checkbox":
      return <ACheckbox answer={answer} element={element} />;
    case "dropdown":
      return <ADropdown answer={answer} element={element} />;
    case "file":
      return <AFile element={element} answer={answer} />;
    case "rating":
      return <ARating answer={answer} element={element} />;
    case "date":
      return <ADate element={element} answer={answer} />;
    default:
      return <></>;
  }
};

Jiwon Yoon's avatar
Jiwon Yoon committed
112
113
114
115
export const getResultElementByType = (
  question: IQuestionData,
  answers: any
) => {
116
117
  switch (question.type) {
    case "singletext":
Jiwon Yoon's avatar
Jiwon Yoon committed
118
      return <REssay question={question} answers={answers} />;
119
    case "radio":
Jiwon Yoon's avatar
Jiwon Yoon committed
120
      return <RRadio question={question} answers={answers} />;
121
    case "checkbox":
Jiwon Yoon's avatar
Jiwon Yoon committed
122
      return <RCheckbox question={question} answers={answers} />;
123
    case "dropdown":
Jiwon Yoon's avatar
Jiwon Yoon committed
124
      return <RDropdown question={question} answers={answers} />;
125
    case "file":
Jiwon Yoon's avatar
Jiwon Yoon committed
126
      return <RFile question={question} answers={answers} />;
127
    case "rating":
Jiwon Yoon's avatar
Jiwon Yoon committed
128
      return <RRating question={question} answers={answers} />;
129
    case "date":
Jiwon Yoon's avatar
Jiwon Yoon committed
130
      return <RDate question={question} answers={answers} />;
131
132
133
134
    default:
      return <></>;
  }
};