@opengeoweb/workspace 12.2.0 → 12.4.1
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 +218 -149
- package/package.json +19 -19
- package/src/lib/api/workspace-api/hooks.d.ts +5 -0
- package/src/lib/components/WorkspaceView/helpers.d.ts +2 -2
- package/src/lib/store/store.d.ts +11 -11
- package/src/lib/store/viewPresets/listener.d.ts +4 -4
- package/src/lib/store/viewPresets/reducer.d.ts +1 -1
- package/src/lib/store/viewPresets/selectors.d.ts +510 -34
- package/src/lib/store/viewPresets/types.d.ts +2 -2
- package/src/lib/store/viewPresetsList/reducer.d.ts +1 -1
- package/src/lib/store/viewPresetsList/selectors.d.ts +177 -4
- package/src/lib/store/viewPresetsList/types.d.ts +1 -1
- package/src/lib/store/workspace/listener.d.ts +3 -3
- package/src/lib/store/workspace/selectors.d.ts +1787 -67
- package/src/lib/store/workspace/utils.d.ts +5 -0
- package/src/lib/store/workspaceList/listener.d.ts +2 -2
- package/src/lib/store/workspaceList/reducer.d.ts +1 -1
- package/src/lib/store/workspaceList/selectors.d.ts +305 -71
- package/src/lib/store/workspaceList/types.d.ts +1 -1
package/index.esm.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
2
2
|
import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener, uiReducer, loadingIndicatorReducer, syncGroupsReducer, layerReducer, serviceReducer, mapReducer, loadingIndicatorSelectors, uiTypes, linkComponentTypesConstants, uiSelectors } from '@opengeoweb/store';
|
|
3
|
-
import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider,
|
|
3
|
+
import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, 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, union, pick, isEmpty, isEqual, isString } from 'lodash';
|
|
5
5
|
import { getLeaves, createBalancedTreeFromLeaves, MosaicContext, getAndAssertNodeAtPathExists, MosaicWindow, Mosaic } from 'react-mosaic-component';
|
|
6
6
|
import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/timeseries';
|
|
7
7
|
import { publicWarningActions, warningsTranslations, WARN_NAMESPACE, publicWarningsSelectors } from '@opengeoweb/warnings';
|
|
8
|
-
import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, usePrevious, AlertBanner, SystemScope, CustomTooltip, SearchHighlight, ToggleMenu, CustomIconButton, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, useConfirmationDialog, ConfirmationButtons } from '@opengeoweb/shared';
|
|
8
|
+
import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, usePrevious, AlertBanner, sessionStorageProvider, SystemScope, CustomTooltip, SearchHighlight, ToggleMenu, CustomIconButton, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, useConfirmationDialog, 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';
|
|
@@ -20,7 +20,7 @@ import { coreTranslations, CORE_NAMESPACE } from '@opengeoweb/core';
|
|
|
20
20
|
import { formFieldsTranslations, FORM_FIELDS_NAMESPACE, ReactHookFormTextField, ReactHookFormHiddenInput, ReactHookFormProvider, defaultFormOptions } from '@opengeoweb/form-fields';
|
|
21
21
|
import * as React from 'react';
|
|
22
22
|
import React__default, { useCallback, useEffect } from 'react';
|
|
23
|
-
import { LinearProgress, Typography, styled, ListItemIcon, ListItem, ListItemButton, ListItemText,
|
|
23
|
+
import { LinearProgress, Typography, styled, ListItemIcon, ListItem, ListItemButton, ListItemText, Grid, Box, Menu, ListSubheader, MenuItem, useTheme, List, Checkbox, 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';
|
|
@@ -782,23 +782,6 @@ var createApi$1 = function createApi(props) {
|
|
|
782
782
|
return getApiRoutes$1(props.auth ? authInstance : nonAuthInstance);
|
|
783
783
|
};
|
|
784
784
|
|
|
785
|
-
/* *
|
|
786
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
787
|
-
* you may not use this file except in compliance with the License.
|
|
788
|
-
* You may obtain a copy of the License at
|
|
789
|
-
*
|
|
790
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
791
|
-
*
|
|
792
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
793
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
794
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
795
|
-
* See the License for the specific language governing permissions and
|
|
796
|
-
* limitations under the License.
|
|
797
|
-
*
|
|
798
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
799
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
800
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
801
|
-
* */
|
|
802
785
|
var getWorkspaceApi = function getWorkspaceApi() {
|
|
803
786
|
return getApi(API_NAME);
|
|
804
787
|
};
|
|
@@ -885,6 +868,57 @@ var getErrorMessage = function getErrorMessage(error) {
|
|
|
885
868
|
var suffix = (_error$response = error.response) == null || (_error$response = _error$response.data) == null ? void 0 : _error$response.message;
|
|
886
869
|
return suffix ? prefix + ": " + suffix : prefix;
|
|
887
870
|
};
|
|
871
|
+
var updateViewPresets = function updateViewPresets(saveViewPreset, getViewPresetEntity, data, scope) {
|
|
872
|
+
return Promise.all(data.views.map( /*#__PURE__*/function () {
|
|
873
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(view) {
|
|
874
|
+
var viewPresetEntity, shouldUpdateView, canUpdateView, payload, _payload;
|
|
875
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
876
|
+
while (1) switch (_context.prev = _context.next) {
|
|
877
|
+
case 0:
|
|
878
|
+
viewPresetEntity = getViewPresetEntity(view);
|
|
879
|
+
shouldUpdateView = view.hasChanges && view.isSelected;
|
|
880
|
+
canUpdateView = scope === 'system' || scope === viewPresetEntity.scope; // save existing views
|
|
881
|
+
if (!(shouldUpdateView && view.viewPresetId !== 'emptyMap' && canUpdateView)) {
|
|
882
|
+
_context.next = 6;
|
|
883
|
+
break;
|
|
884
|
+
}
|
|
885
|
+
payload = {
|
|
886
|
+
panelId: view.mosaicNodeId,
|
|
887
|
+
viewPresetId: view.viewPresetId,
|
|
888
|
+
viewPreset: viewPresetEntity
|
|
889
|
+
};
|
|
890
|
+
return _context.abrupt("return", saveViewPreset({
|
|
891
|
+
payload: payload
|
|
892
|
+
}));
|
|
893
|
+
case 6:
|
|
894
|
+
if (!shouldUpdateView) {
|
|
895
|
+
_context.next = 9;
|
|
896
|
+
break;
|
|
897
|
+
}
|
|
898
|
+
_payload = {
|
|
899
|
+
panelId: view.mosaicNodeId,
|
|
900
|
+
viewPresetId: '',
|
|
901
|
+
viewPreset: Object.assign({}, viewPresetEntity, {
|
|
902
|
+
// update scope
|
|
903
|
+
scope: scope
|
|
904
|
+
})
|
|
905
|
+
};
|
|
906
|
+
return _context.abrupt("return", saveViewPreset({
|
|
907
|
+
payload: _payload
|
|
908
|
+
}, true));
|
|
909
|
+
case 9:
|
|
910
|
+
return _context.abrupt("return", viewPresetEntity);
|
|
911
|
+
case 10:
|
|
912
|
+
case "end":
|
|
913
|
+
return _context.stop();
|
|
914
|
+
}
|
|
915
|
+
}, _callee);
|
|
916
|
+
}));
|
|
917
|
+
return function (_x) {
|
|
918
|
+
return _ref.apply(this, arguments);
|
|
919
|
+
};
|
|
920
|
+
}()));
|
|
921
|
+
};
|
|
888
922
|
|
|
889
923
|
/* *
|
|
890
924
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -5142,6 +5176,7 @@ workspaceListener.startListening({
|
|
|
5142
5176
|
actionCreator: workspaceActions.updateWorkspaceViews,
|
|
5143
5177
|
effect: function () {
|
|
5144
5178
|
var _effect9 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(_, listenerApi) {
|
|
5179
|
+
var viewIds;
|
|
5145
5180
|
return _regeneratorRuntime().wrap(function _callee12$(_context12) {
|
|
5146
5181
|
while (1) switch (_context12.prev = _context12.next) {
|
|
5147
5182
|
case 0:
|
|
@@ -5154,7 +5189,24 @@ workspaceListener.startListening({
|
|
|
5154
5189
|
/* This will trigger all maps and other components
|
|
5155
5190
|
to get the correct size after views are updated */
|
|
5156
5191
|
window.dispatchEvent(new Event('resize'));
|
|
5157
|
-
|
|
5192
|
+
// Adjust the bbox of the original view after the new map is added. This is a temporal solution until the OpenLayers ticket
|
|
5193
|
+
// https://github.com/openlayers/openlayers/issues/16572 is solved.
|
|
5194
|
+
_context12.next = 6;
|
|
5195
|
+
return listenerApi.delay(10);
|
|
5196
|
+
case 6:
|
|
5197
|
+
viewIds = getViewIds(listenerApi.getState());
|
|
5198
|
+
viewIds.forEach(function (viewId) {
|
|
5199
|
+
var bbox = mapSelectors.getBbox(listenerApi.getState(), viewId);
|
|
5200
|
+
var srs = mapSelectors.getSrs(listenerApi.getState(), viewId);
|
|
5201
|
+
if (bbox && bbox.left !== undefined && srs) {
|
|
5202
|
+
listenerApi.dispatch(mapActions.setBbox({
|
|
5203
|
+
mapId: viewId,
|
|
5204
|
+
bbox: bbox,
|
|
5205
|
+
srs: srs
|
|
5206
|
+
}));
|
|
5207
|
+
}
|
|
5208
|
+
});
|
|
5209
|
+
case 8:
|
|
5158
5210
|
case "end":
|
|
5159
5211
|
return _context12.stop();
|
|
5160
5212
|
}
|
|
@@ -5604,7 +5656,7 @@ workspaceListListener.startListening({
|
|
|
5604
5656
|
effect: function () {
|
|
5605
5657
|
var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
|
|
5606
5658
|
var _listenerApi$getOrigi;
|
|
5607
|
-
var payload, currentWorkspaceId, action, workspaceId, title, is_shared,
|
|
5659
|
+
var payload, currentWorkspaceId, action, workspaceId, title, is_shared, searchQuery;
|
|
5608
5660
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
5609
5661
|
while (1) switch (_context2.prev = _context2.next) {
|
|
5610
5662
|
case 0:
|
|
@@ -5626,11 +5678,10 @@ workspaceListListener.startListening({
|
|
|
5626
5678
|
url: getWorkspaceRouteUrl(workspaceId)
|
|
5627
5679
|
}));
|
|
5628
5680
|
}
|
|
5629
|
-
// Retrieve new list with current
|
|
5630
|
-
workspaceFilters = getWorkspaceListFilters(listenerApi.getState());
|
|
5681
|
+
// Retrieve new list with current search query
|
|
5631
5682
|
searchQuery = getWorkspaceListSearchQuery(listenerApi.getState());
|
|
5632
|
-
listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams(
|
|
5633
|
-
case
|
|
5683
|
+
listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams([], searchQuery)));
|
|
5684
|
+
case 10:
|
|
5634
5685
|
case "end":
|
|
5635
5686
|
return _context2.stop();
|
|
5636
5687
|
}
|
|
@@ -5645,15 +5696,16 @@ workspaceListListener.startListening({
|
|
|
5645
5696
|
workspaceListListener.startListening({
|
|
5646
5697
|
actionCreator: workspaceListActions.submitFormWorkspaceActionDialogOptions,
|
|
5647
5698
|
effect: function () {
|
|
5648
|
-
var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
5649
|
-
var payload, workspaceApi, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, viewPresetResults, hasError, _hasError$message, errorMessage, workspaceData, newWorkspace, message, category;
|
|
5650
|
-
return _regeneratorRuntime().wrap(function
|
|
5651
|
-
while (1) switch (
|
|
5699
|
+
var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3, listenerApi) {
|
|
5700
|
+
var payload, workspaceApi, workspaceState, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, _yield$workspaceApi$g2, originalData, workspaceDataNewTitle, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, saveViewPreset, getViewPresetEntity, viewPresetResults, hasError, _hasError$message, errorMessage, workspaceData, newWorkspace, message, category;
|
|
5701
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
5702
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
5652
5703
|
case 0:
|
|
5653
5704
|
payload = _ref3.payload;
|
|
5654
5705
|
listenerApi.cancelActiveListeners();
|
|
5655
5706
|
workspaceApi = getWorkspaceApi();
|
|
5656
|
-
|
|
5707
|
+
workspaceState = listenerApi.getState();
|
|
5708
|
+
_context3.prev = 4;
|
|
5657
5709
|
presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle;
|
|
5658
5710
|
scope = data.scope || 'user'; // duplicate
|
|
5659
5711
|
if (presetAction === WorkspacePresetAction.DUPLICATE) ;
|
|
@@ -5661,21 +5713,21 @@ workspaceListListener.startListening({
|
|
|
5661
5713
|
if (presetAction === WorkspacePresetAction.DELETE || presetAction === WorkspacePresetAction.DELETE_SYSTEM_PRESET) ;
|
|
5662
5714
|
// edit
|
|
5663
5715
|
if (!(presetAction === WorkspacePresetAction.EDIT)) {
|
|
5664
|
-
|
|
5716
|
+
_context3.next = 18;
|
|
5665
5717
|
break;
|
|
5666
5718
|
}
|
|
5667
|
-
|
|
5719
|
+
_context3.next = 12;
|
|
5668
5720
|
return workspaceApi.getWorkspacePreset(presetId);
|
|
5669
|
-
case
|
|
5670
|
-
_yield$workspaceApi$g2 =
|
|
5721
|
+
case 12:
|
|
5722
|
+
_yield$workspaceApi$g2 = _context3.sent;
|
|
5671
5723
|
originalData = _yield$workspaceApi$g2.data;
|
|
5672
5724
|
workspaceDataNewTitle = Object.assign({}, originalData, {
|
|
5673
5725
|
title: data.title,
|
|
5674
5726
|
"abstract": data["abstract"]
|
|
5675
5727
|
});
|
|
5676
|
-
|
|
5728
|
+
_context3.next = 17;
|
|
5677
5729
|
return workspaceApi.saveWorkspacePreset(presetId, workspaceDataNewTitle);
|
|
5678
|
-
case
|
|
5730
|
+
case 17:
|
|
5679
5731
|
listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
5680
5732
|
workspaceId: presetId,
|
|
5681
5733
|
action: presetAction,
|
|
@@ -5683,97 +5735,48 @@ workspaceListListener.startListening({
|
|
|
5683
5735
|
"abstract": data["abstract"],
|
|
5684
5736
|
scope: scope
|
|
5685
5737
|
}));
|
|
5686
|
-
case
|
|
5738
|
+
case 18:
|
|
5687
5739
|
// save (as) user/system presets
|
|
5688
5740
|
isSaveWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET || presetAction === WorkspacePresetAction.SAVE;
|
|
5689
5741
|
isSaveAsWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || presetAction === WorkspacePresetAction.SAVE_AS;
|
|
5690
5742
|
if (!(isSaveWorkspaceAction || isSaveAsWorkspaceAction)) {
|
|
5691
|
-
|
|
5743
|
+
_context3.next = 44;
|
|
5692
5744
|
break;
|
|
5693
5745
|
}
|
|
5694
|
-
hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(
|
|
5746
|
+
hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(workspaceState);
|
|
5695
5747
|
workspaceId = presetId;
|
|
5696
5748
|
if (!(!hasWorkspaceAlreadyBeenSaved && isSaveAsWorkspaceAction)) {
|
|
5697
|
-
|
|
5749
|
+
_context3.next = 27;
|
|
5698
5750
|
break;
|
|
5699
5751
|
}
|
|
5700
|
-
|
|
5752
|
+
_context3.next = 26;
|
|
5701
5753
|
return workspaceApi.saveWorkspacePresetAs(data);
|
|
5702
|
-
case 25:
|
|
5703
|
-
workspaceId = _context4.sent;
|
|
5704
5754
|
case 26:
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
break;
|
|
5708
|
-
}
|
|
5709
|
-
_context4.next = 29;
|
|
5710
|
-
return workspaceApi.saveWorkspacePreset(workspaceId, data);
|
|
5711
|
-
case 29:
|
|
5755
|
+
workspaceId = _context3.sent;
|
|
5756
|
+
case 27:
|
|
5712
5757
|
// lock the workspace
|
|
5713
5758
|
listenerApi.dispatch(workspaceListActions.onSuccessWorkspaceSaveDialog({
|
|
5714
5759
|
presetId: workspaceId
|
|
5715
5760
|
}));
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
shouldUpdateView = view.hasChanges && view.isSelected;
|
|
5729
|
-
canUpdateView = scope === 'system' || scope === viewPresetEntity.scope; // save existing views
|
|
5730
|
-
if (!(shouldUpdateView && view.viewPresetId !== 'emptyMap' && canUpdateView)) {
|
|
5731
|
-
_context3.next = 6;
|
|
5732
|
-
break;
|
|
5733
|
-
}
|
|
5734
|
-
_payload = {
|
|
5735
|
-
panelId: view.mosaicNodeId,
|
|
5736
|
-
viewPresetId: view.viewPresetId,
|
|
5737
|
-
viewPreset: viewPresetEntity
|
|
5738
|
-
};
|
|
5739
|
-
return _context3.abrupt("return", saveViewPresetEffect({
|
|
5740
|
-
payload: _payload
|
|
5741
|
-
}, listenerApi));
|
|
5742
|
-
case 6:
|
|
5743
|
-
if (!shouldUpdateView) {
|
|
5744
|
-
_context3.next = 9;
|
|
5745
|
-
break;
|
|
5746
|
-
}
|
|
5747
|
-
_payload2 = {
|
|
5748
|
-
panelId: view.mosaicNodeId,
|
|
5749
|
-
viewPresetId: '',
|
|
5750
|
-
viewPreset: Object.assign({}, viewPresetEntity, {
|
|
5751
|
-
// update scope
|
|
5752
|
-
scope: scope
|
|
5753
|
-
})
|
|
5754
|
-
};
|
|
5755
|
-
return _context3.abrupt("return", saveViewPresetAsEffect({
|
|
5756
|
-
payload: _payload2
|
|
5757
|
-
}, listenerApi));
|
|
5758
|
-
case 9:
|
|
5759
|
-
return _context3.abrupt("return", viewPresetEntity);
|
|
5760
|
-
case 10:
|
|
5761
|
-
case "end":
|
|
5762
|
-
return _context3.stop();
|
|
5763
|
-
}
|
|
5764
|
-
}, _callee3);
|
|
5765
|
-
}));
|
|
5766
|
-
return function (_x7) {
|
|
5767
|
-
return _ref4.apply(this, arguments);
|
|
5768
|
-
};
|
|
5769
|
-
}()));
|
|
5761
|
+
saveViewPreset = function saveViewPreset(payloadAction, saveAs) {
|
|
5762
|
+
return saveAs ? saveViewPresetAsEffect(payloadAction, listenerApi) : saveViewPresetEffect(payloadAction, listenerApi);
|
|
5763
|
+
};
|
|
5764
|
+
getViewPresetEntity = function getViewPresetEntity(view) {
|
|
5765
|
+
return Object.assign({}, getViewPresetToSendToBackend(workspaceState, view.mosaicNodeId), {
|
|
5766
|
+
title: view.title
|
|
5767
|
+
}, view["abstract"] && {
|
|
5768
|
+
"abstract": view["abstract"]
|
|
5769
|
+
});
|
|
5770
|
+
};
|
|
5771
|
+
_context3.next = 32;
|
|
5772
|
+
return updateViewPresets(saveViewPreset, getViewPresetEntity, data, scope);
|
|
5770
5773
|
case 32:
|
|
5771
|
-
viewPresetResults =
|
|
5774
|
+
viewPresetResults = _context3.sent;
|
|
5772
5775
|
hasError = viewPresetResults.find(function (view) {
|
|
5773
5776
|
return view.message;
|
|
5774
5777
|
});
|
|
5775
5778
|
if (!hasError) {
|
|
5776
|
-
|
|
5779
|
+
_context3.next = 38;
|
|
5777
5780
|
break;
|
|
5778
5781
|
}
|
|
5779
5782
|
// maybe we can use another action, but this resets fetching of the form
|
|
@@ -5785,7 +5788,7 @@ workspaceListListener.startListening({
|
|
|
5785
5788
|
category: WorkspaceListErrorCategory.GENERIC
|
|
5786
5789
|
}
|
|
5787
5790
|
}));
|
|
5788
|
-
return
|
|
5791
|
+
return _context3.abrupt("return");
|
|
5789
5792
|
case 38:
|
|
5790
5793
|
workspaceData = getWorkspaceData(listenerApi.getState());
|
|
5791
5794
|
newWorkspace = Object.assign({}, workspaceData, {
|
|
@@ -5794,7 +5797,7 @@ workspaceListListener.startListening({
|
|
|
5794
5797
|
"abstract": data["abstract"],
|
|
5795
5798
|
scope: scope
|
|
5796
5799
|
});
|
|
5797
|
-
|
|
5800
|
+
_context3.next = 42;
|
|
5798
5801
|
return workspaceApi.saveWorkspacePreset(workspaceId, newWorkspace);
|
|
5799
5802
|
case 42:
|
|
5800
5803
|
listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
@@ -5830,13 +5833,13 @@ workspaceListListener.startListening({
|
|
|
5830
5833
|
scope: scope
|
|
5831
5834
|
}));
|
|
5832
5835
|
}
|
|
5833
|
-
|
|
5836
|
+
_context3.next = 52;
|
|
5834
5837
|
break;
|
|
5835
5838
|
case 47:
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
message = isAxiosError$1(
|
|
5839
|
-
category = isAxiosAuthError(
|
|
5839
|
+
_context3.prev = 47;
|
|
5840
|
+
_context3.t0 = _context3["catch"](4);
|
|
5841
|
+
message = isAxiosError$1(_context3.t0) ? getAxiosErrorMessage(_context3.t0) : _context3.t0.message;
|
|
5842
|
+
category = isAxiosAuthError(_context3.t0) ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC;
|
|
5840
5843
|
listenerApi.dispatch(workspaceListActions.onErrorWorkspacePresetAction({
|
|
5841
5844
|
error: {
|
|
5842
5845
|
type: WorkspaceListErrorType.VERBATIM_ERROR,
|
|
@@ -5846,9 +5849,9 @@ workspaceListListener.startListening({
|
|
|
5846
5849
|
}));
|
|
5847
5850
|
case 52:
|
|
5848
5851
|
case "end":
|
|
5849
|
-
return
|
|
5852
|
+
return _context3.stop();
|
|
5850
5853
|
}
|
|
5851
|
-
},
|
|
5854
|
+
}, _callee3, null, [[4, 47]]);
|
|
5852
5855
|
}));
|
|
5853
5856
|
function effect(_x5, _x6) {
|
|
5854
5857
|
return _effect3.apply(this, arguments);
|
|
@@ -6304,7 +6307,7 @@ var defaultComponentsLookUp = function defaultComponentsLookUp(_ref3) {
|
|
|
6304
6307
|
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
6305
6308
|
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
6306
6309
|
* */
|
|
6307
|
-
var config$1 = getConfig();
|
|
6310
|
+
var config$1 = sessionStorageProvider.getConfig();
|
|
6308
6311
|
var presetBaseUrl$1 = (config$1 == null ? void 0 : config$1.GW_PRESET_BACKEND_URL) || '';
|
|
6309
6312
|
var getViewPreset = function getViewPreset(viewpresetId, auth) {
|
|
6310
6313
|
return fetch(presetBaseUrl$1 + "/viewpreset/" + viewpresetId, {
|
|
@@ -6452,12 +6455,12 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
|
|
|
6452
6455
|
margin: 0
|
|
6453
6456
|
}
|
|
6454
6457
|
})
|
|
6455
|
-
}), isEditable && jsx(
|
|
6458
|
+
}), isEditable && jsx(Grid, {
|
|
6456
6459
|
sx: {
|
|
6457
6460
|
minWidth: 56,
|
|
6458
6461
|
marginLeft: 2
|
|
6459
6462
|
},
|
|
6460
|
-
children: jsxs(
|
|
6463
|
+
children: jsxs(Grid, {
|
|
6461
6464
|
children: [jsx(ToggleMenu, {
|
|
6462
6465
|
buttonTestId: testIdPrefix + "-listOptionsButton",
|
|
6463
6466
|
menuPosition: "right",
|
|
@@ -7261,26 +7264,56 @@ var createBalancedMosaicNode = function createBalancedMosaicNode(currentNode) {
|
|
|
7261
7264
|
var leaves = getLeaves(currentNode);
|
|
7262
7265
|
return createBalancedTreeFromLeaves(leaves);
|
|
7263
7266
|
};
|
|
7264
|
-
var
|
|
7265
|
-
if (componentTypes) {
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7269
|
-
|
|
7270
|
-
|
|
7271
|
-
|
|
7272
|
-
|
|
7273
|
-
|
|
7274
|
-
|
|
7275
|
-
|
|
7276
|
-
|
|
7277
|
-
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7283
|
-
|
|
7267
|
+
var closeDialogsWhenChangingPreset = function closeDialogsWhenChangingPreset(componentTypes, dispatch) {
|
|
7268
|
+
if (!componentTypes || componentTypes.length === 0 || componentTypes.some(function (componentType) {
|
|
7269
|
+
return componentType.toLowerCase().includes('viewloading');
|
|
7270
|
+
})) {
|
|
7271
|
+
return;
|
|
7272
|
+
}
|
|
7273
|
+
// Close all dialogs related to timeseries
|
|
7274
|
+
if (!componentTypes.some(function (componentType) {
|
|
7275
|
+
return componentType.toLowerCase().includes('timeseries');
|
|
7276
|
+
})) {
|
|
7277
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7278
|
+
setOpen: false,
|
|
7279
|
+
type: uiTypes.DialogTypes.TimeSeriesManager
|
|
7280
|
+
}));
|
|
7281
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7282
|
+
setOpen: false,
|
|
7283
|
+
type: uiTypes.DialogTypes.TimeSeriesSelect
|
|
7284
|
+
}));
|
|
7285
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7286
|
+
setOpen: false,
|
|
7287
|
+
type: uiTypes.DialogTypes.TimeSeriesInfo
|
|
7288
|
+
}));
|
|
7289
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7290
|
+
setOpen: false,
|
|
7291
|
+
type: uiTypes.DialogTypes.TimeSeriesLocationInfo
|
|
7292
|
+
}));
|
|
7293
|
+
}
|
|
7294
|
+
// Close all dialogs related to soundings
|
|
7295
|
+
if (!componentTypes.some(function (componentType) {
|
|
7296
|
+
return componentType.toLowerCase().includes('soundings');
|
|
7297
|
+
})) {
|
|
7298
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7299
|
+
setOpen: false,
|
|
7300
|
+
type: uiTypes.DialogTypes.SoundingsLocations
|
|
7301
|
+
}));
|
|
7302
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7303
|
+
setOpen: false,
|
|
7304
|
+
type: uiTypes.DialogTypes.SoundingsSources
|
|
7305
|
+
}));
|
|
7306
|
+
}
|
|
7307
|
+
// Close dialogs related to the warninglist
|
|
7308
|
+
if (!componentTypes.some(function (componentType) {
|
|
7309
|
+
return componentType.toLowerCase().includes('warninglist');
|
|
7310
|
+
}) && !componentTypes.some(function (componentType) {
|
|
7311
|
+
return componentType.toLowerCase().includes('map');
|
|
7312
|
+
})) {
|
|
7313
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
7314
|
+
setOpen: false,
|
|
7315
|
+
type: uiTypes.DialogTypes.PublicWarnings
|
|
7316
|
+
}));
|
|
7284
7317
|
}
|
|
7285
7318
|
};
|
|
7286
7319
|
|
|
@@ -7840,7 +7873,7 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
|
|
|
7840
7873
|
return getComponentTypesFromActiveViews(store);
|
|
7841
7874
|
});
|
|
7842
7875
|
React__default.useEffect(function () {
|
|
7843
|
-
|
|
7876
|
+
closeDialogsWhenChangingPreset(componentTypes, dispatch);
|
|
7844
7877
|
}, [componentTypes, dispatch]);
|
|
7845
7878
|
React__default.useEffect(function () {
|
|
7846
7879
|
window.addEventListener('orientationchange', handleOrientationChange);
|
|
@@ -7875,7 +7908,7 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
|
|
|
7875
7908
|
* Copyright 2025 - Finnish Meteorological Institute (FMI)
|
|
7876
7909
|
* Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
|
|
7877
7910
|
* */
|
|
7878
|
-
var config = getConfig();
|
|
7911
|
+
var config = sessionStorageProvider.getConfig();
|
|
7879
7912
|
var presetBaseUrl = (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
|
|
7880
7913
|
var getWorkspace = function getWorkspace(workspaceId, auth) {
|
|
7881
7914
|
return fetch(presetBaseUrl + "/workspacepreset/" + workspaceId, {
|
|
@@ -8284,9 +8317,8 @@ var useFetchWorkspacePresets = function useFetchWorkspacePresets() {
|
|
|
8284
8317
|
}, [dispatch]);
|
|
8285
8318
|
useEffect(function () {
|
|
8286
8319
|
if (workspaceSearchQuery !== prevSearch) {
|
|
8287
|
-
|
|
8288
|
-
|
|
8289
|
-
});
|
|
8320
|
+
var filterParams = constructFilterParams([], workspaceSearchQuery);
|
|
8321
|
+
fetchWorkspacePresets(filterParams);
|
|
8290
8322
|
}
|
|
8291
8323
|
}, [fetchWorkspacePresets, prevSearch, workspaceSearchQuery]);
|
|
8292
8324
|
useEffect(function () {
|
|
@@ -8901,7 +8933,6 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
|
|
|
8901
8933
|
open: isOpen,
|
|
8902
8934
|
description: "",
|
|
8903
8935
|
onClose: onClose,
|
|
8904
|
-
onSubmit: onSubmit,
|
|
8905
8936
|
isResizable: true,
|
|
8906
8937
|
resizableDefaultSize: {
|
|
8907
8938
|
width: 500,
|
|
@@ -9019,6 +9050,35 @@ var useCreateWorkspacePreset = function useCreateWorkspacePreset() {
|
|
|
9019
9050
|
}
|
|
9020
9051
|
});
|
|
9021
9052
|
};
|
|
9053
|
+
var useUpdateWorkspacePreset = function useUpdateWorkspacePreset() {
|
|
9054
|
+
var _useAuthenticationCon3 = useAuthenticationContext(),
|
|
9055
|
+
auth = _useAuthenticationCon3.auth;
|
|
9056
|
+
var dispatch = useDispatch();
|
|
9057
|
+
var _useWorkspaceTranslat3 = useWorkspaceTranslation(),
|
|
9058
|
+
t = _useWorkspaceTranslat3.t;
|
|
9059
|
+
return useMutation({
|
|
9060
|
+
mutationFn: function mutationFn(_ref3) {
|
|
9061
|
+
var id = _ref3.id,
|
|
9062
|
+
data = _ref3.data;
|
|
9063
|
+
if (!auth) {
|
|
9064
|
+
throw new Error('Authentication context not found');
|
|
9065
|
+
}
|
|
9066
|
+
return updateWorkspace(id, data, auth);
|
|
9067
|
+
},
|
|
9068
|
+
onSuccess: function onSuccess(data, variables) {
|
|
9069
|
+
var scope = variables.data.scope || 'user';
|
|
9070
|
+
dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
|
|
9071
|
+
workspaceId: variables.id,
|
|
9072
|
+
action: variables.action || WorkspacePresetAction.SAVE,
|
|
9073
|
+
title: variables.data.title,
|
|
9074
|
+
scope: scope
|
|
9075
|
+
}));
|
|
9076
|
+
},
|
|
9077
|
+
onError: function onError(error) {
|
|
9078
|
+
onWorkspaceApiError(dispatch, error, t);
|
|
9079
|
+
}
|
|
9080
|
+
});
|
|
9081
|
+
};
|
|
9022
9082
|
|
|
9023
9083
|
var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
|
|
9024
9084
|
var workspaceId = _ref.workspaceId,
|
|
@@ -9032,6 +9092,8 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
|
|
|
9032
9092
|
deleteWorkspace = _useDeleteWorkspacePr.mutate;
|
|
9033
9093
|
var _useCreateWorkspacePr = useCreateWorkspacePreset(),
|
|
9034
9094
|
createWorkspace = _useCreateWorkspacePr.mutate;
|
|
9095
|
+
var _useUpdateWorkspacePr = useUpdateWorkspacePreset(),
|
|
9096
|
+
updateWorkspace = _useUpdateWorkspacePr.mutate;
|
|
9035
9097
|
var title = useSelector(function (store) {
|
|
9036
9098
|
return getSelectedWorkspaceTitle(store);
|
|
9037
9099
|
});
|
|
@@ -9048,13 +9110,13 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
|
|
|
9048
9110
|
while (1) switch (_context.prev = _context.next) {
|
|
9049
9111
|
case 0:
|
|
9050
9112
|
_context.t0 = presetAction;
|
|
9051
|
-
_context.next = _context.t0 === WorkspacePresetAction.DELETE ? 3 : _context.t0 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 3 : _context.t0 === WorkspacePresetAction.DUPLICATE ? 5 : 15;
|
|
9113
|
+
_context.next = _context.t0 === WorkspacePresetAction.DELETE ? 3 : _context.t0 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 3 : _context.t0 === WorkspacePresetAction.DUPLICATE ? 5 : _context.t0 === WorkspacePresetAction.SAVE ? 15 : _context.t0 === WorkspacePresetAction.SAVE_SYSTEM_PRESET ? 15 : 17;
|
|
9052
9114
|
break;
|
|
9053
9115
|
case 3:
|
|
9054
9116
|
deleteWorkspace({
|
|
9055
9117
|
id: presetId
|
|
9056
9118
|
});
|
|
9057
|
-
return _context.abrupt("break",
|
|
9119
|
+
return _context.abrupt("break", 18);
|
|
9058
9120
|
case 5:
|
|
9059
9121
|
if (!presetId) {
|
|
9060
9122
|
_context.next = 11;
|
|
@@ -9074,8 +9136,15 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
|
|
|
9074
9136
|
data: Object.assign({}, oldWorkspace, data),
|
|
9075
9137
|
action: presetAction
|
|
9076
9138
|
});
|
|
9077
|
-
return _context.abrupt("break",
|
|
9139
|
+
return _context.abrupt("break", 18);
|
|
9078
9140
|
case 15:
|
|
9141
|
+
updateWorkspace({
|
|
9142
|
+
id: presetId,
|
|
9143
|
+
data: data,
|
|
9144
|
+
action: presetAction
|
|
9145
|
+
});
|
|
9146
|
+
return _context.abrupt("break", 18);
|
|
9147
|
+
case 17:
|
|
9079
9148
|
dispatch(workspaceListActions.submitFormWorkspaceActionDialogOptions({
|
|
9080
9149
|
presetAction: presetAction,
|
|
9081
9150
|
presetId: presetId,
|
|
@@ -9083,7 +9152,7 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
|
|
|
9083
9152
|
emptyMapPresetTitle: t('workspace-mappreset-new'),
|
|
9084
9153
|
emptyWorkspacePresetTitle: t('workspace-new')
|
|
9085
9154
|
}));
|
|
9086
|
-
case
|
|
9155
|
+
case 18:
|
|
9087
9156
|
case "end":
|
|
9088
9157
|
return _context.stop();
|
|
9089
9158
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeoweb/workspace",
|
|
3
|
-
"version": "12.
|
|
3
|
+
"version": "12.4.1",
|
|
4
4
|
"description": "GeoWeb Workspace library for the opengeoweb project",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -8,31 +8,31 @@
|
|
|
8
8
|
"url": "git@gitlab.com:opengeoweb/opengeoweb.git"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"react-redux": "^
|
|
12
|
-
"@opengeoweb/shared": "12.
|
|
13
|
-
"@opengeoweb/store": "12.
|
|
14
|
-
"@opengeoweb/api": "12.
|
|
11
|
+
"react-redux": "^9.2.0",
|
|
12
|
+
"@opengeoweb/shared": "12.4.1",
|
|
13
|
+
"@opengeoweb/store": "12.4.1",
|
|
14
|
+
"@opengeoweb/api": "12.4.1",
|
|
15
15
|
"react-hook-form": "^7.50.1",
|
|
16
|
-
"@opengeoweb/theme": "12.
|
|
17
|
-
"@reduxjs/toolkit": "^
|
|
18
|
-
"@opengeoweb/snackbar": "12.
|
|
16
|
+
"@opengeoweb/theme": "12.4.1",
|
|
17
|
+
"@reduxjs/toolkit": "^2.6.1",
|
|
18
|
+
"@opengeoweb/snackbar": "12.4.1",
|
|
19
19
|
"react-window": "^1.8.10",
|
|
20
20
|
"lodash": "^4.17.21",
|
|
21
21
|
"axios": "^1.7.7",
|
|
22
22
|
"react-virtualized-auto-sizer": "^1.0.21",
|
|
23
23
|
"react-mosaic-component": "^6.1.0",
|
|
24
|
-
"@opengeoweb/form-fields": "12.
|
|
25
|
-
"@opengeoweb/timeseries": "12.
|
|
26
|
-
"@opengeoweb/authentication": "12.
|
|
27
|
-
"@opengeoweb/core": "12.
|
|
28
|
-
"@opengeoweb/taf": "12.
|
|
29
|
-
"@opengeoweb/sigmet-airmet": "12.
|
|
30
|
-
"@opengeoweb/warnings": "12.
|
|
31
|
-
"@opengeoweb/spaceweather": "12.
|
|
32
|
-
"i18next": "^
|
|
24
|
+
"@opengeoweb/form-fields": "12.4.1",
|
|
25
|
+
"@opengeoweb/timeseries": "12.4.1",
|
|
26
|
+
"@opengeoweb/authentication": "12.4.1",
|
|
27
|
+
"@opengeoweb/core": "12.4.1",
|
|
28
|
+
"@opengeoweb/taf": "12.4.1",
|
|
29
|
+
"@opengeoweb/sigmet-airmet": "12.4.1",
|
|
30
|
+
"@opengeoweb/warnings": "12.4.1",
|
|
31
|
+
"@opengeoweb/spaceweather": "12.4.1",
|
|
32
|
+
"i18next": "^25.0.1",
|
|
33
33
|
"react-i18next": "^15.1.1",
|
|
34
|
-
"@mui/material": "^
|
|
35
|
-
"@opengeoweb/webmap-react": "12.
|
|
34
|
+
"@mui/material": "^7.0.1",
|
|
35
|
+
"@opengeoweb/webmap-react": "12.4.1",
|
|
36
36
|
"@tanstack/react-query": "^5.69.2"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|