@opengeoweb/workspace 5.0.0 → 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 +603 -310
- 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];
|
|
@@ -19584,6 +19659,7 @@ var slice$2 = createSlice({
|
|
|
19584
19659
|
draft.id = '';
|
|
19585
19660
|
draft.title = workspacePreset.title;
|
|
19586
19661
|
draft["abstract"] = workspacePreset["abstract"];
|
|
19662
|
+
draft.scope = workspacePreset.scope;
|
|
19587
19663
|
draft.syncGroups = [];
|
|
19588
19664
|
},
|
|
19589
19665
|
setPreset: function setPreset(draft, action) {
|
|
@@ -19772,6 +19848,20 @@ var getIsViewPresetListDialogOpen = function getIsViewPresetListDialogOpen(store
|
|
|
19772
19848
|
var _a;
|
|
19773
19849
|
return ((_a = getViewPresetById(store, panelId)) === null || _a === void 0 ? void 0 : _a.isViewPresetListDialogOpen) || false;
|
|
19774
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
|
+
};
|
|
19775
19865
|
|
|
19776
19866
|
/* *
|
|
19777
19867
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -19809,13 +19899,38 @@ var getPresetsApi = function getPresetsApi() {
|
|
|
19809
19899
|
};
|
|
19810
19900
|
var emptyMapViewPreset = {
|
|
19811
19901
|
componentType: 'Map',
|
|
19812
|
-
keywords: '
|
|
19902
|
+
keywords: '',
|
|
19813
19903
|
scope: 'user',
|
|
19814
19904
|
title: '',
|
|
19815
19905
|
initialProps: {
|
|
19816
19906
|
mapPreset: {}
|
|
19817
19907
|
}
|
|
19818
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
|
+
};
|
|
19819
19934
|
|
|
19820
19935
|
/* *
|
|
19821
19936
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -20018,7 +20133,13 @@ var slice$1 = createSlice({
|
|
|
20018
20133
|
}
|
|
20019
20134
|
viewPresetsListAdapter.setAll(draft, action.payload.viewPresets);
|
|
20020
20135
|
}).addCase(viewPresetActions.fetchedViewPresets, function (draft, action) {
|
|
20021
|
-
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
|
+
}
|
|
20022
20143
|
if (!viewPresets || !viewPresets.length) {
|
|
20023
20144
|
viewPresetsListAdapter.removeAll(draft);
|
|
20024
20145
|
return;
|
|
@@ -22664,6 +22785,7 @@ var getSnackbarMessage = function getSnackbarMessage(action, title) {
|
|
|
22664
22785
|
};
|
|
22665
22786
|
var emptyMapWorkspace = {
|
|
22666
22787
|
title: 'New workspace',
|
|
22788
|
+
scope: 'system',
|
|
22667
22789
|
"abstract": '',
|
|
22668
22790
|
views: {
|
|
22669
22791
|
allIds: ['1_screen'],
|
|
@@ -22762,6 +22884,19 @@ var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
|
|
|
22762
22884
|
return list;
|
|
22763
22885
|
}, []);
|
|
22764
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
|
+
};
|
|
22765
22900
|
var sortViewPresets = function sortViewPresets(viewPresets) {
|
|
22766
22901
|
var presetOrder = ['system', 'user'];
|
|
22767
22902
|
return _toConsumableArray$1(viewPresets).sort(function (left, right) {
|
|
@@ -22811,10 +22946,13 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
|
|
|
22811
22946
|
return axiosInstance["delete"]("/workspacepreset/".concat(workspacePresetId));
|
|
22812
22947
|
},
|
|
22813
22948
|
// view presets
|
|
22814
|
-
getViewPresets: function getViewPresets() {
|
|
22815
|
-
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);
|
|
22816
22954
|
return {
|
|
22817
|
-
data: sortViewPresets(
|
|
22955
|
+
data: sortViewPresets(data)
|
|
22818
22956
|
};
|
|
22819
22957
|
});
|
|
22820
22958
|
},
|
|
@@ -23719,25 +23857,26 @@ function fetchInitialViewPresetsSaga() {
|
|
|
23719
23857
|
function fetchViewPresetsSaga(_ref) {
|
|
23720
23858
|
var payload = _ref.payload;
|
|
23721
23859
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
23722
|
-
var panelId, presetsApi, _yield$call2, viewPresets;
|
|
23860
|
+
var panelId, filterParams, presetsApi, _yield$call2, viewPresets;
|
|
23723
23861
|
return _regeneratorRuntime().wrap(function _callee$(_context2) {
|
|
23724
23862
|
while (1) switch (_context2.prev = _context2.next) {
|
|
23725
23863
|
case 0:
|
|
23726
|
-
panelId = payload.panelId;
|
|
23864
|
+
panelId = payload.panelId, filterParams = payload.filterParams;
|
|
23727
23865
|
_context2.prev = 1;
|
|
23728
23866
|
_context2.next = 4;
|
|
23729
23867
|
return call(getPresetsApi);
|
|
23730
23868
|
case 4:
|
|
23731
23869
|
presetsApi = _context2.sent;
|
|
23732
23870
|
_context2.next = 7;
|
|
23733
|
-
return call(presetsApi.getViewPresets);
|
|
23871
|
+
return call(presetsApi.getViewPresets, filterParams);
|
|
23734
23872
|
case 7:
|
|
23735
23873
|
_yield$call2 = _context2.sent;
|
|
23736
23874
|
viewPresets = _yield$call2.data;
|
|
23737
23875
|
_context2.next = 11;
|
|
23738
23876
|
return put(viewPresetActions.fetchedViewPresets({
|
|
23739
23877
|
viewPresets: viewPresets,
|
|
23740
|
-
panelId: panelId
|
|
23878
|
+
panelId: panelId,
|
|
23879
|
+
filterParams: filterParams
|
|
23741
23880
|
}));
|
|
23742
23881
|
case 11:
|
|
23743
23882
|
_context2.next = 17;
|
|
@@ -23870,7 +24009,7 @@ function selectViewPresetSaga(_ref3) {
|
|
|
23870
24009
|
function onSuccessViewPresetActionSaga(_ref4) {
|
|
23871
24010
|
var payload = _ref4.payload;
|
|
23872
24011
|
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
23873
|
-
var action, viewPresetId, title, panelId, activeMapPresetId;
|
|
24012
|
+
var action, viewPresetId, title, panelId, activeMapPresetId, viewPresetFilters;
|
|
23874
24013
|
return _regeneratorRuntime().wrap(function _callee4$(_context5) {
|
|
23875
24014
|
while (1) switch (_context5.prev = _context5.next) {
|
|
23876
24015
|
case 0:
|
|
@@ -23896,36 +24035,41 @@ function onSuccessViewPresetActionSaga(_ref4) {
|
|
|
23896
24035
|
}));
|
|
23897
24036
|
case 10:
|
|
23898
24037
|
_context5.next = 12;
|
|
24038
|
+
return select(getViewPresetListFiltersForView, panelId);
|
|
24039
|
+
case 12:
|
|
24040
|
+
viewPresetFilters = _context5.sent;
|
|
24041
|
+
_context5.next = 15;
|
|
23899
24042
|
return call(fetchViewPresetsSaga, viewPresetActions.fetchViewPresets({
|
|
23900
|
-
panelId: panelId
|
|
24043
|
+
panelId: panelId,
|
|
24044
|
+
filterParams: constructFilterParams$1(viewPresetFilters)
|
|
23901
24045
|
}));
|
|
23902
|
-
case
|
|
23903
|
-
_context5.next =
|
|
24046
|
+
case 15:
|
|
24047
|
+
_context5.next = 17;
|
|
23904
24048
|
return put(viewPresetActions.setViewPresetHasChanges({
|
|
23905
24049
|
panelId: panelId,
|
|
23906
24050
|
hasChanges: false
|
|
23907
24051
|
}));
|
|
23908
|
-
case
|
|
24052
|
+
case 17:
|
|
23909
24053
|
if (!(action === PresetAction.SAVE_AS && viewPresetId)) {
|
|
23910
|
-
_context5.next =
|
|
24054
|
+
_context5.next = 20;
|
|
23911
24055
|
break;
|
|
23912
24056
|
}
|
|
23913
|
-
_context5.next =
|
|
24057
|
+
_context5.next = 20;
|
|
23914
24058
|
return put(viewPresetActions.setActiveViewPresetId({
|
|
23915
24059
|
panelId: panelId,
|
|
23916
24060
|
viewPresetId: viewPresetId
|
|
23917
24061
|
}));
|
|
23918
|
-
case
|
|
23919
|
-
_context5.next =
|
|
24062
|
+
case 20:
|
|
24063
|
+
_context5.next = 24;
|
|
23920
24064
|
break;
|
|
23921
|
-
case
|
|
23922
|
-
_context5.prev =
|
|
24065
|
+
case 22:
|
|
24066
|
+
_context5.prev = 22;
|
|
23923
24067
|
_context5.t0 = _context5["catch"](1);
|
|
23924
|
-
case
|
|
24068
|
+
case 24:
|
|
23925
24069
|
case "end":
|
|
23926
24070
|
return _context5.stop();
|
|
23927
24071
|
}
|
|
23928
|
-
}, _callee4, null, [[1,
|
|
24072
|
+
}, _callee4, null, [[1, 22]]);
|
|
23929
24073
|
})();
|
|
23930
24074
|
}
|
|
23931
24075
|
function rootSaga() {
|
|
@@ -24438,12 +24582,52 @@ const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip d
|
|
|
24438
24582
|
|
|
24439
24583
|
const getBatch = () => batch;
|
|
24440
24584
|
|
|
24441
|
-
const
|
|
24585
|
+
const ContextKey = Symbol.for(`react-redux-context-${version}`);
|
|
24586
|
+
const gT = globalThis;
|
|
24442
24587
|
|
|
24443
|
-
|
|
24444
|
-
|
|
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;
|
|
24445
24602
|
}
|
|
24446
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
|
+
}
|
|
24447
24631
|
/**
|
|
24448
24632
|
* A hook to access the value of the `ReactReduxContext`. This is a low-level
|
|
24449
24633
|
* hook that you should usually not need to call directly.
|
|
@@ -24460,15 +24644,8 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
24460
24644
|
* return <div>{store.getState()}</div>
|
|
24461
24645
|
* }
|
|
24462
24646
|
*/
|
|
24463
|
-
function useReduxContext() {
|
|
24464
|
-
const contextValue = useContext(ReactReduxContext);
|
|
24465
24647
|
|
|
24466
|
-
|
|
24467
|
-
throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');
|
|
24468
|
-
}
|
|
24469
|
-
|
|
24470
|
-
return contextValue;
|
|
24471
|
-
}
|
|
24648
|
+
const useReduxContext = /*#__PURE__*/createReduxContextHook();
|
|
24472
24649
|
|
|
24473
24650
|
const notInitialized = () => {
|
|
24474
24651
|
throw new Error('uSES not initialized!');
|
|
@@ -24489,8 +24666,16 @@ const refEquality = (a, b) => a === b;
|
|
|
24489
24666
|
|
|
24490
24667
|
|
|
24491
24668
|
function createSelectorHook(context = ReactReduxContext) {
|
|
24492
|
-
const useReduxContext$1 = context === ReactReduxContext ? useReduxContext : (
|
|
24493
|
-
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
|
+
|
|
24494
24679
|
if (process.env.NODE_ENV !== 'production') {
|
|
24495
24680
|
if (!selector) {
|
|
24496
24681
|
throw new Error(`You must pass a selector to useSelector`);
|
|
@@ -24508,9 +24693,47 @@ function createSelectorHook(context = ReactReduxContext) {
|
|
|
24508
24693
|
const {
|
|
24509
24694
|
store,
|
|
24510
24695
|
subscription,
|
|
24511
|
-
getServerState
|
|
24696
|
+
getServerState,
|
|
24697
|
+
stabilityCheck: globalStabilityCheck,
|
|
24698
|
+
noopCheck: globalNoopCheck
|
|
24512
24699
|
} = useReduxContext$1();
|
|
24513
|
-
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);
|
|
24514
24737
|
useDebugValue(selectedState);
|
|
24515
24738
|
return selectedState;
|
|
24516
24739
|
};
|
|
@@ -25163,16 +25386,20 @@ function Provider({
|
|
|
25163
25386
|
store,
|
|
25164
25387
|
context,
|
|
25165
25388
|
children,
|
|
25166
|
-
serverState
|
|
25389
|
+
serverState,
|
|
25390
|
+
stabilityCheck = 'once',
|
|
25391
|
+
noopCheck = 'once'
|
|
25167
25392
|
}) {
|
|
25168
25393
|
const contextValue = useMemo(() => {
|
|
25169
25394
|
const subscription = createSubscription(store);
|
|
25170
25395
|
return {
|
|
25171
25396
|
store,
|
|
25172
25397
|
subscription,
|
|
25173
|
-
getServerState: serverState ? () => serverState : undefined
|
|
25398
|
+
getServerState: serverState ? () => serverState : undefined,
|
|
25399
|
+
stabilityCheck,
|
|
25400
|
+
noopCheck
|
|
25174
25401
|
};
|
|
25175
|
-
}, [store, serverState]);
|
|
25402
|
+
}, [store, serverState, stabilityCheck, noopCheck]);
|
|
25176
25403
|
const previousState = useMemo(() => store.getState(), [store]);
|
|
25177
25404
|
useIsomorphicLayoutEffect(() => {
|
|
25178
25405
|
const {
|
|
@@ -25206,7 +25433,8 @@ function Provider({
|
|
|
25206
25433
|
|
|
25207
25434
|
function createStoreHook(context = ReactReduxContext) {
|
|
25208
25435
|
const useReduxContext$1 = // @ts-ignore
|
|
25209
|
-
context === ReactReduxContext ? useReduxContext :
|
|
25436
|
+
context === ReactReduxContext ? useReduxContext : // @ts-ignore
|
|
25437
|
+
createReduxContextHook(context);
|
|
25210
25438
|
return function useStore() {
|
|
25211
25439
|
const {
|
|
25212
25440
|
store
|
|
@@ -31399,6 +31627,8 @@ var createBalancedMosaicNode = function createBalancedMosaicNode(currentNode) {
|
|
|
31399
31627
|
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
31400
31628
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
31401
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
|
|
31402
31632
|
var _viewPresetsListAdapt = viewPresetsListAdapter.getSelectors(function (state) {
|
|
31403
31633
|
var _a;
|
|
31404
31634
|
return (_a = state === null || state === void 0 ? void 0 : state.viewPresetsList) !== null && _a !== void 0 ? _a : {
|
|
@@ -31408,6 +31638,20 @@ var _viewPresetsListAdapt = viewPresetsListAdapter.getSelectors(function (state)
|
|
|
31408
31638
|
}),
|
|
31409
31639
|
getViewPresetsList = _viewPresetsListAdapt.selectAll;
|
|
31410
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
|
+
});
|
|
31411
31655
|
|
|
31412
31656
|
/* *
|
|
31413
31657
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -31601,6 +31845,196 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
|
|
|
31601
31845
|
})));
|
|
31602
31846
|
};
|
|
31603
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
|
+
|
|
31604
32038
|
/* *
|
|
31605
32039
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
31606
32040
|
* you may not use this file except in compliance with the License.
|
|
@@ -31620,9 +32054,11 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
|
|
|
31620
32054
|
var ERROR_TITLE = 'View presets not available';
|
|
31621
32055
|
var ERROR_RETRY = 'Try again';
|
|
31622
32056
|
var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
31623
|
-
var panelId = _ref.panelId
|
|
32057
|
+
var panelId = _ref.panelId,
|
|
32058
|
+
_ref$isOpen = _ref.isOpen,
|
|
32059
|
+
isOpen = _ref$isOpen === void 0 ? true : _ref$isOpen;
|
|
31624
32060
|
var viewPresets = useSelector(function (store) {
|
|
31625
|
-
return
|
|
32061
|
+
return getFilteredViewPresetListForView(store, panelId);
|
|
31626
32062
|
});
|
|
31627
32063
|
var activeViewPresetId = useSelector(function (store) {
|
|
31628
32064
|
return getViewPresetActiveId(store, panelId);
|
|
@@ -31630,6 +32066,9 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31630
32066
|
var currentMapPreset = useSelector(function (store) {
|
|
31631
32067
|
return mapSelectors.getMapPreset(store, panelId);
|
|
31632
32068
|
});
|
|
32069
|
+
var viewPresetListFilters = useSelector(function (store) {
|
|
32070
|
+
return getViewPresetListFiltersForView(store, panelId);
|
|
32071
|
+
});
|
|
31633
32072
|
var relatedSyncGroupIds = useSelector(function (store) {
|
|
31634
32073
|
return syncGroupsSelectors.getAllTargetGroupsForSource(store, panelId);
|
|
31635
32074
|
});
|
|
@@ -31641,6 +32080,13 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31641
32080
|
});
|
|
31642
32081
|
var _useAuthenticationCon = useAuthenticationContext(),
|
|
31643
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]);
|
|
31644
32090
|
var dispatch = useDispatch();
|
|
31645
32091
|
var openViewPresetsDialog = React.useCallback(function (viewPresetDialogOptions) {
|
|
31646
32092
|
dispatch(viewPresetActions.openViewPresetDialog({
|
|
@@ -31654,10 +32100,12 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31654
32100
|
}));
|
|
31655
32101
|
}, [dispatch, panelId]);
|
|
31656
32102
|
var fetchViewPresets = React.useCallback(function () {
|
|
32103
|
+
var filterParams = constructFilterParams$1(viewPresetListFilters);
|
|
31657
32104
|
dispatch(viewPresetActions.fetchViewPresets({
|
|
31658
|
-
panelId: panelId
|
|
32105
|
+
panelId: panelId,
|
|
32106
|
+
filterParams: filterParams
|
|
31659
32107
|
}));
|
|
31660
|
-
}, [dispatch, panelId]);
|
|
32108
|
+
}, [dispatch, panelId, viewPresetListFilters]);
|
|
31661
32109
|
var onClickViewPresetOption = function onClickViewPresetOption(presetId, workspaceAction, preset) {
|
|
31662
32110
|
switch (workspaceAction) {
|
|
31663
32111
|
case WorkspacePresetAction.DUPLICATE:
|
|
@@ -31698,6 +32146,31 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31698
32146
|
}
|
|
31699
32147
|
}
|
|
31700
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;
|
|
31701
32174
|
return /*#__PURE__*/React.createElement(React.Fragment, null, isViewPresetsListFetching && /*#__PURE__*/React.createElement(LinearProgress, {
|
|
31702
32175
|
"data-testid": "loading-bar",
|
|
31703
32176
|
color: "secondary",
|
|
@@ -31712,6 +32185,15 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31712
32185
|
title: ERROR_RETRY,
|
|
31713
32186
|
onClick: fetchViewPresets
|
|
31714
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
|
|
31715
32197
|
}), /*#__PURE__*/React.createElement(WorkspaceSelectList, {
|
|
31716
32198
|
workspacePresets: viewPresets,
|
|
31717
32199
|
currentSelectedId: activeViewPresetId || undefined,
|
|
@@ -31721,8 +32203,9 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
|
|
|
31721
32203
|
id: undefined,
|
|
31722
32204
|
title: MAPPRESET_ACTIVE_TITLE
|
|
31723
32205
|
}),
|
|
31724
|
-
isLoggedIn: isLoggedIn
|
|
31725
|
-
|
|
32206
|
+
isLoggedIn: isLoggedIn,
|
|
32207
|
+
hideNewWorkspace: shouldHideNewWorkspace
|
|
32208
|
+
})));
|
|
31726
32209
|
};
|
|
31727
32210
|
|
|
31728
32211
|
/* *
|
|
@@ -31761,13 +32244,10 @@ var ViewPresetMenu = function ViewPresetMenu(_ref) {
|
|
|
31761
32244
|
onClick: function onClick(event) {
|
|
31762
32245
|
event.stopPropagation();
|
|
31763
32246
|
}
|
|
31764
|
-
}, /*#__PURE__*/React__default.createElement(Box$2, {
|
|
31765
|
-
sx: {
|
|
31766
|
-
padding: 1
|
|
31767
|
-
}
|
|
31768
32247
|
}, /*#__PURE__*/React__default.createElement(ViewPresetMenuListConnect, {
|
|
31769
|
-
panelId: panelId
|
|
31770
|
-
|
|
32248
|
+
panelId: panelId,
|
|
32249
|
+
isOpen: isOpen
|
|
32250
|
+
}));
|
|
31771
32251
|
return /*#__PURE__*/React__default.createElement("div", null, hideBackdrop ?
|
|
31772
32252
|
// Enable hiding backdrop from snapshot tests
|
|
31773
32253
|
toolContainer : /*#__PURE__*/React__default.createElement(Backdrop, {
|
|
@@ -31820,7 +32300,7 @@ var WorkspaceOptions = function WorkspaceOptions(_ref) {
|
|
|
31820
32300
|
title: 'Save as',
|
|
31821
32301
|
callback: handleSaveAs
|
|
31822
32302
|
}].concat(_toConsumableArray$1(handleSaveAll ? [{
|
|
31823
|
-
title: 'Save
|
|
32303
|
+
title: 'Save (incl. viewpresets)',
|
|
31824
32304
|
callback: handleSaveAll
|
|
31825
32305
|
}] : []), [{
|
|
31826
32306
|
title: 'Edit',
|
|
@@ -32176,9 +32656,9 @@ var WorkspaceTileConnect = function WorkspaceTileConnect(_ref) {
|
|
|
32176
32656
|
id: mosaicNodeId,
|
|
32177
32657
|
componentType: view === null || view === void 0 ? void 0 : view.componentType,
|
|
32178
32658
|
initialProps: view === null || view === void 0 ? void 0 : view.initialProps
|
|
32179
|
-
}),
|
|
32659
|
+
}), /*#__PURE__*/React.createElement(ViewPresetMenu, {
|
|
32180
32660
|
panelId: mosaicNodeId,
|
|
32181
|
-
isOpen: isViewPresetDialogOpen,
|
|
32661
|
+
isOpen: isViewPresetDialogOpen || false,
|
|
32182
32662
|
closeMenu: function closeMenu() {
|
|
32183
32663
|
toggleViewPresetDialog({
|
|
32184
32664
|
panelId: mosaicNodeId,
|
|
@@ -35924,194 +36404,6 @@ process.env.NODE_ENV !== "production" ? Box.propTypes /* remove-proptypes */ = {
|
|
|
35924
36404
|
} : void 0;
|
|
35925
36405
|
var Box$1 = Box;
|
|
35926
36406
|
|
|
35927
|
-
/* *
|
|
35928
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
35929
|
-
* you may not use this file except in compliance with the License.
|
|
35930
|
-
* You may obtain a copy of the License at
|
|
35931
|
-
*
|
|
35932
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
35933
|
-
*
|
|
35934
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
35935
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
35936
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
35937
|
-
* See the License for the specific language governing permissions and
|
|
35938
|
-
* limitations under the License.
|
|
35939
|
-
*
|
|
35940
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
35941
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
35942
|
-
* */
|
|
35943
|
-
var FilterChip = function FilterChip(_ref) {
|
|
35944
|
-
var label = _ref.label,
|
|
35945
|
-
id = _ref.id,
|
|
35946
|
-
_ref$isSelected = _ref.isSelected,
|
|
35947
|
-
isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,
|
|
35948
|
-
_ref$isDisabled = _ref.isDisabled,
|
|
35949
|
-
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
35950
|
-
_ref$handleClick = _ref.handleClick,
|
|
35951
|
-
handleClick = _ref$handleClick === void 0 ? function () {} : _ref$handleClick;
|
|
35952
|
-
var theme = useTheme$2();
|
|
35953
|
-
return /*#__PURE__*/React.createElement(Chip, {
|
|
35954
|
-
size: "small",
|
|
35955
|
-
id: id,
|
|
35956
|
-
label: label,
|
|
35957
|
-
disabled: isDisabled,
|
|
35958
|
-
variant: isSelected ? 'filled' : 'outlined',
|
|
35959
|
-
color: isSelected ? 'secondary' : 'default',
|
|
35960
|
-
sx: {
|
|
35961
|
-
borderColor: "".concat(theme.palette.geowebColors.buttons.tertiary["default"].borderColor),
|
|
35962
|
-
padding: '0px 4px'
|
|
35963
|
-
},
|
|
35964
|
-
onClick: function onClick() {
|
|
35965
|
-
return handleClick(id);
|
|
35966
|
-
}
|
|
35967
|
-
});
|
|
35968
|
-
};
|
|
35969
|
-
|
|
35970
|
-
/* *
|
|
35971
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
35972
|
-
* you may not use this file except in compliance with the License.
|
|
35973
|
-
* You may obtain a copy of the License at
|
|
35974
|
-
*
|
|
35975
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
35976
|
-
*
|
|
35977
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
35978
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
35979
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
35980
|
-
* See the License for the specific language governing permissions and
|
|
35981
|
-
* limitations under the License.
|
|
35982
|
-
*
|
|
35983
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
35984
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
35985
|
-
* */
|
|
35986
|
-
var allLabel = 'All';
|
|
35987
|
-
var FilterList = function FilterList(_ref) {
|
|
35988
|
-
var _ref$filters = _ref.filters,
|
|
35989
|
-
filters = _ref$filters === void 0 ? workspaceListFilterOptions : _ref$filters,
|
|
35990
|
-
_ref$onChipClick = _ref.onChipClick,
|
|
35991
|
-
onChipClick = _ref$onChipClick === void 0 ? function () {} : _ref$onChipClick,
|
|
35992
|
-
_ref$isAllSelected = _ref.isAllSelected,
|
|
35993
|
-
isAllSelected = _ref$isAllSelected === void 0 ? false : _ref$isAllSelected;
|
|
35994
|
-
return /*#__PURE__*/React.createElement(Stack, {
|
|
35995
|
-
direction: "row",
|
|
35996
|
-
spacing: 1,
|
|
35997
|
-
"data-testid": "filterList"
|
|
35998
|
-
}, /*#__PURE__*/React.createElement(FilterChip, {
|
|
35999
|
-
id: "all",
|
|
36000
|
-
label: allLabel,
|
|
36001
|
-
isSelected: isAllSelected,
|
|
36002
|
-
handleClick: function handleClick(key) {
|
|
36003
|
-
return onChipClick(key, !isAllSelected);
|
|
36004
|
-
}
|
|
36005
|
-
}), filters.map(function (filter) {
|
|
36006
|
-
return /*#__PURE__*/React.createElement(FilterChip, {
|
|
36007
|
-
key: filter.id,
|
|
36008
|
-
id: filter.id,
|
|
36009
|
-
label: filter.label,
|
|
36010
|
-
isSelected: isAllSelected ? false : filter.isSelected,
|
|
36011
|
-
isDisabled: filter.isDisabled,
|
|
36012
|
-
handleClick: function handleClick(key) {
|
|
36013
|
-
// If they are all isSelected ensure that if one is clicked that one will be the only one set to selected
|
|
36014
|
-
var selected = isAllSelected ? true : !filter.isSelected;
|
|
36015
|
-
onChipClick(key, selected);
|
|
36016
|
-
}
|
|
36017
|
-
});
|
|
36018
|
-
}));
|
|
36019
|
-
};
|
|
36020
|
-
|
|
36021
|
-
var DEBOUNCE_TIMEOUT = 300;
|
|
36022
|
-
var SearchField = function SearchField(_ref) {
|
|
36023
|
-
var _ref$label = _ref.label,
|
|
36024
|
-
label = _ref$label === void 0 ? 'Search' : _ref$label,
|
|
36025
|
-
valueChanged = _ref.valueChanged,
|
|
36026
|
-
_ref$value = _ref.value,
|
|
36027
|
-
value = _ref$value === void 0 ? '' : _ref$value;
|
|
36028
|
-
var _React$useState = React.useState(value),
|
|
36029
|
-
_React$useState2 = _slicedToArray$2(_React$useState, 2),
|
|
36030
|
-
localValue = _React$useState2[0],
|
|
36031
|
-
setLocalValue = _React$useState2[1];
|
|
36032
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36033
|
-
var handleValueChangeDebounced = React.useCallback(debounce$1(valueChanged, DEBOUNCE_TIMEOUT), []);
|
|
36034
|
-
var ClearButton = function ClearButton() {
|
|
36035
|
-
return /*#__PURE__*/React.createElement(CustomIconButton, {
|
|
36036
|
-
tooltipTitle: "Clear",
|
|
36037
|
-
edge: "end",
|
|
36038
|
-
onClick: function onClick() {
|
|
36039
|
-
setLocalValue('');
|
|
36040
|
-
valueChanged('');
|
|
36041
|
-
},
|
|
36042
|
-
size: "large"
|
|
36043
|
-
}, /*#__PURE__*/React.createElement(Clear, null));
|
|
36044
|
-
};
|
|
36045
|
-
var SearchButton = function SearchButton() {
|
|
36046
|
-
return /*#__PURE__*/React.createElement(CustomIconButton, {
|
|
36047
|
-
tooltipTitle: label,
|
|
36048
|
-
edge: "end",
|
|
36049
|
-
size: "large"
|
|
36050
|
-
}, /*#__PURE__*/React.createElement(Search, null));
|
|
36051
|
-
};
|
|
36052
|
-
return /*#__PURE__*/React.createElement(TextField, {
|
|
36053
|
-
variant: "filled",
|
|
36054
|
-
size: "small",
|
|
36055
|
-
sx: {
|
|
36056
|
-
'& input': {
|
|
36057
|
-
paddingTop: '18px'
|
|
36058
|
-
}
|
|
36059
|
-
},
|
|
36060
|
-
label: label,
|
|
36061
|
-
value: localValue,
|
|
36062
|
-
autoFocus: true,
|
|
36063
|
-
fullWidth: true,
|
|
36064
|
-
onChange: function onChange(e) {
|
|
36065
|
-
handleValueChangeDebounced(e.target.value);
|
|
36066
|
-
setLocalValue(e.target.value);
|
|
36067
|
-
},
|
|
36068
|
-
InputProps: {
|
|
36069
|
-
endAdornment: /*#__PURE__*/React.createElement(InputAdornment, {
|
|
36070
|
-
position: "end"
|
|
36071
|
-
}, localValue ? /*#__PURE__*/React.createElement(ClearButton, null) : /*#__PURE__*/React.createElement(SearchButton, null))
|
|
36072
|
-
}
|
|
36073
|
-
});
|
|
36074
|
-
};
|
|
36075
|
-
|
|
36076
|
-
/* *
|
|
36077
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
36078
|
-
* you may not use this file except in compliance with the License.
|
|
36079
|
-
* You may obtain a copy of the License at
|
|
36080
|
-
*
|
|
36081
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
36082
|
-
*
|
|
36083
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
36084
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
36085
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
36086
|
-
* See the License for the specific language governing permissions and
|
|
36087
|
-
* limitations under the License.
|
|
36088
|
-
*
|
|
36089
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
36090
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
36091
|
-
* */
|
|
36092
|
-
var WorkspaceFilter = function WorkspaceFilter(_ref) {
|
|
36093
|
-
var filters = _ref.filters,
|
|
36094
|
-
_ref$onClickFilterChi = _ref.onClickFilterChip,
|
|
36095
|
-
onClickFilterChip = _ref$onClickFilterChi === void 0 ? function () {} : _ref$onClickFilterChi,
|
|
36096
|
-
_ref$onSearch = _ref.onSearch,
|
|
36097
|
-
onSearch = _ref$onSearch === void 0 ? function () {} : _ref$onSearch,
|
|
36098
|
-
isAllSelected = _ref.isAllSelected,
|
|
36099
|
-
searchQuery = _ref.searchQuery;
|
|
36100
|
-
return /*#__PURE__*/React.createElement(Stack, {
|
|
36101
|
-
spacing: 1,
|
|
36102
|
-
sx: {
|
|
36103
|
-
marginBottom: '8px'
|
|
36104
|
-
}
|
|
36105
|
-
}, /*#__PURE__*/React.createElement(SearchField, {
|
|
36106
|
-
value: searchQuery,
|
|
36107
|
-
valueChanged: onSearch
|
|
36108
|
-
}), /*#__PURE__*/React.createElement(FilterList, {
|
|
36109
|
-
filters: filters,
|
|
36110
|
-
onChipClick: onClickFilterChip,
|
|
36111
|
-
isAllSelected: isAllSelected
|
|
36112
|
-
}));
|
|
36113
|
-
};
|
|
36114
|
-
|
|
36115
36407
|
/* *
|
|
36116
36408
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
36117
36409
|
* you may not use this file except in compliance with the License.
|
|
@@ -36251,7 +36543,9 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
36251
36543
|
return filter.isSelected;
|
|
36252
36544
|
});
|
|
36253
36545
|
var shouldHideNewWorkspace = !isAllSelected || workspaceSearchQuery.length > 0;
|
|
36254
|
-
return /*#__PURE__*/React.createElement("div",
|
|
36546
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
36547
|
+
"data-testid": "workspace-selectlist-connect"
|
|
36548
|
+
}, isFetching && /*#__PURE__*/React.createElement(LinearProgress, {
|
|
36255
36549
|
"data-testid": "loading-bar",
|
|
36256
36550
|
color: "secondary",
|
|
36257
36551
|
sx: {
|
|
@@ -36506,9 +36800,7 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
|
|
|
36506
36800
|
setWorkspaceActionDialogOptions({
|
|
36507
36801
|
action: WorkspacePresetAction.SAVE_ALL,
|
|
36508
36802
|
presetId: workspaceId,
|
|
36509
|
-
formValues: Object.assign(
|
|
36510
|
-
scope: 'user'
|
|
36511
|
-
})
|
|
36803
|
+
formValues: Object.assign({}, workspaceData)
|
|
36512
36804
|
});
|
|
36513
36805
|
};
|
|
36514
36806
|
var onSave = React.useCallback(function () {
|
|
@@ -36652,8 +36944,8 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
36652
36944
|
onSubmit();
|
|
36653
36945
|
};
|
|
36654
36946
|
var hasFormInput = action === WorkspacePresetAction.DUPLICATE || action === WorkspacePresetAction.SAVE_AS || action === WorkspacePresetAction.SAVE_ALL;
|
|
36655
|
-
// disable form inputs for '
|
|
36656
|
-
var isDisabled =
|
|
36947
|
+
// disable form inputs for 'Save (incl. viewpresets)' existing workspace preset
|
|
36948
|
+
var isDisabled = action === WorkspacePresetAction.SAVE_ALL && formValues.id !== undefined && formValues.id !== '' && formValues.scope === 'user';
|
|
36657
36949
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, Boolean(error) && /*#__PURE__*/React__default.createElement(Box$2, {
|
|
36658
36950
|
sx: {
|
|
36659
36951
|
marginBottom: 2
|
|
@@ -36721,16 +37013,21 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
36721
37013
|
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
36722
37014
|
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
36723
37015
|
* */
|
|
36724
|
-
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';
|
|
36725
37022
|
var getDialogTitle = function getDialogTitle(action) {
|
|
36726
37023
|
switch (action) {
|
|
36727
37024
|
case WorkspacePresetAction.DELETE:
|
|
36728
37025
|
{
|
|
36729
|
-
return
|
|
37026
|
+
return DIALOG_TITLE_DELETE;
|
|
36730
37027
|
}
|
|
36731
37028
|
case WorkspacePresetAction.DUPLICATE:
|
|
36732
37029
|
{
|
|
36733
|
-
return
|
|
37030
|
+
return DIALOG_TITLE_DUPLICATE;
|
|
36734
37031
|
}
|
|
36735
37032
|
case WorkspacePresetAction.SAVE_ALL:
|
|
36736
37033
|
{
|
|
@@ -36738,7 +37035,7 @@ var getDialogTitle = function getDialogTitle(action) {
|
|
|
36738
37035
|
}
|
|
36739
37036
|
default:
|
|
36740
37037
|
{
|
|
36741
|
-
return
|
|
37038
|
+
return DIALOG_TITLE_SAVE_AS;
|
|
36742
37039
|
}
|
|
36743
37040
|
}
|
|
36744
37041
|
};
|
|
@@ -36746,15 +37043,11 @@ var getConfirmLabel$1 = function getConfirmLabel(action) {
|
|
|
36746
37043
|
switch (action) {
|
|
36747
37044
|
case WorkspacePresetAction.DELETE:
|
|
36748
37045
|
{
|
|
36749
|
-
return
|
|
36750
|
-
}
|
|
36751
|
-
case WorkspacePresetAction.SAVE_ALL:
|
|
36752
|
-
{
|
|
36753
|
-
return DIALOG_TITLE_SAVE_ALL;
|
|
37046
|
+
return DIALOG_BUTTON_DELETE;
|
|
36754
37047
|
}
|
|
36755
37048
|
default:
|
|
36756
37049
|
{
|
|
36757
|
-
return
|
|
37050
|
+
return DIALOG_BUTTON_SAVE;
|
|
36758
37051
|
}
|
|
36759
37052
|
}
|
|
36760
37053
|
};
|