@opengeoweb/workspace 12.3.0 → 12.4.2

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 CHANGED
@@ -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");
@@ -5622,7 +5656,7 @@ workspaceListListener.startListening({
5622
5656
  effect: function () {
5623
5657
  var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
5624
5658
  var _listenerApi$getOrigi;
5625
- var payload, currentWorkspaceId, action, workspaceId, title, is_shared, workspaceFilters, searchQuery;
5659
+ var payload, currentWorkspaceId, action, workspaceId, title, is_shared, searchQuery;
5626
5660
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
5627
5661
  while (1) switch (_context2.prev = _context2.next) {
5628
5662
  case 0:
@@ -5644,11 +5678,10 @@ workspaceListListener.startListening({
5644
5678
  url: getWorkspaceRouteUrl(workspaceId)
5645
5679
  }));
5646
5680
  }
5647
- // Retrieve new list with current filter
5648
- workspaceFilters = getWorkspaceListFilters(listenerApi.getState());
5681
+ // Retrieve new list with current search query
5649
5682
  searchQuery = getWorkspaceListSearchQuery(listenerApi.getState());
5650
- listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams(workspaceFilters, searchQuery)));
5651
- case 11:
5683
+ listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams([], searchQuery)));
5684
+ case 10:
5652
5685
  case "end":
5653
5686
  return _context2.stop();
5654
5687
  }
