From 574d0349db536fbd4db996d6dae56603d3da770a Mon Sep 17 00:00:00 2001 From: Piotr Gawron <p.gawron@atcomp.pl> Date: Thu, 21 Nov 2024 11:24:05 +0100 Subject: [PATCH] search link is working properly --- CHANGELOG | 8 +++++--- .../OverviewImageModal.types.ts | 8 +++++++- .../utils/useOverviewImageLinkActions.ts | 20 ++++++++++++++++++- src/models/overviewImageLink.ts | 13 +++++++++++- src/types/models.ts | 2 ++ 5 files changed, 45 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f061ffb2..62ff5d3a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,9 @@ -minerva-front (18.0.3) stable; urgency=medium - * Bug fix: mwhen compartment is missing "default" is added (#314) +minerva-front (18.0.4) stable; urgency=medium + * Bug fix: link to search result from overview image caused map not to + load (#318) + * Bug fix: when compartment is missing "default" is added (#314) - -- Piotr Gawron <piotr.gawron@uni.lu> Thu, 11 Nov 2024 15:00:00 +0200 + -- Piotr Gawron <piotr.gawron@uni.lu> Mon, 11 Nov 2024 15:00:00 +0200 minerva-front (18.0.3) stable; urgency=medium * Bug fix: Molart froze after clicking (#313) diff --git a/src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImageModal.types.ts b/src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImageModal.types.ts index a09968c6..8575ee97 100644 --- a/src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImageModal.types.ts +++ b/src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImageModal.types.ts @@ -1,4 +1,8 @@ -import { OverviewImageLinkImage, OverviewImageLinkModel } from '@/types/models'; +import { + OverviewImageLinkImage, + OverviewImageLinkModel, + OverviewImageLinkSearch, +} from '@/types/models'; export interface OverviewImageSize { width: number; @@ -26,3 +30,5 @@ export interface OverviewImageLinkConfig { export type OverviewImageLinkImageHandler = (link: OverviewImageLinkImage) => void; export type OverviewImageLinkModelHandler = (link: OverviewImageLinkModel) => void; + +export type OverviewImageLinkSearchHandler = (link: OverviewImageLinkSearch) => void; diff --git a/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts b/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts index 5059ea59..aea233de 100644 --- a/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts +++ b/src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts @@ -1,4 +1,4 @@ -import { NOOP } from '@/constants/common'; +import { NOOP, ZERO } from '@/constants/common'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { mapOpenedMapsSelector } from '@/redux/map/map.selectors'; @@ -8,9 +8,12 @@ import { currentModelIdSelector, modelsDataSelector } from '@/redux/models/model import { projectOverviewImagesSelector } from '@/redux/project/project.selectors'; import { PluginsEventBus } from '@/services/pluginsManager/pluginsEventBus'; import { MapModel, OverviewImageLink, OverviewImageLinkModel } from '@/types/models'; +import { getSearchData } from '@/redux/search/search.thunks'; +import { openSearchDrawerWithSelectedTab } from '@/redux/drawer/drawer.slice'; import { OverviewImageLinkImageHandler, OverviewImageLinkModelHandler, + OverviewImageLinkSearchHandler, } from '../OverviewImageModal.types'; interface UseOverviewImageLinkActionsResult { @@ -75,6 +78,16 @@ export const useOverviewImageLinkActions = (): UseOverviewImageLinkActionsResult dispatch(closeModal()); }; + const onSearchClick: OverviewImageLinkSearchHandler = link => { + const { query } = link; + + const searchValues = query.split(','); + dispatch(getSearchData({ searchQueries: searchValues, isPerfectMatch: false })); + dispatch(openSearchDrawerWithSelectedTab(searchValues[ZERO])); + + dispatch(closeModal()); + }; + const onImageClick: OverviewImageLinkImageHandler = link => { const isImageAvailable = checkIfImageIsAvailable(link.imageLinkId); if (!isImageAvailable) { @@ -87,6 +100,7 @@ export const useOverviewImageLinkActions = (): UseOverviewImageLinkActionsResult const handleLinkClick: UseOverviewImageLinkActionsResult['handleLinkClick'] = link => { const isImageLink = 'imageLinkId' in link; const isModelLink = 'modelLinkId' in link; + const isSearchLink = 'query' in link; if (isImageLink) { return onImageClick(link); @@ -96,6 +110,10 @@ export const useOverviewImageLinkActions = (): UseOverviewImageLinkActionsResult return onSubmapClick(link); } + if (isSearchLink) { + return onSearchClick(link); + } + return NOOP(); }; diff --git a/src/models/overviewImageLink.ts b/src/models/overviewImageLink.ts index 6a36667a..8d35e3ef 100644 --- a/src/models/overviewImageLink.ts +++ b/src/models/overviewImageLink.ts @@ -17,4 +17,15 @@ export const overviewImageLinkModel = z.object({ type: z.string(), }); -export const overviewImageLink = z.union([overviewImageLinkImage, overviewImageLinkModel]); +export const overviewImageLinkSearch = z.object({ + idObject: z.number(), + polygon: z.array(positionSchema), + query: z.string(), + type: z.string(), +}); + +export const overviewImageLink = z.union([ + overviewImageLinkImage, + overviewImageLinkModel, + overviewImageLinkSearch, +]); diff --git a/src/types/models.ts b/src/types/models.ts index 565b1830..a43b77bc 100644 --- a/src/types/models.ts +++ b/src/types/models.ts @@ -44,6 +44,7 @@ import { overviewImageLink, overviewImageLinkImage, overviewImageLinkModel, + overviewImageLinkSearch, } from '@/models/overviewImageLink'; import { overviewImageView } from '@/models/overviewImageView'; import { pluginSchema } from '@/models/pluginSchema'; @@ -72,6 +73,7 @@ export type OverviewImageView = z.infer<typeof overviewImageView>; export type OverviewImageLink = z.infer<typeof overviewImageLink>; export type OverviewImageLinkImage = z.infer<typeof overviewImageLinkImage>; export type OverviewImageLinkModel = z.infer<typeof overviewImageLinkModel>; +export type OverviewImageLinkSearch = z.infer<typeof overviewImageLinkSearch>; export type MapModel = z.infer<typeof mapModelSchema>; export type MapOverlay = z.infer<typeof mapOverlay>; export type MapBackground = z.infer<typeof mapBackground>; -- GitLab