@opengeoweb/workspace 11.1.0 → 12.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/index.esm.js +477 -246
- package/package.json +15 -15
- package/src/lib/Workspace.stories.d.ts +10 -19
- package/src/lib/WorkspaceAdmin.stories.d.ts +1 -0
- package/src/lib/api/workspace-api/api.d.ts +6 -0
- package/src/lib/api/workspace-api/fakeApi.d.ts +1 -0
- package/src/lib/api/workspace-api/hooks.d.ts +11 -0
- package/src/lib/components/Providers/Providers.d.ts +6 -2
- package/src/lib/components/ViewPresetMenu/ViewPresetMenu.stories.d.ts +6 -21
- package/src/lib/components/ViewPresetMenu/ViewPresetsError.stories.d.ts +1 -0
- package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialog.d.ts +1 -1
- package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialog.stories.d.ts +11 -22
- package/src/lib/components/WorkspaceDetail/WorkspaceDetail.stories.d.ts +1 -0
- package/src/lib/components/WorkspaceDetail/WorkspaceDetailError.stories.d.ts +1 -1
- package/src/lib/components/WorkspaceMenu/WorkspaceMenu.stories.d.ts +7 -13
- package/src/lib/components/WorkspaceMenu/WorkspaceMenuButton.stories.d.ts +7 -23
- package/src/lib/components/WorkspaceOptions/WorkspaceOptions.stories.d.ts +10 -39
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsForm.d.ts +2 -1
- package/src/lib/components/WorkspacePresetsFormDialog/WorkspacePresetsFormDialog.stories.d.ts +22 -72
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListError.stories.d.ts +1 -0
- package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.stories.d.ts +8 -19
- package/src/lib/components/WorkspaceTopBar/WorkspaceTopBar.stories.d.ts +11 -53
- package/src/lib/hooks/useFetchWorkspacePresets.d.ts +1 -0
- package/src/lib/store/viewPresets/reducer.d.ts +3 -3
- package/src/lib/store/viewPresets/types.d.ts +3 -3
- package/src/lib/store/workspace/types.d.ts +6 -2
- package/src/lib/store/workspaceList/reducer.d.ts +1 -1
- package/src/lib/store/workspaceList/selectors.d.ts +9 -0
- package/src/lib/store/workspaceList/types.d.ts +5 -2
- package/src/lib/storyUtils/StoryWrapper.d.ts +1 -3
- package/src/lib/storyUtils/componentsLookUp.stories.d.ts +22 -49
- package/src/lib/utils/api.d.ts +0 -1
- package/src/lib/utils/fakeApi.stories.d.ts +1 -0
- package/src/lib/utils/utils.d.ts +3 -0
package/index.esm.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
2
|
-
import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, mapListener, serviceListener, layersListener, syncGroupsListener, mapReducer, serviceReducer, layerReducer, syncGroupsReducer, loadingIndicatorReducer, uiReducer, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
|
|
3
|
-
import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, useApiContext, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
|
|
2
|
+
import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener, mapReducer, serviceReducer, layerReducer, syncGroupsReducer, loadingIndicatorReducer, uiReducer, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
|
|
3
|
+
import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, getConfig, getHeaders, handleResponse, useApiContext, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
|
|
4
4
|
import { chunk, cloneDeep, pick, isEmpty, isEqual, isString } from 'lodash';
|
|
5
5
|
import { getLeaves, MosaicContext, getAndAssertNodeAtPathExists, createBalancedTreeFromLeaves, MosaicWindow, Mosaic } from 'react-mosaic-component';
|
|
6
6
|
import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/timeseries';
|
|
7
7
|
import { publicWarningActions, WARN_NAMESPACE, warningsTranslations, publicWarningsSelectors } from '@opengeoweb/warnings';
|
|
8
|
-
import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, SHARED_NAMESPACE, sharedTranslations, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, AlertBanner,
|
|
8
|
+
import { PresetScope, PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, SHARED_NAMESPACE, sharedTranslations, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, AlertBanner, CustomTooltip, SearchHighlight, ToggleMenu, DEFAULT_FILTER_HEIGHT, Filter, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, usePrevious, ConfirmationButtons } from '@opengeoweb/shared';
|
|
9
9
|
import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
|
|
10
10
|
import { isAxiosError } from 'axios';
|
|
11
11
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
12
|
-
import { ThemeWrapper, lightTheme, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, Delete, Preset, PresetWorkspace, PresetTiles, CloudLoading, CloudIdle, WebAssetOff, Exclamation } from '@opengeoweb/theme';
|
|
12
|
+
import { ThemeWrapper, lightTheme, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, SharedPresetsMyUser, SharedPresetsOtherUsers, Delete, Preset, PresetWorkspace, PresetTiles, CloudLoading, CloudIdle, WebAssetOff, Exclamation } from '@opengeoweb/theme';
|
|
13
13
|
import { Provider, useDispatch, useSelector, useStore, shallowEqual } from 'react-redux';
|
|
14
14
|
import { initReactI18next, useTranslation, I18nextProvider } from 'react-i18next';
|
|
15
15
|
import { AuthenticationProvider, useAuthenticationContext, GEOWEB_ROLE_PRESETS_ADMIN } from '@opengeoweb/authentication';
|
|
16
|
-
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
16
|
+
import { QueryClient, QueryClientProvider, useMutation } from '@tanstack/react-query';
|
|
17
17
|
import i18n from 'i18next';
|
|
18
18
|
import { WEBMAP_REACT_NAMESPACE, webmapReactTranslations } from '@opengeoweb/webmap-react';
|
|
19
19
|
import { CORE_NAMESPACE, coreTranslations } from '@opengeoweb/core';
|
|
20
20
|
import { FORM_FIELDS_NAMESPACE, formFieldsTranslations, ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
|
|
21
21
|
import * as React from 'react';
|
|
22
|
-
import React__default, { useCallback } from 'react';
|
|
23
|
-
import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, LinearProgress, Grid2, Box, ListSubheader, MenuItem, useTheme, FormGroup, FormControlLabel, Tabs } from '@mui/material';
|
|
22
|
+
import React__default, { useCallback, useEffect } from 'react';
|
|
23
|
+
import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, LinearProgress, styled, Grid2, Box, ListSubheader, MenuItem, useTheme, FormGroup, FormControlLabel, Tabs } from '@mui/material';
|
|
24
24
|
import 'react-mosaic-component/react-mosaic-component.css';
|
|
25
25
|
import AutoSizer from 'react-virtualized-auto-sizer';
|
|
26
26
|
import { FixedSizeList } from 'react-window';
|
|
@@ -731,9 +731,6 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
|
|
|
731
731
|
return getIdFromUrl(headerLocation);
|
|
732
732
|
});
|
|
733
733
|
},
|
|
734
|
-
deleteWorkspacePreset: function deleteWorkspacePreset(workspacePresetId) {
|
|
735
|
-
return axiosInstance["delete"]("/workspacepreset/" + workspacePresetId);
|
|
736
|
-
},
|
|
737
734
|
// view presets
|
|
738
735
|
getViewPresets: function getViewPresets(params) {
|
|
739
736
|
return axiosInstance.get('/viewpreset', {
|
|
@@ -908,6 +905,40 @@ var WorkspaceErrorType;
|
|
|
908
905
|
WorkspaceErrorType["SAVE"] = "SAVE";
|
|
909
906
|
})(WorkspaceErrorType || (WorkspaceErrorType = {}));
|
|
910
907
|
|
|
908
|
+
/* *
|
|
909
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
910
|
+
* you may not use this file except in compliance with the License.
|
|
911
|
+
* You may obtain a copy of the License at
|
|
912
|
+
*
|
|
913
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
914
|
+
*
|
|
915
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
916
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
917
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
918
|
+
* See the License for the specific language governing permissions and
|
|
919
|
+
* limitations under the License.
|
|
920
|
+
*
|
|
921
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
922
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
923
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
924
|
+
* */
|
|
925
|
+
var WorkspaceListErrorCategory;
|
|
926
|
+
(function (WorkspaceListErrorCategory) {
|
|
927
|
+
WorkspaceListErrorCategory["AUTH"] = "AUTH";
|
|
928
|
+
WorkspaceListErrorCategory["GENERIC"] = "GENERIC";
|
|
929
|
+
})(WorkspaceListErrorCategory || (WorkspaceListErrorCategory = {}));
|
|
930
|
+
var WorkspaceListErrorType;
|
|
931
|
+
(function (WorkspaceListErrorType) {
|
|
932
|
+
WorkspaceListErrorType["TRANSLATABLE_ERROR"] = "TRANSLATABLE_ERROR";
|
|
933
|
+
WorkspaceListErrorType["VERBATIM_ERROR"] = "VERBATIM_ERROR";
|
|
934
|
+
})(WorkspaceListErrorType || (WorkspaceListErrorType = {}));
|
|
935
|
+
var PresetFilterType;
|
|
936
|
+
(function (PresetFilterType) {
|
|
937
|
+
PresetFilterType["personal"] = "personal";
|
|
938
|
+
PresetFilterType["shared"] = "shared";
|
|
939
|
+
PresetFilterType["system"] = "system";
|
|
940
|
+
})(PresetFilterType || (PresetFilterType = {}));
|
|
941
|
+
|
|
911
942
|
/* *
|
|
912
943
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
913
944
|
* you may not use this file except in compliance with the License.
|
|
@@ -927,14 +958,17 @@ var WorkspaceErrorType;
|
|
|
927
958
|
* */
|
|
928
959
|
var workspaceListFilterOptions = [{
|
|
929
960
|
label: 'shared-filter-my-presets',
|
|
930
|
-
id:
|
|
931
|
-
type: 'scope',
|
|
961
|
+
id: PresetFilterType.personal,
|
|
932
962
|
isSelected: true,
|
|
933
963
|
isDisabled: false
|
|
934
964
|
}, {
|
|
935
965
|
label: 'shared-filter-system-presets',
|
|
936
|
-
id:
|
|
937
|
-
|
|
966
|
+
id: PresetFilterType.system,
|
|
967
|
+
isSelected: true,
|
|
968
|
+
isDisabled: false
|
|
969
|
+
}, {
|
|
970
|
+
label: 'shared-filter-shared-presets',
|
|
971
|
+
id: PresetFilterType.shared,
|
|
938
972
|
isSelected: true,
|
|
939
973
|
isDisabled: false
|
|
940
974
|
}];
|
|
@@ -1110,16 +1144,21 @@ var PresetAction;
|
|
|
1110
1144
|
* */
|
|
1111
1145
|
var viewPresetsListFilterOptions = [{
|
|
1112
1146
|
label: 'shared-filter-my-presets',
|
|
1113
|
-
id:
|
|
1147
|
+
id: PresetScope.user,
|
|
1114
1148
|
type: 'scope',
|
|
1115
1149
|
isSelected: true,
|
|
1116
1150
|
isDisabled: false
|
|
1117
1151
|
}, {
|
|
1118
1152
|
label: 'shared-filter-system-presets',
|
|
1119
|
-
id:
|
|
1153
|
+
id: PresetScope.system,
|
|
1120
1154
|
type: 'scope',
|
|
1121
1155
|
isSelected: true,
|
|
1122
1156
|
isDisabled: false
|
|
1157
|
+
}, {
|
|
1158
|
+
label: 'shared-filter-shared-presets',
|
|
1159
|
+
id: PresetScope.shared,
|
|
1160
|
+
isSelected: true,
|
|
1161
|
+
isDisabled: true
|
|
1123
1162
|
}];
|
|
1124
1163
|
var viewPresetsAdapter = createEntityAdapter({
|
|
1125
1164
|
// we use panelId as id (panelId can be mapId or viewId)
|
|
@@ -1508,6 +1547,29 @@ var setDocumentTitle = function setDocumentTitle(workspaceTitle, appTitle) {
|
|
|
1508
1547
|
var fallbackAppTitle = appTitle || 'GeoWeb';
|
|
1509
1548
|
document.title = workspaceTitle ? workspaceTitle + " - " + fallbackAppTitle : fallbackAppTitle;
|
|
1510
1549
|
};
|
|
1550
|
+
var filterWorkspacePresets = function filterWorkspacePresets(workspacePresets, selectedFilters, username) {
|
|
1551
|
+
var isAllSelected = selectedFilters.every(function (filter) {
|
|
1552
|
+
return filter.isSelected;
|
|
1553
|
+
});
|
|
1554
|
+
if (isAllSelected) {
|
|
1555
|
+
return workspacePresets;
|
|
1556
|
+
}
|
|
1557
|
+
var selectedIds = selectedFilters.filter(function (filter) {
|
|
1558
|
+
return filter.isSelected;
|
|
1559
|
+
}).map(function (filter) {
|
|
1560
|
+
return filter.id;
|
|
1561
|
+
});
|
|
1562
|
+
return workspacePresets.filter(function (preset) {
|
|
1563
|
+
return (
|
|
1564
|
+
// System
|
|
1565
|
+
selectedIds.includes('system') && preset.scope === 'system' ||
|
|
1566
|
+
// Personal
|
|
1567
|
+
selectedIds.includes('personal') && preset.username === username ||
|
|
1568
|
+
// Shared
|
|
1569
|
+
selectedIds.includes('shared') && preset.username !== username && preset.is_shared
|
|
1570
|
+
);
|
|
1571
|
+
});
|
|
1572
|
+
};
|
|
1511
1573
|
|
|
1512
1574
|
/* *
|
|
1513
1575
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -1667,7 +1729,7 @@ var createCustomEmptyMapWorkspace = function createCustomEmptyMapWorkspace(empty
|
|
|
1667
1729
|
var constructFilterParams = function constructFilterParams(filters, searchQuery) {
|
|
1668
1730
|
// get filters
|
|
1669
1731
|
var _filters$reduce = filters.reduce(function (filterList, filter) {
|
|
1670
|
-
if (filter.isSelected && filter.type === 'scope') {
|
|
1732
|
+
if (filter.isSelected && 'type' in filter && filter.type === 'scope') {
|
|
1671
1733
|
return Object.assign({}, filter, {
|
|
1672
1734
|
scope: filterList.scope.concat(filter.id)
|
|
1673
1735
|
});
|
|
@@ -4519,17 +4581,13 @@ var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
|
|
|
4519
4581
|
return workspacePresetsList;
|
|
4520
4582
|
}
|
|
4521
4583
|
return workspacePresetsList.reduce(function (list, workspacePresetRaw) {
|
|
4522
|
-
var _params$scope;
|
|
4523
4584
|
var workspacePreset = workspacePresetRaw;
|
|
4524
|
-
if (params
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
return hasResult ? list.concat(workspacePreset) : list;
|
|
4531
|
-
}
|
|
4532
|
-
return list.concat(workspacePreset);
|
|
4585
|
+
if (params.search) {
|
|
4586
|
+
var searchQuery = getCleanSearchQuery(params.search);
|
|
4587
|
+
var hasResult = searchQuery.split(',').every(function (query) {
|
|
4588
|
+
return workspacePreset.title.toLowerCase().includes(query.toLowerCase()) || workspacePreset["abstract"].toLowerCase().includes(query.toLowerCase());
|
|
4589
|
+
});
|
|
4590
|
+
return hasResult ? list.concat(workspacePreset) : list;
|
|
4533
4591
|
}
|
|
4534
4592
|
return list;
|
|
4535
4593
|
}, []);
|
|
@@ -4539,9 +4597,9 @@ var filterViewPresetList = function filterViewPresetList(params) {
|
|
|
4539
4597
|
return viewPresetsList;
|
|
4540
4598
|
}
|
|
4541
4599
|
return viewPresetsList.reduce(function (list, viewPresetRaw) {
|
|
4542
|
-
var _params$
|
|
4600
|
+
var _params$scope;
|
|
4543
4601
|
var workspacePreset = viewPresetRaw;
|
|
4544
|
-
if (params != null && (_params$
|
|
4602
|
+
if (params != null && (_params$scope = params.scope) != null && _params$scope.includes(workspacePreset.scope)) {
|
|
4545
4603
|
return list.concat(workspacePreset);
|
|
4546
4604
|
}
|
|
4547
4605
|
return list;
|
|
@@ -4590,11 +4648,6 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
|
|
|
4590
4648
|
return null;
|
|
4591
4649
|
});
|
|
4592
4650
|
},
|
|
4593
|
-
deleteWorkspacePreset: function deleteWorkspacePreset(workspacePresetId) {
|
|
4594
|
-
// eslint-disable-next-line no-console
|
|
4595
|
-
console.log('api: delete workspace preset', workspacePresetId);
|
|
4596
|
-
return axiosInstance["delete"]("/workspacepreset/" + workspacePresetId);
|
|
4597
|
-
},
|
|
4598
4651
|
// view presets
|
|
4599
4652
|
getViewPresets: function getViewPresets(params) {
|
|
4600
4653
|
return axiosInstance.get('/viewpreset', {
|
|
@@ -5013,7 +5066,9 @@ workspaceListener.startListening({
|
|
|
5013
5066
|
while (1) switch (_context11.prev = _context11.next) {
|
|
5014
5067
|
case 0:
|
|
5015
5068
|
payload = _ref10.payload;
|
|
5016
|
-
mosaicNodeId = payload.mosaicNodeId, componentType = payload.componentType, newId = payload.newId;
|
|
5069
|
+
mosaicNodeId = payload.mosaicNodeId, componentType = payload.componentType, newId = payload.newId; // TODO: this would be nice to move into the openlayers store
|
|
5070
|
+
createViewObjectForNewMap(mosaicNodeId, newId);
|
|
5071
|
+
// Note, at some point these might no longer be necessary
|
|
5017
5072
|
bbox = mapSelectors.getBbox(listenerApi.getState(), mosaicNodeId);
|
|
5018
5073
|
srs = mapSelectors.getSrs(listenerApi.getState(), mosaicNodeId);
|
|
5019
5074
|
mapPreset = bbox.bottom ? {
|
|
@@ -5030,7 +5085,7 @@ workspaceListener.startListening({
|
|
|
5030
5085
|
syncGroupsIds: []
|
|
5031
5086
|
}
|
|
5032
5087
|
}));
|
|
5033
|
-
case
|
|
5088
|
+
case 7:
|
|
5034
5089
|
case "end":
|
|
5035
5090
|
return _context11.stop();
|
|
5036
5091
|
}
|
|
@@ -5071,34 +5126,6 @@ workspaceListener.startListening({
|
|
|
5071
5126
|
}()
|
|
5072
5127
|
});
|
|
5073
5128
|
|
|
5074
|
-
/* *
|
|
5075
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5076
|
-
* you may not use this file except in compliance with the License.
|
|
5077
|
-
* You may obtain a copy of the License at
|
|
5078
|
-
*
|
|
5079
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5080
|
-
*
|
|
5081
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5082
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5083
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5084
|
-
* See the License for the specific language governing permissions and
|
|
5085
|
-
* limitations under the License.
|
|
5086
|
-
*
|
|
5087
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5088
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
5089
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5090
|
-
* */
|
|
5091
|
-
var WorkspaceListErrorCategory;
|
|
5092
|
-
(function (WorkspaceListErrorCategory) {
|
|
5093
|
-
WorkspaceListErrorCategory["AUTH"] = "AUTH";
|
|
5094
|
-
WorkspaceListErrorCategory["GENERIC"] = "GENERIC";
|
|
5095
|
-
})(WorkspaceListErrorCategory || (WorkspaceListErrorCategory = {}));
|
|
5096
|
-
var WorkspaceListErrorType;
|
|
5097
|
-
(function (WorkspaceListErrorType) {
|
|
5098
|
-
WorkspaceListErrorType["TRANSLATABLE_ERROR"] = "TRANSLATABLE_ERROR";
|
|
5099
|
-
WorkspaceListErrorType["VERBATIM_ERROR"] = "VERBATIM_ERROR";
|
|
5100
|
-
})(WorkspaceListErrorType || (WorkspaceListErrorType = {}));
|
|
5101
|
-
|
|
5102
5129
|
/* *
|
|
5103
5130
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5104
5131
|
* you may not use this file except in compliance with the License.
|
|
@@ -5117,7 +5144,7 @@ var WorkspaceListErrorType;
|
|
|
5117
5144
|
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5118
5145
|
* */
|
|
5119
5146
|
var getWorkspaceListStore = function getWorkspaceListStore(store) {
|
|
5120
|
-
if (store && store.workspaceList) {
|
|
5147
|
+
if (store != null && store.workspaceList) {
|
|
5121
5148
|
return store.workspaceList;
|
|
5122
5149
|
}
|
|
5123
5150
|
return null;
|
|
@@ -5146,6 +5173,10 @@ var getWorkspaceListError = createSelector(getWorkspaceListStore, function (stor
|
|
|
5146
5173
|
}, function (state) {
|
|
5147
5174
|
return (state == null ? void 0 : state.error) || undefined;
|
|
5148
5175
|
}, selectorMemoizationOptions);
|
|
5176
|
+
var getWorkspaceActionFormValues = createSelector(getWorkspaceListStore, function (store) {
|
|
5177
|
+
var _store$workspaceActio;
|
|
5178
|
+
return ((_store$workspaceActio = store.workspaceActionDialog) == null ? void 0 : _store$workspaceActio.formValues) || {};
|
|
5179
|
+
}, selectorMemoizationOptions);
|
|
5149
5180
|
var getWorkspaceActionDialogDetails = createSelector(getWorkspaceListStore, getWorkspaceState, getViewPresetsStore, function (workspaceListState, workspaceState, viewpresetState) {
|
|
5150
5181
|
var dialog = (workspaceListState == null ? void 0 : workspaceListState.workspaceActionDialog) || false;
|
|
5151
5182
|
if (dialog) {
|
|
@@ -5530,16 +5561,18 @@ workspaceListListener.startListening({
|
|
|
5530
5561
|
actionCreator: workspaceListActions.onSuccessWorkspacePresetAction,
|
|
5531
5562
|
effect: function () {
|
|
5532
5563
|
var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
|
|
5533
|
-
var
|
|
5564
|
+
var _listenerApi$getOrigi;
|
|
5565
|
+
var payload, currentWorkspaceId, action, workspaceId, title, workspaceFilters, searchQuery;
|
|
5534
5566
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
5535
5567
|
while (1) switch (_context2.prev = _context2.next) {
|
|
5536
5568
|
case 0:
|
|
5537
5569
|
payload = _ref2.payload;
|
|
5538
5570
|
listenerApi.cancelActiveListeners();
|
|
5571
|
+
currentWorkspaceId = (_listenerApi$getOrigi = listenerApi.getOriginalState().workspace) == null ? void 0 : _listenerApi$getOrigi.id;
|
|
5539
5572
|
action = payload.action, workspaceId = payload.workspaceId, title = payload.title;
|
|
5540
5573
|
listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage$1(action, title)));
|
|
5541
5574
|
// if active workspace has been deleted, empty out url
|
|
5542
|
-
if ((action === WorkspacePresetAction.DELETE || action === WorkspacePresetAction.DELETE_SYSTEM_PRESET) &&
|
|
5575
|
+
if ((action === WorkspacePresetAction.DELETE || action === WorkspacePresetAction.DELETE_SYSTEM_PRESET) && currentWorkspaceId && workspaceId === currentWorkspaceId) {
|
|
5543
5576
|
listenerApi.dispatch(routerActions.navigateToUrl({
|
|
5544
5577
|
url: getWorkspaceRouteUrl()
|
|
5545
5578
|
}));
|
|
@@ -5554,7 +5587,7 @@ workspaceListListener.startListening({
|
|
|
5554
5587
|
workspaceFilters = getWorkspaceListFilters(listenerApi.getState());
|
|
5555
5588
|
searchQuery = getWorkspaceListSearchQuery(listenerApi.getState());
|
|
5556
5589
|
listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)));
|
|
5557
|
-
case
|
|
5590
|
+
case 10:
|
|
5558
5591
|
case "end":
|
|
5559
5592
|
return _context2.stop();
|
|
5560
5593
|
}
|
|
@@ -5570,7 +5603,7 @@ workspaceListListener.startListening({
|
|
|
5570
5603
|
actionCreator: workspaceListActions.submitFormWorkspaceActionDialogOptions,
|
|
5571
5604
|
effect: function () {
|
|
5572
5605
|
var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref3, listenerApi) {
|
|
5573
|
-
var payload, workspaceApi, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope,
|
|
5606
|
+
var payload, workspaceApi, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, viewPresetResults, hasError, workspaceData, newWorkspace, message, category;
|
|
5574
5607
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
5575
5608
|
while (1) switch (_context4.prev = _context4.next) {
|
|
5576
5609
|
case 0:
|
|
@@ -5580,73 +5613,26 @@ workspaceListListener.startListening({
|
|
|
5580
5613
|
_context4.prev = 3;
|
|
5581
5614
|
presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle;
|
|
5582
5615
|
scope = data.scope || 'user'; // duplicate
|
|
5583
|
-
if (
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
isNewWorkspace = presetId === getEmptyMapWorkspace().id;
|
|
5588
|
-
if (!isNewWorkspace) {
|
|
5589
|
-
_context4.next = 12;
|
|
5590
|
-
break;
|
|
5591
|
-
}
|
|
5592
|
-
_context4.t0 = {
|
|
5593
|
-
data: emptyWorkspaceBEData
|
|
5594
|
-
};
|
|
5595
|
-
_context4.next = 15;
|
|
5596
|
-
break;
|
|
5597
|
-
case 12:
|
|
5598
|
-
_context4.next = 14;
|
|
5599
|
-
return workspaceApi.getWorkspacePreset(presetId);
|
|
5600
|
-
case 14:
|
|
5601
|
-
_context4.t0 = _context4.sent;
|
|
5602
|
-
case 15:
|
|
5603
|
-
_ref4 = _context4.t0;
|
|
5604
|
-
presetToDuplicate = _ref4.data;
|
|
5605
|
-
fullPreset = Object.assign({}, presetToDuplicate, data);
|
|
5606
|
-
_context4.next = 20;
|
|
5607
|
-
return workspaceApi.saveWorkspacePresetAs(fullPreset);
|
|
5608
|
-
case 20:
|
|
5609
|
-
newId = _context4.sent;
|
|
5610
|
-
listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
5611
|
-
workspaceId: newId,
|
|
5612
|
-
action: presetAction,
|
|
5613
|
-
title: data.title,
|
|
5614
|
-
scope: scope
|
|
5615
|
-
}));
|
|
5616
|
-
case 22:
|
|
5617
|
-
if (!(presetAction === WorkspacePresetAction.DELETE || presetAction === WorkspacePresetAction.DELETE_SYSTEM_PRESET)) {
|
|
5618
|
-
_context4.next = 27;
|
|
5619
|
-
break;
|
|
5620
|
-
}
|
|
5621
|
-
_context4.next = 25;
|
|
5622
|
-
return workspaceApi.deleteWorkspacePreset(presetId);
|
|
5623
|
-
case 25:
|
|
5624
|
-
selectedWorkspace = getWorkspaceState(listenerApi.getState());
|
|
5625
|
-
listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
5626
|
-
workspaceId: presetId,
|
|
5627
|
-
action: presetAction,
|
|
5628
|
-
title: data.title,
|
|
5629
|
-
currentActiveWorkspaceId: selectedWorkspace.id,
|
|
5630
|
-
scope: scope,
|
|
5631
|
-
emptyWorkspacePresetTitle: emptyWorkspacePresetTitle
|
|
5632
|
-
}));
|
|
5633
|
-
case 27:
|
|
5616
|
+
if (presetAction === WorkspacePresetAction.DUPLICATE) ;
|
|
5617
|
+
// delete
|
|
5618
|
+
if (presetAction === WorkspacePresetAction.DELETE || presetAction === WorkspacePresetAction.DELETE_SYSTEM_PRESET) ;
|
|
5619
|
+
// edit
|
|
5634
5620
|
if (!(presetAction === WorkspacePresetAction.EDIT)) {
|
|
5635
|
-
_context4.next =
|
|
5621
|
+
_context4.next = 17;
|
|
5636
5622
|
break;
|
|
5637
5623
|
}
|
|
5638
|
-
_context4.next =
|
|
5624
|
+
_context4.next = 11;
|
|
5639
5625
|
return workspaceApi.getWorkspacePreset(presetId);
|
|
5640
|
-
case
|
|
5626
|
+
case 11:
|
|
5641
5627
|
_yield$workspaceApi$g2 = _context4.sent;
|
|
5642
5628
|
originalData = _yield$workspaceApi$g2.data;
|
|
5643
5629
|
workspaceDataNewTitle = Object.assign({}, originalData, {
|
|
5644
5630
|
title: data.title,
|
|
5645
5631
|
"abstract": data["abstract"]
|
|
5646
5632
|
});
|
|
5647
|
-
_context4.next =
|
|
5633
|
+
_context4.next = 16;
|
|
5648
5634
|
return workspaceApi.saveWorkspacePreset(presetId, workspaceDataNewTitle);
|
|
5649
|
-
case
|
|
5635
|
+
case 16:
|
|
5650
5636
|
listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
5651
5637
|
workspaceId: presetId,
|
|
5652
5638
|
action: presetAction,
|
|
@@ -5654,39 +5640,39 @@ workspaceListListener.startListening({
|
|
|
5654
5640
|
"abstract": data["abstract"],
|
|
5655
5641
|
scope: scope
|
|
5656
5642
|
}));
|
|
5657
|
-
case
|
|
5643
|
+
case 17:
|
|
5658
5644
|
// save (as) user/system presets
|
|
5659
5645
|
isSaveWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET || presetAction === WorkspacePresetAction.SAVE;
|
|
5660
5646
|
isSaveAsWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || presetAction === WorkspacePresetAction.SAVE_AS;
|
|
5661
5647
|
if (!(isSaveWorkspaceAction || isSaveAsWorkspaceAction)) {
|
|
5662
|
-
_context4.next =
|
|
5648
|
+
_context4.next = 43;
|
|
5663
5649
|
break;
|
|
5664
5650
|
}
|
|
5665
5651
|
hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(listenerApi.getState());
|
|
5666
5652
|
workspaceId = presetId;
|
|
5667
5653
|
if (!(!hasWorkspaceAlreadyBeenSaved && isSaveAsWorkspaceAction)) {
|
|
5668
|
-
_context4.next =
|
|
5654
|
+
_context4.next = 26;
|
|
5669
5655
|
break;
|
|
5670
5656
|
}
|
|
5671
|
-
_context4.next =
|
|
5657
|
+
_context4.next = 25;
|
|
5672
5658
|
return workspaceApi.saveWorkspacePresetAs(data);
|
|
5673
|
-
case
|
|
5659
|
+
case 25:
|
|
5674
5660
|
workspaceId = _context4.sent;
|
|
5675
|
-
case
|
|
5661
|
+
case 26:
|
|
5676
5662
|
if (!isSaveWorkspaceAction) {
|
|
5677
|
-
_context4.next =
|
|
5663
|
+
_context4.next = 29;
|
|
5678
5664
|
break;
|
|
5679
5665
|
}
|
|
5680
|
-
_context4.next =
|
|
5666
|
+
_context4.next = 29;
|
|
5681
5667
|
return workspaceApi.saveWorkspacePreset(workspaceId, data);
|
|
5682
|
-
case
|
|
5668
|
+
case 29:
|
|
5683
5669
|
// lock the workspace
|
|
5684
5670
|
listenerApi.dispatch(workspaceListActions.onSuccessWorkspaceSaveDialog({
|
|
5685
5671
|
presetId: workspaceId
|
|
5686
5672
|
}));
|
|
5687
|
-
_context4.next =
|
|
5673
|
+
_context4.next = 32;
|
|
5688
5674
|
return Promise.all(data.views.map( /*#__PURE__*/function () {
|
|
5689
|
-
var
|
|
5675
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(view) {
|
|
5690
5676
|
var viewPresetEntity, shouldUpdateView, canUpdateView, _payload, _payload2;
|
|
5691
5677
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
5692
5678
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -5735,16 +5721,16 @@ workspaceListListener.startListening({
|
|
|
5735
5721
|
}, _callee3);
|
|
5736
5722
|
}));
|
|
5737
5723
|
return function (_x7) {
|
|
5738
|
-
return
|
|
5724
|
+
return _ref4.apply(this, arguments);
|
|
5739
5725
|
};
|
|
5740
5726
|
}()));
|
|
5741
|
-
case
|
|
5727
|
+
case 32:
|
|
5742
5728
|
viewPresetResults = _context4.sent;
|
|
5743
5729
|
hasError = viewPresetResults.find(function (view) {
|
|
5744
5730
|
return view.message;
|
|
5745
5731
|
});
|
|
5746
5732
|
if (!hasError) {
|
|
5747
|
-
_context4.next =
|
|
5733
|
+
_context4.next = 37;
|
|
5748
5734
|
break;
|
|
5749
5735
|
}
|
|
5750
5736
|
// maybe we can use another action, but this resets fetching of the form
|
|
@@ -5752,7 +5738,7 @@ workspaceListListener.startListening({
|
|
|
5752
5738
|
error: undefined
|
|
5753
5739
|
}));
|
|
5754
5740
|
return _context4.abrupt("return");
|
|
5755
|
-
case
|
|
5741
|
+
case 37:
|
|
5756
5742
|
workspaceData = getWorkspaceData(listenerApi.getState());
|
|
5757
5743
|
newWorkspace = Object.assign({}, workspaceData, {
|
|
5758
5744
|
id: workspaceId,
|
|
@@ -5760,9 +5746,9 @@ workspaceListListener.startListening({
|
|
|
5760
5746
|
"abstract": data["abstract"],
|
|
5761
5747
|
scope: scope
|
|
5762
5748
|
});
|
|
5763
|
-
_context4.next =
|
|
5749
|
+
_context4.next = 41;
|
|
5764
5750
|
return workspaceApi.saveWorkspacePreset(workspaceId, newWorkspace);
|
|
5765
|
-
case
|
|
5751
|
+
case 41:
|
|
5766
5752
|
listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
5767
5753
|
action: presetAction,
|
|
5768
5754
|
workspaceId: workspaceId,
|
|
@@ -5773,7 +5759,7 @@ workspaceListListener.startListening({
|
|
|
5773
5759
|
listenerApi.dispatch(routerActions.navigateToUrl({
|
|
5774
5760
|
url: getWorkspaceRouteUrl(workspaceId)
|
|
5775
5761
|
}));
|
|
5776
|
-
case
|
|
5762
|
+
case 43:
|
|
5777
5763
|
// Reset
|
|
5778
5764
|
if (presetAction === WorkspacePresetAction.RESET) {
|
|
5779
5765
|
// In case we're resetting the `New workspace` preset
|
|
@@ -5796,13 +5782,13 @@ workspaceListListener.startListening({
|
|
|
5796
5782
|
scope: scope
|
|
5797
5783
|
}));
|
|
5798
5784
|
}
|
|
5799
|
-
_context4.next =
|
|
5785
|
+
_context4.next = 51;
|
|
5800
5786
|
break;
|
|
5801
|
-
case
|
|
5802
|
-
_context4.prev =
|
|
5803
|
-
_context4.
|
|
5804
|
-
message = isAxiosError$1(_context4.
|
|
5805
|
-
category = isAxiosAuthError(_context4.
|
|
5787
|
+
case 46:
|
|
5788
|
+
_context4.prev = 46;
|
|
5789
|
+
_context4.t0 = _context4["catch"](3);
|
|
5790
|
+
message = isAxiosError$1(_context4.t0) ? getAxiosErrorMessage(_context4.t0) : _context4.t0.message;
|
|
5791
|
+
category = isAxiosAuthError(_context4.t0) ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC;
|
|
5806
5792
|
listenerApi.dispatch(workspaceListActions.onErrorWorkspacePresetAction({
|
|
5807
5793
|
error: {
|
|
5808
5794
|
type: WorkspaceListErrorType.VERBATIM_ERROR,
|
|
@@ -5810,11 +5796,11 @@ workspaceListListener.startListening({
|
|
|
5810
5796
|
message: message
|
|
5811
5797
|
}
|
|
5812
5798
|
}));
|
|
5813
|
-
case
|
|
5799
|
+
case 51:
|
|
5814
5800
|
case "end":
|
|
5815
5801
|
return _context4.stop();
|
|
5816
5802
|
}
|
|
5817
|
-
}, _callee4, null, [[3,
|
|
5803
|
+
}, _callee4, null, [[3, 46]]);
|
|
5818
5804
|
}));
|
|
5819
5805
|
function effect(_x5, _x6) {
|
|
5820
5806
|
return _effect3.apply(this, arguments);
|
|
@@ -5980,7 +5966,7 @@ var workspaceReducersMap = {
|
|
|
5980
5966
|
timeSeries: timeSeriesReducer,
|
|
5981
5967
|
snackbar: snackbarReducer
|
|
5982
5968
|
};
|
|
5983
|
-
var workspaceMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, syncGroupsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware, viewPresetsListener.middleware, snackbarListener.middleware];
|
|
5969
|
+
var workspaceMiddlewares = [mapListener.middleware, serviceListener.middleware, layersListener.middleware, syncGroupsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware, viewPresetsListener.middleware, snackbarListener.middleware, openlayersListener.middleware];
|
|
5984
5970
|
var workspaceRootReducer = combineReducers(workspaceReducersMap);
|
|
5985
5971
|
var createMockStore = function createMockStore(mockState) {
|
|
5986
5972
|
return configureStore({
|
|
@@ -6029,32 +6015,27 @@ var defaultAuthConfig = {
|
|
|
6029
6015
|
},
|
|
6030
6016
|
sessionStorageProvider: null
|
|
6031
6017
|
};
|
|
6032
|
-
|
|
6018
|
+
// wrapper without theme and i18n
|
|
6019
|
+
var WorkspaceStoreWrapper = function WorkspaceStoreWrapper(_ref3) {
|
|
6033
6020
|
var children = _ref3.children,
|
|
6034
6021
|
_ref3$store = _ref3.store,
|
|
6035
6022
|
store = _ref3$store === void 0 ? createMockStore() : _ref3$store,
|
|
6036
6023
|
_ref3$createApi = _ref3.createApi,
|
|
6037
6024
|
createApi$1 = _ref3$createApi === void 0 ? createApi : _ref3$createApi,
|
|
6038
|
-
theme = _ref3.theme,
|
|
6039
6025
|
_ref3$auth = _ref3.auth,
|
|
6040
6026
|
auth = _ref3$auth === void 0 ? defaultAuthConfig : _ref3$auth;
|
|
6041
|
-
return jsx(
|
|
6042
|
-
|
|
6043
|
-
|
|
6044
|
-
|
|
6045
|
-
|
|
6046
|
-
|
|
6047
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
children: jsx(
|
|
6052
|
-
|
|
6053
|
-
children: jsx(SnackbarWrapperConnect, {
|
|
6054
|
-
children: jsx(ConfirmationServiceProvider, {
|
|
6055
|
-
children: children
|
|
6056
|
-
})
|
|
6057
|
-
})
|
|
6027
|
+
return jsx(AuthenticationProvider, {
|
|
6028
|
+
value: auth,
|
|
6029
|
+
children: jsx(QueryClientProvider, {
|
|
6030
|
+
client: queryClient,
|
|
6031
|
+
children: jsx(ApiProvider, {
|
|
6032
|
+
createApi: createApi$1,
|
|
6033
|
+
name: API_NAME,
|
|
6034
|
+
children: jsx(Provider, {
|
|
6035
|
+
store: store,
|
|
6036
|
+
children: jsx(SnackbarWrapperConnect, {
|
|
6037
|
+
children: jsx(ConfirmationServiceProvider, {
|
|
6038
|
+
children: children
|
|
6058
6039
|
})
|
|
6059
6040
|
})
|
|
6060
6041
|
})
|
|
@@ -6062,8 +6043,29 @@ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithSto
|
|
|
6062
6043
|
})
|
|
6063
6044
|
});
|
|
6064
6045
|
};
|
|
6065
|
-
var
|
|
6066
|
-
var children = _ref4.children
|
|
6046
|
+
var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithStore(_ref4) {
|
|
6047
|
+
var children = _ref4.children,
|
|
6048
|
+
_ref4$store = _ref4.store,
|
|
6049
|
+
store = _ref4$store === void 0 ? createMockStore() : _ref4$store,
|
|
6050
|
+
_ref4$createApi = _ref4.createApi,
|
|
6051
|
+
createApi$1 = _ref4$createApi === void 0 ? createApi : _ref4$createApi,
|
|
6052
|
+
theme = _ref4.theme,
|
|
6053
|
+
_ref4$auth = _ref4.auth,
|
|
6054
|
+
auth = _ref4$auth === void 0 ? defaultAuthConfig : _ref4$auth;
|
|
6055
|
+
return jsx(WorkspaceThemeProvider, {
|
|
6056
|
+
theme: theme,
|
|
6057
|
+
children: jsx(WorkspaceI18nProvider, {
|
|
6058
|
+
children: jsx(WorkspaceStoreWrapper, {
|
|
6059
|
+
store: store,
|
|
6060
|
+
createApi: createApi$1,
|
|
6061
|
+
auth: auth,
|
|
6062
|
+
children: children
|
|
6063
|
+
})
|
|
6064
|
+
})
|
|
6065
|
+
});
|
|
6066
|
+
};
|
|
6067
|
+
var WorkspaceI18nProvider = function WorkspaceI18nProvider(_ref5) {
|
|
6068
|
+
var children = _ref5.children;
|
|
6067
6069
|
initWorkspaceTestI18n();
|
|
6068
6070
|
return jsx(I18nextProvider, {
|
|
6069
6071
|
i18n: i18n,
|
|
@@ -6483,6 +6485,12 @@ var getPresetIcon = function getPresetIcon(preset) {
|
|
|
6483
6485
|
});
|
|
6484
6486
|
}
|
|
6485
6487
|
};
|
|
6488
|
+
var ShareIcon = styled(ListItemIcon)(function () {
|
|
6489
|
+
return {
|
|
6490
|
+
minWidth: '32px !important',
|
|
6491
|
+
paddingTop: '3px'
|
|
6492
|
+
};
|
|
6493
|
+
});
|
|
6486
6494
|
var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
|
|
6487
6495
|
var workspacePreset = _ref.workspacePreset,
|
|
6488
6496
|
isSelected = _ref.isSelected,
|
|
@@ -6498,34 +6506,40 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
|
|
|
6498
6506
|
searchQuery = _ref$searchQuery === void 0 ? '' : _ref$searchQuery,
|
|
6499
6507
|
_ref$testIdPrefix = _ref.testIdPrefix,
|
|
6500
6508
|
testIdPrefix = _ref$testIdPrefix === void 0 ? 'workspace' : _ref$testIdPrefix;
|
|
6509
|
+
var _useAuthenticationCon = useAuthenticationContext(),
|
|
6510
|
+
auth = _useAuthenticationCon.auth;
|
|
6501
6511
|
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
6502
6512
|
t = _useWorkspaceTranslat.t;
|
|
6503
|
-
var
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6509
|
-
|
|
6510
|
-
|
|
6513
|
+
var shareIcon = React__default.useMemo(function () {
|
|
6514
|
+
if (workspacePreset.is_shared) {
|
|
6515
|
+
if (workspacePreset.username === (auth == null ? void 0 : auth.username)) {
|
|
6516
|
+
return jsx(SharedPresetsMyUser, {});
|
|
6517
|
+
}
|
|
6518
|
+
return jsx(SharedPresetsOtherUsers, {});
|
|
6519
|
+
}
|
|
6520
|
+
return null;
|
|
6521
|
+
}, [workspacePreset.is_shared, workspacePreset.username, auth == null ? void 0 : auth.username]);
|
|
6522
|
+
var _onClick = function onClick(action) {
|
|
6523
|
+
return onClickWorkspacePresetOption(workspacePreset.id, action, workspacePreset);
|
|
6511
6524
|
};
|
|
6512
6525
|
var menuItems = [{
|
|
6513
6526
|
text: t('workspace-duplicate'),
|
|
6514
|
-
action:
|
|
6527
|
+
action: function action() {
|
|
6528
|
+
return _onClick(WorkspacePresetAction.DUPLICATE);
|
|
6529
|
+
}
|
|
6515
6530
|
}];
|
|
6516
6531
|
(workspacePreset.scope === PresetScope.user || isAdmin) && menuItems.push({
|
|
6517
6532
|
text: t('workspace-edit'),
|
|
6518
|
-
action:
|
|
6519
|
-
|
|
6520
|
-
|
|
6521
|
-
text: t('workspace-share'),
|
|
6522
|
-
action: onShare,
|
|
6523
|
-
isDisabled: true
|
|
6533
|
+
action: function action() {
|
|
6534
|
+
return _onClick(WorkspacePresetAction.EDIT);
|
|
6535
|
+
}
|
|
6524
6536
|
});
|
|
6525
|
-
workspacePreset.scope === PresetScope.
|
|
6526
|
-
text: t('workspace-stop-share'),
|
|
6527
|
-
action:
|
|
6528
|
-
|
|
6537
|
+
workspacePreset.scope === PresetScope.user && (auth == null ? void 0 : auth.username) === workspacePreset.username && menuItems.push({
|
|
6538
|
+
text: workspacePreset.is_shared ? t('workspace-stop-share') : t('workspace-share'),
|
|
6539
|
+
action: function action() {
|
|
6540
|
+
return _onClick(WorkspacePresetAction.SHARE);
|
|
6541
|
+
},
|
|
6542
|
+
isDisabled: false
|
|
6529
6543
|
});
|
|
6530
6544
|
return jsx(ListItem, {
|
|
6531
6545
|
disablePadding: true,
|
|
@@ -6563,6 +6577,8 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
|
|
|
6563
6577
|
"aria-label": testIdPrefix,
|
|
6564
6578
|
children: [jsx(ListItemIcon, {
|
|
6565
6579
|
children: getPresetIcon(workspacePreset)
|
|
6580
|
+
}), shareIcon && jsx(ShareIcon, {
|
|
6581
|
+
children: shareIcon
|
|
6566
6582
|
}), jsx(CustomTooltip, {
|
|
6567
6583
|
title: workspacePreset.title,
|
|
6568
6584
|
children: jsx(ListItemText, {
|
|
@@ -6594,7 +6610,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
|
|
|
6594
6610
|
tooltipTitle: t('workspace-delete-tooltip'),
|
|
6595
6611
|
onClick: function onClick(event) {
|
|
6596
6612
|
event.stopPropagation();
|
|
6597
|
-
|
|
6613
|
+
_onClick(isAdmin ? WorkspacePresetAction.DELETE_SYSTEM_PRESET : WorkspacePresetAction.DELETE);
|
|
6598
6614
|
},
|
|
6599
6615
|
variant: "tool",
|
|
6600
6616
|
sx: {
|
|
@@ -7669,17 +7685,69 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
|
|
|
7669
7685
|
});
|
|
7670
7686
|
};
|
|
7671
7687
|
|
|
7688
|
+
/* *
|
|
7689
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7690
|
+
* you may not use this file except in compliance with the License.
|
|
7691
|
+
* You may obtain a copy of the License at
|
|
7692
|
+
*
|
|
7693
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
7694
|
+
*
|
|
7695
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7696
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
7697
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7698
|
+
* See the License for the specific language governing permissions and
|
|
7699
|
+
* limitations under the License.
|
|
7700
|
+
*
|
|
7701
|
+
* Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
7702
|
+
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
7703
|
+
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
7704
|
+
* */
|
|
7705
|
+
var config = getConfig();
|
|
7706
|
+
var presetBaseUrl = (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
|
|
7707
|
+
var getWorkspace = function getWorkspace(workspaceId, auth) {
|
|
7708
|
+
return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
|
|
7709
|
+
headers: getHeaders(auth)
|
|
7710
|
+
}).then(handleResponse);
|
|
7711
|
+
};
|
|
7712
|
+
var deleteWorkspace = function deleteWorkspace(workspaceId, auth) {
|
|
7713
|
+
return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
|
|
7714
|
+
headers: getHeaders(auth),
|
|
7715
|
+
method: 'DELETE'
|
|
7716
|
+
}).then(handleResponse);
|
|
7717
|
+
};
|
|
7718
|
+
var updateWorkspace = function updateWorkspace(workspaceId, data, auth) {
|
|
7719
|
+
return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
|
|
7720
|
+
headers: getHeaders(auth),
|
|
7721
|
+
method: 'PUT',
|
|
7722
|
+
body: JSON.stringify(data)
|
|
7723
|
+
}).then(handleResponse);
|
|
7724
|
+
};
|
|
7725
|
+
var createWorkspace = function createWorkspace(data, auth) {
|
|
7726
|
+
return fetch(presetBaseUrl + "/workspacepreset", {
|
|
7727
|
+
headers: getHeaders(auth),
|
|
7728
|
+
method: 'POST',
|
|
7729
|
+
body: JSON.stringify(data)
|
|
7730
|
+
}).then(handleResponse);
|
|
7731
|
+
};
|
|
7732
|
+
|
|
7672
7733
|
var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
7673
7734
|
var _useAuthenticationCon = useAuthenticationContext(),
|
|
7674
|
-
currentRole = _useAuthenticationCon.currentRole
|
|
7735
|
+
currentRole = _useAuthenticationCon.currentRole,
|
|
7736
|
+
isLoggedIn = _useAuthenticationCon.isLoggedIn,
|
|
7737
|
+
auth = _useAuthenticationCon.auth;
|
|
7738
|
+
var username = (auth == null ? void 0 : auth.username) || '';
|
|
7739
|
+
var workspacePresets = useSelector(function (store) {
|
|
7740
|
+
return getWorkspaceList(store);
|
|
7741
|
+
});
|
|
7742
|
+
var selectedFilters = useSelector(getWorkspaceListFilters);
|
|
7743
|
+
var filteredPresets = React.useMemo(function () {
|
|
7744
|
+
return filterWorkspacePresets(workspacePresets, selectedFilters, username);
|
|
7745
|
+
}, [workspacePresets, selectedFilters, username]);
|
|
7675
7746
|
var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
|
|
7676
7747
|
var scope = !isAdmin ? 'user' : 'system';
|
|
7677
7748
|
var currentView = useSelector(function (store) {
|
|
7678
7749
|
return getWorkspaceState(store);
|
|
7679
7750
|
});
|
|
7680
|
-
var workspacePresets = useSelector(function (store) {
|
|
7681
|
-
return getWorkspaceList(store);
|
|
7682
|
-
});
|
|
7683
7751
|
var workspaceListFilters = useSelector(function (store) {
|
|
7684
7752
|
return getWorkspaceListFilters(store, scope);
|
|
7685
7753
|
});
|
|
@@ -7692,15 +7760,13 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7692
7760
|
var error = useSelector(function (store) {
|
|
7693
7761
|
return getWorkspaceListError(store);
|
|
7694
7762
|
});
|
|
7695
|
-
var _useAuthenticationCon2 = useAuthenticationContext(),
|
|
7696
|
-
isLoggedIn = _useAuthenticationCon2.isLoggedIn;
|
|
7697
7763
|
var dispatch = useDispatch();
|
|
7698
7764
|
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
7699
7765
|
t = _useWorkspaceTranslat.t;
|
|
7700
7766
|
var fetchWorkspaceList = React.useCallback(function () {
|
|
7701
|
-
var filterParams = constructFilterParams(
|
|
7767
|
+
var filterParams = constructFilterParams([], workspaceSearchQuery);
|
|
7702
7768
|
dispatch(workspaceListActions.fetchWorkspaceList(filterParams));
|
|
7703
|
-
}, [dispatch,
|
|
7769
|
+
}, [dispatch, workspaceSearchQuery]);
|
|
7704
7770
|
var fetchWorkspace = React.useCallback(function (workspaceId) {
|
|
7705
7771
|
dispatch(workspaceActions.fetchWorkspace({
|
|
7706
7772
|
workspaceId: workspaceId
|
|
@@ -7802,6 +7868,13 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7802
7868
|
}
|
|
7803
7869
|
case WorkspacePresetAction.SHARE:
|
|
7804
7870
|
{
|
|
7871
|
+
void getWorkspace(presetId, auth).then(function (preset) {
|
|
7872
|
+
return void updateWorkspace(presetId, Object.assign({}, preset, {
|
|
7873
|
+
is_shared: !preset.is_shared
|
|
7874
|
+
}), auth).then(function () {
|
|
7875
|
+
fetchWorkspaceList();
|
|
7876
|
+
});
|
|
7877
|
+
});
|
|
7805
7878
|
// TODO
|
|
7806
7879
|
break;
|
|
7807
7880
|
}
|
|
@@ -7855,7 +7928,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect() {
|
|
|
7855
7928
|
searchQuery: workspaceSearchQuery,
|
|
7856
7929
|
onSearch: searchFilter
|
|
7857
7930
|
}), jsx(WorkspaceSelectList, {
|
|
7858
|
-
workspacePresets:
|
|
7931
|
+
workspacePresets: filteredPresets,
|
|
7859
7932
|
currentSelectedId: currentView.id || '',
|
|
7860
7933
|
onClickWorkspacePreset: onClickWorkspacePreset,
|
|
7861
7934
|
onClickWorkspacePresetOption: onClickWorkspacePresetOption,
|
|
@@ -7958,54 +8031,73 @@ var WorkspaceMenuButton = function WorkspaceMenuButton(_ref) {
|
|
|
7958
8031
|
});
|
|
7959
8032
|
};
|
|
7960
8033
|
|
|
7961
|
-
|
|
8034
|
+
/* *
|
|
8035
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8036
|
+
* you may not use this file except in compliance with the License.
|
|
8037
|
+
* You may obtain a copy of the License at
|
|
8038
|
+
*
|
|
8039
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8040
|
+
*
|
|
8041
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
8042
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8043
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8044
|
+
* See the License for the specific language governing permissions and
|
|
8045
|
+
* limitations under the License.
|
|
8046
|
+
*
|
|
8047
|
+
* Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
8048
|
+
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
8049
|
+
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
8050
|
+
* */
|
|
8051
|
+
var useFetchWorkspacePresets = function useFetchWorkspacePresets() {
|
|
7962
8052
|
var dispatch = useDispatch();
|
|
7963
8053
|
var _useAuthenticationCon = useAuthenticationContext(),
|
|
7964
8054
|
currentRole = _useAuthenticationCon.currentRole;
|
|
7965
8055
|
var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
|
|
7966
|
-
var scope = !isAdmin ? 'user' : 'system';
|
|
7967
8056
|
var lastAdmin = usePrevious(isAdmin);
|
|
7968
|
-
var workspaceListFilters = useSelector(function (store) {
|
|
7969
|
-
return getWorkspaceListFilters(store, scope);
|
|
7970
|
-
});
|
|
7971
8057
|
var workspaceSearchQuery = useSelector(getWorkspaceListSearchQuery);
|
|
7972
|
-
var
|
|
8058
|
+
var prevSearch = usePrevious(workspaceSearchQuery);
|
|
8059
|
+
var fetchWorkspacePresets = useCallback(function (params) {
|
|
7973
8060
|
dispatch(workspaceListActions.fetchWorkspaceList(params));
|
|
7974
8061
|
}, [dispatch]);
|
|
7975
|
-
|
|
7976
|
-
|
|
7977
|
-
|
|
7978
|
-
|
|
7979
|
-
|
|
8062
|
+
useEffect(function () {
|
|
8063
|
+
if (workspaceSearchQuery !== prevSearch) {
|
|
8064
|
+
workspaceSearchQuery.trim() === '' ? fetchWorkspacePresets({}) : fetchWorkspacePresets({
|
|
8065
|
+
search: workspaceSearchQuery
|
|
8066
|
+
});
|
|
8067
|
+
}
|
|
8068
|
+
}, [fetchWorkspacePresets, prevSearch, workspaceSearchQuery]);
|
|
8069
|
+
useEffect(function () {
|
|
7980
8070
|
if (isAdmin !== lastAdmin && lastAdmin !== undefined) {
|
|
7981
8071
|
// reset list filter when user changes role
|
|
7982
8072
|
var filters = [{
|
|
7983
8073
|
id: 'system',
|
|
7984
8074
|
isSelected: true
|
|
7985
8075
|
}, {
|
|
7986
|
-
id: '
|
|
8076
|
+
id: 'personal',
|
|
8077
|
+
isSelected: !isAdmin
|
|
8078
|
+
}, {
|
|
8079
|
+
id: 'shared',
|
|
7987
8080
|
isSelected: !isAdmin
|
|
7988
8081
|
}];
|
|
7989
8082
|
dispatch(workspaceListActions.setFilterChips(filters));
|
|
7990
8083
|
}
|
|
7991
8084
|
}, [dispatch, isAdmin, lastAdmin]);
|
|
7992
|
-
return null;
|
|
7993
8085
|
};
|
|
8086
|
+
|
|
7994
8087
|
var WorkspaceMenuButtonConnect = function WorkspaceMenuButtonConnect() {
|
|
7995
8088
|
var dispatch = useDispatch();
|
|
8089
|
+
var isWorkspaceListDialogOpen = useSelector(function (store) {
|
|
8090
|
+
return getIsWorkspaceListDialogOpen(store);
|
|
8091
|
+
});
|
|
8092
|
+
useFetchWorkspacePresets();
|
|
7996
8093
|
var setListDialogOpen = React__default.useCallback(function (isListDialogOpen) {
|
|
7997
8094
|
dispatch(workspaceListActions.toggleWorkspaceDialog({
|
|
7998
8095
|
isWorkspaceListDialogOpen: isListDialogOpen
|
|
7999
8096
|
}));
|
|
8000
8097
|
}, [dispatch]);
|
|
8001
|
-
|
|
8002
|
-
|
|
8003
|
-
|
|
8004
|
-
return jsxs(Fragment, {
|
|
8005
|
-
children: [jsx(FetchWorkspacePresets, {}), jsx(WorkspaceMenuButton, {
|
|
8006
|
-
showMenu: isWorkspaceListDialogOpen,
|
|
8007
|
-
onToggleDialog: setListDialogOpen
|
|
8008
|
-
})]
|
|
8098
|
+
return jsx(WorkspaceMenuButton, {
|
|
8099
|
+
showMenu: isWorkspaceListDialogOpen,
|
|
8100
|
+
onToggleDialog: setListDialogOpen
|
|
8009
8101
|
});
|
|
8010
8102
|
};
|
|
8011
8103
|
|
|
@@ -8323,7 +8415,8 @@ var WorkspaceViewPresetsFormFields = function WorkspaceViewPresetsFormFields(_re
|
|
|
8323
8415
|
};
|
|
8324
8416
|
|
|
8325
8417
|
var _excluded$3 = ["title", "abstract"];
|
|
8326
|
-
var
|
|
8418
|
+
var ERROR_DUPLICATE_TITLE_BE = 'Preset title already in use, please choose a different title';
|
|
8419
|
+
var ERROR_LONG_TITLE_BE = 'Preset title cannot exceed 100 characters';
|
|
8327
8420
|
var validateTitle$1 = function validateTitle(value) {
|
|
8328
8421
|
if (!value) {
|
|
8329
8422
|
return true;
|
|
@@ -8359,6 +8452,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
8359
8452
|
value: otherFormValues[name]
|
|
8360
8453
|
};
|
|
8361
8454
|
});
|
|
8455
|
+
var shouldShowTitleError = (error == null ? void 0 : error.type) === WorkspaceListErrorType.VERBATIM_ERROR && (error.message === ERROR_DUPLICATE_TITLE_BE || error.message === ERROR_LONG_TITLE_BE);
|
|
8362
8456
|
React__default.useEffect(function () {
|
|
8363
8457
|
// autoFocus
|
|
8364
8458
|
var field = document.querySelector("[name=\"" + titleField + "\"]");
|
|
@@ -8366,12 +8460,12 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
8366
8460
|
}, []);
|
|
8367
8461
|
React__default.useEffect(function () {
|
|
8368
8462
|
// set title error on title field
|
|
8369
|
-
if (
|
|
8463
|
+
if (shouldShowTitleError) {
|
|
8370
8464
|
setError(titleField, {
|
|
8371
8465
|
message: error.message
|
|
8372
8466
|
});
|
|
8373
8467
|
}
|
|
8374
|
-
}, [error, setError]);
|
|
8468
|
+
}, [error, setError, shouldShowTitleError]);
|
|
8375
8469
|
var onSubmitForm = function onSubmitForm(event) {
|
|
8376
8470
|
event.preventDefault();
|
|
8377
8471
|
onSubmit();
|
|
@@ -8381,7 +8475,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
8381
8475
|
var isDisabled = hasSavedWorkspace || isLoading;
|
|
8382
8476
|
var shouldShowViewPresetForm = action === WorkspacePresetAction.SAVE_SYSTEM_PRESET || action === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || action === WorkspacePresetAction.SAVE_AS || action === WorkspacePresetAction.SAVE;
|
|
8383
8477
|
return jsxs(Fragment, {
|
|
8384
|
-
children: [error && !
|
|
8478
|
+
children: [error && !shouldShowTitleError && jsx(Box, {
|
|
8385
8479
|
sx: {
|
|
8386
8480
|
marginBottom: 2
|
|
8387
8481
|
},
|
|
@@ -8406,7 +8500,7 @@ var WorkspacePresetsForm = function WorkspacePresetsForm(_ref) {
|
|
|
8406
8500
|
},
|
|
8407
8501
|
disabled: isDisabled,
|
|
8408
8502
|
defaultValue: title,
|
|
8409
|
-
error:
|
|
8503
|
+
error: shouldShowTitleError
|
|
8410
8504
|
})
|
|
8411
8505
|
}), jsx(ReactHookFormTextField, {
|
|
8412
8506
|
name: "abstract",
|
|
@@ -8617,12 +8711,104 @@ var WorkspacePresetsFormDialogWrapper = function WorkspacePresetsFormDialogWrapp
|
|
|
8617
8711
|
});
|
|
8618
8712
|
};
|
|
8619
8713
|
|
|
8714
|
+
/* *
|
|
8715
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8716
|
+
* you may not use this file except in compliance with the License.
|
|
8717
|
+
* You may obtain a copy of the License at
|
|
8718
|
+
*
|
|
8719
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8720
|
+
*
|
|
8721
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
8722
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8723
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8724
|
+
* See the License for the specific language governing permissions and
|
|
8725
|
+
* limitations under the License.
|
|
8726
|
+
*
|
|
8727
|
+
* Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
8728
|
+
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
8729
|
+
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
8730
|
+
* */
|
|
8731
|
+
var onWorkspaceApiError = function onWorkspaceApiError(dispatch, error, t) {
|
|
8732
|
+
dispatch(workspaceListActions.onErrorWorkspacePresetAction({
|
|
8733
|
+
error: {
|
|
8734
|
+
message: error.message + " " + t('workspace-error-generic'),
|
|
8735
|
+
type: WorkspaceListErrorType.VERBATIM_ERROR,
|
|
8736
|
+
category: error.message === 'Authentication context not found' ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC
|
|
8737
|
+
}
|
|
8738
|
+
}));
|
|
8739
|
+
};
|
|
8740
|
+
var useDeleteWorkspacePreset = function useDeleteWorkspacePreset() {
|
|
8741
|
+
var _useAuthenticationCon = useAuthenticationContext(),
|
|
8742
|
+
auth = _useAuthenticationCon.auth;
|
|
8743
|
+
var _useSelector = useSelector(getWorkspaceActionFormValues),
|
|
8744
|
+
title = _useSelector.title;
|
|
8745
|
+
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
8746
|
+
t = _useWorkspaceTranslat.t;
|
|
8747
|
+
var dispatch = useDispatch();
|
|
8748
|
+
return useMutation({
|
|
8749
|
+
mutationFn: function mutationFn(_ref) {
|
|
8750
|
+
var id = _ref.id;
|
|
8751
|
+
if (!auth) {
|
|
8752
|
+
throw new Error('Authentication context not found');
|
|
8753
|
+
}
|
|
8754
|
+
return deleteWorkspace(id, auth);
|
|
8755
|
+
},
|
|
8756
|
+
onSuccess: function onSuccess(data, variables) {
|
|
8757
|
+
dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
8758
|
+
workspaceId: variables.id,
|
|
8759
|
+
action: WorkspacePresetAction.DELETE,
|
|
8760
|
+
emptyWorkspacePresetTitle: t('workspace-new'),
|
|
8761
|
+
title: title
|
|
8762
|
+
}));
|
|
8763
|
+
},
|
|
8764
|
+
onError: function onError(error) {
|
|
8765
|
+
onWorkspaceApiError(dispatch, error, t);
|
|
8766
|
+
}
|
|
8767
|
+
});
|
|
8768
|
+
};
|
|
8769
|
+
var useCreateWorkspacePreset = function useCreateWorkspacePreset() {
|
|
8770
|
+
var _useAuthenticationCon2 = useAuthenticationContext(),
|
|
8771
|
+
auth = _useAuthenticationCon2.auth;
|
|
8772
|
+
var _useWorkspaceTranslat2 = useWorkspaceTranslation(),
|
|
8773
|
+
t = _useWorkspaceTranslat2.t;
|
|
8774
|
+
var dispatch = useDispatch();
|
|
8775
|
+
return useMutation({
|
|
8776
|
+
mutationFn: function mutationFn(_ref2) {
|
|
8777
|
+
var data = _ref2.data;
|
|
8778
|
+
if (!auth) {
|
|
8779
|
+
throw new Error('Authentication context not found');
|
|
8780
|
+
}
|
|
8781
|
+
return createWorkspace(data, auth);
|
|
8782
|
+
},
|
|
8783
|
+
onSuccess: function onSuccess(data, variables) {
|
|
8784
|
+
var location = data == null ? void 0 : data.get('location');
|
|
8785
|
+
var newId = getIdFromUrl(location);
|
|
8786
|
+
var scope = variables.data.scope || 'user';
|
|
8787
|
+
dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
8788
|
+
workspaceId: newId,
|
|
8789
|
+
action: variables.action || WorkspacePresetAction.SAVE_AS,
|
|
8790
|
+
title: variables.data.title,
|
|
8791
|
+
scope: scope
|
|
8792
|
+
}));
|
|
8793
|
+
},
|
|
8794
|
+
onError: function onError(error) {
|
|
8795
|
+
onWorkspaceApiError(dispatch, error, t);
|
|
8796
|
+
}
|
|
8797
|
+
});
|
|
8798
|
+
};
|
|
8799
|
+
|
|
8620
8800
|
var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
|
|
8621
8801
|
var workspaceId = _ref.workspaceId,
|
|
8622
8802
|
appTitle = _ref.appTitle;
|
|
8623
8803
|
var dispatch = useDispatch();
|
|
8624
8804
|
var _useWorkspaceTranslat = useWorkspaceTranslation(),
|
|
8625
8805
|
t = _useWorkspaceTranslat.t;
|
|
8806
|
+
var _useAuthenticationCon = useAuthenticationContext(),
|
|
8807
|
+
auth = _useAuthenticationCon.auth;
|
|
8808
|
+
var _useDeleteWorkspacePr = useDeleteWorkspacePreset(),
|
|
8809
|
+
deleteWorkspace = _useDeleteWorkspacePr.mutate;
|
|
8810
|
+
var _useCreateWorkspacePr = useCreateWorkspacePreset(),
|
|
8811
|
+
createWorkspace = _useCreateWorkspacePr.mutate;
|
|
8626
8812
|
var title = useSelector(function (store) {
|
|
8627
8813
|
return getSelectedWorkspaceTitle(store);
|
|
8628
8814
|
});
|
|
@@ -8632,15 +8818,58 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
|
|
|
8632
8818
|
var closeWorkspaceActionDialog = React.useCallback(function () {
|
|
8633
8819
|
dispatch(workspaceListActions.closeWorkspaceActionDialogOptions());
|
|
8634
8820
|
}, [dispatch]);
|
|
8635
|
-
var onSubmitForm = function
|
|
8636
|
-
|
|
8637
|
-
|
|
8638
|
-
|
|
8639
|
-
|
|
8640
|
-
|
|
8641
|
-
|
|
8821
|
+
var onSubmitForm = /*#__PURE__*/function () {
|
|
8822
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(presetAction, presetId, data) {
|
|
8823
|
+
var oldWorkspace;
|
|
8824
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
8825
|
+
while (1) switch (_context.prev = _context.next) {
|
|
8826
|
+
case 0:
|
|
8827
|
+
_context.t0 = presetAction;
|
|
8828
|
+
_context.next = _context.t0 === WorkspacePresetAction.DELETE ? 3 : _context.t0 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 3 : _context.t0 === WorkspacePresetAction.DUPLICATE ? 5 : 15;
|
|
8829
|
+
break;
|
|
8830
|
+
case 3:
|
|
8831
|
+
deleteWorkspace({
|
|
8832
|
+
id: presetId
|
|
8833
|
+
});
|
|
8834
|
+
return _context.abrupt("break", 16);
|
|
8835
|
+
case 5:
|
|
8836
|
+
if (!presetId) {
|
|
8837
|
+
_context.next = 11;
|
|
8838
|
+
break;
|
|
8839
|
+
}
|
|
8840
|
+
_context.next = 8;
|
|
8841
|
+
return getWorkspace(presetId, auth);
|
|
8842
|
+
case 8:
|
|
8843
|
+
_context.t1 = _context.sent;
|
|
8844
|
+
_context.next = 12;
|
|
8845
|
+
break;
|
|
8846
|
+
case 11:
|
|
8847
|
+
_context.t1 = emptyWorkspaceBEData;
|
|
8848
|
+
case 12:
|
|
8849
|
+
oldWorkspace = _context.t1;
|
|
8850
|
+
createWorkspace({
|
|
8851
|
+
data: Object.assign({}, oldWorkspace, data),
|
|
8852
|
+
action: presetAction
|
|
8853
|
+
});
|
|
8854
|
+
return _context.abrupt("break", 16);
|
|
8855
|
+
case 15:
|
|
8856
|
+
dispatch(workspaceListActions.submitFormWorkspaceActionDialogOptions({
|
|
8857
|
+
presetAction: presetAction,
|
|
8858
|
+
presetId: presetId,
|
|
8859
|
+
data: data,
|
|
8860
|
+
emptyMapPresetTitle: t('workspace-mappreset-new'),
|
|
8861
|
+
emptyWorkspacePresetTitle: t('workspace-new')
|
|
8862
|
+
}));
|
|
8863
|
+
case 16:
|
|
8864
|
+
case "end":
|
|
8865
|
+
return _context.stop();
|
|
8866
|
+
}
|
|
8867
|
+
}, _callee);
|
|
8642
8868
|
}));
|
|
8643
|
-
|
|
8869
|
+
return function onSubmitForm(_x, _x2, _x3) {
|
|
8870
|
+
return _ref2.apply(this, arguments);
|
|
8871
|
+
};
|
|
8872
|
+
}();
|
|
8644
8873
|
var presetId = typeof dialogDetails === 'object' && dialogDetails.presetId;
|
|
8645
8874
|
var action = typeof dialogDetails === 'object' && dialogDetails.action;
|
|
8646
8875
|
var formValues = typeof dialogDetails === 'object' && dialogDetails.formValues;
|
|
@@ -8828,7 +9057,9 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
|
|
|
8828
9057
|
}
|
|
8829
9058
|
}, [isOpen]);
|
|
8830
9059
|
React__default.useEffect(function () {
|
|
8831
|
-
|
|
9060
|
+
if (formValues) {
|
|
9061
|
+
reset(formValues);
|
|
9062
|
+
}
|
|
8832
9063
|
}, [formValues, reset]);
|
|
8833
9064
|
var getConfirmLabel = function getConfirmLabel(action) {
|
|
8834
9065
|
switch (action) {
|
|
@@ -8971,9 +9202,10 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
|
|
|
8971
9202
|
description: "",
|
|
8972
9203
|
onClose: onClose,
|
|
8973
9204
|
onSubmit: onSubmit,
|
|
8974
|
-
|
|
9205
|
+
resizableDefaultSize: {
|
|
8975
9206
|
width: '330px'
|
|
8976
9207
|
},
|
|
9208
|
+
isResizable: true,
|
|
8977
9209
|
actions: jsx(ConfirmationButtons, {
|
|
8978
9210
|
onClose: onClose,
|
|
8979
9211
|
cancelLabel: t('workspace-cancel'),
|
|
@@ -9033,18 +9265,17 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
|
|
|
9033
9265
|
}));
|
|
9034
9266
|
};
|
|
9035
9267
|
var isOpen = dialogOptions !== undefined;
|
|
9036
|
-
|
|
9037
|
-
return null;
|
|
9038
|
-
}
|
|
9039
|
-
return jsx(ViewPresetsFormDialogWrapper, Object.assign({
|
|
9268
|
+
return jsx(ViewPresetsFormDialogWrapper, {
|
|
9040
9269
|
isOpen: isOpen,
|
|
9041
9270
|
onClose: onClose,
|
|
9042
9271
|
onSuccess: onSuccess,
|
|
9043
|
-
viewComponentType: viewComponentType
|
|
9044
|
-
}, dialogOptions, {
|
|
9272
|
+
viewComponentType: viewComponentType,
|
|
9045
9273
|
formValues: dialogOptions == null ? void 0 : dialogOptions.formValues,
|
|
9274
|
+
action: (dialogOptions == null ? void 0 : dialogOptions.action) || PresetAction.SAVE,
|
|
9275
|
+
title: (dialogOptions == null ? void 0 : dialogOptions.title) || '',
|
|
9276
|
+
viewPresetId: (dialogOptions == null ? void 0 : dialogOptions.viewPresetId) || '',
|
|
9046
9277
|
onReset: onReset
|
|
9047
|
-
})
|
|
9278
|
+
});
|
|
9048
9279
|
};
|
|
9049
9280
|
|
|
9050
9281
|
var WorkspaceDetail = function WorkspaceDetail(_ref) {
|
|
@@ -9164,4 +9395,4 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
|
|
|
9164
9395
|
});
|
|
9165
9396
|
};
|
|
9166
9397
|
|
|
9167
|
-
export { ComponentsLookUpWrapper, DemoWrapper, PresetAction, ViewPresetErrorComponent, ViewPresetErrorType, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };
|
|
9398
|
+
export { ComponentsLookUpWrapper, DemoWrapper, PresetAction, ViewPresetErrorComponent, ViewPresetErrorType, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$1 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };
|