@@ -5663,15 +5696,16 @@ workspaceListListener.startListening({
5663
5696
  workspaceListListener.startListening({
5664
5697
  actionCreator: workspaceListActions.submitFormWorkspaceActionDialogOptions,
5665
5698
  effect: function () {
5666
- var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref3, listenerApi) {
5667
- 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;
5668
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
5669
- while (1) switch (_context4.prev = _context4.next) {
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) {
5670
5703
  case 0:
5671
5704
  payload = _ref3.payload;
5672
5705
  listenerApi.cancelActiveListeners();
5673
5706
  workspaceApi = getWorkspaceApi();
5674
- _context4.prev = 3;
5707
+ workspaceState = listenerApi.getState();
5708
+ _context3.prev = 4;
5675
5709
  presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle;
5676
5710
  scope = data.scope || 'user'; // duplicate
5677
5711
  if (presetAction === WorkspacePresetAction.DUPLICATE) ;
@@ -5679,21 +5713,21 @@ workspaceListListener.startListening({
5679
5713
  if (presetAction === WorkspacePresetAction.DELETE || presetAction === WorkspacePresetAction.DELETE_SYSTEM_PRESET) ;
5680
5714
  // edit
5681
5715
  if (!(presetAction === WorkspacePresetAction.EDIT)) {
5682
- _context4.next = 17;
5716
+ _context3.next = 18;
5683
5717
  break;
5684
5718
  }
5685
- _context4.next = 11;
5719
+ _context3.next = 12;
5686
5720
  return workspaceApi.getWorkspacePreset(presetId);
5687
- case 11:
5688
- _yield$workspaceApi$g2 = _context4.sent;
5721
+ case 12:
5722
+ _yield$workspaceApi$g2 = _context3.sent;
5689
5723
  originalData = _yield$workspaceApi$g2.data;
5690
5724
  workspaceDataNewTitle = Object.assign({}, originalData, {
5691
5725
  title: data.title,
5692
5726
  "abstract": data["abstract"]
5693
5727
  });
5694
- _context4.next = 16;
5728
+ _context3.next = 17;
5695
5729
  return workspaceApi.saveWorkspacePreset(presetId, workspaceDataNewTitle);
5696
- case 16:
5730
+ case 17:
5697
5731
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
5698
5732
  workspaceId: presetId,
5699
5733
  action: presetAction,
@@ -5701,97 +5735,48 @@ workspaceListListener.startListening({
5701
5735
  "abstract": data["abstract"],
5702
5736
  scope: scope
5703
5737
  }));
5704
- case 17:
5738
+ case 18:
5705
5739
  // save (as) user/system presets
5706
5740
  isSaveWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET || presetAction === WorkspacePresetAction.SAVE;
5707
5741
  isSaveAsWorkspaceAction = presetAction === WorkspacePresetAction.SAVE_SYSTEM_PRESET_AS || presetAction === WorkspacePresetAction.SAVE_AS;
5708
5742
  if (!(isSaveWorkspaceAction || isSaveAsWorkspaceAction)) {
5709
- _context4.next = 44;
5743
+ _context3.next = 44;
5710
5744
  break;
5711
5745
  }
5712
- hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(listenerApi.getState());
5746
+ hasWorkspaceAlreadyBeenSaved = getWorkspaceDialogIsSaved(workspaceState);
5713
5747
  workspaceId = presetId;
5714
5748
  if (!(!hasWorkspaceAlreadyBeenSaved && isSaveAsWorkspaceAction)) {
5715
- _context4.next = 26;
5749
+ _context3.next = 27;
5716
5750
  break;
5717
5751
  }
5718
- _context4.next = 25;
5752
+ _context3.next = 26;
5719
5753
  return workspaceApi.saveWorkspacePresetAs(data);
5720
- case 25:
5721
- workspaceId = _context4.sent;
5722
5754
  case 26:
5723
- if (!isSaveWorkspaceAction) {
5724
- _context4.next = 29;
5725
- break;
5726
- }
5727
- _context4.next = 29;
5728
- return workspaceApi.saveWorkspacePreset(workspaceId, data);
5729
- case 29:
5755
+ workspaceId = _context3.sent;
5756
+ case 27:
5730
5757
  // lock the workspace
5731
5758
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspaceSaveDialog({
5732
5759
  presetId: workspaceId
5733
5760
  }));
5734
- _context4.next = 32;
5735
- return Promise.all(data.views.map( /*#__PURE__*/function () {
5736
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(view) {
5737
- var viewPresetEntity, shouldUpdateView, canUpdateView, _payload, _payload2;
5738
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
5739
- while (1) switch (_context3.prev = _context3.next) {
5740
- case 0:
5741
- viewPresetEntity = Object.assign({}, getViewPresetToSendToBackend(listenerApi.getState(), view.mosaicNodeId), {
5742
- title: view.title
5743
- }, view["abstract"] && {
5744
- "abstract": view["abstract"]
5745
- });
5746
- shouldUpdateView = view.hasChanges && view.isSelected;
5747
- canUpdateView = scope === 'system' || scope === viewPresetEntity.scope; // save existing views
5748
- if (!(shouldUpdateView && view.viewPresetId !== 'emptyMap' && canUpdateView)) {
5749
- _context3.next = 6;
5750
- break;
5751
- }
5752
- _payload = {
5753
- panelId: view.mosaicNodeId,
5754
- viewPresetId: view.viewPresetId,
5755
- viewPreset: viewPresetEntity
5756
- };
5757
- return _context3.abrupt("return", saveViewPresetEffect({
5758
- payload: _payload
5759
- }, listenerApi));
5760
- case 6:
5761
- if (!shouldUpdateView) {
5762
- _context3.next = 9;
5763
- break;
5764
- }
5765
- _payload2 = {
5766
- panelId: view.mosaicNodeId,
5767
- viewPresetId: '',
5768
- viewPreset: Object.assign({}, viewPresetEntity, {
5769
- // update scope
5770
- scope: scope
5771
- })
5772
- };
5773
- return _context3.abrupt("return", saveViewPresetAsEffect({
5774
- payload: _payload2
5775
- }, listenerApi));
5776
- case 9:
5777
- return _context3.abrupt("return", viewPresetEntity);
5778
- case 10:
5779
- case "end":
5780
- return _context3.stop();
5781
- }
5782
- }, _callee3);
5783
- }));
5784
- return function (_x7) {
5785
- return _ref4.apply(this, arguments);
5786
- };
5787
- }()));
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);
5788
5773
  case 32:
5789
- viewPresetResults = _context4.sent;
5774
+ viewPresetResults = _context3.sent;
5790
5775
  hasError = viewPresetResults.find(function (view) {
5791
5776
  return view.message;
5792
5777
  });
5793
5778
  if (!hasError) {
5794
- _context4.next = 38;
5779
+ _context3.next = 38;
5795
5780
  break;
5796
5781
  }
5797
5782
  // maybe we can use another action, but this resets fetching of the form
@@ -5803,7 +5788,7 @@ workspaceListListener.startListening({
5803
5788
  category: WorkspaceListErrorCategory.GENERIC
5804
5789
  }
5805
5790
  }));
5806
- return _context4.abrupt("return");
5791
+ return _context3.abrupt("return");
5807
5792
  case 38:
5808
5793
  workspaceData = getWorkspaceData(listenerApi.getState());
