From 6c468710093377cb16fa6e8fce27296def139b63 Mon Sep 17 00:00:00 2001 From: ellamartirosyan Date: Tue, 14 Jul 2026 10:21:25 +0300 Subject: [PATCH 1/2] fix: console errors --- .../product-type.icon-renderer.tsx | 4 ++-- src/common/helpers/style.ts | 18 ++++++++++-------- .../mapMenus/useHandleMapMenuTemplates.hook.ts | 17 +++++++++++++++-- .../contextMenus/actions.context-menu.tsx | 2 +- .../contextMenus/context-menu.tsx | 5 +++++ .../models/mapMenusManagerStore.ts | 1 + 6 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/common/components/tree/icon-renderers/product-type.icon-renderer.tsx b/src/common/components/tree/icon-renderers/product-type.icon-renderer.tsx index a67721ab3..0ba7a5c60 100644 --- a/src/common/components/tree/icon-renderers/product-type.icon-renderer.tsx +++ b/src/common/components/tree/icon-renderers/product-type.icon-renderer.tsx @@ -1,7 +1,7 @@ import React, { useMemo } from 'react'; import { ILayerImage } from '../../../../discrete-layer/models/layerImage'; import { LayerRasterRecordModelType } from '../../../../discrete-layer/models'; -import { getIconStyle } from '../../../helpers/style'; +import { getIconStyle, hasWFSLink } from '../../../helpers/style'; import { TypeIcon } from '../../shared/type-icon'; interface IProductTypeCellRendererParams { @@ -18,7 +18,7 @@ export const ProductTypeRenderer: React.FC = ({ const handleClick = (event: React.MouseEvent) => { const rasterData = data as LayerRasterRecordModelType; - if (onClick && rasterData.links?.some((link) => link.protocol === 'WFS')) { + if (onClick && hasWFSLink(rasterData as unknown as Record)) { onClick(data, !rasterData.polygonPartsShown); } }; diff --git a/src/common/helpers/style.ts b/src/common/helpers/style.ts index a83c113b1..f4f343ba0 100644 --- a/src/common/helpers/style.ts +++ b/src/common/helpers/style.ts @@ -28,6 +28,14 @@ export const isPolygonPartsShown = (data: Record): boolean => { return get(data, POLYGON_PARTS_SHOWN) === true; }; +export const hasWFSLink = (data: Record): boolean => { + return ( + (data.links as Array> | undefined)?.some( + (link) => link.protocol === 'WFS' + ) ?? false + ); +}; + export const isUnpublishedValue = (value: string): boolean => { return value === RecordStatus.UNPUBLISHED; }; @@ -57,20 +65,14 @@ export const getIconStyle = ( resStyle = { [colorProperty]: UNPUBLISHED_COLOR }; } if (existPolygonParts(data) && isPolygonPartsShown(data)) { - const hasWFSLink = (data.links as Array>)?.some( - (link) => link.protocol === 'WFS' - ); - if (hasWFSLink) { + if (hasWFSLink(data)) { resStyle = { [colorProperty]: POLYGON_PARTS_SHOWN_COLOR }; } else { resStyle = { opacity: 0.5 }; } } if (existPolygonParts(data) && !isPolygonPartsShown(data)) { - const hasWFSLink = (data.links as Array>)?.some( - (link) => link.protocol === 'WFS' - ); - if (!hasWFSLink) { + if (!hasWFSLink(data)) { resStyle = { ...resStyle, opacity: 0.5, diff --git a/src/common/hooks/mapMenus/useHandleMapMenuTemplates.hook.ts b/src/common/hooks/mapMenus/useHandleMapMenuTemplates.hook.ts index eee632116..91c2ab8a3 100644 --- a/src/common/hooks/mapMenus/useHandleMapMenuTemplates.hook.ts +++ b/src/common/hooks/mapMenus/useHandleMapMenuTemplates.hook.ts @@ -1,6 +1,6 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import { useIntl } from 'react-intl'; -import _ from 'lodash'; +import _, { get } from 'lodash'; import { IContextMenuData } from '@map-colonies/react-components'; import { DynamicMenuData, @@ -20,6 +20,7 @@ import { ContextActionsTemplates, } from '../../actions/context.actions'; import CONFIG from '../../config'; +import { hasWFSLink } from '../../helpers/style'; export const useHandleMapMenuTemplates = ( menuProperties?: IMapMenuProperties, @@ -116,13 +117,25 @@ export const useHandleMapMenuTemplates = ( }, }; + const layerHasWFSLink = hasWFSLink( + get(activeLayer, 'meta.layerRecord') as Record + ); + const generatedGroup: MenuItemsGroup = { ...groupTemplateMenuItem, groupProps: groupProp, title: groupProp.titleTranslationId, items: groupTemplateMenuItem.items.map((item) => { if (!isMenuItemGroup(item)) { - return { ...item, payloadData: activeLayer.meta as Record }; + const itemDisabled = + item.action.action === ContextActions.QUERY_POLYGON_PARTS + ? !layerHasWFSLink + : item.disabled; + return { + ...item, + disabled: itemDisabled, + payloadData: activeLayer.meta as Record, + }; } return item; diff --git a/src/discrete-layer/components/map-container/contextMenus/actions.context-menu.tsx b/src/discrete-layer/components/map-container/contextMenus/actions.context-menu.tsx index ae56316f7..9297ec0f1 100644 --- a/src/discrete-layer/components/map-container/contextMenus/actions.context-menu.tsx +++ b/src/discrete-layer/components/map-container/contextMenus/actions.context-menu.tsx @@ -137,7 +137,7 @@ export const ActionsContextMenu: React.FC = observer(( - + {heightsAtCoordinates.isLoadingData ? : getHeightText()} diff --git a/src/discrete-layer/components/map-container/contextMenus/context-menu.tsx b/src/discrete-layer/components/map-container/contextMenus/context-menu.tsx index 7db1ab48d..85f1d3b9e 100644 --- a/src/discrete-layer/components/map-container/contextMenus/context-menu.tsx +++ b/src/discrete-layer/components/map-container/contextMenus/context-menu.tsx @@ -162,6 +162,7 @@ export const ContextMenu: React.FC> = ({ return ( > = ({ })} ); + const groupDisabled = menuItemOrGroup.disabled ?? false; groupToRender = ( @@ -217,6 +221,7 @@ export const ContextMenu: React.FC> = ({ return ( Date: Wed, 15 Jul 2026 14:17:26 +0300 Subject: [PATCH 2/2] fix: bump shared-components version --- package.json | 4 ++-- yarn.lock | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index b1a55ee11..0b71fc1b7 100644 --- a/package.json +++ b/package.json @@ -91,8 +91,8 @@ "@formatjs/icu-messageformat-parser": "^2.6.0", "@map-colonies/error-types": "^1.1.5", "@map-colonies/mc-utils": "^1.6.1", - "@map-colonies/react-components": "^4.16.0", - "@map-colonies/react-core": "^4.2.1", + "@map-colonies/react-components": "^4.16.1", + "@map-colonies/react-core": "^4.2.2", "@map-colonies/static-assets": "^0.5.1", "@map-colonies/types": "1.6.0", "@material-ui/core": "^4.11.0", diff --git a/yarn.lock b/yarn.lock index 745ec707f..ec331c1a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2467,15 +2467,15 @@ lodash "^4.17.21" ngeohash "^0.6.3" -"@map-colonies/react-components@^4.16.0": - version "4.16.0" - resolved "https://registry.yarnpkg.com/@map-colonies/react-components/-/react-components-4.16.0.tgz#52ecafb462e769cb4ce7ebcab22818018cc232d2" - integrity sha512-hXg41bO5h+heKmGNP3IFn0iNRmibskeqyFrZhs+MuQIPvKZTC53ywpDWCdjZogXOmtyJ4sxB31Cku2W2ETNs3A== +"@map-colonies/react-components@^4.16.1": + version "4.16.1" + resolved "https://registry.yarnpkg.com/@map-colonies/react-components/-/react-components-4.16.1.tgz#bd14872e162a180b29217b0ec3a48a30d659d4c0" + integrity sha512-cqBRcu/vr8yRn8ZBFZ7r2gDM2r8n7x0N9pm1b0DcZppDarqmYH1ZNOKAlZqSCJBwftb6tRGQNvyiUo6DLOJcgA== dependencies: "@cmcleese/cesium-navigation" "^4.0.7" "@date-io/date-fns" "^1.3.13" "@here/quantized-mesh-decoder" "^1.2.8" - "@map-colonies/react-core" "^4.2.1" + "@map-colonies/react-core" "^4.2.2" "@material-ui/core" "^4.11.0" "@material-ui/pickers" "^3.2.10" "@turf/area" "^6.5.0" @@ -2513,10 +2513,10 @@ textarea-caret "^3.1.0" uuid "^11.1.0" -"@map-colonies/react-core@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@map-colonies/react-core/-/react-core-4.2.1.tgz#53dd1391ef5ac0048fa97f64cd1672e2beb40728" - integrity sha512-G/Mos0ZGyYOBw3Qwv/BtdfHfPePP/hEcATiI3ArAgSwLCR7JUcfU47ymV7hRfyPg4/I+QfQmc/LhAWXza6XVBA== +"@map-colonies/react-core@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@map-colonies/react-core/-/react-core-4.2.2.tgz#c5585773b893b9d1d27dedc6c4a1cec68cf2e4b2" + integrity sha512-RvyWY6QiwnvcwBa5Q4I381g9tQqoeMBxDdmqyv1964umzvtuELSiGrc7VszraMFhqjevPNtVFb5n9EIAthmx6w== dependencies: "@rmwc/avatar" "^8.0.8" "@rmwc/button" "^8.0.8"