diff --git a/components/Nav/Navbar.vue b/components/Nav/Navbar.vue index ae276b8b8512ef8e66888151db119552ea3884c0..e5a879a612b4b49c8d90009a22ec15c49ed4fc34 100644 --- a/components/Nav/Navbar.vue +++ b/components/Nav/Navbar.vue @@ -32,7 +32,7 @@ watchEffect(() => { const sections = ref([ { id: "webservice", - label: "Web service", + label: "Webservice", href: runtimeConfig.public.defenseFinderWebservice, }, { id: "wiki", label: "Wiki", to: '/', }, diff --git a/components/ServerDbTable.vue b/components/ServerDbTable.vue index f66ae473f611a0fe879679c1414a9ab3adbde25c..940b5ec7050dda6c28fc8c6af5de12a2a2f6dd36 100644 --- a/components/ServerDbTable.vue +++ b/components/ServerDbTable.vue @@ -37,7 +37,7 @@ export interface AutocompleteMeiliFacetProps { export interface Props { title?: string sortBy?: SortItem[] - numericalFilters?: MaybeRef<string | undefined> + numericalFilters?: MaybeRef<string[] | undefined> dataTableServerProps: Record<string, any> columnsToDownload?: MaybeRef<string[] | undefined> autocompleteMeiliFacetsProps: AutocompleteMeiliFacetProps @@ -170,7 +170,7 @@ const computedFilterStr = computed(() => { }) -const { arrayFilters: computedFilter } = useMeiliFilters(msFilterCompo) +const { arrayFilters: computedFilter } = useMeiliFilters(msFilterCompo, toRef(props.numericalFilters)) // const computedFilter = computed(() => { // const toValFilters = toValue(msFilterCompo) // if (toValFilters !== undefined && toValFilters.length > 0) { @@ -180,6 +180,7 @@ const { arrayFilters: computedFilter } = useMeiliFilters(msFilterCompo) watch(computedFilter, () => { + console.log(toValue(computedFilter)) if (toValue(isValidFilters) && (toValue(computedFilter) !== undefined || toValue(filterInputValues) === null)) { searchOrFilter() emitRefreshRes() @@ -299,7 +300,7 @@ function focusedOrBlur(isFocused: boolean) { </script> <template> <v-card flat color="transparent"> - <slot name="numerical-filters" :search="throttleSearch"></slot> + <slot name="numerical-filters" :search="throttleSearch"></slot> <v-data-table-server v-if="!msError" v-model:page="page" color="primary" v-bind="dataTableServerProps" v-model:items-per-page="hitsPerPage" v-model:sortBy="sortByRef" v-model:expanded="expanded" fixed-header :loading="loading" :items="msResult?.hits ?? []" :items-length="totalHits" density="compact" diff --git a/components/content/StructureDb.vue b/components/content/StructureDb.vue index 443068c9e6f90fbd0141444cd7a84b8699d78f73..12243861f58d75bed607ac4cf0117f49bf0e1b59 100644 --- a/components/content/StructureDb.vue +++ b/components/content/StructureDb.vue @@ -93,9 +93,15 @@ const { range: plddtsRange, stringifyFilter: plddtsFilter, reset: plddtsReset } const { range: iptmRange, stringifyFilter: iptmFilter, reset: iptmReset } = useNumericalFilter("iptm+ptm", 0, 1) const { range: pdockqRange, stringifyFilter: pdockqFilter, reset: pdockqReset } = useNumericalFilter("pDockQ", 0, 1) + +function isString(item: Ref<string | undefined>): item is Ref<string> { + return toValue(item) !== undefined + +} + const numericalFilters = computed(() => { - const listFilters = [plddtsFilter, iptmFilter, pdockqFilter].map(f => toValue(f)).filter(f => f !== undefined) - return listFilters.length > 0 ? listFilters.join(" AND ") : undefined + const listFilters = [plddtsFilter, iptmFilter, pdockqFilter].filter(isString).map(f => toValue(f)) + return listFilters.length > 0 ? listFilters : undefined }) const defaultDataTableServerProps = ref({ diff --git a/composables/useMeiliFilters.ts b/composables/useMeiliFilters.ts index e56dd7cb679cdce6bfb5f0eea2648f0f22075150..f88f26818f4c6480030c7123d7b5a5a31f2b55ac 100644 --- a/composables/useMeiliFilters.ts +++ b/composables/useMeiliFilters.ts @@ -1,10 +1,16 @@ import type { FilterItem } from '@/components/AutocompleteMeiliFacets.vue' +import { filter } from '@observablehq/plot' +import type { Filter } from "meilisearch" -export function useMeiliFilters(filters: MaybeRef<FilterItem[] | undefined>) { +export function useMeiliFilters(filters: MaybeRef<FilterItem[] | undefined>, numericalFilters: MaybeRef<string[] | undefined>) { - const arrayFilters = computed(() => { + const arrayFilters: ComputedRef<Filter | undefined> = computed(() => { + console.log("dans le computed de useMeilisFilter") const toValFilters = toValue(filters) + const toValNumericalFilter = toValue(numericalFilters) + console.log(toValNumericalFilter) + let categoricalFilters: FilterItem[] | undefined = undefined if (toValFilters !== undefined && toValFilters.length >= 3) { const cachedFilters = [...toValFilters] @@ -55,11 +61,31 @@ export function useMeiliFilters(filters: MaybeRef<FilterItem[] | undefined>) { } return acc }, []) - return arrayFilters + categoricalFilters = arrayFilters + } + + function isFilterItem(item: FilterItem[] | undefined): item is FilterItem[] { + return item !== undefined - } else { - return undefined } + console.log(categoricalFilters) + const filterItemArray = [categoricalFilters, toValNumericalFilter].filter(isFilterItem).reduce((acc, curr) => [...acc, ...curr], []) + console.log(filterItemArray) + const returnArr = filterItemArray.reduce<FilterItem[] | undefined>((acc, curr) => { + const toValCurr = toValue(curr) + if (toValCurr === undefined) { + return acc + } + else { + if (acc !== undefined) { + return [...acc, ...toValCurr] + } + else { return [...toValCurr] } + } + }, undefined) + console.log(returnArr) + + return returnArr }) return { arrayFilters } diff --git a/composables/useNumericalfilter.ts b/composables/useNumericalfilter.ts index 9ee97d80a4239e558dfdea1e57e563cc500519af..8f776e3cc93168fa567c26cf1b48621ad100b576 100644 --- a/composables/useNumericalfilter.ts +++ b/composables/useNumericalfilter.ts @@ -6,17 +6,11 @@ export function useNumericalFilter( const range: Ref<[number, number]> = ref([toValue(min), toValue(max)]) - - - - - const stringifyFilter: Ref<string | undefined> = ref(`${toValue(id)} ${toValue(min)} TO ${toValue(max)}`) + const stringifyFilter: Ref<string | undefined> = ref(undefined) watchEffect(() => { - console.log("watch reange") - console.log(range.value) if (range.value[0] === toValue(min) && range.value[1] === toValue(max)) { stringifyFilter.value = undefined } else {