@opengeoweb/workspace 10.0.0 → 10.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
2
- import { syncGroupsTypes, syncGroupsActions, layerActions, mapStoreActions, uiActions, genericActions, mapActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, coreModuleReducersMap, routerReducersMap, coreModuleMiddlewares, routerMiddlewares, linkComponentTypesConstants, uiTypes, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
3
- import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, useApiContext } from '@opengeoweb/api';
2
+ import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, coreModuleReducersMap, routerReducersMap, coreModuleMiddlewares, routerMiddlewares, 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';
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, timeSeriesReducersMap, timeSeriesMiddlewares } from '@opengeoweb/timeseries';
@@ -96,14 +96,16 @@ var en = {
96
96
  "workspace-admin-save-new-viewpreset": "This new viewpreset will be added to the system presets.",
97
97
  "workspace-admin-save-new-viewpreset-warning": "Saving changes to this system preset will impact other presets.",
98
98
  "workspace-admin-save-new-viewpreset-title": "Save new system viewpreset",
99
- "workspace-admin-reset-workspace": "Reset",
100
- "workspace-admin-reset-workspace-title": "Reset to original",
99
+ "workspace-reset": "Reset",
100
+ "workspace-reset-title": "Reset to original",
101
101
  "workspace-dialog-delete-system": "Delete system workspace",
102
102
  "workspace-dialog-confirm-delete-system": "The system workspace will be deleted, but all the view presets used will remain intact.",
103
103
  "workspace-dialog-confirm-delete-user": "The workspace will be deleted, but all the view presets used will remain intact.",
104
104
  "workspace-list-success-delete-system": "\"{{TITLE}}\" has been successfully removed from the system's workspaces.",
105
105
  "workspace-link-location-header": "Location",
106
- "workspace-link": "Link"
106
+ "workspace-link": "Link",
107
+ "workspace-dialog-confirm-reset-view-message": "The view will be reset and all changes will be lost. Are you sure you want to continue?",
108
+ "workspace-viewpreset-success-reset": "View preset \"{{TITLE}}\" has been reset succesfully"
107
109
  };
