Multiple db handling in addQuestion

This commit is contained in:
mrfry 2020-11-26 09:51:20 +01:00
parent 309436b227
commit 587c304317

View file

@ -14,7 +14,7 @@ const getDefaultQuestion = () => {
} }
} }
export default function AddQuestion(props) { export default function AddQuestion() {
const [form, setForm] = useState({ quiz: [getDefaultQuestion()] }) const [form, setForm] = useState({ quiz: [getDefaultQuestion()] })
const [subjects, setSubjects] = useState(undefined) const [subjects, setSubjects] = useState(undefined)
const [isSubmitting, setIsSubmitting] = useState(false) const [isSubmitting, setIsSubmitting] = useState(false)
@ -29,9 +29,15 @@ export default function AddQuestion(props) {
return resp.json() return resp.json()
}) })
.then((data) => { .then((data) => {
let res = data.map((x) => { let res = data.reduce((acc, x) => {
return x.name return [
}) ...acc,
...x.subjs.map((subj) => {
return subj.name
}),
]
}, [])
res = res.sort() res = res.sort()
setSubjects(res) setSubjects(res)
}) })
@ -58,8 +64,8 @@ export default function AddQuestion(props) {
<input <input
placeholder="Kérdés..." placeholder="Kérdés..."
type="text" type="text"
onChange={(e) => onChange={(err) =>
onChange({ ...currData, Q: e.target.value }, index) onChange({ ...currData, Q: err.target.value }, index)
} }
value={Q || ''} value={Q || ''}
className={styles.questionInput} className={styles.questionInput}
@ -69,8 +75,8 @@ export default function AddQuestion(props) {
<input <input
placeholder="Válasz..." placeholder="Válasz..."
type="text" type="text"
onChange={(e) => onChange={(err) =>
onChange({ ...currData, A: e.target.value }, index) onChange({ ...currData, A: err.target.value }, index)
} }
value={A || ''} value={A || ''}
className={styles.questionInput} className={styles.questionInput}
@ -154,17 +160,22 @@ export default function AddQuestion(props) {
.json() .json()
.then((resp) => { .then((resp) => {
if (resp.success) { if (resp.success) {
alert('Sikeres beküldés, ' + resp.newQuestions + ' új kérdés') // eslint-disable-line alert(
'Sikeres beküldés, ' +
resp.newQuestions.reduce((acc, res) => {
return acc + res.newQuestions
}, 0) +
' új kérdés'
) // eslint-disable-line
setIsSubmitting(false) setIsSubmitting(false)
} else { } else {
console.log(resp)
alert('Hiba beküldés közben :/') // eslint-disable-line alert('Hiba beküldés közben :/') // eslint-disable-line
setIsSubmitting(false) setIsSubmitting(false)
} }
}) })
.catch((e) => { .catch((err) => {
alert('Hiba beküldés közben :/') // eslint-disable-line alert('Hiba beküldés közben :/') // eslint-disable-line
console.log(e) console.log(err)
setIsSubmitting(false) setIsSubmitting(false)
}) })
} }
@ -214,7 +225,7 @@ export default function AddQuestion(props) {
) )
} }
const renderSubjSelector = (props) => { const renderSubjSelector = () => {
// TODO: handle if new subject // TODO: handle if new subject
return ( return (
<div className={styles.subjSelectorContainer}> <div className={styles.subjSelectorContainer}>
@ -243,7 +254,7 @@ export default function AddQuestion(props) {
<option key={-1} value={-1}> <option key={-1} value={-1}>
Válassz egy tárgyat... Válassz egy tárgyat...
</option> </option>
{props.subjects.map((subjName, i) => { {subjects.map((subjName, i) => {
return ( return (
<option key={i} value={i}> <option key={i} value={i}>
{subjName} {subjName}
@ -296,7 +307,7 @@ export default function AddQuestion(props) {
<div> <div>
{renderUsage()} {renderUsage()}
<hr /> <hr />
{renderSubjSelector({ subjects })} {renderSubjSelector()}
{renderStuff()} {renderStuff()}
</div> </div>
) )