5809
5794
  newWorkspace = Object.assign({}, workspaceData, {
@@ -5812,7 +5797,7 @@ workspaceListListener.startListening({
5812
5797
  "abstract": data["abstract"],
5813
5798
  scope: scope
5814
5799
  });
5815
- _context4.next = 42;
5800
+ _context3.next = 42;
5816
5801
  return workspaceApi.saveWorkspacePreset(workspaceId, newWorkspace);
5817
5802
  case 42:
5818
5803
  listenerApi.dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
@@ -5848,13 +5833,13 @@ workspaceListListener.startListening({
5848
5833
  scope: scope
5849
5834
  }));
5850
5835
  }
5851
- _context4.next = 52;
5836
+ _context3.next = 52;
5852
5837
  break;
5853
5838
  case 47:
5854
- _context4.prev = 47;
5855
- _context4.t0 = _context4["catch"](3);
5856
- message = isAxiosError$1(_context4.t0) ? getAxiosErrorMessage(_context4.t0) : _context4.t0.message;
5857
- category = isAxiosAuthError(_context4.t0) ? WorkspaceListErrorCategory.AUTH : WorkspaceListErrorCategory.GENERIC;
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;
5858
5843
  listenerApi.dispatch(workspaceListActions.onErrorWorkspacePresetAction({
5859
5844
  error: {
5860
5845
  type: WorkspaceListErrorType.VERBATIM_ERROR,
@@ -5864,9 +5849,9 @@ workspaceListListener.startListening({
5864
5849
  }));
5865
5850
  case 52:
5866
5851
  case "end":
5867
- return _context4.stop();
5852
+ return _context3.stop();
5868
5853
  }
5869
- }, _callee4, null, [[3, 47]]);
5854
+ }, _callee3, null, [[4, 47]]);
5870
5855
  }));
5871
5856
  function effect(_x5, _x6) {
5872
5857
  return _effect3.apply(this, arguments);
@@ -7279,26 +7264,56 @@ var createBalancedMosaicNode = function createBalancedMosaicNode(currentNode) {
7279
7264
  var leaves = getLeaves(currentNode);
7280
7265
  return createBalancedTreeFromLeaves(leaves);
7281
7266
  };
7282
- var closeTimeSeriesDialogsWhenChangingPreset = function closeTimeSeriesDialogsWhenChangingPreset(componentTypes, dispatch) {
7283
- if (componentTypes) {
7284
- if (componentTypes.length > 0 && !componentTypes.some(function (componentType) {
7285
- return componentType.toLowerCase().includes('viewloading');
7286
- }) && !componentTypes.some(function (componentType) {
7287
- return componentType.toLowerCase().includes('timeseries');
7288
- })) {
7289
- dispatch(uiActions.setToggleOpenDialog({
7290
- setOpen: false,
7291
- type: uiTypes.DialogTypes.TimeSeriesManager
7292
- }));
7293
- dispatch(uiActions.setToggleOpenDialog({
7294
- setOpen: false,
7295
- type: uiTypes.DialogTypes.TimeSeriesSelect
7296
- }));
7297
- dispatch(uiActions.setToggleOpenDialog({
7298
- setOpen: false,
7299
- type: uiTypes.DialogTypes.TimeseriesInfo
7300
- }));
7301
- }
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
+ }));
7302
7317
  }
7303
7318
  };
7304
7319
 
@@ -7858,7 +7873,7 @@ var WorkspaceViewConnect = function WorkspaceViewConnect(_ref) {
7858
7873
  return getComponentTypesFromActiveViews(store);
7859
7874
  });
7860
7875
  React__default.useEffect(function () {
7861
- closeTimeSeriesDialogsWhenChangingPreset(componentTypes, dispatch);
7876
+ closeDialogsWhenChangingPreset(componentTypes, dispatch);
7862
7877
  }, [componentTypes, dispatch]);
