From 86b9482c279bb3cb9767a2895dcb96963c923dc0 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <p.gawron@atcomp.pl> Date: Wed, 13 Nov 2024 13:30:51 +0100 Subject: [PATCH] allow plugin to hide left panel --- CHANGELOG | 2 ++ docs/plugins/interface.md | 14 ++++++++++++++ index.d.ts | 2 ++ public/config.js | 2 +- src/services/pluginsManager/interface/hidePanel.ts | 13 +++++++++++++ src/services/pluginsManager/pluginsManager.ts | 2 ++ 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/services/pluginsManager/interface/hidePanel.ts diff --git a/CHANGELOG b/CHANGELOG index 53f55a86..496108d2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ minerva-front (19.0.0~alpha.0) stable; urgency=medium * Feature: support for matomo (#289) * Feature: allow plugin to not have a panel (#306) * Feature: allow plugin to add menu option to context menu (#307) + * Feature: allow plugin to access info about opened panel (#309) + * Feature: allow plugin to hide opened panel (#309) -- Piotr Gawron <piotr.gawron@uni.lu> Fri, 18 Oct 2024 13:00:00 +0200 diff --git a/docs/plugins/interface.md b/docs/plugins/interface.md index 7701cb9a..d4c58be5 100644 --- a/docs/plugins/interface.md +++ b/docs/plugins/interface.md @@ -3,6 +3,7 @@ #### getOpenedPanel Return string identifying panel that is currently opened. Available options: + ``` undefined 'none' @@ -26,3 +27,16 @@ undefined window.minerva.map.data.getOpenedPanel(); ``` +#### hidePanel + +Close opened panel. + +##### Example of hidePanel method usage: + +```javascript +//close specific panel if the panel is opened +window.minerva.map.data.hidePanel('available-plugins'); + +//close the panel (regardless which one is opened) +window.minerva.map.data.hidePanel('available-plugins'); +``` diff --git a/index.d.ts b/index.d.ts index b08f4aae..4febac59 100644 --- a/index.d.ts +++ b/index.d.ts @@ -21,6 +21,7 @@ import { removeDataOverlay } from '@/services/pluginsManager/map/overlays/remove import { addDataOverlay } from '@/services/pluginsManager/map/overlays/addDataOverlay'; import { getApiUrls } from '@/services/pluginsManager/project/data/getApiUrls'; import { getOpenedPanel } from '@/services/pluginsManager/interface/getOpenedPanel'; +import { hidePanel } from '@/services/pluginsManager/interface/hidePanel'; type Plugin = { pluginName: string; @@ -75,6 +76,7 @@ declare global { }; interface: { getOpenedPanel: typeof getOpenedPanel; + hidePanel: typeof hidePanel; }; overviewImage: { getCurrentOverviewImage: typeof getCurrentOverviewImage; diff --git a/public/config.js b/public/config.js index 4d245aa0..51047de3 100644 --- a/public/config.js +++ b/public/config.js @@ -6,6 +6,6 @@ window.config = { BASE_API_URL: `${root}/minerva/api`, BASE_NEW_API_URL: `${root}/minerva/new_api/`, BASE_MAP_IMAGES_URL: `${root}/`, - DEFAULT_PROJECT_ID: 'sample', + DEFAULT_PROJECT_ID: 'minervar_example', ADMIN_PANEL_URL: `${root}/minerva/admin.xhtml`, }; diff --git a/src/services/pluginsManager/interface/hidePanel.ts b/src/services/pluginsManager/interface/hidePanel.ts new file mode 100644 index 00000000..f740f627 --- /dev/null +++ b/src/services/pluginsManager/interface/hidePanel.ts @@ -0,0 +1,13 @@ +import { store } from '@/redux/store'; +import { openedDrawerSelector } from '@/redux/drawer/drawer.selectors'; +import { DrawerName } from '@/types/drawerName'; +import { closeDrawer } from '@/redux/drawer/drawer.slice'; + +export const hidePanel = (panelName: DrawerName | undefined): void => { + const { getState, dispatch } = store; + const drawerName = openedDrawerSelector(getState()); + + if (panelName === drawerName || panelName === undefined) { + dispatch(closeDrawer()); + } +}; diff --git a/src/services/pluginsManager/pluginsManager.ts b/src/services/pluginsManager/pluginsManager.ts index 3f326452..adb4a7c1 100644 --- a/src/services/pluginsManager/pluginsManager.ts +++ b/src/services/pluginsManager/pluginsManager.ts @@ -10,6 +10,7 @@ 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 { hidePanel } from '@/services/pluginsManager/interface/hidePanel'; import { bioEntitiesMethods } from './bioEntities'; import { getModels } from './map/models/getModels'; import { openMap } from './map/openMap'; @@ -81,6 +82,7 @@ export const PluginsManager: PluginsManagerType = { }, interface: { getOpenedPanel, + hidePanel, }, map: { data: { -- GitLab