From c4a4293f6fe1bb85ab02a37ab7aabd5719099f88 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <p.gawron@atcomp.pl> Date: Wed, 13 Nov 2024 13:17:23 +0100 Subject: [PATCH] allow plugin to get info about opened panel --- docs/plugins/interface.md | 28 +++++++++++++++++++ index.d.ts | 5 +++- src/redux/drawer/drawer.selectors.ts | 7 +++++ .../interface/getOpenedPanel.ts | 9 ++++++ src/services/pluginsManager/pluginsManager.ts | 4 +++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 docs/plugins/interface.md create mode 100644 src/services/pluginsManager/interface/getOpenedPanel.ts diff --git a/docs/plugins/interface.md b/docs/plugins/interface.md new file mode 100644 index 00000000..7701cb9a --- /dev/null +++ b/docs/plugins/interface.md @@ -0,0 +1,28 @@ +### Interface + +#### getOpenedPanel + +Return string identifying panel that is currently opened. Available options: +``` +undefined +'none' +'search' +'project-info' +'plugins' +'export' +'legend' +'submaps' +'reaction' +'overlays' +'bio-entity' +'comment' +'available-plugins' +'layers'; +``` + +##### Example of getOpenedPanel method usage: + +```javascript +window.minerva.map.data.getOpenedPanel(); +``` + diff --git a/index.d.ts b/index.d.ts index 2e109d80..b08f4aae 100644 --- a/index.d.ts +++ b/index.d.ts @@ -2,7 +2,6 @@ import { getBounds } from '@/services/pluginsManager/map/data/getBounds'; import { fitBounds } from '@/services/pluginsManager/map/fitBounds'; import { getOpenMapId } from '@/services/pluginsManager/map/getOpenMapId'; import { triggerSearch } from '@/services/pluginsManager/map/triggerSearch'; -import { MinervaConfiguration } from '@/services/pluginsManager/pluginsManager'; import { getModels } from '@/services/pluginsManager/map/models/getModels'; import { openMap } from '@/services/pluginsManager/map/openMap'; import { getCenter } from '@/services/pluginsManager/map/position/getCenter'; @@ -21,6 +20,7 @@ import { hideDataOverlay } from '@/services/pluginsManager/map/overlays/hideData import { removeDataOverlay } from '@/services/pluginsManager/map/overlays/removeDataOverlay'; import { addDataOverlay } from '@/services/pluginsManager/map/overlays/addDataOverlay'; import { getApiUrls } from '@/services/pluginsManager/project/data/getApiUrls'; +import { getOpenedPanel } from '@/services/pluginsManager/interface/getOpenedPanel'; type Plugin = { pluginName: string; @@ -73,6 +73,9 @@ declare global { getCenter: typeof getCenter; setCenter: typeof setCenter; }; + interface: { + getOpenedPanel: typeof getOpenedPanel; + }; overviewImage: { getCurrentOverviewImage: typeof getCurrentOverviewImage; getOverviewImages: typeof getOverviewImages; diff --git a/src/redux/drawer/drawer.selectors.ts b/src/redux/drawer/drawer.selectors.ts index 6c3a2a01..05a64d2e 100644 --- a/src/redux/drawer/drawer.selectors.ts +++ b/src/redux/drawer/drawer.selectors.ts @@ -147,3 +147,10 @@ export const searchDrawerOpenSelector = createSelector( export const resultDrawerOpen = createSelector(drawerSelector, drawer => { return drawer.isOpen && RESULT_DRAWERS.includes(drawer.drawerName); }); + +export const openedDrawerSelector = createSelector(drawerSelector, drawer => { + if (drawer.isOpen) { + return drawer.drawerName; + } + return undefined; +}); diff --git a/src/services/pluginsManager/interface/getOpenedPanel.ts b/src/services/pluginsManager/interface/getOpenedPanel.ts new file mode 100644 index 00000000..7124e0af --- /dev/null +++ b/src/services/pluginsManager/interface/getOpenedPanel.ts @@ -0,0 +1,9 @@ +import { store } from '@/redux/store'; +import { openedDrawerSelector } from '@/redux/drawer/drawer.selectors'; + +export const getOpenedPanel = (): string | undefined => { + const { getState } = store; + const drawerName = openedDrawerSelector(getState()); + + return drawerName; +}; diff --git a/src/services/pluginsManager/pluginsManager.ts b/src/services/pluginsManager/pluginsManager.ts index 60d8942a..3f326452 100644 --- a/src/services/pluginsManager/pluginsManager.ts +++ b/src/services/pluginsManager/pluginsManager.ts @@ -9,6 +9,7 @@ import { getPluginHashWithoutPrefix } from '@/utils/plugins/getPluginHashWithout import { ONE, ZERO } from '@/constants/common'; import { minervaDefine } from '@/services/pluginsManager/map/minervaDefine'; import { PluginsContextMenu } from '@/services/pluginsManager/pluginContextMenu/pluginsContextMenu'; +import { getOpenedPanel } from '@/services/pluginsManager/interface/getOpenedPanel'; import { bioEntitiesMethods } from './bioEntities'; import { getModels } from './map/models/getModels'; import { openMap } from './map/openMap'; @@ -78,6 +79,9 @@ export const PluginsManager: PluginsManagerType = { data: { bioEntities: bioEntitiesMethods, }, + interface: { + getOpenedPanel, + }, map: { data: { getBounds, -- GitLab