diff --git a/src/components/layout.js b/src/components/layout.js index 45c56e7..ab5faaa 100644 --- a/src/components/layout.js +++ b/src/components/layout.js @@ -30,7 +30,12 @@ export default function Layout (props) { manual + >AllQuestions + + + userQuestions
diff --git a/src/pages/allQuestions.js b/src/pages/allQuestions.js index 1895a40..4245e58 100644 --- a/src/pages/allQuestions.js +++ b/src/pages/allQuestions.js @@ -1,94 +1,69 @@ -import React, { PureComponent } from 'react' +import React, { useState, useEffect } from 'react' import fetch from 'unfetch' import LoadingIndicator from '../components/LoadingIndicator.js' import Subject from '../components/Subject.js' import SubjectSelector from '../components/SubjectSelector.js' - -import constants from '../constants.json' import Layout from '../components/layout' -class AllQuestions extends PureComponent { - constructor (props) { - super(props) +import constants from '../constants.json' - this.state = { - loaded: false, - activeSubjName: '', - searchTerm: '' - } +export default function AllQuestions (props) { + const [data, setData] = useState(null) + const [loaded, setLoaded] = useState(false) + const [activeSubjName, setActiveSubjName] = useState('') + const [searchTerm, setSearchTerm] = useState('') + // TODO: fetches twice + useEffect(() => { console.info('Fetching data') - fetch(`${constants.serverUrl}data.json`) // eslint-disable-line + fetch(`${constants.serverUrl}data.json`) .then((resp) => { return resp.json() }) .then((data) => { - this.data = data - this.setState({ - loaded: true - }) + setData(data) + setLoaded(true) }) - } + }, [loaded]) - onSubjSelect (name) { - this.setState({ - activeSubjName: name + if (loaded) { + let currSubj = data.Subjects.find((subj) => { + return subj.Name === activeSubjName }) - } - searchBarOnChange (e) { - let text = e.target.value - this.setState({ - searchTerm: text - }) - } - - render () { - const { loaded, activeSubjName, searchTerm } = this.state - - if (loaded) { - let currSubj = this.data.Subjects.find((subj) => { - return subj.Name === activeSubjName - }) - - return ( - + return ( + +
-
- -
- - { setSearchTerm(e.target.value) }} /> - -
-
- -
- - ) - } else { - return ( - - - - ) - } + { setActiveSubjName(subjName) }} + /> +
+
+ +
+
+
+ ) + } else { + return ( + + + + ) } } - -export default AllQuestions diff --git a/src/pages/manual.js b/src/pages/manual.js index 6049e69..9fbd4ab 100644 --- a/src/pages/manual.js +++ b/src/pages/manual.js @@ -63,57 +63,61 @@ másnak a legfrissebb adatok állnak rendelkezésre.
- + + - + + + +
-

Először is tölts le egy userscript futtató kiegészítőt a böngésződhöz. Én Tampermonkeyt használok, és ezzel van tesztelve a +

+

Először is tölts le egy userscript futtató kiegészítőt a böngésződhöz. Én Tampermonkeyt használok, és ezzel van tesztelve a userscript is, ezért ez ajánlott. Más is működhet (violentmonkey, etc), de az nem garantált. Majd a weboldalról egy kattintással elvileg le tudod tölteni a scriptet, és elvileg kész is. Script majd udvariasan megkéri, hogy hagy beszélgessen a szerverrel, mert mással nem tud. -

-

Teszt közben még több dolog történhet: -

