diff --git a/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue b/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue index 0a4342642d7e8df9467cc91cf61a09b8b6e340ea..cf40269731bbdda8427f9f87b3d03eb2adefc10c 100644 --- a/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue +++ b/src/components/Search/OcResourceSearchSimple/OcResourceSearchSimple.vue @@ -1,25 +1,34 @@ <template> - <IconField class="w-full mt-8 mb-4"> - <InputIcon class="fa-solid fa-magnifying-glass cursor-pointer hover:text-primary" @click="emit('submit')" /> - <InputText - id="search" - v-model="model.q" - fluid - size="large" - :placeholder="t('community.homepage.searchBarPlaceholder')" - v-on:keyup.enter="emit('submit')" - :disabled="props.loading" - /> - <InputIcon + <InputGroup class="w-full mt-8 mb-4"> + <InputGroupAddon> + <i + class="fa-solid fa-magnifying-glass cursor-pointer hover:text-primary" + @click="emit('submit')" + /> + </InputGroupAddon> + <InputText + id="search" + v-model="model.q" + fluid + size="large" + :placeholder="t('community.homepage.searchBarPlaceholder')" + v-on:keyup.enter="emit('submit')" + :disabled="props.loading" + /> + <InputGroupAddon v-if="searchPop" - :class="{ + class="inline-flex gap-2 text-gray-500 hover:text-gray-800" + @click="searchPop.toggle" + > + <h3>{{ t('search.searchBarParamButtonLabel') }}</h3> + <i :class="{ 'fa-chevron-down': !searchPop.visible, 'fa-chevron-up': searchPop.visible }" class="fa-solid" - @click="searchPop.toggle" - /> - </IconField> + /> + </InputGroupAddon> + </InputGroup> <div id="popoverPlace" class="h-0 m-0 p-0" /> <Popover id="popover" class="h-fit w-full" ref="searchPop" appendTo="#popoverPlace"> <div v-for="key in Object.keys(SearchQueryParams)" v-bind:key="key"> @@ -46,6 +55,8 @@ import IconField from 'primevue/iconfield' import InputText from 'primevue/inputtext' import InputIcon from 'primevue/inputicon' +import InputGroup from 'primevue/inputgroup'; +import InputGroupAddon from 'primevue/inputgroupaddon'; import Button from 'primevue/button' import Popover from 'primevue/popover' import { SearchQueryParams, type OcSearchQuery } from '@/declarations' diff --git a/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue b/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue index eecfa29ae6dd30310b926e3056a928a0a64b3683..08ed9b385fa2c5ae49789ee622bc9531de72b993 100644 --- a/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue +++ b/src/components/Search/OcSearchResultCard/OcSearchResultCard.vue @@ -8,7 +8,7 @@ <OcVisibilityIcon v-if="visibility !== 'public'" :visibility="visibility" - class="text-[0.8rem] pt-1 -ml-3 mr-0.5" + class="text-[0.8rem] pt-2 -ml-4 mr-0.5" :color="props.community.color" /> <OcLink diff --git a/src/locales/en.ts b/src/locales/en.ts index 6d7a47e5ae8edb32ce0cdfdf15153181bd887179..fbc0c51e4fbe8d295d541885d604a57e20184fd1 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -349,6 +349,7 @@ Greetings, resourceType: "Resource type", results: "Results", launchSearch: "Launch the search", + searchBarParamButtonLabel: "Parameters", searchResult: { description: "Description", datasets: "Datasets", diff --git a/src/locales/fr.ts b/src/locales/fr.ts index f7977867d5e7c4222fbfb7ae6c7cadd134bae40d..808ba9f1e817fae0b585fe92b1daaf2fbbe8b609 100644 --- a/src/locales/fr.ts +++ b/src/locales/fr.ts @@ -364,6 +364,7 @@ Cordialement, resourceType: "Type de ressource", results: "Résultats", launchSearch: "Lancer la recherche", + searchBarParamButtonLabel: "Paramètres", searchResult: { description: "Description", catalogues: "Sous-catalogues", diff --git a/src/pages/community/[community].search.vue b/src/pages/community/[community].search.vue index 8423e6fc87be5e28172e973eb9b316adfb00f258..960b7c765145433cd56c660cd8a673561859f239 100644 --- a/src/pages/community/[community].search.vue +++ b/src/pages/community/[community].search.vue @@ -118,7 +118,7 @@ const search = async () => { errorMessage.value = (e as Error).message ?? 'Error' } - getResultsForStart(start.value) + await getResultsForStart(start.value) searching.value = false searched.value = true diff --git a/src/sparql/search.ts b/src/sparql/search.ts index 8d7a0dfcaa66300f8d9ab325e6b973e1cdd1cd91..ce520a40f73bbcd5ad42b55afe2a18d5bf05007b 100644 --- a/src/sparql/search.ts +++ b/src/sparql/search.ts @@ -7,10 +7,13 @@ import { resourceContext } from './resource' * Get results URI of a search query */ export const searchResources = async (query: OcSearchQuery, auth?: Credentials) => { - console.log(query) let queryFilter = '' if (query.q) { - queryFilter = `FILTER regex(?o, "${query.q}", "i")` + queryFilter = ` + VALUES ?p { dct:title dct:description } + ?resource ?p ?o. + FILTER regex(?o, "${query.q}", "i") + ` } if (query.params?.title){ @@ -18,7 +21,7 @@ export const searchResources = async (query: OcSearchQuery, auth?: Credentials) queryFilter += ` ?resource dct:title ?title${index}. FILTER regex(?title${index}, "${title}", "i") - ` + ` }) } @@ -49,8 +52,6 @@ export const searchResources = async (query: OcSearchQuery, auth?: Credentials) ?resource rdf:type ?type. ?resource dct:identifier ?identifier. - VALUES ?p { dct:title dct:description } - ?resource ?p ?o. ${queryFilter} } ORDER BY ASC(?resource)