diff --git a/src/components/Home/SearchFields.vue b/src/components/Home/SearchFields.vue index 617109847..03402704b 100644 --- a/src/components/Home/SearchFields.vue +++ b/src/components/Home/SearchFields.vue @@ -54,7 +54,7 @@ native-type="submit" icon-left="calendar" > - {{ t("Events") }} + {{ t("Events") + number_result("EVENTS") }} - {{ t("Activities") }} + {{ t("Activities") + number_result("LONGEVENTS") }} - {{ t("Groups") }} + {{ t("Groups") + number_result("GROUPS") }} @@ -103,6 +103,7 @@ const props = defineProps<{ search: string | null; distance: number | null; fromLocalStorage?: boolean | false; + numberOfSearch: object | null; }>(); const router = useRouter(); @@ -184,6 +185,18 @@ const select_button_class = (current_content_type: string) => { } }; +const number_result = (current_content_type: string) => { + console.log(">> number_result", props.numberOfSearch); + if (props.numberOfSearch == undefined) { + return ""; + } + const nb_value = props.numberOfSearch[current_content_type]; + if (nb_value == undefined) { + return ""; + } + return " (" + nb_value.toString() + ")"; +}; + console.debug("initial", distance.value, search.value, address.value); const modelValueUpdate = (newaddress: IAddress | null) => { diff --git a/src/views/SearchView.vue b/src/views/SearchView.vue index 2424306ff..eb542ebc5 100644 --- a/src/views/SearchView.vue +++ b/src/views/SearchView.vue @@ -5,6 +5,7 @@ v-model:search="search" v-model:address="address" v-model:distance="radius" + :numberOfSearch="numberOfSearch" :addressDefaultText="addressName" :fromLocalStorage="true" /> @@ -571,7 +572,7 @@ import { import { ContentType, EventStatus, SearchTargets } from "@/types/enums"; import EventCard from "@/components/Event/EventCard.vue"; import { IEvent } from "@/types/event.model"; -import { SEARCH_EVENTS_AND_GROUPS } from "@/graphql/search"; +import { SEARCH_EVENTS_AND_GROUPS, SEARCH_EVENTS } from "@/graphql/search"; import { Paginate } from "@/types/paginate"; import { IGroup } from "@/types/actor"; import GroupCard from "@/components/Group/GroupCard.vue"; @@ -723,8 +724,22 @@ const orderedCategories = computed(() => { }); const searchEvents = computed(() => searchElementsResult.value?.searchEvents); +const searchShortEvents = computed( + () => searchShortElementsResult.value?.searchEvents +); +const searchLongEvents = computed( + () => searchLongElementsResult.value?.searchEvents +); const searchGroups = computed(() => searchElementsResult.value?.searchGroups); +const numberOfSearch = computed(() => { + return { + EVENTS: searchShortEvents.value?.total, + LONGEVENTS: searchLongEvents.value?.total, + GROUPS: searchGroups.value?.total, + }; +}); + const { result: currentUserResult } = useQuery<{ currentUser: ICurrentUser }>( CURRENT_USER_CLIENT ); @@ -1065,4 +1080,46 @@ const { result: searchElementsResult, loading: searchLoading } = useQuery<{ sortByGroups: sortByGroups.value, boostLanguages: boostLanguagesQuery.value, })); + +const { result: searchShortElementsResult } = useQuery<{ + searchEvents: Paginate>; +}>(SEARCH_EVENTS, () => ({ + term: searchDebounced.value, + tags: tag.value, + location: geoHashLocation.value, + beginsOn: start.value, + endsOn: end.value, + longEvents: false, + radius: geoHashLocation.value ? radius.value : undefined, + limit: 0, + type: isOnline.value ? "ONLINE" : undefined, + categoryOneOf: categoryOneOf.value, + statusOneOf: statusOneOf.value, + languageOneOf: languageOneOf.value, + searchTarget: searchTarget.value, + bbox: mode.value === ViewMode.MAP ? bbox.value : undefined, + zoom: zoom.value, + boostLanguages: boostLanguagesQuery.value, +})); + +const { result: searchLongElementsResult } = useQuery<{ + searchEvents: Paginate>; +}>(SEARCH_EVENTS, () => ({ + term: searchDebounced.value, + tags: tag.value, + location: geoHashLocation.value, + beginsOn: start.value, + endsOn: end.value, + longEvents: true, + radius: geoHashLocation.value ? radius.value : undefined, + limit: 0, + type: isOnline.value ? "ONLINE" : undefined, + categoryOneOf: categoryOneOf.value, + statusOneOf: statusOneOf.value, + languageOneOf: languageOneOf.value, + searchTarget: searchTarget.value, + bbox: mode.value === ViewMode.MAP ? bbox.value : undefined, + zoom: zoom.value, + boostLanguages: boostLanguagesQuery.value, +}));