-

    -
  • Nem jó kérdésre ad választ a script: Ilyenkor az van, hogy nincs meg a +

    +

    Teszt közben még több dolog történhet: +

    +

      +
    • Nem jó kérdésre ad választ a script: Ilyenkor az van, hogy nincs meg a kérdés, vagy több hasonló kérdés/válasz van. Ilyenkor a jobbra/balra gombbal váltogathatsz azok a kérdés/válasz combók közül, amit talált a script
    • -
    • Több teszt kérdés van egy oldalon: Fel le gombbal váltogathatsz a kérdések között. +
    • Több teszt kérdés van egy oldalon: Fel le gombbal váltogathatsz a kérdések között. Ilyenkor is működik az előbb említett funkció. Az indexek, amit kiír a bal felső sarokban: aktuális kérdés száma / aktuális találat száma.
    • -
    • Nem jelenik meg semmi, vagy nem működik a script: Megesik az ilyesmi. Ha +
    • Nem jelenik meg semmi, vagy nem működik a script: Megesik az ilyesmi. Ha a webszerver még elérhető akkor ott meg bírod nézni a kérdéseket, és ott lehet keresgélni Ctrl + F -el Ha az sincs, akkor lehet hogy jól jön ha van egy lementett kérdés gyűjteményed.
    • -
    +
-

Egyéb funkciók: -

    -
  • +

    Egyéb funkciók: +

      +
    • Ha esetleg videókat nézel, akkor spaceval lehet play/pausolni, és jobbra/balra gombbal ugrani a videóban. -
    • -
    • +
    • +
    • Ha bármikor nem kell a script, akkor a menü gomb alatt bekapcsolhatod a passzív módot, ami nem piszkálja a szervert. Vagy kikapcsolhatod magát a scriptet tampermonkey-ban. Ha bármiért is el akarod tüntetni a következő oldalig az éppen megjelenő script ablakot, akkor középső egér gombbal kattintva rajta ezt megteheted. -
    • -
    +
  • +
-

Ha 2.0 előttről jöttél, és rettenetesen össze vagy zavarodva: -

+

Ha 2.0 előttről jöttél, és rettenetesen össze vagy zavarodva: +

2.0 előtt a script az egész adatbázist leszedte, beolvasta, és onnan keresett. Ez a keresés most szerver oldalon van megvalósítva, és a script csak a kérdést, hozzá tartózó egyéb infót (pl kép nevek) és a tárgy nevét küldi el szervernek. Ezután az visszaküldi a helyes válaszokat. -

- img - + img +

Eddigi teszt kérdések:

diff --git a/src/pages/userQuestions.js b/src/pages/userQuestions.js index d56c3be..03247ba 100644 --- a/src/pages/userQuestions.js +++ b/src/pages/userQuestions.js @@ -1,65 +1,58 @@ -import React, { PureComponent } from 'react' +import React, { useState, useEffect } from 'react' -import LoadingIndicator from '../LoadingIndicator' +import LoadingIndicator from '../components/LoadingIndicator' +import Layout from '../components/layout' -import constants from '../../constants.json' +import constants from '../constants.json' -class UserQuestions extends PureComponent { - constructor (props) { - super(props) - - this.state = { - loaded: false - } +export default function UserQuestions (props) { + const [loaded, setLoaded] = useState(false) + const [qa, setQa] = useState(null) + useEffect(() => { console.info('Fetching qa.json') fetch(`${constants.serverUrl}qa.json`) // eslint-disable-line .then((resp) => { return resp.json() }) .then((data) => { - this.qa = data - - this.setState({ - loaded: true - }) + setQa(data) + setLoaded(true) }) - } + }, [loaded]) - render () { - const { loaded } = this.state - - if (loaded) { - let questions = Object.keys(this.qa).map((key, i) => { - let q = this.qa[key] - return ( -
-
-
- {key}: -
-
- {q.q} -
+ if (loaded) { + let questions = Object.keys(qa).map((key, i) => { + let q = qa[key] + return ( +
+
+
+ {key}:
-
- {q.a} +
+ {q.q}
- ) - }).reverse() +
+ {q.a} +
+
+ ) + }).reverse() - return ( + return ( +
{questions}
- ) - } else { - return ( +
+ ) + } else { + return ( + - ) - } + + ) } } - -export default UserQuestions