All questions fixes

This commit is contained in:
mrfry 2021-04-25 09:50:00 +02:00
parent 867568d446
commit 730c0d4058

View file

@ -75,7 +75,7 @@ export default function AllQuestions({ router }) {
const [searchTerm, setSearchTerm] = useState('')
const [activeSubjName, setActiveSubjName] = useState('')
const [dbs, setDbs] = useState(null)
const [selectedDb, setSelectedDb] = useState('')
const [selectedDb, setSelectedDb] = useState(-1)
const [data, setData] = useState(null)
const [fetchingData, setFetchingData] = useState(false)
@ -83,26 +83,34 @@ export default function AllQuestions({ router }) {
const questionCount = data ? data.reduce(countReducer, 0) : 0
useEffect(() => {
router.replace(`${router.asPath.replace('.html', '')}`, undefined, {
shallow: true,
})
fetchDbs().then((res) => {
setDbs(res)
})
}, [])
useEffect(() => {
router.replace(`${router.asPath.replace('.html', '')}`, undefined, {
shallow: true,
})
const db = router.query.question ? decodeURIComponent(router.query.db) : ''
if (db) {
setSelectedDb(db)
}
}, [router.query.db])
useEffect(() => {
const querySearch = router.query.question
? decodeURIComponent(router.query.question)
: ''
const db = router.query.question ? decodeURIComponent(router.query.db) : ''
setSearchTerm(querySearch)
setSelectedDb(db)
if (querySearch) {
setSearchTerm(querySearch)
}
}, [router.query.question])
useEffect(() => {
if (dbs) {
if (dbs && selectedDb && (selectedDb === 'all' || dbs[selectedDb])) {
if (selectedDb === 'all') {
fetchAllData(dbs).then((res) => {
setData(mergeData(res))
@ -145,26 +153,33 @@ export default function AllQuestions({ router }) {
</center>
<div className={'selectContainer'}>
<select
defaultValue={-1}
value={selectedDb}
onChange={(event) => {
const key = event.target.value
setData(null)
setSelectedDb(key)
if (parseInt(key) === -1) {
router.replace(
`${router.pathname}?question=${encodeURIComponent(
searchTerm
)}`,
undefined,
{ shallow: true }
)
return
}
setFetchingData(true)
router.replace(
`${router.pathname}${event.target.value &&
'?question='}${encodeURIComponent(searchTerm)}&db=${key}`,
`${router.pathname}?question=${encodeURIComponent(
searchTerm
)}&db=${key}`,
undefined,
{ shallow: true }
)
setSelectedDb(key)
}}
>
<option disabled value={-1}>
{' Válassz egy adatbázist!'}
</option>
<option value={-1}>{' Válassz egy adatbázist!'}</option>
{dbs.map((db, i) => {
return (
<option value={i} key={db.path}>
@ -248,8 +263,7 @@ export default function AllQuestions({ router }) {
onChange={(event) => {
setSearchTerm(event.target.value)
router.replace(
`${router.pathname}${event.target.value &&
'?question='}${encodeURIComponent(
`${router.pathname}?question=${encodeURIComponent(
event.target.value
)}&db=${selectedDb}`,
undefined,
@ -305,7 +319,7 @@ export default function AllQuestions({ router }) {
window.open(`${constants.apiUrl}allqr.txt`, '_blank')
} else {
window.open(
`${constants.apiUrl}allqr.txt?db=${selectedDb}`,
`${constants.apiUrl}allqr.txt?db=${dbs[selectedDb].name}`,
'_blank'
)
}