7863
7878
  React__default.useEffect(function () {
7864
7879
  window.addEventListener('orientationchange', handleOrientationChange);
@@ -8302,9 +8317,8 @@ var useFetchWorkspacePresets = function useFetchWorkspacePresets() {
8302
8317
  }, [dispatch]);
8303
8318
  useEffect(function () {
8304
8319
  if (workspaceSearchQuery !== prevSearch) {
8305
- workspaceSearchQuery.trim() === '' ? fetchWorkspacePresets({}) : fetchWorkspacePresets({
8306
- search: workspaceSearchQuery
8307
- });
8320
+ var filterParams = constructFilterParams([], workspaceSearchQuery);
8321
+ fetchWorkspacePresets(filterParams);
8308
8322
  }
8309
8323
  }, [fetchWorkspacePresets, prevSearch, workspaceSearchQuery]);
8310
8324
  useEffect(function () {
@@ -8919,7 +8933,6 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
8919
8933
  open: isOpen,
8920
8934
  description: "",
8921
8935
  onClose: onClose,
8922
- onSubmit: onSubmit,
8923
8936
  isResizable: true,
8924
8937
  resizableDefaultSize: {
8925
8938
  width: 500,
@@ -9037,6 +9050,35 @@ var useCreateWorkspacePreset = function useCreateWorkspacePreset() {
9037
9050
  }
9038
9051
  });
9039
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
+ };
9040
9082
 
9041
9083
  var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
9042
9084
  var workspaceId = _ref.workspaceId,
@@ -9050,6 +9092,8 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
9050
9092
  deleteWorkspace = _useDeleteWorkspacePr.mutate;
9051
9093
  var _useCreateWorkspacePr = useCreateWorkspacePreset(),
9052
9094
  createWorkspace = _useCreateWorkspacePr.mutate;
9095
+ var _useUpdateWorkspacePr = useUpdateWorkspacePreset(),
9096
+ updateWorkspace = _useUpdateWorkspacePr.mutate;
9053
9097
  var title = useSelector(function (store) {
9054
9098
  return getSelectedWorkspaceTitle(store);
9055
9099
  });
@@ -9066,13 +9110,13 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
9066
9110
  while (1) switch (_context.prev = _context.next) {
9067
9111
  case 0:
9068
9112
  _context.t0 = presetAction;
9069
- _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;
9070
9114
  break;
9071
9115
  case 3:
9072
9116
  deleteWorkspace({
9073
9117
  id: presetId
9074
9118
  });
9075
- return _context.abrupt("break", 16);
9119
+ return _context.abrupt("break", 18);
9076
9120
  case 5:
9077
9121
  if (!presetId) {
9078
9122
  _context.next = 11;
@@ -9092,8 +9136,15 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
9092
9136
  data: Object.assign({}, oldWorkspace, data),
9093
9137
  action: presetAction
9094
9138
  });
9095
- return _context.abrupt("break", 16);
9139
+ return _context.abrupt("break", 18);
9096
9140
  case 15:
9141
+ updateWorkspace({
9142
+ id: presetId,
9143
+ data: data,
9144
+ action: presetAction
9145
+ });
9146
+ return _context.abrupt("break", 18);
9147
+ case 17:
9097
9148
  dispatch(workspaceListActions.submitFormWorkspaceActionDialogOptions({
9098
9149
  presetAction: presetAction,
9099
9150
  presetId: presetId,
@@ -9101,7 +9152,7 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
9101
9152
  emptyMapPresetTitle: t('workspace-mappreset-new'),
9102
9153
  emptyWorkspacePresetTitle: t('workspace-new')
9103
9154
  }));
9104
- case 16:
9155
+ case 18:
9105
9156
  case "end":
9106
9157
  return _context.stop();
9107
9158
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/workspace",
3
- "version": "12.3.0",
3
+ "version": "12.4.2",
4
4
  "description": "GeoWeb Workspace library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -9,30 +9,30 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "react-redux": "^9.2.0",
12
- "@opengeoweb/shared": "12.3.0",
13
- "@opengeoweb/store": "12.3.0",
14
- "@opengeoweb/api": "12.3.0",
12
+ "@opengeoweb/shared": "12.4.2",
13
+ "@opengeoweb/store": "12.4.2",
14
+ "@opengeoweb/api": "12.4.2",
15
15
  "react-hook-form": "^7.50.1",
16
- "@opengeoweb/theme": "12.3.0",
16
+ "@opengeoweb/theme": "12.4.2",
17
17
  "@reduxjs/toolkit": "^2.6.1",
18
- "@opengeoweb/snackbar": "12.3.0",
18
+ "@opengeoweb/snackbar": "12.4.2",
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.3.0",
25
- "@opengeoweb/timeseries": "12.3.0",
26
- "@opengeoweb/authentication": "12.3.0",
27
- "@opengeoweb/core": "12.3.0",
28
- "@opengeoweb/taf": "12.3.0",
29
- "@opengeoweb/sigmet-airmet": "12.3.0",
30
- "@opengeoweb/warnings": "12.3.0",
31
- "@opengeoweb/spaceweather": "12.3.0",
32
- "i18next": "^23.11.5",
24
+ "@opengeoweb/form-fields": "12.4.2",
25
+ "@opengeoweb/timeseries": "12.4.2",
26
+ "@opengeoweb/authentication": "12.4.2",
27
+ "@opengeoweb/core": "12.4.2",
28
+ "@opengeoweb/taf": "12.4.2",
29
+ "@opengeoweb/sigmet-airmet": "12.4.2",
30
+ "@opengeoweb/warnings": "12.4.2",
31
+ "@opengeoweb/spaceweather": "12.4.2",
32
+ "i18next": "^25.0.1",
33
33
  "react-i18next": "^15.1.1",
34
34
  "@mui/material": "^7.0.1",
35
- "@opengeoweb/webmap-react": "12.3.0",
35
+ "@opengeoweb/webmap-react": "12.4.2",
36
36
  "@tanstack/react-query": "^5.69.2"
37
37
  },
