diff --git a/CHANGELOG b/CHANGELOG index 53f55a8601161a064625d27da90e623af5abada7..496108d2486f07ea7cb0611a583ce81d06294761 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 7701cb9a23607801d2d661462a346c875127490e..d4c58be5aca188bdc4e1de1f3afb28f041d22424 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 b08f4aae3879b8e194c475ddfa3573ec0499b733..4febac59b02a7cc1869777bf5937941461d47c88 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 4d245aa0d429a56c8c6eb2e3cf44078f4edef59e..51047de3538bcf7b82d3559bb9b25764705acdf9 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 0000000000000000000000000000000000000000..f740f627d3a7d4148f6ce86bf990504ea0bc37cf --- /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 3f3264522d9e6bdefe03e7f9debea7458d7e29cb..adb4a7c11567b85268bf5e2587257ec0b23c42fd 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: {