import React, { useState, useEffect } from 'react' import Head from 'next/head' import SubjectView from '../components/subjectView' import QuestionView from '../components/questionView' import QuestionAdder from '../components/questionAdder.js' import PossibleAnswers from '../components/possibleAnswers.js' import DbSelector from '../components/dbSelector.js' import LoadingIndicator from '../components/LoadingIndicator' import styles from './index.module.css' import commonStyles from '../commonStyles.module.css' import constants from '../constants.json' const Infos = ({ onClick, renderOKButton }) => { return (
Kérdés szerkesztő
Ezen az oldalon az éles adatbázisban levő kérdéseket tudod szerkeszteni, vagy azokhoz tudsz adni.{' '} A törléshez és módosításokhoz nem kér megerősítést, ezek azonnal megtörténnek, és nem visszavonhatóak.
Néhány dolog, amit kérlek tarts be szerkesztés közben:
  • Ne rontsd el a kérdéseket sok törléssel / rossz válasz megadásával. Sok más felhasználónak lesz rossz, és visszakereshető / tiltható a módosító
  • Arra is vigyázz, hogy véletlen se történjen ilyesmi, vagy ha mégis valami baj történt, akkor azt{' '} jelezd. Van sok biztonsági mentés
  • Ahhoz, hogy a script megtalálja a helyes választ a kérdés szövegének pontosan olyannak kell lennie, mint a teszt közben (elírásokkal, .... -okkal, meg mindennel)
Ha akármi kérdés van,{' '} itt lehet chatszobában kérdezni , vagy{' '} itt lehet üzenetet küldeni .
{renderOKButton && (
OK
)}
) } const fetchDbs = () => { return new Promise((resolve) => { fetch(`${constants.apiUrl}getdbs`, { credentials: 'include', }) .then((resp) => { return resp.json() }) .then((resp) => { resolve(resp) }) }) } const fetchData = (selectedDb) => { return new Promise((resolve) => { const toFetch = `${constants.apiUrl}${selectedDb.path}` fetch(toFetch, { credentials: 'include', }) .then((resp) => { return resp.json() }) .then((resp) => { resolve(resp) }) }) } const views = { welcome: 'w', subject: 's', question: 'q', questionAdder: 'qa', possibleAnswers: 'pa', } export default function Index({ router }) { const [infoRead, setInfoRead] = useState(false) const [data, setData] = useState(null) const [qdbs, setQdbs] = useState(null) const [selectedDb, setSelectedDb] = useState() const [view, setView] = useState(views.welcome) const [error, setError] = useState(null) useEffect(() => { if (selectedDb) { loadData() } }, [selectedDb]) useEffect(() => { fetchDbs().then((resp) => { setQdbs(resp) const view = router.query.v ? decodeURIComponent(router.query.v) : views.welcome setView(view) }) }, []) const loadData = () => { setData(null) if (!selectedDb) { alert('Válassz egy adatbázist!') return } fetchData(selectedDb) .then((resp) => { setData(resp) }) .catch((error) => { console.error(error) console.error('Error while fetching data') setError('Error while fetching data') }) } const refetchDbs = () => { if (selectedDb) { fetchData(selectedDb).then((resp) => { setData(resp) }) } fetchDbs().then((resp) => { setQdbs(resp) }) } const onQuestionDelete = (deletedQuestions) => { console.log(deletedQuestions) } const onQuestionChange = (newVal, subjName, questionIndex) => { console.log(newVal, subjName, questionIndex) } const renderView = () => { if (view === views.subject) { return ( <> Tárgyak - Data Editor | Frylabs.net {data && } ) } else if (view === views.question) { return ( <> Kérdések - Data Editor | Frylabs.net {data && ( )} ) } else if (view === views.questionAdder) { return ( <> Kérdés beküldés - Data Editor | Frylabs.net ) } else if (view === views.possibleAnswers) { return ( <> Kitöltetlen tesztek - Data Editor | Frylabs.net ) } else if (view === views.welcome) { return } else { return
No view!
} } function renderViewSelector() { return (
{ router.replace( `${router.pathname}?v=${views.question}`, undefined, { shallow: true } ) setView(views.question) }} > Kérdések
{ router.replace(`${router.pathname}?v=${views.subject}`, undefined, { shallow: true, }) setView(views.subject) }} > Tárgyak
{ router.replace( `${router.pathname}?v=${views.questionAdder}`, undefined, { shallow: true } ) setView(views.questionAdder) }} > Kérdés beküldés
{ router.replace( `${router.pathname}?v=${views.possibleAnswers}`, undefined, { shallow: true } ) setView(views.possibleAnswers) }} > Kitöltetlen tesztek
) } if (error) { return
{error}
} if (!infoRead) { return setInfoRead(true)} renderOKButton /> } if (!qdbs) { return } return (
{renderViewSelector()} {renderView()}
) }