108
110
  var fi = {
109
111
  "workspace-menu": "Workspace menu",
@@ -173,12 +175,14 @@ var fi = {
173
175
  "workspace-admin-save-new-viewpreset": "ei käännetty",
174
176
  "workspace-admin-save-new-viewpreset-warning": "ei käännetty",
175
177
  "workspace-admin-save-new-viewpreset-title": "ei käännetty",
176
- "workspace-admin-reset-workspace": "ei käännetty",
177
- "workspace-admin-reset-workspace-title": "ei käännetty",
178
+ "workspace-reset": "Palauta alkuperäinen",
179
+ "workspace-reset-title": "ei käännetty",
178
180
  "workspace-dialog-confirm-delete-system": "ei käännetty",
179
181
  "workspace-dialog-confirm-delete-user": "Workspace poistetaan, mutta kaikki view presetit säilyvät tallennettuina.",
180
182
  "workspace-link-location-header": "Sijainti",
181
- "workspace-link": "Link"
183
+ "workspace-link": "Link",
184
+ "workspace-dialog-confirm-reset-view-message": "ei käännetty",
185
+ "workspace-viewpreset-success-reset": "ei käännetty"
182
186
  };
183
187
  var no = {
184
188
  "workspace-menu": "Arbeidsrommeny",
@@ -248,12 +252,14 @@ var no = {
248
252
  "workspace-admin-save-new-viewpreset": "Denne nye vinduet blir algt til systemets forhåndsinnstillinger.",
249
253
  "workspace-admin-save-new-viewpreset-warning": "Lagring av endringer til denne systempreset vil påvirke andre presets.",
250
254
  "workspace-admin-save-new-viewpreset-title": "Lagre ny systempreset",
251
- "workspace-admin-reset-workspace": "Tilbakestill",
252
- "workspace-admin-reset-workspace-title": "Tilbakestill til original",
255
+ "workspace-reset": "Tilbakestill",
256
+ "workspace-reset-title": "Tilbakestill til original",
253
257
  "workspace-dialog-confirm-delete-system": "Systemets arbeidsrom vil bli slettet, men alle vinduer som er brukt vil forbli intakte.",
254
258
  "workspace-dialog-confirm-delete-user": "Arbeidsrommet blir slettet, men alle vinduer som er brukt vil forbli intakte.",
255
259
  "workspace-link-location-header": "Lokasjon",
256
- "workspace-link": "Link"
260
+ "workspace-link": "Link",
261
+ "workspace-dialog-confirm-reset-view-message": "Ikke oversatt",
262
+ "workspace-viewpreset-success-reset": "Ikke oversatt"
257
263
  };
258
264
  var nl = {
259
265
  "workspace-menu": "Workspace menu",
@@ -303,7 +309,7 @@ var nl = {
303
309
  "workspace-list-success-delete": "Workspace \"{{TITLE}}\" succesvol verwijderd",
304
310
  "workspace-list-success-duplicate": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
305
311
  "workspace-list-success-edit": "Workspace \"{{TITLE}}\" succesvol aangepast",
306
- "workspace-list-success-reset": "Workspace\"{{TITLE}}\" herstelt naar origineel ",
312
+ "workspace-list-success-reset": "Workspace\"{{TITLE}}\" succesvol hersteld naar origineel",
307
313
  "workspace-list-success-save": "Workspace \"{{TITLE}}\" succesvol opgeslagen",
308
314
  "workspace-save-error": "Workspace opslaan \"{{TITLE}}\" mislukt",
309
315
  "workspace-error-generic": "Er is iets mis gegaan, probeer het opnieuw",
@@ -323,15 +329,17 @@ var nl = {
323
329
  "workspace-admin-save-new-viewpreset": "Deze nieuwe viewpreset zal worden toegevoegd aan de systeem presets.",
324
330
  "workspace-admin-save-new-viewpreset-warning": "Het opslaan van wijzigingen aan systeem presets kan leiden tot veranderingen in andere presets.",
325
331
  "workspace-admin-save-new-viewpreset-title": "Opslaan als systeem viewpreset",
326
- "workspace-admin-reset-workspace": "Workspace herstellen",
327
- "workspace-admin-reset-workspace-title": "Herstellen naar origineel",
332
+ "workspace-reset": "Herstellen",
333
+ "workspace-reset-title": "Herstellen naar origineel",
328
334
  "workspace-dialog-delete-system": "Verwijder systeem workspace",
329
335
  "workspace-dialog-confirm-delete-system": "Deze systeem workspace zal worden verwijderd, maar alle gebruikte viewpresets zullen intact blijven.",
330
336
  "workspace-dialog-confirm-reset-personal-message": "De workspace zal worden hersteld en alle aanpassing zullen worden verwijderd. Weet je zeker dat je door wilt gaan?",
331
337
  "workspace-list-success-delete-system": "\"{{TITLE}}\" is succesvol verwijderd uit de systeem workspaces.",
332
338
  "workspace-dialog-confirm-delete-user": "Deze workspace zal worden verwijderd, maar alle gebruikte view presets zullen intact blijven.",
333
339
  "workspace-link-location-header": "Locatie",
334
- "workspace-link": "Link"
340
+ "workspace-link": "Link",
341
+ "workspace-dialog-confirm-reset-view-message": "De viewpreset zal worden hersteld en alle aanpassing zullen worden verwijderd. Weet je zeker dat je door wilt gaan?",
342
+ "workspace-viewpreset-success-reset": "Viewpreset \"{{TITLE}}\" succesvol hersteld naar origineel"
335
343
  };
336
344
  var workspaceTranslations = {
337
345
  en: en,
@@ -1064,6 +1072,7 @@ var PresetAction;
1064
1072
  PresetAction["SAVE_AS"] = "Save as";
1065
1073
  PresetAction["SHARE"] = "Share";
1066
1074
  PresetAction["EDIT"] = "Edit";
1075
+ PresetAction["RESET"] = "Reset";
1067
1076
  })(PresetAction || (PresetAction = {}));
1068
1077
 
1069
1078
  /* *
@@ -1105,7 +1114,7 @@ var viewPresetsAdapter = createEntityAdapter({
1105
1114
  var initialState$2 = viewPresetsAdapter.getInitialState();
1106
1115
  var warningsPresetChangeActions = [publicWarningActions.setWarningFilters];
1107
1116
  var syncGroupChangeActions = [syncGroupsActions.syncGroupRemoveTarget, syncGroupsActions.syncGroupAddTarget];
1108
- var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, mapStoreActions.layerMoveLayer, mapStoreActions.setAutoLayerId, mapStoreActions.toggleAutoUpdate, mapStoreActions.mapStartAnimation, mapStoreActions.mapStopAnimation, mapStoreActions.toggleTimeSliderIsVisible, mapStoreActions.setTimeStep, mapStoreActions.setAnimationDelay, mapStoreActions.toggleTimestepAuto, mapStoreActions.setAnimationStartTime, mapStoreActions.setAnimationEndTime, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox];
1117
+ var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, mapActions.layerMoveLayer, mapActions.setAutoLayerId, mapActions.toggleAutoUpdate, mapActions.mapStartAnimation, mapActions.mapStopAnimation, mapActions.toggleTimeSliderIsVisible, mapActions.setTimeStep, mapActions.setAnimationDelay, mapActions.toggleTimestepAuto, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox];
1109
1118
  var timeSeriesPresetChangeActions = [timeSeriesActions.addParameter, timeSeriesActions.addPlot, timeSeriesActions.deleteParameter, timeSeriesActions.deletePlot, timeSeriesActions.moveParameter, timeSeriesActions.movePlot, timeSeriesActions.toggleParameter, timeSeriesActions.togglePlot, timeSeriesActions.patchParameter, timeSeriesActions.updateTitle];
1110
1119
  var supportedMapActionOrigins = [layerTypes.LayerActionOrigin.layerManager, layerTypes.LayerActionOrigin.wmsLoader, mapEnums.MapActionOrigin.map];
1111
1120
  var supportedTimeSeriesActionOrigins = [TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesManager, TimeSeriesTypes.TimeSeriesActionOrigin.timeSeriesSelect];
@@ -1900,23 +1909,27 @@ var slice$1 = createSlice({
1900
1909
  var _action$payload5 = action.payload,
1901
1910
  panelId = _action$payload5.panelId,
1902
1911
  title = _action$payload5.title,
1903
- presetAction = _action$payload5.action;
1912
+ presetAction = _action$payload5.action,
1913
+ scope = _action$payload5.scope;
1904
1914
  var entity = draft.views.byId[panelId];
1905
1915
  if (entity && presetAction !== PresetAction.DELETE) {
1906
1916
  entity.title = title;
1907
- entity.scope = 'user';
1917
+ entity.scope = scope || 'user';
1908
1918
  }
1909
1919
  });
1910
1920
  workspacePresetChangeActions.map(function (action) {
1911
1921
  return builder.addCase(action, function (draft, payload) {
1912
- var _payload$payload;
1913
- var hasChanges = action !== syncGroupsActions.syncGroupAddGroup && action !== syncGroupsActions.syncGroupToggleIsTimeScrollingEnabled || ((_payload$payload = payload.payload) == null ? void 0 : _payload$payload.origin) === 'user';
1922
+ var _payload$payload, _payload$payload2;
1923
+ var isResetViewPreset = action === viewPresetActions.selectViewPreset && ((_payload$payload = payload.payload) == null ? void 0 : _payload$payload.shouldReset);
1924
+ var isSyncGroupAction = action === syncGroupsActions.syncGroupAddGroup || action === syncGroupsActions.syncGroupToggleIsTimeScrollingEnabled;
1925
+ var isUserOrigin = isSyncGroupAction && ((_payload$payload2 = payload.payload) == null ? void 0 : _payload$payload2.origin) === 'user';
1926
+ var hasChanges = !isResetViewPreset && !isSyncGroupAction || isUserOrigin;
1914
1927
  draft.hasChanges = hasChanges;
1915
1928
  // reset title and scope when setting empty activeViewPresetId
1916
1929
  if (action.type === viewPresetActions.setActiveViewPresetId.type) {
1917
- var _payload$payload2 = payload.payload,
1918
- panelId = _payload$payload2.panelId,
1919
- viewPresetId = _payload$payload2.viewPresetId;
1930
+ var _payload$payload3 = payload.payload,
1931
+ panelId = _payload$payload3.panelId,
1932
+ viewPresetId = _payload$payload3.viewPresetId;
1920
1933
  var entity = draft.views.byId[panelId];
1921
1934
  if (entity && viewPresetId === '') {
1922
1935
  entity.title = '';
@@ -1927,7 +1940,6 @@ var slice$1 = createSlice({
1927
1940
  });
1928
1941
  }
1929
1942
  });
1930
- // eslint-disable-next-line prefer-destructuring
1931
1943
  var reducer$1 = slice$1.reducer;
1932
1944
  var workspaceActions = Object.assign({}, slice$1.actions);
1933
1945
 
@@ -1963,17 +1975,17 @@ var selectors$2 = viewPresetsAdapter.getSelectors(function (state) {
1963
1975
  });
1964
1976
  var getViewPresets = selectors$2.selectAll,
1965
1977
  getViewPresetById = selectors$2.selectById;
1966
- var getViewPresetsIsFetching = createSelector(getViewPresetById, function (store, panelId) {
1978
+ var getViewPresetsIsFetching = createSelector(getViewPresetById, function (_store, panelId) {
1967
1979
  return panelId;
1968
1980
  }, function (viewPreset) {
1969
1981
  return (viewPreset == null ? void 0 : viewPreset.isFetching) || false;
1970
1982
  }, selectorMemoizationOptions);
1971
- var getViewPresetsError = createSelector(getViewPresetById, function (store, panelId) {
1983
+ var getViewPresetsError = createSelector(getViewPresetById, function (_store, panelId) {
1972
1984
  return panelId;
1973
1985
  }, function (viewPreset) {
1974
1986
  return viewPreset == null ? void 0 : viewPreset.error;
1975
1987
  }, selectorMemoizationOptions);
1976
- var getViewPresetDetailError = createSelector(getViewPresetsError, function (store, panelId) {
1988
+ var getViewPresetDetailError = createSelector(getViewPresetsError, function (_store, panelId) {
1977
1989
  return panelId;
1978
1990
  }, function (error) {
1979
1991
  if (error && error.component === 'PRESET_DETAIL') {
@@ -1981,12 +1993,12 @@ var getViewPresetDetailError = createSelector(getViewPresetsError, function (sto
1981
1993
  }
1982
1994
  return undefined;
1983
1995
  }, selectorMemoizationOptions);
1984
- var getViewPresetHasChanges = createSelector(getViewPresetById, function (store, panelId) {
1996
+ var getViewPresetHasChanges = createSelector(getViewPresetById, function (_store, panelId) {
1985
1997
  return panelId;
1986
1998
  }, function (viewPreset) {
1987
1999
  return viewPreset == null ? void 0 : viewPreset.hasChanges;
1988
2000
  }, selectorMemoizationOptions);
1989
- var getViewPresetActiveId = createSelector(getViewPresetById, function (store, panelId) {
2001
+ var getViewPresetActiveId = createSelector(getViewPresetById, function (_store, panelId) {
1990
2002
  return panelId;
1991
2003
  }, function (viewPreset) {
1992
2004
  return viewPreset == null ? void 0 : viewPreset.activeViewPresetId;
@@ -2004,7 +2016,7 @@ var getDialogOptions = createSelector(getViewPresetsStore, function (store) {
2004
2016
  }, function (store) {
2005
2017
  return store.viewPresetDialog || undefined;
2006
2018
  }, selectorMemoizationOptions);
2007
- var getIsViewPresetListDialogOpen = createSelector(getViewPresetById, function (store, panelId) {
2019
+ var getIsViewPresetListDialogOpen = createSelector(getViewPresetById, function (_store, panelId) {
2008
2020
  return panelId;
2009
2021
  }, function (viewPreset) {
2010
2022
  return (viewPreset == null ? void 0 : viewPreset.isViewPresetListDialogOpen) || false;
@@ -2026,7 +2038,7 @@ var getViewPresetListFiltersForView = createSelector(getViewPresetById, function
2026
2038
  }
2027
2039
  return filters;
2028
2040
  }, selectorMemoizationOptions);
2029
- var getViewPresetListSearchQueryForView = createSelector(getViewPresetById, function (store, panelId) {
2041
+ var getViewPresetListSearchQueryForView = createSelector(getViewPresetById, function (_store, panelId) {
2030
2042
  return panelId;
2031
2043
  }, function (viewPreset) {
2032
2044
  return (viewPreset == null ? void 0 : viewPreset.searchQuery) || '';
@@ -2086,6 +2098,14 @@ var getSnackbarMessage = function getSnackbarMessage(action, title) {
2086
2098
  TITLE: trimmedTitle
2087
2099
  }
2088
2100
  };
2101
+ case PresetAction.RESET:
2102
+ return {
2103
+ key: 'workspace-viewpreset-success-reset',
2104
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
2105
+ params: {
2106
+ TITLE: trimmedTitle
2107
+ }
2108
+ };
2089
2109
  default:
2090
2110
  return {
2091
2111
  key: 'workspace-viewpreset-success-save',
@@ -4642,7 +4662,7 @@ var createApi = function createApi() {
4642
4662
 
4643
4663
  var workspaceListener = createListenerMiddleware();
4644
4664
  workspaceListener.startListening({
4645
- actionCreator: mapStoreActions.registerMap,
4665
+ actionCreator: mapActions.registerMap,
4646
4666
  effect: function () {
4647
4667
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
4648
4668
  var payload, mapId, viewType, _workspaceState$views, workspaceState, mapPresetId;
@@ -4673,7 +4693,7 @@ workspaceListener.startListening({
4673
4693
  }()
4674
4694
  });
4675
4695
  workspaceListener.startListening({
4676
- actionCreator: mapStoreActions.unregisterMap,
4696
+ actionCreator: mapActions.unregisterMap,
4677
4697
  effect: function () {
4678
4698
  var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
4679
4699
  var payload, mapId, viewType;
@@ -5409,7 +5429,7 @@ viewPresetsListener.startListening({
5409
5429
  panelId = payload.panelId, _payload$viewPresetId = payload.viewPresetId, viewPresetId = _payload$viewPresetId === void 0 ? '' : _payload$viewPresetId;
5410
5430
  isMapAnimating = mapSelectors.isAnimating(listenerApi.getState(), panelId);
5411
5431
  if (isMapAnimating) {
5412
- listenerApi.dispatch(mapStoreActions.mapStopAnimation({
5432
+ listenerApi.dispatch(mapActions.mapStopAnimation({
5413
5433
  mapId: panelId
5414
5434
  }));
5415
5435
  }
@@ -5421,7 +5441,7 @@ viewPresetsListener.startListening({
5421
5441
  }));
5422
5442
  } else {
5423
5443
  // new map preset selected
5424
- listenerApi.dispatch(mapStoreActions.setMapPreset({
5444
+ listenerApi.dispatch(mapActions.setMapPreset({
5425
5445
  mapId: panelId,
5426
5446
  initialProps: emptyViewPreset('Map').initialProps
5427
5447
  }));
@@ -5979,7 +5999,6 @@ var workspaceReducersMap = {
5979
5999
  };
5980
6000
  var workspaceMiddlewares = [viewPresetsListener.middleware, workspaceListener.middleware, workspaceListListener.middleware];
5981
6001
  var workspaceModuleConfig = {
5982
- id: 'workspace-module',
5983
6002
  reducersMap: workspaceReducersMap,
5984
6003
  middlewares: workspaceMiddlewares
5985
6004
  };
@@ -6587,7 +6606,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
6587
6606
  var menuItems = [{
6588
6607
  text: t('workspace-duplicate'),
6589
6608
  action: onDuplicate
6590
- }].concat(workspacePreset.scope === 'user' ? [{
6609
+ }].concat(workspacePreset.scope === 'user' || isAdmin ? [{
6591
6610
  text: t(editTitle),
6592
6611
  action: onEdit
6593
6612
  }] : []);
@@ -6647,7 +6666,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
6647
6666
  marginLeft: 2
6648
6667
  },
6649
6668
  children: jsxs(Grid2, {
6650
- children: [!isAdmin && jsx(ToggleMenu, {
6669
+ children: [jsx(ToggleMenu, {
6651
6670
  buttonTestId: testIdPrefix + "-listOptionsButton",
6652
6671
  menuPosition: "right",
6653
6672
  menuItems: menuItems,
@@ -6865,9 +6884,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6865
6884
  });
6866
6885
  break;
6867
6886
  }
6868
- // case WorkspacePresetAction.SAVE: {
6869
- // break;
6870
- // }
6887
+ case WorkspacePresetAction.DELETE_SYSTEM_PRESET:
6871
6888
  case WorkspacePresetAction.DELETE:
6872
6889
  {
6873
6890
  openViewPresetsDialog({
@@ -6914,8 +6931,6 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6914
6931
  return filter.isSelected;
6915
6932
  });
6916
6933
  var shouldHideNewWorkspace = !isAllSelectedForFilters || viewPresetListSearchQuery.length > 0;
6917
- // disable edit for admin users for now
6918
- var isEditable = isLoggedIn && !isAdmin;
6919
6934
  return jsxs("div", {
6920
6935
  "data-testid": "viewpreset-selectlist-connect",
6921
6936
  style: {
@@ -6957,10 +6972,11 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
6957
6972
  newPreset: Object.assign({}, getEmptyWorkspaceListItem(t), {
6958
6973
  title: t('workspace-mappreset-new')
6959
6974
  }),
6960
- isEditable: isEditable,
6961
6975
  hideNewWorkspace: shouldHideNewWorkspace,
6962
6976
  searchQuery: viewPresetListSearchQuery,
6963
- testIdPrefix: "viewpreset"
6977
+ testIdPrefix: "viewpreset",
6978
+ isAdmin: isAdmin,
6979
+ isEditable: isLoggedIn
6964
6980
  })]
6965
6981
  })]
6966
6982
  });
@@ -7038,6 +7054,8 @@ var ViewPresetMenu = function ViewPresetMenu(_ref) {
7038
7054
  });
7039
7055
  };
7040
7056
 
7057
+ var workspacePresetOptionId = 'workspace-options-toolbutton';
7058
+ var viewPresetOptionId = 'viewpreset-options-toolbutton';
7041
7059
  var WorkspaceOptionsNoMemo = function WorkspaceOptionsNoMemo(_ref) {
7042
7060
  var title = _ref.title,
7043
7061
  activeTab = _ref.activeTab,
@@ -7047,15 +7065,14 @@ var WorkspaceOptionsNoMemo = function WorkspaceOptionsNoMemo(_ref) {
7047
7065
  handleSaveAs = _ref.handleSaveAs,
7048
7066
  handleEdit = _ref.handleEdit,
7049
7067
  handleDelete = _ref.handleDelete,
7050
- handleSaveSystemPresetAs = _ref.handleSaveSystemPresetAs,
7051
- handleResetWorkspace = _ref.handleResetWorkspace,
7068
+ handleReset = _ref.handleReset,
7052
7069
  _ref$hasChanges = _ref.hasChanges,
7053
7070
  hasChanges = _ref$hasChanges === void 0 ? false : _ref$hasChanges,
7054
7071
  _ref$isDisabled = _ref.isDisabled,
7055
7072
  isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
7056
7073
  panelId = _ref.panelId,
7057
7074
  _ref$id = _ref.id,
7058
- id = _ref$id === void 0 ? 'workspace-options-toolbutton' : _ref$id,
7075
+ id = _ref$id === void 0 ? workspacePresetOptionId : _ref$id,
7059
7076
  _ref$isAdmin = _ref.isAdmin,
7060
7077
  isAdmin = _ref$isAdmin === void 0 ? false : _ref$isAdmin;
7061
7078
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
@@ -7072,32 +7089,23 @@ var WorkspaceOptionsNoMemo = function WorkspaceOptionsNoMemo(_ref) {
7072
7089
  setAnchorEl(document.getElementById(id));
7073
7090
  }
7074
7091
  }, [isDefaultOpen, id]);
7075
- var editTitle = id === 'viewpreset-options-toolbutton' ? t('workspace-edit') : t('workspace-edit-both');
7076
- var options = !isAdmin ? [{
7092
+ var isViewPresetsOptions = id === viewPresetOptionId;
7093
+ var editTitle = isViewPresetsOptions ? t('workspace-edit') : t('workspace-edit-both');
7094
+ var saveAsTitle = isAdmin && !isViewPresetsOptions ? t('workspace-admin-save-new-workspace') : t('workspace-save-as');
7095
+ var isAdminWorkspaceOptions = isAdmin && id === workspacePresetOptionId;
7096
+ var options = [{
7077
7097
  title: t('workspace-save'),
7078
7098
  callback: handleSave
7079
7099
  }, {
7080
- title: t('workspace-save-as'),
7100
+ title: saveAsTitle,
7081
7101
  callback: handleSaveAs
7082
- }, {
7102
+ }].concat(!isAdminWorkspaceOptions ? [{
7083
7103
  title: editTitle,
7084
7104
  callback: handleEdit
7085
- }].concat(handleResetWorkspace ? [{
7086
- title: t('workspace-admin-reset-workspace'),
7087
- callback: handleResetWorkspace
7088
- }] : [], [{
7089
- title: t('workspace-delete'),
7090
- callback: handleDelete
7091
- }]) : [{
7092
- title: t('workspace-save'),
7093
- callback: handleSave
7094
- }].concat(handleSaveSystemPresetAs ? [{
7095
- title: t('workspace-admin-save-new-workspace'),
7096
- callback: handleSaveSystemPresetAs
7097
- }] : [], handleResetWorkspace ? [{
7098
- title: t('workspace-admin-reset-workspace'),
7099
- callback: handleResetWorkspace
7100
7105
  }] : [], [{
7106
+ title: t('workspace-reset'),
7107
+ callback: handleReset
7108
+ }, {
7101
7109
  title: t('workspace-delete'),
7102
7110
  callback: handleDelete
7103
7111
  }]);
@@ -7241,7 +7249,8 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7241
7249
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
7242
7250
  t = _useWorkspaceTranslat.t;
7243
7251
  var _useAuthenticationCon = useAuthenticationContext(),
7244
- currentRole = _useAuthenticationCon.currentRole;
7252
+ currentRole = _useAuthenticationCon.currentRole,
7253
+ isLoggedIn = _useAuthenticationCon.isLoggedIn;
7245
7254
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
7246
7255
  var workspaceView = useSelector(function (store) {
7247
7256
  var _workspaceSelectors$g;
@@ -7339,6 +7348,17 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7339
7348
  }
7340
7349
  });
7341
7350
  }, [activeViewPresetId, constructInitialProps, openViewPresetsDialog, panelId, t, title]);
7351
+ var onReset = React.useCallback(function () {
7352
+ openViewPresetsDialog({
7353
+ title: t('workspace-reset-title'),
7354
+ action: PresetAction.RESET,
7355
+ viewPresetId: activeViewPresetId,
7356
+ panelId: panelId,
7357
+ formValues: {
7358
+ title: title
7359
+ }
7360
+ });
7361
+ }, [activeViewPresetId, openViewPresetsDialog, panelId, t, title]);
7342
7362
  var toggleViewPresetDialog = React.useCallback(function (_ref3) {
7343
7363
  var panelId = _ref3.panelId,
7344
7364
  isViewPresetDialogOpen = _ref3.isViewPresetDialogOpen;
@@ -7360,6 +7380,8 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7360
7380
  return jsx(Preset, {});
7361
7381
  }, []);
7362
7382
  renderCounter.count(WorkspaceViewTitleConnectNoMemo.name);
7383
+ var currentViewScope = viewScope || 'system';
7384
+ var isEnabled = (currentViewScope === 'user' || isAdmin && currentViewScope === 'system') && activeViewPresetId !== '' && isLoggedIn;
7363
7385
  return jsxs(Fragment, {
7364
7386
  children: [jsx(CustomIconButton, {
7365
7387
  "data-testid": "open-viewpresets",
@@ -7373,11 +7395,12 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
7373
7395
  panelId: panelId,
7374
7396
  title: fullTitle,
7375
7397
  hasChanges: hasViewPresetChanges || isNewActive,
7376
- handleSave: viewScope === 'user' ? onSave : undefined,
7377
- handleDelete: viewScope === 'user' ? onDelete : undefined,
7378
- handleSaveAs: onSaveAs,
7379
- handleEdit: viewScope === 'user' ? onEdit : undefined,
7380
- id: "viewpreset-options-toolbutton",
7398
+ handleSave: isEnabled ? onSave : undefined,
7399
+ handleDelete: isEnabled ? onDelete : undefined,
7400
+ handleSaveAs: isLoggedIn ? onSaveAs : undefined,
7401
+ handleEdit: isEnabled ? onEdit : undefined,
7402
+ handleReset: onReset,
7403
+ id: viewPresetOptionId,
7381
7404
  isAdmin: isAdmin
7382
7405
  }), jsx(LoadingIndicatorConnect, {
7383
7406
  panelId: panelId
@@ -8119,7 +8142,7 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
8119
8142
  var onSaveSystemPreset = function onSaveSystemPreset() {
8120
8143
  return onSaveAction(WorkspacePresetAction.SAVE_SYSTEM_PRESET, 'system');
8121
8144
  };
8122
- var onResetWorkspace = function onResetWorkspace() {
8145
+ var onReset = function onReset() {
8123
8146
  setWorkspaceActionDialogOptions({
8124
8147
  action: WorkspacePresetAction.RESET,
8125
8148
  presetId: workspaceId,
@@ -8156,16 +8179,18 @@ var WorkspaceOptionsConnect = function WorkspaceOptionsConnect(_ref) {
8156
8179
  }
8157
8180
  return isAdmin ? onSaveSystemPreset : undefined;
8158
8181
  };
8182
+ var handleSaveAs = function handleSaveAs() {
8183
+ return isAdmin ? onSaveSystemPresetAs : onSaveAs;
8184
+ };
8159
8185
  return jsx(WorkspaceOptions, {
8160
8186
  hasChanges: hasChanges,
8161
8187
  title: fullTitle,
8162
8188
  activeTab: activeTab,
8163
8189
  handleDelete: getOnDelete(),
8164
- handleSaveAs: onSaveAs,
8190
+ handleSaveAs: handleSaveAs(),
8165
8191
  handleSave: handleSave(),
8166
8192
  handleEdit: isUserPreset ? onEdit : undefined,
8167
- handleSaveSystemPresetAs: isUserPreset ? undefined : onSaveSystemPresetAs,
8168
- handleResetWorkspace: onResetWorkspace,
8193
+ handleReset: onReset,
8169
8194
  isDisabled: !viewIds.length || !isLoggedIn,
8170
8195
  isAdmin: isAdmin
8171
8196
  });
@@ -8244,7 +8269,7 @@ var ViewPresetItem = function ViewPresetItem(_ref2) {
8244
8269
  error = viewPreset.error;
8245
8270
  var fieldNameTitle = "views." + index + ".title";
8246
8271
  React__default.useEffect(function () {
8247
- var suffix = isNew || viewPreset.scope === 'system' || isAdmin ? " " + viewPreset.mosaicNodeId : '';
8272
+ var suffix = isNew || viewPreset.scope === 'system' && !isAdmin ? " " + viewPreset.mosaicNodeId : '';
8248
8273
  var initialTitle = "" + viewPresetTitle + suffix;
8249
8274
  setValue("views." + index + ".title", initialTitle);
8250
8275
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -8508,7 +8533,7 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
8508
8533
  }
8509
8534
  case WorkspacePresetAction.RESET:
8510
8535
  {
8511
- return t('workspace-admin-reset-workspace');
8536
+ return t('workspace-reset');
8512
8537
  }
8513
8538
  default:
8514
8539
  {
@@ -8548,7 +8573,7 @@ var WorkspacePresetsFormDialog = function WorkspacePresetsFormDialog(_ref) {
8548
8573
  }
8549
8574
  case WorkspacePresetAction.RESET:
8550
8575
  {
8551
- return t('workspace-admin-reset-workspace-title');
8576
+ return t('workspace-reset-title');
8552
8577
  }
8553
8578
  default:
8554
8579
  {
@@ -8767,6 +8792,20 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
8767
8792
  name: "title",
8768
8793
  defaultValue: title
8769
8794
  }, "title")]
8795
+ }), action === PresetAction.RESET && jsxs(Box, {
8796
+ children: [jsxs(Typography, {
8797
+ variant: "body1",
8798
+ children: [jsx(Exclamation, {
8799
+ sx: {
8800
+ top: '6px',
8801
+ position: 'relative',
8802
+ color: 'geowebColors.functional.warning'
8803
+ }
8804
+ }), t('workspace-dialog-confirm-reset-view-message')]
8805
+ }), jsx(ReactHookFormHiddenInput, {
8806
+ name: "title",
8807
+ defaultValue: title
8808
+ }, "title")]
8770
8809
  })]
8771
8810
  });
8772
8811
  };
@@ -8780,7 +8819,8 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
8780
8819
  formValues = _ref.formValues,
8781
8820
  onSuccess = _ref.onSuccess,
8782
8821
  onClose = _ref.onClose,
8783
- title = _ref.title;
8822
+ title = _ref.title,
8823
+ onReset = _ref.onReset;
8784
8824
  var _useFormContext = useFormContext(),
8785
8825
  handleFormSubmit = _useFormContext.handleSubmit,
8786
8826
  reset = _useFormContext.reset;
@@ -8788,6 +8828,9 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
8788
8828
  t = _useWorkspaceTranslat.t;
8789
8829
  var _useApiContext = useApiContext(),
8790
8830
  api = _useApiContext.api;
8831
+ var _useAuthenticationCon = useAuthenticationContext$1(),
8832
+ currentRole = _useAuthenticationCon.currentRole;
8833
+ var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN$1.name;
8791
8834
  var _React$useState = React__default.useState(),
8792
8835
  error = _React$useState[0],
8793
8836
  setError = _React$useState[1];
@@ -8812,72 +8855,88 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
8812
8855
  {
8813
8856
  return t('workspace-save');
8814
8857
  }
8858
+ case PresetAction.RESET:
8859
+ {
8860
+ return t('workspace-reset');
8861
+ }
8815
8862
  default:
8816
8863
  return t('workspace-save');
8817
8864
  }
8818
8865
  };
8819
8866
  var confirmLabel = getConfirmLabel(action);
8820
8867
  var onFormSubmit = /*#__PURE__*/function () {
8821
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(newFormValues) {
8822
- var newId, _yield$api$getViewPre, originalViewPreset, viewPresetEdited, message;
8868
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(formValues) {
8869
+ var scope, newFormValues, newId, _yield$api$getViewPre, originalViewPreset, viewPresetEdited, submitError, message;
8823
8870
  return _regeneratorRuntime().wrap(function _callee$(_context) {
8824
8871
  while (1) switch (_context.prev = _context.next) {
8825
8872
  case 0:
8826
- _context.prev = 0;
8873
+ scope = isAdmin ? 'system' : formValues.scope;
8874
+ newFormValues = Object.assign({}, formValues, {
8875
+ scope: scope
8876
+ });
8877
+ _context.prev = 2;
8827
8878
  setError(null);
8828
8879
  setIsLoading(true);
8829
8880
  _context.t0 = action;
8830
- _context.next = _context.t0 === PresetAction.SAVE_AS ? 6 : _context.t0 === PresetAction.DELETE ? 13 : _context.t0 === PresetAction.EDIT ? 19 : 30;
8881
+ _context.next = _context.t0 === PresetAction.SAVE_AS ? 8 : _context.t0 === PresetAction.DELETE ? 15 : _context.t0 === PresetAction.EDIT ? 21 : _context.t0 === PresetAction.RESET ? 32 : 37;
8831
8882
  break;
8832
- case 6:
8833
- _context.next = 8;
8834
- return api.saveViewPresetAs(newFormValues);
8835
8883
  case 8:
8884
+ _context.next = 10;
8885
+ return api.saveViewPresetAs(newFormValues);
8886
+ case 10:
8836
8887
  newId = _context.sent;
8837
8888
  setIsLoading(false);
8838
8889
  onClose();
8839
8890
  onSuccess(action, newId, newFormValues.title);
8840
- return _context.abrupt("break", 31);
8841
- case 13:
8842
- _context.next = 15;
8843
- return api.deleteViewPreset(viewPresetId);
8891
+ return _context.abrupt("break", 38);
8844
8892
  case 15:
8893
+ _context.next = 17;
8894
+ return api.deleteViewPreset(viewPresetId);
8895
+ case 17:
8845
8896
  setIsLoading(false);
8846
8897
  onClose();
8847
8898
  onSuccess(action, viewPresetId, newFormValues.title);
8848
- return _context.abrupt("break", 31);
8849
- case 19:
8850
- _context.next = 21;
8851
- return api.getViewPreset(viewPresetId);
8899
+ return _context.abrupt("break", 38);
8852
8900
  case 21:
8901
+ _context.next = 23;
8902
+ return api.getViewPreset(viewPresetId);
8903
+ case 23:
8853
8904
  _yield$api$getViewPre = _context.sent;
8854
8905
  originalViewPreset = _yield$api$getViewPre.data;
8855
8906
  viewPresetEdited = Object.assign({}, originalViewPreset, {
8856
- title: newFormValues.title
8907
+ title: newFormValues.title,
8908
+ scope: scope
8857
8909
  });
8858
- _context.next = 26;
8910
+ _context.next = 28;
8859
8911
  return api.saveViewPreset(viewPresetId, viewPresetEdited);
8860
- case 26:
8912
+ case 28:
8861
8913
  setIsLoading(false);
8862
8914
  onClose();
8863
8915
  onSuccess(action, viewPresetId, newFormValues.title);
8864
- return _context.abrupt("break", 31);
8865
- case 30:
8866
- return _context.abrupt("break", 31);
8867
- case 31:
8868
- _context.next = 38;
8916
+ return _context.abrupt("break", 38);
8917
+ case 32:
8918
+ onReset(viewPresetId);
8919
+ setIsLoading(false);
8920
+ onClose();
8921
+ onSuccess(action, viewPresetId, newFormValues.title);
8922
+ return _context.abrupt("break", 38);
8923
+ case 37:
8924
+ return _context.abrupt("break", 38);
8925
+ case 38:
8926
+ _context.next = 46;
8869
8927
  break;
8870
- case 33:
8871
- _context.prev = 33;
8872
- _context.t1 = _context["catch"](0);
8928
+ case 40:
8929
+ _context.prev = 40;
8930
+ _context.t1 = _context["catch"](2);
8873
8931
  setIsLoading(false);
8874
- message = isAxiosError$1(_context.t1) ? getAxiosErrorMessage(_context.t1) : _context.t1.message;
8932
+ submitError = _context.t1;
8933
+ message = isAxiosError$1(submitError) ? getAxiosErrorMessage(submitError) : submitError.message;
8875
8934
  setError(message);
8876
- case 38:
8935
+ case 46:
8877
8936
  case "end":
8878
8937
  return _context.stop();
8879
8938
  }
8880
- }, _callee, null, [[0, 33]]);
8939
+ }, _callee, null, [[2, 40]]);
8881
8940
  }));
8882
8941
  return function onFormSubmit(_x) {
8883
8942
  return _ref2.apply(this, arguments);
@@ -8932,6 +8991,9 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
8932
8991
  onClose: onClose,
8933
8992
  onSubmit: onSubmit,
8934
8993
  isLoading: isLoading,
8994
+ sx: {
8995
+ width: '330px'
8996
+ },
8935
8997
  content: jsx(ViewPresetsForm, {
8936
8998
  viewComponentType: viewComponentType,
8937
8999
  formValues: formValues,
@@ -8949,7 +9011,9 @@ var ViewPresetsFormDialogWrapper = function ViewPresetsFormDialogWrapper(_ref5)
8949
9011
  });
8950
9012
  };
8951
9013
 
8952
- var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect() {
9014
+ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
9015
+ var _ref$scope = _ref.scope,
9016
+ scope = _ref$scope === void 0 ? 'user' : _ref$scope;
8953
9017
  var dispatch = useDispatch();
8954
9018
  var dialogOptions = useSelector(function (store) {
8955
9019
  return getDialogOptions(store);
@@ -8958,6 +9022,13 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect() {
8958
9022
  var viewComponentType = useSelector(function (store) {
8959
9023
  return getViewComponentType(store, panelId);
8960
9024
  });
9025
+ var onReset = React__default.useCallback(function (viewPresetId) {
9026
+ dispatch(viewPresetActions.selectViewPreset({
9027
+ panelId: panelId,
9028
+ viewPresetId: viewPresetId,
9029
+ shouldReset: true
9030
+ }));
9031
+ }, [dispatch, panelId]);
8961
9032
  var closeDialog = React__default.useCallback(function () {
8962
9033
  dispatch(viewPresetActions.closeViewPresetDialog());
8963
9034
  }, [dispatch]);
@@ -8969,7 +9040,8 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect() {
8969
9040
  panelId: panelId,
8970
9041
  viewPresetId: newViewPresetId,
8971
9042
  action: action,
8972
- title: title
9043
+ title: title,
9044
+ scope: scope
8973
9045
  }));
8974
9046
  };
8975
9047
  var isOpen = dialogOptions !== undefined;
@@ -8982,15 +9054,14 @@ var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect() {
8982
9054
  onSuccess: onSuccess,
8983
9055
  viewComponentType: viewComponentType
8984
9056
  }, dialogOptions, {
8985
- formValues: dialogOptions == null ? void 0 : dialogOptions.formValues
9057
+ formValues: dialogOptions == null ? void 0 : dialogOptions.formValues,
9058
+ onReset: onReset
8986
9059
  }));
