added 'exact search' to filtering

This commit is contained in:
2025-03-23 01:10:12 +01:00
parent 4440a86c05
commit ed3b6b6bb4

View File

@@ -36,11 +36,15 @@
variant="outlined"></v-select> variant="outlined"></v-select>
</v-col> </v-col>
<v-col class="v-col-12 v-col-sm-4 v-col-lg-2 mt-n6 mt-sm-0">
<v-switch v-model="enableExact" label="Exact search" color="primary"></v-switch>
</v-col>
<v-col :class="mobile ? 'mt-n6' : ''" :cols="mobile ? 12 : 'auto'" class="ms-auto"> <v-col :class="mobile ? 'mt-n6' : ''" :cols="mobile ? 12 : 'auto'" class="ms-auto">
<v-pagination <v-pagination
v-model="page" v-model="page"
:length="pagesMax" :length="pagesMax"
:total-visible="mobile ? undefined : 7" :total-visible="mobile ? undefined : 6"
active-color="primary" active-color="primary"
density="comfortable" density="comfortable"
start="1" start="1"
@@ -189,6 +193,7 @@ const selectStatusItems = [
{ title: 'Signing', value: 'signing' }, { title: 'Signing', value: 'signing' },
{ title: 'Unknown', value: 'unknown' } { title: 'Unknown', value: 'unknown' }
] ]
const enableExact = ref(false)
const page = ref(1) const page = ref(1)
const pagesMax = ref(1) const pagesMax = ref(1)
@@ -207,6 +212,12 @@ const searchPackages = (offset: number) => {
if (selectRepo.value.value !== 'any') params.append('repo', selectRepo.value.value) if (selectRepo.value.value !== 'any') params.append('repo', selectRepo.value.value)
if (selectStatus.value.value !== 'any') params.append('status', selectStatus.value.value) if (selectStatus.value.value !== 'any') params.append('status', selectStatus.value.value)
if (enableExact.value) {
params.append('exact', '')
} else {
params.delete('exact')
}
fetch('https://api.alhp.dev/packages?' + params, { fetch('https://api.alhp.dev/packages?' + params, {
method: 'GET' method: 'GET'
}) })
@@ -364,6 +375,7 @@ window.addEventListener('load', () => {
.toLowerCase() .toLowerCase()
: 'Status (any)' : 'Status (any)'
} }
enableExact.value = url.searchParams.has('exact')
searchPackages(0) searchPackages(0)
}) })
@@ -375,6 +387,16 @@ watch(
} }
) )
watch(() => enableExact.value, () => {
if (enableExact.value) {
url.searchParams.set('exact', '')
} else {
url.searchParams.delete('exact', '')
}
window.history.pushState(null, '', url.toString())
searchPackages(0)
})
// @ts-ignore // @ts-ignore
let delayTimer = null let delayTimer = null
watch( watch(