@opengeoweb/workspace 5.0.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -0
- package/index.css +0 -0
- package/index.js +600 -306
- package/package.json +11 -11
- package/src/index.d.ts +0 -0
- package/src/lib/Workspace.stories.d.ts +0 -0
- package/src/lib/components/ComponentsLookUpWrapper/ComponentsLookUpWrapper.d.ts +0 -0
- package/src/lib/components/ComponentsLookUpWrapper/ComponentsLookUpWrapper.spec.d.ts +0 -0
- package/src/lib/components/ComponentsLookUpWrapper/index.d.ts +0 -0
- package/src/lib/components/DefaultComponentsLookUp/DefaultComponentsLookUp.d.ts +0 -0
- package/src/lib/components/DefaultComponentsLookUp/DefaultComponentsLookUp.spec.d.ts +0 -0
- package/src/lib/components/DefaultComponentsLookUp/index.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/MapPresetsForm.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/MapPresetsForm.spec.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/MapPresetsFormDialog.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/MapPresetsFormDialog.spec.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/MapPresetsFormDialog.stories.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/MapPresetsFormDialogConnect.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/MapPresetsFormDialogConnect.spec.d.ts +0 -0
- package/src/lib/components/MapPresetsFormDialog/index.d.ts +0 -0
- package/src/lib/components/Providers/Providers.d.ts +0 -0
- package/src/lib/components/Providers/WorkspaceDndProvider.d.ts +0 -0
- package/src/lib/components/Providers/WorkspaceModuleProvider.d.ts +0 -0
- package/src/lib/components/Providers/WorkspaceModuleProvider.spec.d.ts +0 -0
- package/src/lib/components/Providers/index.d.ts +0 -0
- package/src/lib/components/ViewPresetMenu/ViewPresetMenu.d.ts +0 -0
- package/src/lib/components/ViewPresetMenu/ViewPresetMenu.spec.d.ts +0 -0
- package/src/lib/components/ViewPresetMenu/ViewPresetMenuListConnect.d.ts +1 -0
- package/src/lib/components/ViewPresetMenu/ViewPresetMenuListConnect.spec.d.ts +0 -0
- package/src/lib/components/ViewPresetMenu/ViewPresetMenuListConnect.stories.d.ts +0 -0
- package/src/lib/components/ViewPresetMenu/ViewPresetsError.stories.d.ts +0 -0
- package/src/lib/components/ViewPresetMenu/index.d.ts +0 -0
- package/src/lib/components/WorkspaceDetail/WorkspaceDetail.d.ts +0 -0
- package/src/lib/components/WorkspaceDetail/WorkspaceDetail.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceDetail/WorkspaceDetail.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceDetail/WorkspaceDetailError.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceDetail/index.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/FilterChip.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/FilterChip.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/FilterList.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/FilterList.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/SearchField.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/SearchField.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/WorkspaceFilter.d.ts +1 -0
- package/src/lib/components/WorkspaceFilter/WorkspaceFilter.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceFilter/WorkspaceFilter.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenu.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenu.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenu.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenuButton.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenuButton.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenuButton.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenuButtonConnect.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/WorkspaceMenuButtonConnect.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceMenu/index.d.ts +0 -0
- package/src/lib/components/WorkspaceOptions/WorkspaceOptions.d.ts +0 -0
- package/src/lib/components/WorkspaceOptions/WorkspaceOptions.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceOptions/WorkspaceOptions.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceOptions/WorkspaceOptionsConnect.d.ts +0 -0
- package/src/lib/components/WorkspaceOptions/WorkspaceOptionsConnect.spec.d.ts +0 -0
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsForm.d.ts +0 -0
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsForm.spec.d.ts +0 -0
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.d.ts +6 -1
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.spec.d.ts +0 -0
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.stories.d.ts +8 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectList.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectList.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectList.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListConnect.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListConnect.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListError.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceTab/WorkspaceTab.d.ts +0 -0
- package/src/lib/components/WorkspaceTab/WorkspaceTab.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceTab/WorkspaceTabConnect.d.ts +0 -0
- package/src/lib/components/WorkspaceTab/WorkspaceTabConnect.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceTab/index.d.ts +0 -0
- package/src/lib/components/WorkspaceTopBar/WorkspaceTopBar.d.ts +0 -0
- package/src/lib/components/WorkspaceTopBar/WorkspaceTopBar.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceTopBar/WorkspaceTopBar.stories.d.ts +0 -0
- package/src/lib/components/WorkspaceTopBar/index.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceControls.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceControls.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceTileConnect.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceTileConnect.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceView.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceView.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceViewConnect.d.ts +0 -0
- package/src/lib/components/WorkspaceView/WorkspaceViewConnect.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceView/helpers.d.ts +0 -0
- package/src/lib/components/WorkspaceView/helpers.spec.d.ts +0 -0
- package/src/lib/components/WorkspaceView/index.d.ts +0 -0
- package/src/lib/components/WorkspaceViewTitle/WorkspaceViewTitleConnect.d.ts +0 -0
- package/src/lib/components/WorkspaceViewTitle/WorkspaceViewTitleConnect.spec.d.ts +0 -0
- package/src/lib/store/config.d.ts +0 -0
- package/src/lib/store/index.d.ts +0 -0
- package/src/lib/store/store.d.ts +0 -0
- package/src/lib/store/viewPresets/index.d.ts +0 -0
- package/src/lib/store/viewPresets/reducer.d.ts +4 -1
- package/src/lib/store/viewPresets/reducer.spec.d.ts +0 -0
- package/src/lib/store/viewPresets/sagas.d.ts +0 -0
- package/src/lib/store/viewPresets/sagas.spec.d.ts +0 -0
- package/src/lib/store/viewPresets/selectors.d.ts +5 -1
- package/src/lib/store/viewPresets/selectors.spec.d.ts +0 -0
- package/src/lib/store/viewPresets/types.d.ts +20 -2
- package/src/lib/store/viewPresets/utils.d.ts +3 -1
- package/src/lib/store/viewPresets/utils.spec.d.ts +0 -0
- package/src/lib/store/viewPresetsList/index.d.ts +0 -0
- package/src/lib/store/viewPresetsList/reducer.d.ts +0 -0
- package/src/lib/store/viewPresetsList/reducer.spec.d.ts +0 -0
- package/src/lib/store/viewPresetsList/selectors.d.ts +19 -2
- package/src/lib/store/viewPresetsList/selectors.spec.d.ts +0 -0
- package/src/lib/store/viewPresetsList/types.d.ts +4 -0
- package/src/lib/store/workspace/reducer.d.ts +0 -0
- package/src/lib/store/workspace/reducer.spec.d.ts +0 -0
- package/src/lib/store/workspace/sagas.d.ts +0 -0
- package/src/lib/store/workspace/sagas.spec.d.ts +0 -0
- package/src/lib/store/workspace/selectors.d.ts +0 -0
- package/src/lib/store/workspace/selectors.spec.d.ts +0 -0
- package/src/lib/store/workspace/types.d.ts +0 -0
- package/src/lib/store/workspace/utils.d.ts +0 -0
- package/src/lib/store/workspace/utils.spec.d.ts +0 -0
- package/src/lib/store/workspaceList/index.d.ts +0 -0
- package/src/lib/store/workspaceList/reducer.d.ts +0 -0
- package/src/lib/store/workspaceList/reducer.spec.d.ts +0 -0
- package/src/lib/store/workspaceList/sagas.d.ts +0 -0
- package/src/lib/store/workspaceList/sagas.spec.d.ts +0 -0
- package/src/lib/store/workspaceList/selectors.d.ts +0 -0
- package/src/lib/store/workspaceList/selectors.spec.d.ts +0 -0
- package/src/lib/store/workspaceList/types.d.ts +0 -0
- package/src/lib/store/workspaceList/utils.d.ts +0 -0
- package/src/lib/store/workspaceList/utils.spec.d.ts +0 -0
- package/src/lib/storyUtils/ActionsExampleComponent.d.ts +0 -0
- package/src/lib/storyUtils/StoryWrapper.d.ts +0 -0
- package/src/lib/storyUtils/componentsLookUp.d.ts +0 -0
- package/src/lib/storyUtils/componentsLookUp.stories.d.ts +0 -0
- package/src/lib/storyUtils/useFirstTimeError.d.ts +0 -0
- package/src/lib/storyUtils/useFirstTimeError.spec.d.ts +0 -0
- package/src/lib/storyshots/Storyshots.spec.d.ts +0 -0
- package/src/lib/utils/api.d.ts +2 -1
- package/src/lib/utils/api.spec.d.ts +0 -0
- package/src/lib/utils/fakeApi.d.ts +2 -0
- package/src/lib/utils/fakeApi.spec.d.ts +0 -0
- package/src/lib/utils/fakeApi.stories.d.ts +0 -0
- package/src/lib/utils/routes.d.ts +0 -0
- package/src/lib/utils/routes.spec.d.ts +0 -0
package/index.js
CHANGED
|
@@ -3,13 +3,13 @@ import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInsta
|
|
|
3
3
|
import { getLeaves, MosaicContext, getAndAssertNodeAtPathExists, createBalancedTreeFromLeaves, MosaicWindow, MosaicWithoutDragDropContext } from 'react-mosaic-component';
|
|
4
4
|
import { isAxiosError, getAxiosErrorMessage, withEggs, useConfirmationDialog, CustomIconButton, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, ToolContainer, CustomToggleButton, ConfirmationServiceProvider, ConfirmationDialog } from '@opengeoweb/shared';
|
|
5
5
|
import * as React from 'react';
|
|
6
|
-
import React__default, { createContext, useContext, useDebugValue, useLayoutEffect, useEffect, useMemo, memo,
|
|
7
|
-
import { ThemeWrapper, lightTheme, Menu, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles,
|
|
6
|
+
import React__default, { createContext, version, useContext, useRef, useCallback, useDebugValue, useLayoutEffect, useEffect, useMemo, memo, forwardRef, createElement, Fragment } from 'react';
|
|
7
|
+
import { ThemeWrapper, lightTheme, Menu, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles, Clear, Search, WebAssetOff } from '@opengeoweb/theme';
|
|
8
8
|
import { unstable_batchedUpdates } from 'react-dom';
|
|
9
9
|
import { timeSeriesModuleConfig } from '@opengeoweb/timeseries';
|
|
10
10
|
import { AuthenticationProvider, useAuthenticationContext } from '@opengeoweb/authentication';
|
|
11
11
|
import { jsx } from 'react/jsx-runtime';
|
|
12
|
-
import { useTheme as useTheme$2, LinearProgress, Typography, ListItem, ListItemButton, ListItemIcon, ListItemText, Grid, Box as Box$2, List,
|
|
12
|
+
import { useTheme as useTheme$2, LinearProgress, Typography, ListItem, ListItemButton, ListItemIcon, ListItemText, Grid, Box as Box$2, List, Chip, Stack, debounce as debounce$1, TextField, InputAdornment, Backdrop, Menu as Menu$1, ListSubheader, MenuItem, Tabs } from '@mui/material';
|
|
13
13
|
import 'react-mosaic-component/react-mosaic-component.css';
|
|
14
14
|
import { ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
|
|
15
15
|
|
|
@@ -19124,8 +19124,10 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
|
|
|
19124
19124
|
return axiosInstance["delete"]("/workspacepreset/".concat(workspacePresetId));
|
|
19125
19125
|
},
|
|
19126
19126
|
// view presets
|
|
19127
|
-
getViewPresets: function getViewPresets() {
|
|
19128
|
-
return axiosInstance.get('/viewpreset'
|
|
19127
|
+
getViewPresets: function getViewPresets(params) {
|
|
19128
|
+
return axiosInstance.get('/viewpreset', {
|
|
19129
|
+
params: params
|
|
19130
|
+
});
|
|
19129
19131
|
},
|
|
19130
19132
|
getViewPreset: function getViewPreset(viewPresetId) {
|
|
19131
19133
|
return axiosInstance.get("/viewpreset/".concat(viewPresetId));
|
|
@@ -19234,22 +19236,19 @@ var getErrorMessage = function getErrorMessage(error) {
|
|
|
19234
19236
|
return suffix ? "".concat(prefix, ": ").concat(suffix) : prefix;
|
|
19235
19237
|
};
|
|
19236
19238
|
|
|
19237
|
-
|
|
19238
|
-
|
|
19239
|
-
|
|
19240
|
-
|
|
19241
|
-
|
|
19242
|
-
|
|
19243
|
-
|
|
19244
|
-
|
|
19245
|
-
|
|
19246
|
-
|
|
19247
|
-
|
|
19248
|
-
|
|
19249
|
-
|
|
19250
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
19251
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
19252
|
-
* */
|
|
19239
|
+
var viewPresetsListFilterOptions = [{
|
|
19240
|
+
label: 'My presets',
|
|
19241
|
+
id: 'user',
|
|
19242
|
+
type: 'scope',
|
|
19243
|
+
isSelected: true,
|
|
19244
|
+
isDisabled: false
|
|
19245
|
+
}, {
|
|
19246
|
+
label: 'System presets',
|
|
19247
|
+
id: 'system',
|
|
19248
|
+
type: 'scope',
|
|
19249
|
+
isSelected: true,
|
|
19250
|
+
isDisabled: false
|
|
19251
|
+
}];
|
|
19253
19252
|
var viewPresetsAdapter = createEntityAdapter({
|
|
19254
19253
|
// we use panelId as id (panelId can be mapId or viewId)
|
|
19255
19254
|
selectId: function selectId(mapPreset) {
|
|
@@ -19307,17 +19306,42 @@ var slice$3 = createSlice({
|
|
|
19307
19306
|
}
|
|
19308
19307
|
},
|
|
19309
19308
|
fetchedViewPresets: function fetchedViewPresets(draft, action) {
|
|
19310
|
-
var
|
|
19309
|
+
var _action$payload = action.payload,
|
|
19310
|
+
panelId = _action$payload.panelId,
|
|
19311
|
+
viewPresets = _action$payload.viewPresets,
|
|
19312
|
+
filterParams = _action$payload.filterParams;
|
|
19311
19313
|
var entity = draft.entities[panelId];
|
|
19312
19314
|
if (entity) {
|
|
19313
19315
|
entity.isFetching = false;
|
|
19316
|
+
// If there are filter params, set filter results
|
|
19317
|
+
if (Object.keys(filterParams).length !== 0 && viewPresets.length !== 0) {
|
|
19318
|
+
var _viewPresets$reduce = viewPresets.reduce(function (result, viewPreset) {
|
|
19319
|
+
return {
|
|
19320
|
+
ids: [].concat(_toConsumableArray$1(result.ids), [viewPreset.id]),
|
|
19321
|
+
entities: Object.assign(Object.assign({}, result.entities), _defineProperty$f({}, viewPreset.id, viewPreset))
|
|
19322
|
+
};
|
|
19323
|
+
}, {
|
|
19324
|
+
ids: [],
|
|
19325
|
+
entities: {}
|
|
19326
|
+
}),
|
|
19327
|
+
ids = _viewPresets$reduce.ids,
|
|
19328
|
+
entities = _viewPresets$reduce.entities;
|
|
19329
|
+
entity.filterResults.entities = entities;
|
|
19330
|
+
entity.filterResults.ids = ids;
|
|
19331
|
+
} else {
|
|
19332
|
+
// If no filtering applied or no results returned from BE, clear out filter results
|
|
19333
|
+
entity.filterResults = {
|
|
19334
|
+
entities: {},
|
|
19335
|
+
ids: []
|
|
19336
|
+
};
|
|
19337
|
+
}
|
|
19314
19338
|
viewPresetsAdapter.setOne(draft, entity);
|
|
19315
19339
|
}
|
|
19316
19340
|
},
|
|
19317
19341
|
fetchedViewPreset: function fetchedViewPreset(draft, action) {
|
|
19318
|
-
var _action$
|
|
19319
|
-
panelId = _action$
|
|
19320
|
-
mapPresetId = _action$
|
|
19342
|
+
var _action$payload2 = action.payload,
|
|
19343
|
+
panelId = _action$payload2.panelId,
|
|
19344
|
+
mapPresetId = _action$payload2.viewPresetId;
|
|
19321
19345
|
var entity = draft.entities[panelId];
|
|
19322
19346
|
if (entity) {
|
|
19323
19347
|
entity.isFetching = false;
|
|
@@ -19346,9 +19370,9 @@ var slice$3 = createSlice({
|
|
|
19346
19370
|
}
|
|
19347
19371
|
},
|
|
19348
19372
|
errorViewPreset: function errorViewPreset(draft, action) {
|
|
19349
|
-
var _action$
|
|
19350
|
-
panelId = _action$
|
|
19351
|
-
error = _action$
|
|
19373
|
+
var _action$payload3 = action.payload,
|
|
19374
|
+
panelId = _action$payload3.panelId,
|
|
19375
|
+
error = _action$payload3.error;
|
|
19352
19376
|
var entity = draft.entities[panelId];
|
|
19353
19377
|
if (entity) {
|
|
19354
19378
|
entity.error = error;
|
|
@@ -19358,9 +19382,9 @@ var slice$3 = createSlice({
|
|
|
19358
19382
|
},
|
|
19359
19383
|
// map actions
|
|
19360
19384
|
setViewPresetHasChanges: function setViewPresetHasChanges(draft, action) {
|
|
19361
|
-
var _action$
|
|
19362
|
-
panelId = _action$
|
|
19363
|
-
hasChanges = _action$
|
|
19385
|
+
var _action$payload4 = action.payload,
|
|
19386
|
+
panelId = _action$payload4.panelId,
|
|
19387
|
+
hasChanges = _action$payload4.hasChanges;
|
|
19364
19388
|
var entity = draft.entities[panelId];
|
|
19365
19389
|
if (entity) {
|
|
19366
19390
|
entity.hasChanges = hasChanges;
|
|
@@ -19368,9 +19392,9 @@ var slice$3 = createSlice({
|
|
|
19368
19392
|
}
|
|
19369
19393
|
},
|
|
19370
19394
|
setActiveViewPresetId: function setActiveViewPresetId(draft, action) {
|
|
19371
|
-
var _action$
|
|
19372
|
-
panelId = _action$
|
|
19373
|
-
mapPresetId = _action$
|
|
19395
|
+
var _action$payload5 = action.payload,
|
|
19396
|
+
panelId = _action$payload5.panelId,
|
|
19397
|
+
mapPresetId = _action$payload5.viewPresetId;
|
|
19374
19398
|
var entity = draft.entities[panelId];
|
|
19375
19399
|
if (entity) {
|
|
19376
19400
|
entity.activeViewPresetId = mapPresetId;
|
|
@@ -19379,9 +19403,9 @@ var slice$3 = createSlice({
|
|
|
19379
19403
|
}
|
|
19380
19404
|
},
|
|
19381
19405
|
selectViewPreset: function selectViewPreset(draft, action) {
|
|
19382
|
-
var _action$
|
|
19383
|
-
panelId = _action$
|
|
19384
|
-
mapPresetId = _action$
|
|
19406
|
+
var _action$payload6 = action.payload,
|
|
19407
|
+
panelId = _action$payload6.panelId,
|
|
19408
|
+
mapPresetId = _action$payload6.viewPresetId;
|
|
19385
19409
|
var entity = draft.entities[panelId];
|
|
19386
19410
|
if (entity) {
|
|
19387
19411
|
// only update activeMapPresetId after selecting a NEW preset
|
|
@@ -19401,16 +19425,22 @@ var slice$3 = createSlice({
|
|
|
19401
19425
|
// eslint-disable-next-line no-unused-vars
|
|
19402
19426
|
action) {},
|
|
19403
19427
|
registerViewPreset: function registerViewPreset(draft, action) {
|
|
19404
|
-
var _action$
|
|
19405
|
-
mapId = _action$
|
|
19406
|
-
mapPresetId = _action$
|
|
19428
|
+
var _action$payload7 = action.payload,
|
|
19429
|
+
mapId = _action$payload7.panelId,
|
|
19430
|
+
mapPresetId = _action$payload7.viewPresetId;
|
|
19407
19431
|
viewPresetsAdapter.setOne(draft, {
|
|
19408
19432
|
panelId: mapId,
|
|
19409
19433
|
activeViewPresetId: mapPresetId,
|
|
19410
19434
|
hasChanges: false,
|
|
19411
19435
|
isFetching: false,
|
|
19412
19436
|
error: undefined,
|
|
19413
|
-
isViewPresetListDialogOpen: false
|
|
19437
|
+
isViewPresetListDialogOpen: false,
|
|
19438
|
+
filters: viewPresetsListFilterOptions,
|
|
19439
|
+
searchQuery: '',
|
|
19440
|
+
filterResults: {
|
|
19441
|
+
ids: [],
|
|
19442
|
+
entities: {}
|
|
19443
|
+
}
|
|
19414
19444
|
});
|
|
19415
19445
|
},
|
|
19416
19446
|
unregisterViewPreset: function unregisterViewPreset(draft, action) {
|
|
@@ -19426,22 +19456,67 @@ var slice$3 = createSlice({
|
|
|
19426
19456
|
delete draft.viewPresetDialog;
|
|
19427
19457
|
},
|
|
19428
19458
|
toggleViewPresetListDialog: function toggleViewPresetListDialog(draft, action) {
|
|
19429
|
-
var _action$
|
|
19430
|
-
isViewPresetDialogOpen = _action$
|
|
19431
|
-
panelId = _action$
|
|
19459
|
+
var _action$payload8 = action.payload,
|
|
19460
|
+
isViewPresetDialogOpen = _action$payload8.isViewPresetListDialogOpen,
|
|
19461
|
+
panelId = _action$payload8.panelId;
|
|
19432
19462
|
var entity = draft.entities[panelId];
|
|
19433
19463
|
if (entity) {
|
|
19434
19464
|
entity.isViewPresetListDialogOpen = isViewPresetDialogOpen;
|
|
19435
19465
|
viewPresetsAdapter.setOne(draft, entity);
|
|
19436
19466
|
}
|
|
19467
|
+
},
|
|
19468
|
+
toggleSelectFilterChip: function toggleSelectFilterChip(draft, action) {
|
|
19469
|
+
var _action$payload9 = action.payload,
|
|
19470
|
+
id = _action$payload9.id,
|
|
19471
|
+
isSelected = _action$payload9.isSelected,
|
|
19472
|
+
panelId = _action$payload9.panelId;
|
|
19473
|
+
var entity = draft.entities[panelId];
|
|
19474
|
+
if (entity) {
|
|
19475
|
+
var isAllSelected = entity.filters.every(function (filter) {
|
|
19476
|
+
return filter.isSelected;
|
|
19477
|
+
});
|
|
19478
|
+
var index = entity.filters.findIndex(function (filter) {
|
|
19479
|
+
return filter.id === id;
|
|
19480
|
+
});
|
|
19481
|
+
if (index !== -1) {
|
|
19482
|
+
if (isAllSelected) {
|
|
19483
|
+
entity.filters.forEach(function (filter, index) {
|
|
19484
|
+
entity.filters[index].isSelected = filter.id === id ? isSelected : false;
|
|
19485
|
+
});
|
|
19486
|
+
} else {
|
|
19487
|
+
entity.filters[index] = Object.assign(Object.assign({}, entity.filters[index]), {
|
|
19488
|
+
isSelected: isSelected
|
|
19489
|
+
});
|
|
19490
|
+
var isAllUnSelected = entity.filters.every(function (filter) {
|
|
19491
|
+
return !filter.isSelected;
|
|
19492
|
+
});
|
|
19493
|
+
if (isAllUnSelected) {
|
|
19494
|
+
entity.filters.forEach(function (_, index) {
|
|
19495
|
+
entity.filters[index].isSelected = true;
|
|
19496
|
+
});
|
|
19497
|
+
}
|
|
19498
|
+
}
|
|
19499
|
+
}
|
|
19500
|
+
}
|
|
19501
|
+
},
|
|
19502
|
+
setSelectAllFilterChip: function setSelectAllFilterChip(draft, action) {
|
|
19503
|
+
var panelId = action.payload.panelId;
|
|
19504
|
+
var entity = draft.entities[panelId];
|
|
19505
|
+
if (entity) {
|
|
19506
|
+
entity.filters = entity.filters.map(function (filter) {
|
|
19507
|
+
return Object.assign(Object.assign({}, filter), {
|
|
19508
|
+
isSelected: true
|
|
19509
|
+
});
|
|
19510
|
+
});
|
|
19511
|
+
}
|
|
19437
19512
|
}
|
|
19438
19513
|
},
|
|
19439
19514
|
extraReducers: function extraReducers(builder) {
|
|
19440
19515
|
syncGroupChangeActions.map(function (syncGroupAction) {
|
|
19441
19516
|
return builder.addCase(syncGroupAction, function (draft, action) {
|
|
19442
|
-
var _action$
|
|
19443
|
-
origin = _action$
|
|
19444
|
-
targetId = _action$
|
|
19517
|
+
var _action$payload10 = action.payload,
|
|
19518
|
+
origin = _action$payload10.origin,
|
|
19519
|
+
targetId = _action$payload10.targetId;
|
|
19445
19520
|
if (origin === 'user') {
|
|
19446
19521
|
var entity = draft.entities[targetId];
|
|
19447
19522
|
if (entity) {
|
|
@@ -19453,9 +19528,9 @@ var slice$3 = createSlice({
|
|
|
19453
19528
|
});
|
|
19454
19529
|
mapPresetChangeActions.map(function (mapPresetAction) {
|
|
19455
19530
|
return builder.addCase(mapPresetAction, function (draft, action) {
|
|
19456
|
-
var _action$
|
|
19457
|
-
mapId = _action$
|
|
19458
|
-
origin = _action$
|
|
19531
|
+
var _action$payload11 = action.payload,
|
|
19532
|
+
mapId = _action$payload11.mapId,
|
|
19533
|
+
origin = _action$payload11.origin;
|
|
19459
19534
|
var isChangeOriginSupported = supportedChangeOrigins.indexOf(origin) >= 0;
|
|
19460
19535
|
if (isChangeOriginSupported && mapId) {
|
|
19461
19536
|
var entity = draft.entities[mapId];
|
|
@@ -19773,6 +19848,20 @@ var getIsViewPresetListDialogOpen = function getIsViewPresetListDialogOpen(store
|
|
|
19773
19848
|
var _a;
|
|
19774
19849
|
return ((_a = getViewPresetById(store, panelId)) === null || _a === void 0 ? void 0 : _a.isViewPresetListDialogOpen) || false;
|
|
19775
19850
|
};
|
|
19851
|
+
var getViewPresetListFiltersForView = function getViewPresetListFiltersForView(store, panelId) {
|
|
19852
|
+
var _a;
|
|
19853
|
+
return ((_a = getViewPresetById(store, panelId)) === null || _a === void 0 ? void 0 : _a.filters) || [];
|
|
19854
|
+
};
|
|
19855
|
+
// Used to retrieve the filtered view preset list for your view - if no filters/search applied it will be empty
|
|
19856
|
+
// To ensure you retrieve the view preset list specific for your view (incl and excl filters), use getFilteredViewPresetListForView
|
|
19857
|
+
var getViewPresetListFilterResultsForView = function getViewPresetListFilterResultsForView(store, panelId) {
|
|
19858
|
+
var _a;
|
|
19859
|
+
var filteredResults = ((_a = getViewPresetById(store, panelId)) === null || _a === void 0 ? void 0 : _a.filterResults) || {
|
|
19860
|
+
entities: {},
|
|
19861
|
+
ids: []
|
|
19862
|
+
};
|
|
19863
|
+
return Object.values(filteredResults.entities);
|
|
19864
|
+
};
|
|
19776
19865
|
|
|
19777
19866
|
/* *
|
|
19778
19867
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -19810,13 +19899,38 @@ var getPresetsApi = function getPresetsApi() {
|
|
|
19810
19899
|
};
|
|
19811
19900
|
var emptyMapViewPreset = {
|
|
19812
19901
|
componentType: 'Map',
|
|
19813
|
-
keywords: '
|
|
19902
|
+
keywords: '',
|
|
19814
19903
|
scope: 'user',
|
|
19815
19904
|
title: '',
|
|
19816
19905
|
initialProps: {
|
|
19817
19906
|
mapPreset: {}
|
|
19818
19907
|
}
|
|
19819
19908
|
};
|
|
19909
|
+
// Returns object of applied user filters such as scope/search etc
|
|
19910
|
+
// If all filter chips are selected, an empty string is returned for that filter which is interpreted in the BE as "return all" _
|
|
19911
|
+
var constructFilterParams$1 = function constructFilterParams(filters) {
|
|
19912
|
+
// get filters
|
|
19913
|
+
var isAllSelectedForFilters = filters.every(function (filter) {
|
|
19914
|
+
return filter.isSelected;
|
|
19915
|
+
});
|
|
19916
|
+
// If all filters are selected, ensure we return nothing for scope
|
|
19917
|
+
var _ref = isAllSelectedForFilters ? {
|
|
19918
|
+
scope: []
|
|
19919
|
+
} : filters.reduce(function (filterList, filter) {
|
|
19920
|
+
if (filter.isSelected && filter.type === 'scope') {
|
|
19921
|
+
return Object.assign(Object.assign({}, filter), {
|
|
19922
|
+
scope: filterList.scope.concat(filter.id)
|
|
19923
|
+
});
|
|
19924
|
+
}
|
|
19925
|
+
return filterList;
|
|
19926
|
+
}, {
|
|
19927
|
+
scope: []
|
|
19928
|
+
}),
|
|
19929
|
+
scope = _ref.scope;
|
|
19930
|
+
return Object.assign({}, scope.length && {
|
|
19931
|
+
scope: scope.toString()
|
|
19932
|
+
});
|
|
19933
|
+
};
|
|
19820
19934
|
|
|
19821
19935
|
/* *
|
|
19822
19936
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -20019,7 +20133,13 @@ var slice$1 = createSlice({
|
|
|
20019
20133
|
}
|
|
20020
20134
|
viewPresetsListAdapter.setAll(draft, action.payload.viewPresets);
|
|
20021
20135
|
}).addCase(viewPresetActions.fetchedViewPresets, function (draft, action) {
|
|
20022
|
-
var
|
|
20136
|
+
var _action$payload = action.payload,
|
|
20137
|
+
viewPresets = _action$payload.viewPresets,
|
|
20138
|
+
filterParams = _action$payload.filterParams;
|
|
20139
|
+
// If there are filter params applied, don't do anything, these results are put in the specific panel filterResults
|
|
20140
|
+
if (Object.keys(filterParams).length !== 0) {
|
|
20141
|
+
return;
|
|
20142
|
+
}
|
|
20023
20143
|
if (!viewPresets || !viewPresets.length) {
|
|
20024
20144
|
viewPresetsListAdapter.removeAll(draft);
|
|
20025
20145
|
return;
|
|
@@ -22665,6 +22785,7 @@ var getSnackbarMessage = function getSnackbarMessage(action, title) {
|
|
|
22665
22785
|
};
|
|
22666
22786
|
var emptyMapWorkspace = {
|
|
22667
22787
|
title: 'New workspace',
|
|
22788
|
+
scope: 'system',
|
|
22668
22789
|
"abstract": '',
|
|
22669
22790
|
views: {
|
|
22670
22791
|
allIds: ['1_screen'],
|
|
@@ -22763,6 +22884,19 @@ var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
|
|
|
22763
22884
|
return list;
|
|
22764
22885
|
}, []);
|
|
22765
22886
|
};
|
|
22887
|
+
var filterViewPresetList = function filterViewPresetList(params) {
|
|
22888
|
+
if (lodash.exports.isEmpty(params)) {
|
|
22889
|
+
return viewPresetsList;
|
|
22890
|
+
}
|
|
22891
|
+
return viewPresetsList.reduce(function (list, viewPresetRaw) {
|
|
22892
|
+
var _a;
|
|
22893
|
+
var workspacePreset = viewPresetRaw;
|
|
22894
|
+
if ((_a = params === null || params === void 0 ? void 0 : params.scope) === null || _a === void 0 ? void 0 : _a.includes(workspacePreset.scope)) {
|
|
22895
|
+
return list.concat(workspacePreset);
|
|
22896
|
+
}
|
|
22897
|
+
return list;
|
|
22898
|
+
}, []);
|
|
22899
|
+
};
|
|
22766
22900
|
var sortViewPresets = function sortViewPresets(viewPresets) {
|
|
22767
22901
|
var presetOrder = ['system', 'user'];
|
|
22768
22902
|
return _toConsumableArray$1(viewPresets).sort(function (left, right) {
|
|
@@ -22812,10 +22946,13 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
|
|
|
22812
22946
|
return axiosInstance["delete"]("/workspacepreset/".concat(workspacePresetId));
|
|
22813
22947
|
},
|
|
22814
22948
|
// view presets
|
|
22815
|
-
getViewPresets: function getViewPresets() {
|
|
22816
|
-
return axiosInstance.get('/viewpreset'
|
|
22949
|
+
getViewPresets: function getViewPresets(params) {
|
|
22950
|
+
return axiosInstance.get('/viewpreset', {
|
|
22951
|
+
params: params
|
|
22952
|
+
}).then(function () {
|
|
22953
|
+
var data = filterViewPresetList(params);
|
|
22817
22954
|
return {
|
|
22818
|
-
data: sortViewPresets(
|
|
22955
|
+
data: sortViewPresets(data)
|
|
22819
22956
|
};
|
|
22820
22957
|
});
|
|
22821
22958
|
},
|
|
@@ -23720,25 +23857,26 @@ function fetchInitialViewPresetsSaga() {
|
|
|
23720
23857
|
function fetchViewPresetsSaga(_ref) {
|
|
23721
23858
|
var payload = _ref.payload;
|
|
23722
23859
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
23723
|
-
var panelId, presetsApi, _yield$call2, viewPresets;
|
|
23860
|
+
var panelId, filterParams, presetsApi, _yield$call2, viewPresets;
|
|
23724
23861
|
return _regeneratorRuntime().wrap(function _callee$(_context2) {
|
|
23725
23862
|
while (1) switch (_context2.prev = _context2.next) {
|
|
23726
23863
|
case 0:
|
|
23727
|
-
panelId = payload.panelId;
|
|
23864
|
+
panelId = payload.panelId, filterParams = payload.filterParams;
|
|
23728
23865
|
_context2.prev = 1;
|
|
23729
23866
|
_context2.next = 4;
|
|
23730
23867
|
return call(getPresetsApi);
|
|
23731
23868
|
case 4:
|
|
23732
23869
|
presetsApi = _context2.sent;
|
|
23733
23870
|
_context2.next = 7;
|
|
23734
|
-
return call(presetsApi.getViewPresets);
|
|
23871
|
+
return call(presetsApi.getViewPresets, filterParams);
|
|
23735
23872
|
case 7:
|
|
23736
23873
|
_yield$call2 = _context2.sent;
|
|
23737
23874
|
viewPresets = _yield$call2.data;
|
|
23738
23875
|
_context2.next = 11;
|
|
23739
23876
|
return put(viewPresetActions.fetchedViewPresets({
|
|
23740
23877
|
viewPresets: viewPresets,
|
|
23741
|
-
panelId: panelId
|
|
23878
|
+
panelId: panelId,
|
|
23879
|
+
filterParams: filterParams
|
|
23742
23880
|
}));
|
|
23743
23881
|
case 11:
|
|
23744
23882
|
_context2.next = 17;
|
|
@@ -23871,7 +24009,7 @@ function selectViewPresetSaga(_ref3) {
|
|
|
23871
24009
|
function onSuccessViewPresetActionSaga(_ref4) {
|
|
23872
24010
|
var payload = _ref4.payload;
|
|
23873
24011
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
23874
|
-
var action, viewPresetId, title, panelId, activeMapPresetId;
|
|
24012
|
+
var action, viewPresetId, title, panelId, activeMapPresetId, viewPresetFilters;
|
|
23875
24013
|
return _regeneratorRuntime().wrap(function _callee4$(_context5) {
|
|
23876
24014
|
while (1) switch (_context5.prev = _context5.next) {
|
|
23877
24015
|
case 0:
|
|
@@ -23897,36 +24035,41 @@ function onSuccessViewPresetActionSaga(_ref4) {
|
|
|
23897
24035
|
}));
|
|
23898
24036
|
case 10:
|
|
23899
24037
|
_context5.next = 12;
|
|
24038
|
+
return select(getViewPresetListFiltersForView, panelId);
|
|
24039
|
+
case 12:
|
|
24040
|
+
viewPresetFilters = _context5.sent;
|
|
24041
|
+
_context5.next = 15;
|
|
23900
24042
|
return call(fetchViewPresetsSaga, viewPresetActions.fetchViewPresets({
|
|
23901
|
-
panelId: panelId
|
|
24043
|
+
panelId: panelId,
|
|
24044
|
+
filterParams: constructFilterParams$1(viewPresetFilters)
|
|
23902
24045
|
}));
|
|
23903
|
-
case
|
|
23904
|
-
_context5.next =
|
|
24046
|
+
case 15:
|
|
24047
|
+
_context5.next = 17;
|
|
23905
24048
|
return put(viewPresetActions.setViewPresetHasChanges({
|
|
23906
24049
|
panelId: panelId,
|
|
23907
24050
|
hasChanges: false
|
|
23908
24051
|
}));
|
|
23909
|
-
case
|
|
24052
|
+
case 17:
|
|
23910
24053
|
if (!(action === PresetAction.SAVE_AS && viewPresetId)) {
|
|
23911
|
-
_context5.next =
|
|
24054
|
+
_context5.next = 20;
|
|
23912
24055
|
break;
|
|
23913
24056
|
}
|
|
23914
|
-
_context5.next =
|
|
24057
|
+
_context5.next = 20;
|
|
23915
24058
|
return put(viewPresetActions.setActiveViewPresetId({
|
|
23916
24059
|
panelId: panelId,
|
|
23917
24060
|
viewPresetId: viewPresetId
|
|
23918
24061
|
}));
|
|
23919
|
-
case
|
|
23920
|
-
_context5.next =
|
|
24062
|
+
case 20:
|
|
24063
|
+
_context5.next = 24;
|
|
23921
24064
|
break;
|
|
23922
|
-
case
|
|
23923
|
-
_context5.prev =
|
|
24065
|
+
case 22:
|
|
24066
|
+
_context5.prev = 22;
|
|
23924
24067
|
_context5.t0 = _context5["catch"](1);
|
|
23925
|
-
case
|
|
24068
|
+
case 24:
|
|
23926
24069
|
case "end":
|
|
23927
24070
|
return _context5.stop();
|
|
23928
24071
|
}
|
|
23929
|
-
}, _callee4, null, [[1,
|
|
24072
|
+
}, _callee4, null, [[1, 22]]);
|
|
23930
24073
|
})();
|
|
23931
24074
|
}
|
|
23932
24075
|
function rootSaga() {
|
|
@@ -24439,12 +24582,52 @@ const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip d
|
|
|
24439
24582
|
|
|
24440
24583
|
const getBatch = () => batch;
|
|
24441
24584
|
|
|
24442
|
-
const
|
|
24585
|
+
const ContextKey = Symbol.for(`react-redux-context-${version}`);
|
|
24586
|
+
const gT = globalThis;
|
|
24443
24587
|
|
|
24444
|
-
|
|
24445
|
-
|
|
24588
|
+
function getContext() {
|
|
24589
|
+
let realContext = gT[ContextKey];
|
|
24590
|
+
|
|
24591
|
+
if (!realContext) {
|
|
24592
|
+
realContext = createContext(null);
|
|
24593
|
+
|
|
24594
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
24595
|
+
realContext.displayName = 'ReactRedux';
|
|
24596
|
+
}
|
|
24597
|
+
|
|
24598
|
+
gT[ContextKey] = realContext;
|
|
24599
|
+
}
|
|
24600
|
+
|
|
24601
|
+
return realContext;
|
|
24446
24602
|
}
|
|
24447
24603
|
|
|
24604
|
+
const ReactReduxContext = /*#__PURE__*/new Proxy({}, /*#__PURE__*/new Proxy({}, {
|
|
24605
|
+
get(_, handler) {
|
|
24606
|
+
const target = getContext(); // @ts-ignore
|
|
24607
|
+
|
|
24608
|
+
return (_target, ...args) => Reflect[handler](target, ...args);
|
|
24609
|
+
}
|
|
24610
|
+
|
|
24611
|
+
}));
|
|
24612
|
+
|
|
24613
|
+
/**
|
|
24614
|
+
* Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level
|
|
24615
|
+
* hook that you should usually not need to call directly.
|
|
24616
|
+
*
|
|
24617
|
+
* @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.
|
|
24618
|
+
* @returns {Function} A `useReduxContext` hook bound to the specified context.
|
|
24619
|
+
*/
|
|
24620
|
+
function createReduxContextHook(context = ReactReduxContext) {
|
|
24621
|
+
return function useReduxContext() {
|
|
24622
|
+
const contextValue = useContext(context);
|
|
24623
|
+
|
|
24624
|
+
if (process.env.NODE_ENV !== 'production' && !contextValue) {
|
|
24625
|
+
throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
|
|
24626
|
+
}
|
|
24627
|
+
|
|
24628
|
+
return contextValue;
|
|
24629
|
+
};
|
|
24630
|
+
}
|
|
24448
24631
|
/**
|
|
24449
24632
|
* A hook to access the value of the `ReactReduxContext`. This is a low-level
|
|
24450
24633
|
* hook that you should usually not need to call directly.
|
|
@@ -24461,15 +24644,8 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
24461
24644
|
* return <div>{store.getState()}</div>
|
|
24462
24645
|
* }
|
|
24463
24646
|
*/
|
|
24464
|
-
function useReduxContext() {
|
|
24465
|
-
const contextValue = useContext(ReactReduxContext);
|
|
24466
24647
|
|
|
24467
|
-
|
|
24468
|
-
throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
|
|
24469
|
-
}
|
|
24470
|
-
|
|
24471
|
-
return contextValue;
|
|
24472
|
-
}
|
|
24648
|
+
const useReduxContext = /*#__PURE__*/createReduxContextHook();
|
|
24473
24649
|
|
|
24474
24650
|
const notInitialized = () => {
|
|
24475
24651
|
throw new Error('uSES not initialized!');
|
|
@@ -24490,8 +24666,16 @@ const refEquality = (a, b) => a === b;
|
|
|
24490
24666
|
|
|
24491
24667
|
|
|
24492
24668
|
function createSelectorHook(context = ReactReduxContext) {
|
|
24493
|
-
const useReduxContext$1 = context === ReactReduxContext ? useReduxContext : (
|
|
24494
|
-
return function useSelector(selector,
|
|
24669
|
+
const useReduxContext$1 = context === ReactReduxContext ? useReduxContext : createReduxContextHook(context);
|
|
24670
|
+
return function useSelector(selector, equalityFnOrOptions = {}) {
|
|
24671
|
+
const {
|
|
24672
|
+
equalityFn = refEquality,
|
|
24673
|
+
stabilityCheck = undefined,
|
|
24674
|
+
noopCheck = undefined
|
|
24675
|
+
} = typeof equalityFnOrOptions === 'function' ? {
|
|
24676
|
+
equalityFn: equalityFnOrOptions
|
|
24677
|
+
} : equalityFnOrOptions;
|
|
24678
|
+
|
|
24495
24679
|
if (process.env.NODE_ENV !== 'production') {
|
|
24496
24680
|
if (!selector) {
|
|
24497
24681
|
throw new Error(`You must pass a selector to useSelector`);
|
|
@@ -24509,9 +24693,47 @@ function createSelectorHook(context = ReactReduxContext) {
|
|
|
24509
24693
|
const {
|
|
24510
24694
|
store,
|
|
24511
24695
|
subscription,
|
|
24512
|
-
getServerState
|
|
24696
|
+
getServerState,
|
|
24697
|
+
stabilityCheck: globalStabilityCheck,
|
|
24698
|
+
noopCheck: globalNoopCheck
|
|
24513
24699
|
} = useReduxContext$1();
|
|
24514
|
-
const
|
|
24700
|
+
const firstRun = useRef(true);
|
|
24701
|
+
const wrappedSelector = useCallback({
|
|
24702
|
+
[selector.name](state) {
|
|
24703
|
+
const selected = selector(state);
|
|
24704
|
+
|
|
24705
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
24706
|
+
const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;
|
|
24707
|
+
|
|
24708
|
+
if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {
|
|
24709
|
+
const toCompare = selector(state);
|
|
24710
|
+
|
|
24711
|
+
if (!equalityFn(selected, toCompare)) {
|
|
24712
|
+
console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {
|
|
24713
|
+
state,
|
|
24714
|
+
selected,
|
|
24715
|
+
selected2: toCompare
|
|
24716
|
+
});
|
|
24717
|
+
}
|
|
24718
|
+
}
|
|
24719
|
+
|
|
24720
|
+
const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;
|
|
24721
|
+
|
|
24722
|
+
if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {
|
|
24723
|
+
// @ts-ignore
|
|
24724
|
+
if (selected === state) {
|
|
24725
|
+
console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.');
|
|
24726
|
+
}
|
|
24727
|
+
}
|
|
24728
|
+
|
|
24729
|
+
if (firstRun.current) firstRun.current = false;
|
|
24730
|
+
}
|
|
24731
|
+
|
|
24732
|
+
return selected;
|
|
24733
|
+
}
|
|
24734
|
+
|
|
24735
|
+
}[selector.name], [selector, globalStabilityCheck, stabilityCheck]);
|
|
24736
|
+
const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);
|
|
24515
24737
|
useDebugValue(selectedState);
|
|
24516
24738
|
return selectedState;
|
|
24517
24739
|
};
|
|
@@ -25164,16 +25386,20 @@ function Provider({
|
|
|
25164
25386
|
store,
|
|
25165
25387
|
context,
|
|
25166
25388
|
children,
|
|
25167
|
-
serverState
|
|
25389
|
+
serverState,
|
|
25390
|
+
stabilityCheck = 'once',
|
|
25391
|
+
noopCheck = 'once'
|
|
25168
25392
|
}) {
|
|
25169
25393
|
const contextValue = useMemo(() => {
|
|
25170
25394
|
const subscription = createSubscription(store);
|
|
25171
25395
|
return {
|
|
25172
25396
|
store,
|
|
25173
25397
|
subscription,
|
|
25174
|
-
getServerState: serverState ? () => serverState : undefined
|
|
25398
|
+
getServerState: serverState ? () => serverState : undefined,
|
|
25399
|
+
stabilityCheck,
|
|
25400
|
+
noopCheck
|
|
25175
25401
|
};
|
|
25176
|
-
}, [store, serverState]);
|
|
25402
|
+
}, [store, serverState, stabilityCheck, noopCheck]);
|
|
25177
25403
|
const previousState = useMemo(() => store.getState(), [store]);
|
|
25178
25404
|
useIsomorphicLayoutEffect(() => {
|
|
25179
25405
|
const {
|
|
@@ -25207,7 +25433,8 @@ function Provider({
|
|
|
25207
25433
|
|
|
25208
25434
|
function createStoreHook(context = ReactReduxContext) {
|
|
25209
25435
|
const useReduxContext$1 = // @ts-ignore
|
|
25210
|
-
context === ReactReduxContext ? useReduxContext :
|
|
25436
|
+
context === ReactReduxContext ? useReduxContext : // @ts-ignore
|
|
25437
|
+
createReduxContextHook(context);
|
|
25211
25438
|
return function useStore() {
|
|
25212
25439
|
const {
|
|
25213
25440
|
store
|
|
@@ -31400,6 +31627,8 @@ var createBalancedMosaicNode = function createBalancedMosaicNode(currentNode) {
|
|
|
31400
31627
|
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
31401
31628
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
31402
31629
|
* */
|
|
31630
|
+
// Used to retrieve the unfiltered, general view preset list.
|
|
31631
|
+
// To ensure you retrieve the view preset list specific for your view, use getFilteredViewPresetListForView
|
|
31403
31632
|
var _viewPresetsListAdapt = viewPresetsListAdapter.getSelectors(function (state) {
|
|
31404
31633
|
var _a;
|
|
31405
31634
|
return (_a = state === null || state === void 0 ? void 0 : state.viewPresetsList) !== null && _a !== void 0 ? _a : {
|
|
@@ -31409,6 +31638,20 @@ var _viewPresetsListAdapt = viewPresetsListAdapter.getSelectors(function (state)
|
|
|
31409
31638
|
}),
|
|
31410
31639
|
getViewPresetsList = _viewPresetsListAdapt.selectAll;
|
|
31411
31640
|
_viewPresetsListAdapt.selectById;
|
|
31641
|
+
var getFilteredViewPresetListForView = createSelector(getViewPresetsList, getViewPresetListFilterResultsForView, getViewPresetListFiltersForView, function (fullViewPresetsList, filteredResults, appliedFilters) {
|
|
31642
|
+
// If we have a filtered results list, use this, otherwise fall back to the general unfiltered view presets list
|
|
31643
|
+
// If all filters are set to true we are not filtering
|
|
31644
|
+
var filtersApplied = !appliedFilters.every(function (filter) {
|
|
31645
|
+
return filter.isSelected;
|
|
31646
|
+
});
|
|
31647
|
+
if (filtersApplied) {
|
|
31648
|
+
return filteredResults;
|
|
31649
|
+
}
|
|
31650
|
+
return fullViewPresetsList !== null && fullViewPresetsList !== void 0 ? fullViewPresetsList : {
|
|
31651
|
+
entities: {},
|
|
31652
|
+
ids: []
|
|
31653
|
+
};
|
|
31654
|
+
});
|
|
31412
31655
|
|
|
31413
31656
|
/* *
|
|
31414
31657
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -31602,6 +31845,196 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
|
|
|
31602
31845
|
})));
|
|
31603
31846
|
};
|
|
31604
31847
|
|
|
31848
|
+
/* *
|
|
31849
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
31850
|
+
* you may not use this file except in compliance with the License.
|
|
31851
|
+
* You may obtain a copy of the License at
|
|
31852
|
+
*
|
|
31853
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
31854
|
+
*
|
|
31855
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
31856
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
31857
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
31858
|
+
* See the License for the specific language governing permissions and
|
|
31859
|
+
* limitations under the License.
|
|
31860
|
+
*
|
|
31861
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
31862
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
31863
|
+
* */
|
|
31864
|
+
var FilterChip = function FilterChip(_ref) {
|
|
31865
|
+
var label = _ref.label,
|
|
31866
|
+
id = _ref.id,
|
|
31867
|
+
_ref$isSelected = _ref.isSelected,
|
|
31868
|
+
isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
|
|
31869
|
+
_ref$isDisabled = _ref.isDisabled,
|
|
31870
|
+
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
31871
|
+
_ref$handleClick = _ref.handleClick,
|
|
31872
|
+
handleClick = _ref$handleClick === void 0 ? function () {} : _ref$handleClick;
|
|
31873
|
+
var theme = useTheme$2();
|
|
31874
|
+
return /*#__PURE__*/React.createElement(Chip, {
|
|
31875
|
+
size: "small",
|
|
31876
|
+
id: id,
|
|
31877
|
+
label: label,
|
|
31878
|
+
disabled: isDisabled,
|
|
31879
|
+
variant: isSelected ? 'filled' : 'outlined',
|
|
31880
|
+
color: isSelected ? 'secondary' : 'default',
|
|
31881
|
+
sx: {
|
|
31882
|
+
borderColor: "".concat(theme.palette.geowebColors.buttons.tertiary["default"].borderColor),
|
|
31883
|
+
padding: '0px 4px'
|
|
31884
|
+
},
|
|
31885
|
+
onClick: function onClick() {
|
|
31886
|
+
return handleClick(id);
|
|
31887
|
+
}
|
|
31888
|
+
});
|
|
31889
|
+
};
|
|
31890
|
+
|
|
31891
|
+
/* *
|
|
31892
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
31893
|
+
* you may not use this file except in compliance with the License.
|
|
31894
|
+
* You may obtain a copy of the License at
|
|
31895
|
+
*
|
|
31896
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
31897
|
+
*
|
|
31898
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
31899
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
31900
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
31901
|
+
* See the License for the specific language governing permissions and
|
|
31902
|
+
* limitations under the License.
|
|
31903
|
+
*
|
|
31904
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
31905
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
31906
|
+
* */
|
|
31907
|
+
var allLabel = 'All';
|
|
31908
|
+
var FilterList = function FilterList(_ref) {
|
|
31909
|
+
var _ref$filters = _ref.filters,
|
|
31910
|
+
filters = _ref$filters === void 0 ? workspaceListFilterOptions : _ref$filters,
|
|
31911
|
+
_ref$onChipClick = _ref.onChipClick,
|
|
31912
|
+
onChipClick = _ref$onChipClick === void 0 ? function () {} : _ref$onChipClick,
|
|
31913
|
+
_ref$isAllSelected = _ref.isAllSelected,
|
|
31914
|
+
isAllSelected = _ref$isAllSelected === void 0 ? false : _ref$isAllSelected;
|
|
31915
|
+
return /*#__PURE__*/React.createElement(Stack, {
|
|
31916
|
+
direction: "row",
|
|
31917
|
+
spacing: 1,
|
|
31918
|
+
"data-testid": "filterList"
|
|
31919
|
+
}, /*#__PURE__*/React.createElement(FilterChip, {
|
|
31920
|
+
id: "all",
|
|
31921
|
+
label: allLabel,
|
|
31922
|
+
isSelected: isAllSelected,
|
|
31923
|
+
handleClick: function handleClick(key) {
|
|
31924
|
+
return onChipClick(key, !isAllSelected);
|
|
31925
|
+
}
|
|
31926
|
+
}), filters.map(function (filter) {
|
|
31927
|
+
return /*#__PURE__*/React.createElement(FilterChip, {
|
|
31928
|
+
key: filter.id,
|
|
31929
|
+
id: filter.id,
|
|
31930
|
+
label: filter.label,
|
|
31931
|
+
isSelected: isAllSelected ? false : filter.isSelected,
|
|
31932
|
+
isDisabled: filter.isDisabled,
|
|
31933
|
+
handleClick: function handleClick(key) {
|
|
31934
|
+
// If they are all isSelected ensure that if one is clicked that one will be the only one set to selected
|
|
31935
|
+
var selected = isAllSelected ? true : !filter.isSelected;
|
|
31936
|
+
onChipClick(key, selected);
|
|
31937
|
+
}
|
|
31938
|
+
});
|
|
31939
|
+
}));
|
|
31940
|
+
};
|
|
31941
|
+
|
|
31942
|
+
var DEBOUNCE_TIMEOUT = 300;
|
|
31943
|
+
var SearchField = function SearchField(_ref) {
|
|
31944
|
+
var _ref$label = _ref.label,
|
|
31945
|
+
label = _ref$label === void 0 ? 'Search' : _ref$label,
|
|
31946
|
+
valueChanged = _ref.valueChanged,
|
|
31947
|
+
_ref$value = _ref.value,
|
|
31948
|
+
value = _ref$value === void 0 ? '' : _ref$value;
|
|
31949
|
+
var _React$useState = React.useState(value),
|
|
31950
|
+
_React$useState2 = _slicedToArray$2(_React$useState, 2),
|
|
31951
|
+
localValue = _React$useState2[0],
|
|
31952
|
+
setLocalValue = _React$useState2[1];
|
|
31953
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31954
|
+
var handleValueChangeDebounced = React.useCallback(debounce$1(valueChanged, DEBOUNCE_TIMEOUT), []);
|
|
31955
|
+
var ClearButton = function ClearButton() {
|
|
31956
|
+
return /*#__PURE__*/React.createElement(CustomIconButton, {
|
|
31957
|
+
tooltipTitle: "Clear",
|
|
31958
|
+
edge: "end",
|
|
31959
|
+
onClick: function onClick() {
|
|
31960
|
+
setLocalValue('');
|
|
31961
|
+
valueChanged('');
|
|
31962
|
+
},
|
|
31963
|
+
size: "large"
|
|
31964
|
+
}, /*#__PURE__*/React.createElement(Clear, null));
|
|
31965
|
+
};
|
|
31966
|
+
var SearchButton = function SearchButton() {
|
|
31967
|
+
return /*#__PURE__*/React.createElement(CustomIconButton, {
|
|
31968
|
+
tooltipTitle: label,
|
|
31969
|
+
edge: "end",
|
|
31970
|
+
size: "large"
|
|
31971
|
+
}, /*#__PURE__*/React.createElement(Search, null));
|
|
31972
|
+
};
|
|
31973
|
+
return /*#__PURE__*/React.createElement(TextField, {
|
|
31974
|
+
variant: "filled",
|
|
31975
|
+
size: "small",
|
|
31976
|
+
sx: {
|
|
31977
|
+
'& input': {
|
|
31978
|
+
paddingTop: '18px'
|
|
31979
|
+
}
|
|
31980
|
+
},
|
|
31981
|
+
label: label,
|
|
31982
|
+
value: localValue,
|
|
31983
|
+
autoFocus: true,
|
|
31984
|
+
fullWidth: true,
|
|
31985
|
+
onChange: function onChange(e) {
|
|
31986
|
+
handleValueChangeDebounced(e.target.value);
|
|
31987
|
+
setLocalValue(e.target.value);
|
|
31988
|
+
},
|
|
31989
|
+
InputProps: {
|
|
31990
|
+
endAdornment: /*#__PURE__*/React.createElement(InputAdornment, {
|
|
31991
|
+
position: "end"
|
|
31992
|
+
}, localValue ? /*#__PURE__*/React.createElement(ClearButton, null) : /*#__PURE__*/React.createElement(SearchButton, null))
|
|
31993
|
+
}
|
|
31994
|
+
});
|
|
31995
|
+
};
|
|
31996
|
+
|
|
31997
|
+
/* *
|
|
31998
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
31999
|
+
* you may not use this file except in compliance with the License.
|
|
32000
|
+
* You may obtain a copy of the License at
|
|
32001
|
+
*
|
|
32002
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
32003
|
+
*
|
|
32004
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
32005
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
32006
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
32007
|
+
* See the License for the specific language governing permissions and
|
|
32008
|
+
* limitations under the License.
|
|
32009
|
+
*
|
|
32010
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
32011
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
32012
|
+
* */
|
|
32013
|
+
var WorkspaceFilter = function WorkspaceFilter(_ref) {
|
|
32014
|
+
var filters = _ref.filters,
|
|
32015
|
+
_ref$onClickFilterChi = _ref.onClickFilterChip,
|
|
32016
|
+
onClickFilterChip = _ref$onClickFilterChi === void 0 ? function () {} : _ref$onClickFilterChi,
|
|
32017
|
+
_ref$onSearch = _ref.onSearch,
|
|
32018
|
+
onSearch = _ref$onSearch === void 0 ? function () {} : _ref$onSearch,
|
|
32019
|
+
isAllSelected = _ref.isAllSelected,
|
|
32020
|
+
searchQuery = _ref.searchQuery,
|
|
32021
|
+
_ref$showSearch = _ref.showSearch,
|
|
32022
|
+
showSearch = _ref$showSearch === void 0 ? true : _ref$showSearch;
|
|
32023
|
+
return /*#__PURE__*/React.createElement(Stack, {
|
|
32024
|
+
spacing: 1,
|
|
32025
|
+
sx: {
|
|
32026
|
+
marginBottom: '8px'
|
|
32027
|
+
}
|
|
32028
|
+
}, showSearch && /*#__PURE__*/React.createElement(SearchField, {
|
|
32029
|
+
value: searchQuery,
|
|
32030
|
+
valueChanged: onSearch
|
|
32031
|
+
}), /*#__PURE__*/React.createElement(FilterList, {
|
|
32032
|
+
filters: filters,
|
|
32033
|
+
onChipClick: onClickFilterChip,
|
|
32034
|
+
isAllSelected: isAllSelected
|
|
32035
|
+
}));
|
|
32036
|
+
};
|
|
32037
|
+
|
|
31605
32038
|
/* *
|
|
31606
32039
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
31607
32040
|
* you may not use this file except in compliance with the License.
|
|
@@ -31621,9 +32054,11 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
|
|
|
31621
32054
|
var ERROR_TITLE = 'View presets not available';
|
|
31622
32055
|
var ERROR_RETRY = 'Try again';
|
|
31623
32056
|
var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
31624
|
-
var panelId = _ref.panelId
|
|
32057
|
+
var panelId = _ref.panelId,
|
|
32058
|
+
_ref$isOpen = _ref.isOpen,
|
|
32059
|
+
isOpen = _ref$isOpen === void 0 ? true : _ref$isOpen;
|
|
31625
32060
|
var viewPresets = useSelector(function (store) {
|
|
31626
|
-
return
|
|
32061
|
+
return getFilteredViewPresetListForView(store, panelId);
|
|
31627
32062
|
});
|
|
31628
32063
|
var activeViewPresetId = useSelector(function (store) {
|
|
31629
32064
|
return getViewPresetActiveId(store, panelId);
|
|
@@ -31631,6 +32066,9 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31631
32066
|
var currentMapPreset = useSelector(function (store) {
|
|
31632
32067
|
return mapSelectors.getMapPreset(store, panelId);
|
|
31633
32068
|
});
|
|
32069
|
+
var viewPresetListFilters = useSelector(function (store) {
|
|
32070
|
+
return getViewPresetListFiltersForView(store, panelId);
|
|
32071
|
+
});
|
|
31634
32072
|
var relatedSyncGroupIds = useSelector(function (store) {
|
|
31635
32073
|
return syncGroupsSelectors.getAllTargetGroupsForSource(store, panelId);
|
|
31636
32074
|
});
|
|
@@ -31642,6 +32080,13 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31642
32080
|
});
|
|
31643
32081
|
var _useAuthenticationCon = useAuthenticationContext(),
|
|
31644
32082
|
isLoggedIn = _useAuthenticationCon.isLoggedIn;
|
|
32083
|
+
React.useEffect(function () {
|
|
32084
|
+
// Only refetch list on changes to the filters if the dialog is open
|
|
32085
|
+
if (isOpen) {
|
|
32086
|
+
fetchViewPresets();
|
|
32087
|
+
}
|
|
32088
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32089
|
+
}, [viewPresetListFilters]);
|
|
31645
32090
|
var dispatch = useDispatch();
|
|
31646
32091
|
var openViewPresetsDialog = React.useCallback(function (viewPresetDialogOptions) {
|
|
31647
32092
|
dispatch(viewPresetActions.openViewPresetDialog({
|
|
@@ -31655,10 +32100,12 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31655
32100
|
}));
|
|
31656
32101
|
}, [dispatch, panelId]);
|
|
31657
32102
|
var fetchViewPresets = React.useCallback(function () {
|
|
32103
|
+
var filterParams = constructFilterParams$1(viewPresetListFilters);
|
|
31658
32104
|
dispatch(viewPresetActions.fetchViewPresets({
|
|
31659
|
-
panelId: panelId
|
|
32105
|
+
panelId: panelId,
|
|
32106
|
+
filterParams: filterParams
|
|
31660
32107
|
}));
|
|
31661
|
-
}, [dispatch, panelId]);
|
|
32108
|
+
}, [dispatch, panelId, viewPresetListFilters]);
|
|
31662
32109
|
var onClickViewPresetOption = function onClickViewPresetOption(presetId, workspaceAction, preset) {
|
|
31663
32110
|
switch (workspaceAction) {
|
|
31664
32111
|
case WorkspacePresetAction.DUPLICATE:
|
|
@@ -31699,6 +32146,31 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31699
32146
|
}
|
|
31700
32147
|
}
|
|
31701
32148
|
};
|
|
32149
|
+
var toggleSelectFilterChip = React.useCallback(function (id, isSelected) {
|
|
32150
|
+
dispatch(viewPresetActions.toggleSelectFilterChip({
|
|
32151
|
+
id: id,
|
|
32152
|
+
isSelected: isSelected,
|
|
32153
|
+
panelId: panelId
|
|
32154
|
+
}));
|
|
32155
|
+
}, [dispatch, panelId]);
|
|
32156
|
+
var setSelectAllFilterChip = React.useCallback(function () {
|
|
32157
|
+
dispatch(viewPresetActions.setSelectAllFilterChip({
|
|
32158
|
+
panelId: panelId
|
|
32159
|
+
}));
|
|
32160
|
+
}, [dispatch, panelId]);
|
|
32161
|
+
var onClickFilterChip = function onClickFilterChip(id, shouldSelect) {
|
|
32162
|
+
if (id === 'all') {
|
|
32163
|
+
if (shouldSelect) {
|
|
32164
|
+
setSelectAllFilterChip();
|
|
32165
|
+
}
|
|
32166
|
+
} else {
|
|
32167
|
+
toggleSelectFilterChip(id, shouldSelect);
|
|
32168
|
+
}
|
|
32169
|
+
};
|
|
32170
|
+
var isAllSelectedForFilters = viewPresetListFilters.every(function (filter) {
|
|
32171
|
+
return filter.isSelected;
|
|
32172
|
+
});
|
|
32173
|
+
var shouldHideNewWorkspace = !isAllSelectedForFilters; // || workspaceSearchQuery.length > 0;
|
|
31702
32174
|
return /*#__PURE__*/React.createElement(React.Fragment, null, isViewPresetsListFetching && /*#__PURE__*/React.createElement(LinearProgress, {
|
|
31703
32175
|
"data-testid": "loading-bar",
|
|
31704
32176
|
color: "secondary",
|
|
@@ -31713,6 +32185,15 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31713
32185
|
title: ERROR_RETRY,
|
|
31714
32186
|
onClick: fetchViewPresets
|
|
31715
32187
|
}
|
|
32188
|
+
}), /*#__PURE__*/React.createElement(Box$2, {
|
|
32189
|
+
sx: {
|
|
32190
|
+
padding: 1
|
|
32191
|
+
}
|
|
32192
|
+
}, !errorViewPresetsList && /*#__PURE__*/React.createElement(WorkspaceFilter, {
|
|
32193
|
+
filters: viewPresetListFilters,
|
|
32194
|
+
onClickFilterChip: onClickFilterChip,
|
|
32195
|
+
isAllSelected: isAllSelectedForFilters,
|
|
32196
|
+
showSearch: false
|
|
31716
32197
|
}), /*#__PURE__*/React.createElement(WorkspaceSelectList, {
|
|
31717
32198
|
workspacePresets: viewPresets,
|
|
31718
32199
|
currentSelectedId: activeViewPresetId || undefined,
|
|
@@ -31722,8 +32203,9 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31722
32203
|
id: undefined,
|
|
31723
32204
|
title: MAPPRESET_ACTIVE_TITLE
|
|
31724
32205
|
}),
|
|
31725
|
-
isLoggedIn: isLoggedIn
|
|
31726
|
-
|
|
32206
|
+
isLoggedIn: isLoggedIn,
|
|
32207
|
+
hideNewWorkspace: shouldHideNewWorkspace
|
|
32208
|
+
})));
|
|
31727
32209
|
};
|
|
31728
32210
|
|
|
31729
32211
|
/* *
|
|
@@ -31762,13 +32244,10 @@ var ViewPresetMenu = function ViewPresetMenu(_ref) {
|
|
|
31762
32244
|
onClick: function onClick(event) {
|
|
31763
32245
|
event.stopPropagation();
|
|
31764
32246
|
}
|
|
31765
|
-
}, /*#__PURE__*/React__default.createElement(Box$2, {
|
|
31766
|
-
sx: {
|
|
31767
|
-
padding: 1
|
|
31768
|
-
}
|
|
31769
32247
|
}, /*#__PURE__*/React__default.createElement(ViewPresetMenuListConnect, {
|
|
31770
|
-
panelId: panelId
|
|
31771
|
-
|
|
32248
|
+
panelId: panelId,
|
|
32249
|
+
isOpen: isOpen
|
|
32250
|
+
}));
|
|
31772
32251
|
return /*#__PURE__*/React__default.createElement("div", null, hideBackdrop ?
|
|
31773
32252
|
// Enable hiding backdrop from snapshot tests
|
|
31774
32253
|
toolContainer : /*#__PURE__*/React__default.createElement(Backdrop, {
|
|
@@ -31821,7 +32300,7 @@ var WorkspaceOptions = function WorkspaceOptions(_ref) {
|
|
|
31821
32300
|
title: 'Save as',
|
|
31822
32301
|
callback: handleSaveAs
|
|
31823
32302
|
}].concat(_toConsumableArray$1(handleSaveAll ? [{
|
|
31824
|
-
title: 'Save
|
|
32303
|
+
title: 'Save (incl. viewpresets)',
|
|
31825
32304
|
callback: handleSaveAll
|
|
31826
32305
|
}] : []), [{
|
|
31827
32306
|
title: 'Edit',
|
|
@@ -32177,9 +32656,9 @@ var WorkspaceTileConnect = function WorkspaceTileConnect(_ref) {
|
|
|
32177
32656
|
id: mosaicNodeId,
|
|
32178
32657
|
componentType: view === null || view === void 0 ? void 0 : view.componentType,
|
|
32179
32658
|
initialProps: view === null || view === void 0 ? void 0 : view.initialProps
|
|
32180
|
-
}),
|
|
32659
|
+
}), /*#__PURE__*/React.createElement(ViewPresetMenu, {
|
|
32181
32660
|
panelId: mosaicNodeId,
|
|
32182
|
-
isOpen: isViewPresetDialogOpen,
|
|
32661
|
+
isOpen: isViewPresetDialogOpen || false,
|
|
32183
32662
|
closeMenu: function closeMenu() {
|
|
32184
32663
|
toggleViewPresetDialog({
|
|
32185
32664
|
panelId: mosaicNodeId,
|
|
@@ -35925,194 +36404,6 @@ process.env.NODE_ENV !== "production" ? Box.propTypes /* remove-proptypes */ = {
|
|
|
35925
36404
|
} : void 0;
|
|
35926
36405
|
var Box$1 = Box;
|
|
35927
36406
|
|
|
35928
|
-
/* *
|
|
35929
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
35930
|
-
* you may not use this file except in compliance with the License.
|
|
35931
|
-
* You may obtain a copy of the License at
|
|
35932
|
-
*
|
|
35933
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
35934
|
-
*
|
|
35935
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
35936
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
35937
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
35938
|
-
* See the License for the specific language governing permissions and
|
|
35939
|
-
* limitations under the License.
|
|
35940
|
-
*
|
|
35941
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
35942
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
35943
|
-
* */
|
|
35944
|
-
var FilterChip = function FilterChip(_ref) {
|
|
35945
|
-
var label = _ref.label,
|
|
35946
|
-
id = _ref.id,
|
|
35947
|
-
_ref$isSelected = _ref.isSelected,
|
|
35948
|
-
isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
|
|
35949
|
-
_ref$isDisabled = _ref.isDisabled,
|
|
35950
|
-
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
35951
|
-
_ref$handleClick = _ref.handleClick,
|
|
35952
|
-
handleClick = _ref$handleClick === void 0 ? function () {} : _ref$handleClick;
|
|
35953
|
-
var theme = useTheme$2();
|
|
35954
|
-
return /*#__PURE__*/React.createElement(Chip, {
|
|
35955
|
-
size: "small",
|
|
35956
|
-
id: id,
|
|
35957
|
-
label: label,
|
|
35958
|
-
disabled: isDisabled,
|
|
35959
|
-
variant: isSelected ? 'filled' : 'outlined',
|
|
35960
|
-
color: isSelected ? 'secondary' : 'default',
|
|
35961
|
-
sx: {
|
|
35962
|
-
borderColor: "".concat(theme.palette.geowebColors.buttons.tertiary["default"].borderColor),
|
|
35963
|
-
padding: '0px 4px'
|
|
35964
|
-
},
|
|
35965
|
-
onClick: function onClick() {
|
|
35966
|
-
return handleClick(id);
|
|
35967
|
-
}
|
|
35968
|
-
});
|
|
35969
|
-
};
|
|
35970
|
-
|
|
35971
|
-
/* *
|
|
35972
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
35973
|
-
* you may not use this file except in compliance with the License.
|
|
35974
|
-
* You may obtain a copy of the License at
|
|
35975
|
-
*
|
|
35976
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
35977
|
-
*
|
|
35978
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
35979
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
35980
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
35981
|
-
* See the License for the specific language governing permissions and
|
|
35982
|
-
* limitations under the License.
|
|
35983
|
-
*
|
|
35984
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
35985
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
35986
|
-
* */
|
|
35987
|
-
var allLabel = 'All';
|
|
35988
|
-
var FilterList = function FilterList(_ref) {
|
|
35989
|
-
var _ref$filters = _ref.filters,
|
|
35990
|
-
filters = _ref$filters === void 0 ? workspaceListFilterOptions : _ref$filters,
|
|
35991
|
-
_ref$onChipClick = _ref.onChipClick,
|
|
35992
|
-
onChipClick = _ref$onChipClick === void 0 ? function () {} : _ref$onChipClick,
|
|
35993
|
-
_ref$isAllSelected = _ref.isAllSelected,
|
|
35994
|
-
isAllSelected = _ref$isAllSelected === void 0 ? false : _ref$isAllSelected;
|
|
35995
|
-
return /*#__PURE__*/React.createElement(Stack, {
|
|
35996
|
-
direction: "row",
|
|
35997
|
-
spacing: 1,
|
|
35998
|
-
"data-testid": "filterList"
|
|
35999
|
-
}, /*#__PURE__*/React.createElement(FilterChip, {
|
|
36000
|
-
id: "all",
|
|
36001
|
-
label: allLabel,
|
|
36002
|
-
isSelected: isAllSelected,
|
|
36003
|
-
handleClick: function handleClick(key) {
|
|
36004
|
-
return onChipClick(key, !isAllSelected);
|
|
36005
|
-
}
|
|
36006
|
-
}), filters.map(function (filter) {
|
|
36007
|
-
return /*#__PURE__*/React.createElement(FilterChip, {
|
|
36008
|
-
key: filter.id,
|
|
36009
|
-
id: filter.id,
|
|
36010
|
-
label: filter.label,
|
|
36011
|
-
isSelected: isAllSelected ? false : filter.isSelected,
|
|
36012
|
-
isDisabled: filter.isDisabled,
|
|
36013
|
-
handleClick: function handleClick(key) {
|
|
36014
|
-
// If they are all isSelected ensure that if one is clicked that one will be the only one set to selected
|
|
36015
|
-
var selected = isAllSelected ? true : !filter.isSelected;
|
|
36016
|
-
onChipClick(key, selected);
|
|
36017
|
-
}
|
|
36018
|
-
});
|
|
36019
|
-
}));
|
|
36020
|
-
};
|
|
36021
|
-
|
|
36022
|
-
var DEBOUNCE_TIMEOUT = 300;
|
|
36023
|
-
var SearchField = function SearchField(_ref) {
|
|
36024
|
-
var _ref$label = _ref.label,
|
|
36025
|
-
label = _ref$label === void 0 ? 'Search' : _ref$label,
|
|
36026
|
-
valueChanged = _ref.valueChanged,
|
|
36027
|
-
_ref$value = _ref.value,
|
|
36028
|
-
value = _ref$value === void 0 ? '' : _ref$value;
|
|
36029
|
-
var _React$useState = React.useState(value),
|
|
36030
|
-
_React$useState2 = _slicedToArray$2(_React$useState, 2),
|
|
36031
|
-
localValue = _React$useState2[0],
|
|
36032
|
-
setLocalValue = _React$useState2[1];
|
|
36033
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36034
|
-
var handleValueChangeDebounced = React.useCallback(debounce$1(valueChanged, DEBOUNCE_TIMEOUT), []);
|
|
36035
|
-
var ClearButton = function ClearButton() {
|
|
36036
|
-
return /*#__PURE__*/React.createElement(CustomIconButton, {
|
|
36037
|
-
tooltipTitle: "Clear",
|
|
36038
|
-
edge: "end",
|
|
36039
|
-
onClick: function onClick() {
|
|
36040
|
-
setLocalValue('');
|
|
36041
|
-
valueChanged('');
|
|
36042
|
-
},
|
|
36043
|
-
size: "large"
|
|
36044
|
-
}, /*#__PURE__*/React.createElement(Clear, null));
|
|
36045
|
-
};
|
|
36046
|
-
var SearchButton = function SearchButton() {
|
|
36047
|
-
return /*#__PURE__*/React.createElement(CustomIconButton, {
|
|
36048
|
-
tooltipTitle: label,
|
|
36049
|
-
edge: "end",
|
|
36050
|
-
size: "large"
|
|
36051
|
-
}, /*#__PURE__*/React.createElement(Search, null));
|
|
36052
|
-
};
|
|
36053
|
-
return /*#__PURE__*/React.createElement(TextField, {
|
|
36054
|
-
variant: "filled",
|
|
36055
|
-
size: "small",
|
|
36056
|
-
sx: {
|
|
36057
|
-
'& input': {
|
|
36058
|
-
paddingTop: '18px'
|
|
36059
|
-
}
|
|
36060
|
-
},
|
|
36061
|
-
label: label,
|
|
36062
|
-
value: localValue,
|
|
36063
|
-
autoFocus: true,
|
|
36064
|
-
fullWidth: true,
|
|
36065
|
-
onChange: function onChange(e) {
|
|
36066
|
-
handleValueChangeDebounced(e.target.value);
|
|
36067
|
-
setLocalValue(e.target.value);
|
|
36068
|
-
},
|
|
36069
|
-
InputProps: {
|
|
36070
|
-
endAdornment: /*#__PURE__*/React.createElement(InputAdornment, {
|
|
36071
|
-
position: "end"
|
|
36072
|
-
}, localValue ? /*#__PURE__*/React.createElement(ClearButton, null) : /*#__PURE__*/React.createElement(SearchButton, null))
|
|
36073
|
-
}
|
|
36074
|
-
});
|
|
36075
|
-
};
|
|
36076
|
-
|
|
36077
|
-
/* *
|
|
36078
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
36079
|
-
* you may not use this file except in compliance with the License.
|
|
36080
|
-
* You may obtain a copy of the License at
|
|
36081
|
-
*
|
|
36082
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
36083
|
-
*
|
|
36084
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
36085
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
36086
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
36087
|
-
* See the License for the specific language governing permissions and
|
|
36088
|
-
* limitations under the License.
|
|
36089
|
-
*
|
|
36090
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
36091
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
36092
|
-
* */
|
|
36093
|
-
var WorkspaceFilter = function WorkspaceFilter(_ref) {
|
|
36094
|
-
var filters = _ref.filters,
|
|
36095
|
-
_ref$onClickFilterChi = _ref.onClickFilterChip,
|
|
36096
|
-
onClickFilterChip = _ref$onClickFilterChi === void 0 ? function () {} : _ref$onClickFilterChi,
|
|
36097
|
-
_ref$onSearch = _ref.onSearch,
|
|
36098
|
-
onSearch = _ref$onSearch === void 0 ? function () {} : _ref$onSearch,
|
|
36099
|
-
isAllSelected = _ref.isAllSelected,
|
|
36100
|
-
searchQuery = _ref.searchQuery;
|
|
36101
|
-
return /*#__PURE__*/React.createElement(Stack, {
|
|
36102
|
-
spacing: 1,
|
|
36103
|
-
sx: {
|
|
36104
|
-
marginBottom: '8px'
|
|
36105
|
-
}
|
|
36106
|
-
}, /*#__PURE__*/React.createElement(SearchField, {
|
|
36107
|
-
value: searchQuery,
|
|
36108
|
-
valueChanged: onSearch
|
|
36109
|
-
}), /*#__PURE__*/React.createElement(FilterList, {
|
|
36110
|
-
filters: filters,
|
|
36111
|
-
onChipClick: onClickFilterChip,
|
|
36112
|
-
isAllSelected: isAllSelected
|
|
36113
|
-
}));
|
|
36114
|
-
};
|
|
36115
|
-
|
|
36116
36407
|
/* *
|
|
36117
36408
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
36118
36409
|
* you may not use this file except in compliance with the License.
|
|
@@ -36252,7 +36543,9 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
36252
36543
|
return filter.isSelected;
|
|
36253
36544
|
});
|
|
36254
36545
|
var shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0;
|
|
36255
|
-
return /*#__PURE__*/React.createElement("div",
|
|
36546
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
36547
|
+
"data-testid": "workspace-selectlist-connect"
|
|
36548
|
+
}, isFetching && /*#__PURE__*/React.createElement(LinearProgress, {
|
|
36256
36549
|
"data-testid": "loading-bar",
|
|
36257
36550
|
color: "secondary",
|
|
36258
36551
|
sx: {
|
|
@@ -36651,7 +36944,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
36651
36944
|
onSubmit();
|
|
36652
36945
|
};
|
|
36653
36946
|
var hasFormInput = action === WorkspacePresetAction.DUPLICATE || action === WorkspacePresetAction.SAVE_AS || action === WorkspacePresetAction.SAVE_ALL;
|
|
36654
|
-
// disable form inputs for '
|
|
36947
|
+
// disable form inputs for 'Save (incl. viewpresets)' existing workspace preset
|
|
36655
36948
|
var isDisabled = action === WorkspacePresetAction.SAVE_ALL && formValues.id !== undefined && formValues.id !== '' && formValues.scope === 'user';
|
|
36656
36949
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, Boolean(error) && /*#__PURE__*/React__default.createElement(Box$2, {
|
|
36657
36950
|
sx: {
|
|
@@ -36720,16 +37013,21 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
36720
37013
|
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
36721
37014
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
36722
37015
|
* */
|
|
36723
|
-
var
|
|
37016
|
+
var DIALOG_TITLE_SAVE_AS = 'Save as';
|
|
37017
|
+
var DIALOG_TITLE_SAVE_ALL = 'Save (incl. viewpresets)';
|
|
37018
|
+
var DIALOG_TITLE_DELETE = 'Delete workspace';
|
|
37019
|
+
var DIALOG_TITLE_DUPLICATE = 'Duplicate';
|
|
37020
|
+
var DIALOG_BUTTON_SAVE = 'Save';
|
|
37021
|
+
var DIALOG_BUTTON_DELETE = 'Delete';
|
|
36724
37022
|
var getDialogTitle = function getDialogTitle(action) {
|
|
36725
37023
|
switch (action) {
|
|
36726
37024
|
case WorkspacePresetAction.DELETE:
|
|
36727
37025
|
{
|
|
36728
|
-
return
|
|
37026
|
+
return DIALOG_TITLE_DELETE;
|
|
36729
37027
|
}
|
|
36730
37028
|
case WorkspacePresetAction.DUPLICATE:
|
|
36731
37029
|
{
|
|
36732
|
-
return
|
|
37030
|
+
return DIALOG_TITLE_DUPLICATE;
|
|
36733
37031
|
}
|
|
36734
37032
|
case WorkspacePresetAction.SAVE_ALL:
|
|
36735
37033
|
{
|
|
@@ -36737,7 +37035,7 @@ var getDialogTitle = function getDialogTitle(action) {
|
|
|
36737
37035
|
}
|
|
36738
37036
|
default:
|
|
36739
37037
|
{
|
|
36740
|
-
return
|
|
37038
|
+
return DIALOG_TITLE_SAVE_AS;
|
|
36741
37039
|
}
|
|
36742
37040
|
}
|
|
36743
37041
|
};
|
|
@@ -36745,15 +37043,11 @@ var getConfirmLabel$1 = function getConfirmLabel(action) {
|
|
|
36745
37043
|
switch (action) {
|
|
36746
37044
|
case WorkspacePresetAction.DELETE:
|
|
36747
37045
|
{
|
|
36748
|
-
return
|
|
36749
|
-
}
|
|
36750
|
-
case WorkspacePresetAction.SAVE_ALL:
|
|
36751
|
-
{
|
|
36752
|
-
return DIALOG_TITLE_SAVE_ALL;
|
|
37046
|
+
return DIALOG_BUTTON_DELETE;
|
|
36753
37047
|
}
|
|
36754
37048
|
default:
|
|
36755
37049
|
{
|
|
36756
|
-
return
|
|
37050
|
+
return DIALOG_BUTTON_SAVE;
|
|
36757
37051
|
}
|
|
36758
37052
|
}
|
|
36759
37053
|
};
|