UI update

Added advanced search feature with option to select category
This commit is contained in:
sairaj mote 2021-06-22 18:20:25 +05:30
parent a566a8f8c0
commit 96391c4bb5

View File

@ -88,7 +88,7 @@
<section id="advance_search_panel" class="hide-completely"> <section id="advance_search_panel" class="hide-completely">
<div class="grid justify-start gap-0-5"> <div class="grid justify-start gap-0-5">
<h5>Category</h5> <h5>Category</h5>
<sm-select id=""> <sm-select id="category_selector">
<sm-option value="movie">Movie</sm-option> <sm-option value="movie">Movie</sm-option>
<sm-option value="tv series">TV series</sm-option> <sm-option value="tv series">TV series</sm-option>
<sm-option value="video">Video</sm-option> <sm-option value="video">Video</sm-option>
@ -896,19 +896,40 @@
} }
return [page, query] return [page, query]
} }
let advancedSearch = {
active: false,
category: ''
}
async function renderSearchResult(searchKey){ async function renderSearchResult(searchKey){
const query = getParts(window.location.path)[1] const query = getParts(window.location.path)[1]
console.log(query, searchKey)
if(query !== searchKey){ if(query !== searchKey){
getRef('result_for').innerHTML = `Showing results for <b>${searchKey}</b>`
const torrents = await getDataFromIDB() const torrents = await getDataFromIDB()
const options = { const options = {
keys: ['name', 'filename'], keys: ['name', 'filename'],
threshold: 0.3 threshold: 0.3,
useExtendedSearch: advancedSearch.isActive,
}
let result
if(advancedSearch.isActive){
options.keys = ['type']
let fuseSearch = new Fuse(torrents, options)
result = fuseSearch.search(`'${advancedSearch.category}`).map(elem => elem.item)
options.keys = ['name', 'filename']
fuseSearch = new Fuse(result, options)
result = fuseSearch.search(searchKey).map(elem => elem.item)
}
else{
const fuseSearch = new Fuse(torrents, options)
result = fuseSearch.search(searchKey).map(elem => elem.item)
}
if(result.length){
getRef('result_for').innerHTML = `Showing results for <strong>${searchKey}</strong>`
}
else{
getRef('result_for').innerHTML = `No results for <strong>${searchKey}</strong>`
} }
const fuseSearch = new Fuse(torrents, options)
const result = fuseSearch.search(searchKey).map(elem => elem.item)
getRef('search_result').innerHTML = `` getRef('search_result').innerHTML = ``
getRef('search_result').append(renderTorrents(result)) getRef('search_result').append(renderTorrents(result))
history.pushState(null, null, `#search?${searchKey}`) history.pushState(null, null, `#search?${searchKey}`)
@ -936,12 +957,23 @@
}) })
getRef('advance_search_switch').addEventListener('change', e => { getRef('advance_search_switch').addEventListener('change', e => {
if(e.detail.value){ if(e.detail.value){
advancedSearch = {
isActive: true,
category: getRef('category_selector').value
}
getRef('advance_search_panel').classList.remove('hide-completely') getRef('advance_search_panel').classList.remove('hide-completely')
} }
else{ else{
advancedSearch = {
isActive: false,
category: ''
}
getRef('advance_search_panel').classList.add('hide-completely') getRef('advance_search_panel').classList.add('hide-completely')
} }
}) })
getRef('category_selector').addEventListener('change', e => {
advancedSearch.category = e.detail.value
})
</script> </script>
</body> </body>