AdminQuiz.js 4.64 KB
Newer Older
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
1
import React, { useState, useEffect } from 'react';
JeongYeonwoo's avatar
JeongYeonwoo committed
2
3
4

let list = []
let QnAadmin = {}
JeongYeonwoo's avatar
JeongYeonwoo committed
5
let savechoose = {}
JeongYeonwoo's avatar
JeongYeonwoo committed
6

JeongYeonwoo's avatar
JeongYeonwoo committed
7
function AdminQuiz(props) {
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
8
9
10

    const [question, setQuestion] = useState(props.data.Q)
    // const [choose, setChoose] = useState(props.data.Choose)
JeongYeonwoo's avatar
JeongYeonwoo committed
11
    const [choose, setChoose] = useState('')
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
12
    const [answer, setAnswer] = useState(props.data.A)
JeongYeonwoo's avatar
JeongYeonwoo committed
13
    const [selectOption, setselectOption] = useState(1)
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    // const [c, setC] = useState(props.data.Choose)       
    console.log(props.data.Choose)
    console.log(choose)
    // console.log
    // props.quizNum가 바뀔때마다 즉, Admin.js에서 퀴즈버튼을 바꿔누를때마다 useEffect가 발생하여 값을 업데이트 시켜줍니다.
    useEffect(() => {
        setQuestion(props.data.Q)
        // setC(props.data.Choose)
        setAnswer(props.data.A)
        console.log(props.data.Choose)
        console.log(choose)
        // document.getElementById('3').value = c[2]
        // document.getElementById('4').value = c[3]

        // setcn(props.data.Choose)
        // eslint-disable-next-line
    }, [props.quizNum])
JeongYeonwoo's avatar
JeongYeonwoo committed
31
32
33
34
35

    const handleChangeQuestion = (event) => {
        QnAadmin['Q'] = event.target.value
        setQuestion(event.target.value)
    }
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
36

JeongYeonwoo's avatar
JeongYeonwoo committed
37
    const handleChangeChoose = (event) => {
JeongYeonwoo's avatar
JeongYeonwoo committed
38
        savechoose[event.target.id] = event.target.value
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
39
40
        setChoose(event.target.value)
        // console.log(event.target.value)
JeongYeonwoo's avatar
JeongYeonwoo committed
41
    }
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
42

JeongYeonwoo's avatar
JeongYeonwoo committed
43
44
45
46
47
48
49
50
51
52
    const handleChangeanswer = (event) => {
        QnAadmin['A'] = event.target.value
        setAnswer(event.target.value)
    }

    function addSelectOption() {
        list.push(
            <div className="input-group">
                <div className="input-group-prepend">
                    <div className="input-group-text">
JeongYeonwoo's avatar
JeongYeonwoo committed
53
                        <input type="radio" checked={false} name="answer" />
JeongYeonwoo's avatar
JeongYeonwoo committed
54
55
                    </div>
                </div>
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
56
                <input type="text" class="form-control" id={String(selectOption + 1)} placeholder={(selectOption + 1) + '번 보기를 입력하세요'} onChange={handleChangeChoose} />
JeongYeonwoo's avatar
JeongYeonwoo committed
57
58
59
60
61
            </div>
        )
        setselectOption(selectOption + 1)
    }

JeongYeonwoo's avatar
JeongYeonwoo committed
62

JeongYeonwoo's avatar
JeongYeonwoo committed
63
64
65
66
67
68
69
70
71
72
73
    function handleClick() {
        if (!question) {
            alert('문제가 입력되지 않았습니다.')
        }
        else if (!choose) {
            alert('보기가 입력되지 않았습니다.')
        }
        else if (!answer) {
            alert('정답이 입력되지 않았습니다.')
        }
        else {
JeongYeonwoo's avatar
JeongYeonwoo committed
74
            QnAadmin['Choose'] = Object.values(savechoose)
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
75
76
            QnAadmin['N'] = String(props.quizNum)
            props.fn(QnAadmin)
JeongYeonwoo's avatar
JeongYeonwoo committed
77
            QnAadmin = {}
JeongYeonwoo's avatar
JeongYeonwoo committed
78
79
80
81
82
83
84
            alert('입력이 완료되었습니다.')
        }

    }

    return (
        <div className="" id="Quiz1">
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
85
            <h2 className="p-3 border text-center bg-white">{String(props.quizNum)} 문제만들기</h2>
JeongYeonwoo's avatar
JeongYeonwoo committed
86
87
            <div className="p-3 borber">
                <div className="p-3 ">
JeongYeonwoo's avatar
JeongYeonwoo committed
88
                    <span className="font-weight-bold mr-2 h3">1. 문제 입력하기</span>
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
89
                    <input type="text" id="inputQuiz" className="form-control" value={question} onChange={handleChangeQuestion} placeholder="문제를 입력하세요" />
JeongYeonwoo's avatar
JeongYeonwoo committed
90
91
                </div>
                <div className="p-3 ">
JeongYeonwoo's avatar
JeongYeonwoo committed
92
93
                    <span className="font-weight-bold mr-2 h3">2. 보기 입력하기</span>
                    <div className="p-3 ">
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
94
95
96
97
98
                        <div className="input-group">
                            <div className="input-group-prepend">
                                <div className="input-group-text">
                                    <input type="radio" checked={false} name="answer" />
                                </div>
JeongYeonwoo's avatar
JeongYeonwoo committed
99
                            </div>
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
100
                            <input type="text" className="form-control" id='1' placeholder="1번 보기를 입력하세요" onChange={handleChangeChoose} />
JeongYeonwoo's avatar
JeongYeonwoo committed
101
                        </div>
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
102
103
                        {list.map((element, index) => element)}
                        <button className="btn btn-outline-secondary btn-sm" onClick={addSelectOption}>+</button>
JeongYeonwoo's avatar
JeongYeonwoo committed
104
                    </div>
JeongYeonwoo's avatar
JeongYeonwoo committed
105
                </div>
JeongYeonwoo's avatar
JeongYeonwoo committed
106
107
108

                <div className="p-3 ">
                    <span className="font-weight-bold mr-2 h3">정답:</span>
JeongYeonwoo's avatar
LAST    
JeongYeonwoo committed
109
                    <input type="text" value={answer} onChange={handleChangeanswer} placeholder="정답을 입력하세요" />
JeongYeonwoo's avatar
JeongYeonwoo committed
110
111
112
113
114
115
116
117
118
119
120
                </div>

                <label for="inputLogin" className="d-flex justify-content-center">
                    <button className="mt-4 btn btn-dark" onClick={handleClick}>작성완료</button>
                </label>
            </div>
        </div>
    )
}

export default AdminQuiz