From 261e04a0ebd177f665f6d8b3d60da3c8d42f37b5 Mon Sep 17 00:00:00 2001 From: MrFry Date: Sun, 8 Mar 2020 11:22:54 +0100 Subject: [PATCH] Added manual and all question page --- src/components/Subject.js | 2 +- src/components/SubjectSelector.js | 26 ++++ src/components/layout.js | 26 +++- src/defaultStyles.css | 2 +- src/pages/allQuestions.js | 69 +++++----- src/pages/index.js | 2 +- src/pages/manual.js | 221 +++++++++++++++++++++++------- 7 files changed, 257 insertions(+), 91 deletions(-) create mode 100644 src/components/SubjectSelector.js diff --git a/src/components/Subject.js b/src/components/Subject.js index 4ce990d..8235b5e 100644 --- a/src/components/Subject.js +++ b/src/components/Subject.js @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react' -import Question from '../Question' +import Question from './Question.js' class Subject extends PureComponent { render () { diff --git a/src/components/SubjectSelector.js b/src/components/SubjectSelector.js new file mode 100644 index 0000000..2144033 --- /dev/null +++ b/src/components/SubjectSelector.js @@ -0,0 +1,26 @@ +export default function SubjectSelector (props) { + const { activeSubjName, searchTerm, data, onSubjSelect } = props + + return ( +
+ {data.Subjects.map((subj, i) => { + if (!subj.Name.toLowerCase().includes(searchTerm.toLowerCase())) { + return null + } + + return ( +
onSubjSelect(subj.Name)} + > + {subj.Name} +
+ ) + })} +
+ ) +} diff --git a/src/components/layout.js b/src/components/layout.js index 667e167..45c56e7 100644 --- a/src/components/layout.js +++ b/src/components/layout.js @@ -1,4 +1,9 @@ +import Link from 'next/link' + +// TODO: activelink prop to set link to active export default function Layout (props) { + const { currPageName } = props + return (
@@ -12,12 +17,23 @@ export default function Layout (props) { Frylabs
- { console.log('a') }} - >aaaaaaaaaa + + home + + + manual + + + manual + -
+
{props.children}
diff --git a/src/defaultStyles.css b/src/defaultStyles.css index b6d97f9..ac1c17e 100644 --- a/src/defaultStyles.css +++ b/src/defaultStyles.css @@ -48,7 +48,7 @@ body { color: white; } -div.content { +.content { margin-left: 200px; padding: 1px 16px; } diff --git a/src/pages/allQuestions.js b/src/pages/allQuestions.js index 1d87a0a..1895a40 100644 --- a/src/pages/allQuestions.js +++ b/src/pages/allQuestions.js @@ -1,9 +1,12 @@ import React, { PureComponent } from 'react' +import fetch from 'unfetch' -import LoadingIndicator from '../LoadingIndicator' -import Subject from '../../components/Subject' +import LoadingIndicator from '../components/LoadingIndicator.js' +import Subject from '../components/Subject.js' +import SubjectSelector from '../components/SubjectSelector.js' -import constants from '../../constants.json' +import constants from '../constants.json' +import Layout from '../components/layout' class AllQuestions extends PureComponent { constructor (props) { @@ -50,47 +53,39 @@ class AllQuestions extends PureComponent { }) return ( -
+
- -
-
- {this.data.Subjects.map((subj, i) => { - if (!subj.Name.toLowerCase().includes(searchTerm.toLowerCase())) { - return null - } +
+ +
- return ( -
this.onSubjSelect(subj.Name)} - > - {subj.Name} -
- ) - })} -
-
-
- + +
+
+ +
-
+ ) } else { return ( - + + + ) } } diff --git a/src/pages/index.js b/src/pages/index.js index d517826..3961850 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -12,7 +12,7 @@ import links from '../data/links.json' export default function Index (props) { return ( - +
{Object.keys(links).map((key) => { let link = links[key] diff --git a/src/pages/manual.js b/src/pages/manual.js index e5d396e..6049e69 100644 --- a/src/pages/manual.js +++ b/src/pages/manual.js @@ -1,49 +1,178 @@ -import React, { PureComponent } from 'react' -import fetch from 'unfetch' +import Layout from '../components/layout' -import LoadingIndicator from '../components/LoadingIndicator' - -import constants from '../constants.json' - -class Manual extends PureComponent { - constructor (props) { - super(props) - - this.state = { - loaded: false - } - - console.info('Fetching manual') - fetch(`${constants.serverUrl}manual`) // eslint-disable-line - .then((resp) => { - return resp.text() - }) - .then((data) => { - this.manual = { - __html: data - } - - this.setState({ - loaded: true - }) - }) - } - - render () { - const { loaded } = this.state - - if (loaded) { - return ( -
-
-
- ) - } else { - return ( - - ) - } - } +export default function Manual (props) { + return ( + + {renderMaual()} + + ) } -export default Manual +function renderMaual () { + return ( +
+
+

Moodle/Elearnig/KMOOC manual

+
+
+ Ez a userscript Moodle/Elearnig/KMOOC tesztek megoldása során segítséget jelenít meg. +
+

+ A válasz ablakban jobb felül lévő százalék jelzi, hogy mekkora eséllyel jó a megoldás. Ez +sokszor jó viszonyítás, de semmi sem biztos! Bármikor előfordulhat, hogy nem jó a +megjelenített válasz! Ezért csak saját felelősségedre használd! Sok kikerülhetetlen +hibalehetőség van, amit egyszerű nem lehet scriptben lekezelni (Pl rosszul megadott kérdés +tanár részéről). Kézzel is lehet keresni a elmentett kérdések között. Ezért mindig +legyen egy letöltött verziód a kérdésekről, mert nem 100% hogy mindég elérhető a szerver! +Továbbá ha a moodle oldalán a DOM megváltozik, a script nem fog működni! Ez nem annyira +gyakori, de bármikor megtörténhet! Érdemes nem kikapcsolni a tampermonkey-ban a userscript +frissítést. Ez nem windows update, itt tényleg hibajavítások jönnek ki. Hiba, észrevétel +esetén : Script Feedback (ezt +gyakran még aznap megnézem.) +

+

+ Továbbá ez a userscript HTTP requestekket küldhet egy szerver felé, ahova az összes megoldott +tesztjeid kérdéseit és (helyes)válaszait feltölti! Ezzel garantálja, hogy neked, és mindenki +másnak a legfrissebb adatok állnak rendelkezésre. +

+ +

Tartalomjegyzék

+
+
+
    +
  • + Használat - Ez szuper fontos, elsőnek olvasd el +
  • +
  • + Eddigi teszt kérdések - Itt elérhető az eddigi összes ismert teszt + kérdés-válaszai +
  • +
  • + Gyakran előforduló kérdések - Ha itt nincs kérdésed, akkor itt tedd fel! +
  • +
  • + Adat egyszerűsítés - Ha túl sok egyforma kérdésed van ;) +
  • +
  • + Other stuff +
  • +
+
+

Használat

+
+
+ + + +
+

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 + 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. + 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 + 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: +

    +
  • + 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: +

+ 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 +
+
+

Eddigi teszt kérdések:

+
+
+ Eddigi összes kérdés +Továbbá ez még arra jó, hogy ha valamiért bugos a script, akkor itt tudsz ctrl-f el nézegetni, +vagy ha lemented az összes kérdést, akkor még akkor is biztonságban vagy, ha netán leáll a +szerver, vagy elmegy a neted. Bár úgy nehezen moodlezel, de mind1 + +
+

Gyakran előforduló kérdések

+
+
+
    +
  • + 1. Olyan helyeken fut le a script, ahol nem kellene, vagy zavar +
    Tampermonkey bővitmény ikon -> click -> scriptet kapcsold ki. Csak ne felejtsd + visszakapcsolni ;) Meg passzív módot is bekapcsolhatod a menü gomb alatt. +
  • +

    +

  • + 2. Túl nagy a kérdést és a választ megjelenítő ablak, nem tudok a válaszra kattintani +
    Zommolj ki egy kicsit, vagy kapcsold ki addig a scriptet. Továbbá középső + egérgombra kattintva rá el bírod tüntetni az ablakot, amíg újra nem töltöd az oldalt, + vagy másikra ugrasz. +
  • +

    +

  • + 4. Mi ez a ... ? +
    + img +
  • +
  • + 5. +
    + img +
  • +

    +

  • + Egyéb:
    + észrevétel +
  • +
+
+Jogosultságok: +
GM_openInTab: help megnyitása új lapon, GM_xmlhttpRequest: online adatbázishoz. GM_info: a +scriptről információ, a verzióváltozás érzékeléséhez. GM_getValue/ GM_setValue: oldal +bezárásakor megmaradó változók kezelése. Előző verzió tárolására, ugyanúgy verzióváltozás +érzékeléséhez, néhány beállítás, illetve hogy melyik tárgyakból keressen kérdéseket. Ezek +függvények, és a sciptben néhol meg vannak hívva, keresd meg. +

Elküldött adatok online módban: Minden teszt végén az összes kérdés, és rá a moodle szerint +helyesnek vélt válaszok. Fogadott adatok: az összes eddig ismert moodle kérdés +


+
+

+ Weboldal +

+
+
+ ) +}