diff --git a/components/ServerDbTable.vue b/components/ServerDbTable.vue index c64f77d7e0b372063fc9003fbdea22c7f0d0ab83..a512968a076362e60b153231649101c0aa857c85 100644 --- a/components/ServerDbTable.vue +++ b/components/ServerDbTable.vue @@ -68,44 +68,30 @@ const msSortBy = computed(() => { }) const msFilter = computed(() => { - if (Array.isArray(filterOrSearch.value)) { + if (isFilter.value) { return filterOrSearch.value.map((it, index) => { console.log(index, ' ', it) if (index >= 1 && (index + 1) % 3 === 1) { console.log("should add AND") return ` AND ${it.value}` - } else { return it.value } + } else if ((index + 1) % 3 === 0) { + return `"${it.value}"` + } else { + return `${it.value}` + } }).join("") } else { return "" } }) + + +const isFilter = computed(() => { + return Array.isArray(filterOrSearch.value) +}) onMounted(async () => { + console.log("on mounted") searchOrFilter() - // const { - // hits, - // pending: p, - // totalHits, - // filterError: fe, - // facetDistribution: fd } - // = await useFetchMsDocument( - // "refseq", - // search, - // filter, - // limit, - // hitsPerPage, - // page, - // facetsRef, - // msSortBy - // ) - // console.log("get the hits") - // console.log(hits) - // // console.log([...toValue(hits)]) - // items.value = toValue(hits) - // itemsLength.value = toValue(totalHits) - // facetDistribution.value = toValue(fd) - // filterError.value = toValue(fe) - // pending.value = toValue(p) }) // Fetch results @@ -141,14 +127,24 @@ async function searchOrFilter() { } } -watch(filterOrSearch, (fos) => { +function clearFilterOrSearch() { + filterOrSearch.value = null + console.log("clear") + + searchOrFilter() +} + +watch(filterOrSearch, (fos) => { + console.log(fos) if (Array.isArray(fos) && fos?.length % 3 === 0) { searchOrFilter() + search.value = '' } else { console.log("do not search") } }) watch(page, () => { + console.log("page") searchOrFilter() }) @@ -199,6 +195,17 @@ const computedItems = computed(() => { function selectItem(item) { filterOrSearch.value = Array.isArray(filterOrSearch.value) ? [...filterOrSearch.value, item] : [item] } + +function deleteOneFilter(index) { + if (isFilter.value) { + filterOrSearch.value?.splice(index - 2, 2) + } + +} +function clearSearch() { + console.log("clear search") + search.value = "" +} const autocompleteElem = ref() </script> <template> @@ -207,12 +214,17 @@ const autocompleteElem = ref() <!-- <v-toolbar-title> {{ title }} ({{ itemsLength }}) </v-toolbar-title> --> - <v-autocomplete v-model:search="search" v-model:model-value="filterOrSearch" chips clearable + <v-autocomplete v-model:search="search" v-model:model-value="filterOrSearch" auto-select-first chips clearable label="Search or filter results..." :items="computedItems" item-value="value" item-title="title" multiple return-object append-inner-icon="md:search" @click:appendInner="searchOrFilter" - @click:clear="filterOrSearch = []"> - <template #chip="{ props, item }"> - <v-chip v-bind="props" :text="item.raw.title"></v-chip> + @click:clear="clearFilterOrSearch" @update:modelValue="() => clearSearch()"> + <template #chip="{ props, item, index }"> + + + + <v-chip v-if="(index + 1) % 3 === 0" v-bind="props" :text="item.raw.title" closable + @click:close="deleteOneFilter(index)"></v-chip> + <v-chip v-else v-bind="props" :text="item.raw.title"></v-chip> </template> <template #item="{ props, item }"> <!-- <pre>{{ props["v-on"] }}</pre> --> diff --git a/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py b/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py index c979cf9afd0c3b0ed2d7e55a144854809200fc1d..440a708d035d018dbeefecf6d1ede6cf7d7940d2 100644 --- a/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py +++ b/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py @@ -108,6 +108,11 @@ def update_refseq( "species", ] ) + params = { + "maxValuesPerFacet": 1000000, + "sortFacetValuesBy": {"*": "count"}, + } + index.update_faceting_settings(params) def update_structure(