8987
9060
  };
8988
9061
 
8989
- var FetchInitialPresets = function FetchInitialPresets() {
9062
+ var FetchInitialPresets = function FetchInitialPresets(_ref) {
9063
+ var isAdmin = _ref.isAdmin;
8990
9064
  var dispatch = useDispatch();
8991
- var _useAuthenticationCon = useAuthenticationContext(),
8992
- currentRole = _useAuthenticationCon.currentRole;
8993
- var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
8994
9065
  var fetchInitialPresets = React.useCallback(function (params) {
8995
9066
  dispatch(viewPresetActions.fetchInitialViewPresets(params));
8996
9067
  }, [dispatch]);
@@ -9003,16 +9074,19 @@ var FetchInitialPresets = function FetchInitialPresets() {
9003
9074
  }, [isAdmin]);
9004
9075
  return null;
9005
9076
  };
9006
- var WorkspaceDetail = function WorkspaceDetail(_ref) {
9007
- var initialWorkspaceId = _ref.initialWorkspaceId,
9008
- workspaceId = _ref.workspaceId,
9009
- children = _ref.children,
9010
- componentsLookUp = _ref.componentsLookUp,
9011
- _ref$isSnapshot = _ref.isSnapshot,
9012
- isSnapshot = _ref$isSnapshot === void 0 ? false : _ref$isSnapshot;
9077
+ var WorkspaceDetail = function WorkspaceDetail(_ref2) {
9078
+ var initialWorkspaceId = _ref2.initialWorkspaceId,
9079
+ workspaceId = _ref2.workspaceId,
9080
+ children = _ref2.children,
9081
+ componentsLookUp = _ref2.componentsLookUp,
9082
+ _ref2$isSnapshot = _ref2.isSnapshot,
9083
+ isSnapshot = _ref2$isSnapshot === void 0 ? false : _ref2$isSnapshot;
9013
9084
  var dispatch = useDispatch();
9014
9085
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
9015
9086
  t = _useWorkspaceTranslat.t;
9087
+ var _useAuthenticationCon = useAuthenticationContext(),
9088
+ currentRole = _useAuthenticationCon.currentRole;
9089
+ var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN.name;
9016
9090
  var error = useSelector(function (store) {
9017
9091
  return getWorkspaceError(store);
9018
9092
  });
@@ -9058,7 +9132,9 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
9058
9132
  width: '100%',
9059
9133
  height: '100%'
9060
9134
  },
9061
- children: [jsx(FetchInitialPresets, {}), isLoading && jsx(LinearProgress, {
9135
+ children: [jsx(FetchInitialPresets, {
9136
+ isAdmin: isAdmin
9137
+ }), isLoading && jsx(LinearProgress, {
9062
9138
  "data-testid": "loading-bar",
9063
9139
  color: "secondary",
9064
9140
  sx: {
@@ -9111,7 +9187,9 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
9111
9187
  componentsLookUp: componentsLookUp
9112
9188
  })
9113
9189
  })]
9114
- }), jsx(ViewPresetsFormDialogConnect, {})]
9190
+ }), jsx(ViewPresetsFormDialogConnect, {
9191
+ scope: isAdmin ? 'system' : 'user'
9192
+ })]
9115
9193
  });