38
38
  "peerDependencies": {
@@ -8,4 +8,9 @@ export declare const useCreateWorkspacePreset: () => MutationReturnType<{
8
8
  data: WorkspacePresetForBE;
9
9
  action?: WorkspacePresetAction.DUPLICATE;
10
10
  }>;
11
+ export declare const useUpdateWorkspacePreset: () => MutationReturnType<{
12
+ id: string;
13
+ data: WorkspacePresetForBE;
14
+ action?: WorkspacePresetAction.SAVE | WorkspacePresetAction.SAVE_SYSTEM_PRESET;
15
+ }>;
11
16
  export {};
@@ -2,4 +2,4 @@ import { UnknownAction } from '@reduxjs/toolkit';
2
2
  import { MosaicNode } from 'react-mosaic-component';
3
3
  export declare const getUniqueId: (existingIds: string[], count?: number) => string;
4
4
  export declare const createBalancedMosaicNode: (currentNode: MosaicNode<string>) => MosaicNode<string>;
5
- export declare const closeTimeSeriesDialogsWhenChangingPreset: (componentTypes: string[] | undefined, dispatch: (action: UnknownAction) => void) => void;
5
+ export declare const closeDialogsWhenChangingPreset: (componentTypes: string[] | undefined, dispatch: (action: UnknownAction) => void) => void;
@@ -1,8 +1,12 @@
1
1
  import { syncGroupsTypes } from '@opengeoweb/store';
2
2
  import { MosaicNode } from 'react-mosaic-component';
3
3
  import { AxiosError } from 'axios';
4
+ import { PayloadAction } from '@reduxjs/toolkit';
5
+ import { SystemScope } from '@opengeoweb/shared';
4
6
  import { PresetsApi } from '../../utils/api';
5
7
  import { WorkspacePreset, WorkspacePresetForBE, WorkspaceViewsFromBE, ViewType, WorkspaceViewPresetComponentsLookupType, WorkspaceSyncGroup } from './types';
8
+ import { WorkspaceDialogView } from '../workspaceList/types';
9
+ import { SaveViewPresetPayload, ViewPreset } from '../viewPresets/types';
6
10
  export declare const getWorkspaceApi: () => PresetsApi;
7
11
  export declare const getViewPresetState: (viewPresetId: string, mosaicNodeId: string, state: 'loading' | 'error') => {
8
12
  title: string;
@@ -27,3 +31,4 @@ export declare const getViewType: (numViews: number, firstViewComponentType: str
27
31
  */
28
32
  export declare const makeListOfViewIds: (mNode: MosaicNode<string>) => string[];
29
33
  export declare const getErrorMessage: (error: AxiosError<unknown>) => string;
34
+ export declare const updateViewPresets: (saveViewPreset: (payloadAction: PayloadAction<SaveViewPresetPayload>, saveAs?: boolean) => Promise<ViewPreset | Error | void>, getViewPresetEntity: (view: WorkspaceDialogView) => ViewPreset, data: WorkspacePresetForBE, scope: SystemScope) => Promise<(void | Error | ViewPreset)[]>;
@@ -1,4 +1,4 @@
1
- import { WorkspaceModuleStore } from '../types';
2
1
  import { WorkspacePresetForBE } from '../workspace/types';
2
+ import { WorkspaceModuleStore } from '../types';
3
3
  export declare const emptyWorkspaceBEData: Omit<WorkspacePresetForBE, 'title'>;
4
4
  export declare const workspaceListListener: import("@reduxjs/toolkit").ListenerMiddlewareInstance<WorkspaceModuleStore, import("redux-thunk").ThunkDispatch<WorkspaceModuleStore, unknown, import("redux").UnknownAction>, unknown>;