9116
9194
  };
9117
9195
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/workspace",
3
- "version": "10.0.0",
3
+ "version": "10.1.0",
4
4
  "description": "GeoWeb Workspace library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,10 +1,5 @@
1
1
  import React from 'react';
2
- import { InitialProps } from '@opengeoweb/core';
3
- import { PresetAction, WorkspaceSupportedComponentTypes } from '../../store/viewPresets/types';
4
- export interface ViewPresetFormValues {
5
- title?: string;
6
- initialProps?: InitialProps;
7
- }
2
+ import { PresetAction, ViewPresetFormValues, WorkspaceSupportedComponentTypes } from '../../store/viewPresets/types';
8
3
  export interface ViewPresetsFormProps {
9
4
  viewComponentType: WorkspaceSupportedComponentTypes;
10
5
  error?: string;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import { ViewPresetFormValues } from './ViewPresetsForm';
3
- import { PresetAction, WorkspaceSupportedComponentTypes } from '../../store/viewPresets/types';
2
+ import { PresetAction, ViewPresetFormValues, WorkspaceSupportedComponentTypes } from '../../store/viewPresets/types';
4
3
  export interface ViewPresetsFormDialogProps {
5
4
  isOpen: boolean;
6
5
  title: string;
@@ -10,6 +9,7 @@ export interface ViewPresetsFormDialogProps {
10
9
  formValues: ViewPresetFormValues;
11
10
  onSuccess: (action: PresetAction, presetId: string, title: string) => void;
12
11
  onClose: () => void;
12
+ onReset: (viewPresetId: string) => void;
13
13
  }
14
14
  declare const ViewPresetsFormDialogWrapper: React.FC<ViewPresetsFormDialogProps>;
15
15
  export default ViewPresetsFormDialogWrapper;
@@ -1,3 +1,6 @@
1
1
  import React from 'react';
2
- declare const ViewPresetsFormDialogConnect: React.FC;
2
+ import { PresetScope } from '../../store/workspace/types';
3
+ declare const ViewPresetsFormDialogConnect: React.FC<{
4
+ scope?: PresetScope;
5
+ }>;
3
6
  export default ViewPresetsFormDialogConnect;
@@ -9,11 +9,12 @@ export interface WorkspaceOptionsProps {
9
9
  handleSaveAs?: () => void;
10
10
  handleEdit?: () => void;
11
11
  handleDelete?: () => void;
12
- handleSaveSystemPresetAs?: () => void;
13
- handleResetWorkspace?: () => void;
12
+ handleReset?: () => void;
14
13
  hasChanges?: boolean;
15
14
  isDisabled?: boolean;
16
15
  isAdmin?: boolean;
17
16
  }
17
+ export declare const workspacePresetOptionId = "workspace-options-toolbutton";
18
+ export declare const viewPresetOptionId = "viewpreset-options-toolbutton";
18
19
  export declare const WorkspaceOptionsNoMemo: React.FC<WorkspaceOptionsProps>;
19
20
  export declare const WorkspaceOptions: React.NamedExoticComponent<WorkspaceOptionsProps>;
@@ -1,4 +1,5 @@
1
+ import { AnyAction } from '@reduxjs/toolkit';
1
2
  import { MosaicNode } from 'react-mosaic-component';
2
3
  export declare const getUniqueId: (existingIds: string[], count?: number) => string;
3
4
  export declare const createBalancedMosaicNode: (currentNode: MosaicNode<string>) => MosaicNode<string>;
4
- export declare const closeTimeSeriesDialogsWhenChangingPreset: (componentTypes: string[] | undefined, dispatch: (action: unknown) => void) => void;
5
+ export declare const closeTimeSeriesDialogsWhenChangingPreset: (componentTypes: string[] | undefined, dispatch: (action: AnyAction) => void) => void;
@@ -1,10 +1,9 @@
1
1
  import { ListenerMiddleware, ReducersMapObject } from '@reduxjs/toolkit';
2
2
  import { WorkspaceModuleStore } from './types';
3
- export declare const workspaceReducersMap: ReducersMapObject<WorkspaceModuleStore>;
4
- export declare const workspaceMiddlewares: ListenerMiddleware[];
3
+ export declare const workspaceReducersMap: ReducersMapObject;
4
+ export declare const workspaceMiddlewares: ListenerMiddleware<WorkspaceModuleStore>[];
5
5
  declare const workspaceModuleConfig: {
6
- id: string;
7
- reducersMap: ReducersMapObject<WorkspaceModuleStore, import("redux").Action<any>>;
8
- middlewares: ListenerMiddleware[];
6
+ reducersMap: ReducersMapObject<any, import("redux").Action<any>>;
7
+ middlewares: ListenerMiddleware<WorkspaceModuleStore>[];
9
8
  };
10
9
  export default workspaceModuleConfig;
@@ -18,12 +18,12 @@ export declare const getViewPresetDetailError: ((state: AppStore, id: string) =>
18
18
  }> & {
19
19
  clearCache: () => void;
20
20
  };
21
- export declare const getViewPresetHasChanges: ((state: AppStore, id: string) => boolean) & import("reselect").OutputSelectorFields<(args_0: ViewPresetEntity | undefined, args_1: string) => boolean, {
21
+ export declare const getViewPresetHasChanges: ((state: AppStore, id: string) => boolean | undefined) & import("reselect").OutputSelectorFields<(args_0: ViewPresetEntity | undefined, args_1: string) => boolean | undefined, {
22
22
  clearCache: () => void;
23
23
  }> & {
24
24
  clearCache: () => void;
25
25
  };
26
- export declare const getViewPresetActiveId: ((state: AppStore, id: string) => string) & import("reselect").OutputSelectorFields<(args_0: ViewPresetEntity | undefined, args_1: string) => string, {
26
+ export declare const getViewPresetActiveId: ((state: AppStore, id: string) => string | undefined) & import("reselect").OutputSelectorFields<(args_0: ViewPresetEntity | undefined, args_1: string) => string | undefined, {
27
27
  clearCache: () => void;
28
28
  }> & {
29
29
  clearCache: () => void;
@@ -44,15 +44,16 @@ export interface ViewPresetEntity {
44
44
  searchQuery: string;
45
45
  filterResults: EntityState<ViewPresetListItem>;
46
46
  }
47
+ export interface ViewPresetFormValues {
48
+ title?: string;
49
+ initialProps?: InitialProps;
50
+ }
47
51
  export interface ViewPresetDialog {
48
52
  title: string;
49
53
  action: PresetAction;
50
54
  viewPresetId: string;
51
55
  panelId: string;
52
- formValues: {
53
- title: string;
54
- initialProps?: InitialProps;
55
- };
56
+ formValues: ViewPresetFormValues;
56
57
  }
57
58
  export interface ViewPresetState extends EntityState<ViewPresetEntity> {
58
59
  viewPresetDialog?: ViewPresetDialog;
@@ -63,7 +64,8 @@ export declare enum PresetAction {
63
64
  SAVE = "Save",
64
65
  SAVE_AS = "Save as",
65
66
  SHARE = "Share",
66
- EDIT = "Edit"
67
+ EDIT = "Edit",
68
+ RESET = "Reset"
67
69
  }
68
70
  interface ViewPresetAction {
69
71
  panelId: string;
@@ -110,9 +112,11 @@ export interface OnSuccesViewPresetActionPayload extends ViewPresetAction {
110
112
  action: PresetAction;
111
113
  title: string;
112
114
  componentType?: string;
115
+ scope?: PresetScope;
113
116
  }
114
117
  export interface SelectViewPresetPayload extends ViewPresetAction {
115
118
  viewPresetId: string;
119
+ shouldReset?: boolean;
116
120
  }
117
121
  export interface RegisterViewPresetPayload extends ViewPresetAction {
118
122
  viewPresetId: string;
@@ -1,7 +1,6 @@
1
- import { Reducer } from '@reduxjs/toolkit';
2
1
  import { WorkspaceAddViewPayload, WorkspaceDeleteViewPayload, WorkspaceState, WorkspaceSetPresetPayload, WorkspaceSetPreventCloseViewPayload, WorkspaceUpdateViewPayload, WorkspaceUpdateViewsPayload, WorkspaceErrorWorkspacePayload, WorkspaceFetchedWorkspacePayload, WorkspaceFetchWorkspacePayload, WorkspaceFetchWorkspaceViewPresetPayload, WorkspaceSaveWorkspacePresetPayload, WorkspaceSetNewViewPayload, WorkspaceChangeToEmptyMapWorkspacePayload } from './types';
3
2
  export declare const initialState: WorkspaceState;
4
- export declare const reducer: Reducer<WorkspaceState>;
3
+ export declare const reducer: import("redux").Reducer<WorkspaceState>;
5
4
  export declare const workspaceActions: {
6
5
  addWorkspaceView: import("@reduxjs/toolkit").ActionCreatorWithPayload<WorkspaceAddViewPayload, "workspace/addWorkspaceView">;
7
6
  setNewWorkspaceView: import("@reduxjs/toolkit").ActionCreatorWithPayload<WorkspaceSetNewViewPayload, "workspace/setNewWorkspaceView">;
@@ -1,4 +1,4 @@
1
- import { WorkspaceDialogView, WorkspaceListFilter, WorkspaceListState } from './types';
1
+ import { WorkspaceListFilter, WorkspaceListState } from './types';
2
2
  import { AppStore } from '../types';
3
3
  import { PresetScope, WorkspaceState } from '../workspace/types';
4
4
  import { ViewPresetState } from '../viewPresets/types';
@@ -21,7 +21,7 @@ export declare const getWorkspaceListError: ((state: AppStore) => import("./type
21
21
  };
22
22
  export declare const getWorkspaceActionDialogDetails: ((state: AppStore) => false | {
23
23
  formValues: {
24
- views?: WorkspaceDialogView[] | {
24
+ views: {
25
25
  mosaicNodeId: string;
26
26
  viewPresetId: string;
27
27
  isSelected: boolean;
@@ -30,13 +30,22 @@ export declare const getWorkspaceActionDialogDetails: ((state: AppStore) => fals
30
30
  isFetching: boolean | undefined;
31
31
  hasChanges: boolean | undefined;
32
32
  scope: PresetScope;
33
- }[] | undefined;
33
+ }[];
34
34
  id?: string | undefined;
35
35
  title?: string | undefined;
36
36
  abstract?: string | undefined;
37
37
  scope?: PresetScope | undefined;
38
38
  } | {
39
- views: import("../workspace/types").WorkspaceViewsFromBE[];
39
+ views: {
40
+ mosaicNodeId: string;
41
+ viewPresetId: string;
42
+ isSelected: boolean;
43
+ title: string | undefined;
44
+ error: import("../viewPresets/types").ViewPresetError;
45
+ isFetching: boolean | undefined;
46
+ hasChanges: boolean | undefined;
47
+ scope: PresetScope;
48
+ }[];
40
49
  id?: string | undefined;
41
50
  title: string;
42
51
  syncGroups?: import("../workspace/types").WorkspaceSyncGroup[] | undefined;
@@ -53,7 +62,7 @@ export declare const getWorkspaceActionDialogDetails: ((state: AppStore) => fals
53
62
  hasSaved?: boolean | undefined;
54
63
  }) & import("reselect").OutputSelectorFields<(args_0: WorkspaceListState, args_1: WorkspaceState, args_2: ViewPresetState) => false | {
55
64
  formValues: {
56
- views?: WorkspaceDialogView[] | {
65
+ views: {
57
66
  mosaicNodeId: string;
58
67
  viewPresetId: string;
59
68
  isSelected: boolean;
@@ -62,13 +71,22 @@ export declare const getWorkspaceActionDialogDetails: ((state: AppStore) => fals
62
71
  isFetching: boolean | undefined;
63
72
  hasChanges: boolean | undefined;
64
73
  scope: PresetScope;
65
- }[] | undefined;
74
+ }[];
66
75
  id?: string | undefined;
67
76
  title?: string | undefined;
68
77
  abstract?: string | undefined;
69
78
  scope?: PresetScope | undefined;
70
79
  } | {
71
- views: import("../workspace/types").WorkspaceViewsFromBE[];
80
+ views: {
81
+ mosaicNodeId: string;
82
+ viewPresetId: string;
83
+ isSelected: boolean;
84
+ title: string | undefined;
85
+ error: import("../viewPresets/types").ViewPresetError;
86
+ isFetching: boolean | undefined;
87
+ hasChanges: boolean | undefined;
88
+ scope: PresetScope;
89
+ }[];
72
90
  id?: string | undefined;
73
91
  title: string;
74
92
  syncGroups?: import("../workspace/types").WorkspaceSyncGroup[] | undefined;
@@ -1,13 +1,8 @@
1
1
  import React from 'react';
2
- import { ComponentsLookUpPayload as CoreComponentsLookUpPayload } from '@opengeoweb/core';
3
- import { ComponentsLookUpPayload as TimeseriesComponentsLookUpPayload } from '@opengeoweb/timeseries';
4
- import { ComponentsLookUpPayload as TafComponentsLookUpPayload } from '@opengeoweb/taf';
5
- import { SigmetComponentsLookUpPayload, AirmetComponentsLookUpPayload } from '@opengeoweb/sigmet-airmet';
6
- import { ComponentsLookUpPayload as WarningListComponentsLookUpPayLoad } from '@opengeoweb/warnings';
7
- import { ComponentsLookUpPayload as SpaceweatherComponentsLookUpPayLoad } from '@opengeoweb/spaceweather';
2
+ import { WorkspaceComponentLookupPayload } from '../store/workspace/types';
8
3
  /**
9
4
  * The lookup table is for registering your own components with the workspace.
10
5
  * @param payload
11
6
  * @returns
12
7
  */
13
- export declare const componentsLookUp: (payload: CoreComponentsLookUpPayload | TimeseriesComponentsLookUpPayload | TafComponentsLookUpPayload | SigmetComponentsLookUpPayload | AirmetComponentsLookUpPayload | WarningListComponentsLookUpPayLoad | SpaceweatherComponentsLookUpPayLoad) => React.ReactElement;
8
+ export declare const componentsLookUp: (payload: WorkspaceComponentLookupPayload) => React.ReactElement;
@@ -6,7 +6,7 @@ import { FetchViewPresetsListParams } from '../store/viewPresetsList/types';
6
6
  export declare const ERROR_NOT_FOUND = "Request failed with status code 400";
7
7
  export declare const extractWorkspacePresetFromJSON: (workspacePresetId: string) => WorkspacePresetFromBE;
8
8
  export declare const extractViewPresetFromJSON: (viewPresetId: string) => ViewPreset;
9
- export declare const filterWorkspacePresetList: (params: FetchWorkspaceParams) => WorkspacePresetListItem[];
10
- export declare const filterViewPresetList: (params: FetchViewPresetsListParams) => ViewPresetListItem[];
9
+ export declare const filterWorkspacePresetList: (params?: FetchWorkspaceParams) => WorkspacePresetListItem[];
10
+ export declare const filterViewPresetList: (params?: FetchViewPresetsListParams) => ViewPresetListItem[];
11
11
  export declare const sortViewPresets: (viewPresets: ViewPresetListItem[]) => ViewPresetListItem[];
12
12
  export declare const createApi: () => PresetsApi;