@opengeoweb/workspace 19.1.1 → 19.3.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/dist/index.esm.js CHANGED
@@ -30,6 +30,7 @@ import { http, HttpResponse, delay } from 'msw';
30
30
  var en = {
31
31
  "workspace-menu": "Workspace menu",
32
32
  "workspace-new": "New workspace",
33
+ "workspace-new-soundings": "New soundings workspace",
33
34
  "workspace-loading": "Loading",
34
35
  "workspace-options": "Options",
35
36
  "workspace-results": "results",
@@ -179,6 +180,7 @@ var en = {
179
180
  var fi = {
180
181
  "workspace-menu": "Workspace menu",
181
182
  "workspace-new": "Uusi workspace",
183
+ "workspace-new-soundings": "Uusi luotaustyötila",
182
184
  "workspace-loading": "Ladataan",
183
185
  "workspace-options": "Valinnat",
184
186
  "workspace-results": "tulokset",
@@ -320,6 +322,7 @@ var fi = {
320
322
  var no = {
321
323
  "workspace-menu": "Arbeidsflater",
322
324
  "workspace-new": "Ny arbeidsflate",
325
+ "workspace-new-soundings": "New soundings workspace",
323
326
  "workspace-loading": "Laster",
324
327
  "workspace-options": "Valg",
325
328
  "workspace-results": "resultater",
@@ -462,6 +465,7 @@ var no = {
462
465
  var nl = {
463
466
  "workspace-menu": "Workspace menu",
464
467
  "workspace-new": "Nieuwe workspace",
468
+ "workspace-new-soundings": "Nieuwe soundings workspace",
465
469
  "workspace-loading": "Laden",
466
470
  "workspace-options": "Opties",
467
471
  "workspace-results": "resultaten",
@@ -2386,6 +2390,71 @@ var createCustomEmptyMapWorkspace = function createCustomEmptyMapWorkspace(empty
2386
2390
  });
2387
2391
  return emptyWorkspacePreset;
2388
2392
  };
2393
+ var LOCAL_SOUNDINGS_ID = 'newSoundingsWorkspace';
2394
+ var getNewSoundingsWorkspaceListItem = function getNewSoundingsWorkspaceListItem(t) {
2395
+ return {
2396
+ id: LOCAL_SOUNDINGS_ID,
2397
+ title: t ? t('workspace-new-soundings') : 'New soundings workspace',
2398
+ labels: undefined,
2399
+ scope: 'system',
2400
+ "abstract": '',
2401
+ viewType: 'multiWindow'
2402
+ };
2403
+ };
2404
+ function getNewSoundingsWorkspace(t) {
2405
+ return Object.assign({}, getNewSoundingsWorkspaceListItem(t), {
2406
+ views: {
2407
+ allIds: ['1_screen', '2_screen'],
2408
+ byId: {
2409
+ '1_screen': {
2410
+ mosaicNodeId: '1_screen',
2411
+ title: 'New soundings map',
2412
+ componentType: 'Map',
2413
+ initialProps: {
2414
+ mapPreset: {
2415
+ shouldShowLegend: false,
2416
+ shouldShowLayerManager: false
2417
+ }
2418
+ }
2419
+ },
2420
+ '2_screen': {
2421
+ mosaicNodeId: '2_screen',
2422
+ title: 'New soundings view',
2423
+ componentType: 'Soundings',
2424
+ initialProps: {}
2425
+ }
2426
+ }
2427
+ },
2428
+ linking: {
2429
+ '2_screen': ['1_screen']
2430
+ },
2431
+ syncGroups: [{
2432
+ id: 'Features_2_screen',
2433
+ sourcePanelId: '2_screen',
2434
+ type: 'SYNCGROUPS_TYPE_SETFEATURES'
2435
+ }],
2436
+ mosaicNode: {
2437
+ direction: 'row',
2438
+ first: '1_screen',
2439
+ second: '2_screen'
2440
+ }
2441
+ });
2442
+ }
2443
+ var getBEViewsFromState = function getBEViewsFromState(workspace) {
2444
+ var _workspace$views$allI, _workspace$views;
2445
+ var result = [];
2446
+ ((_workspace$views$allI = workspace == null || (_workspace$views = workspace.views) == null ? void 0 : _workspace$views.allIds) != null ? _workspace$views$allI : []).forEach(function (id) {
2447
+ var _workspace$views$byId;
2448
+ var view = (_workspace$views$byId = workspace.views.byId[id]) != null ? _workspace$views$byId : {};
2449
+ result.push({
2450
+ mosaicNodeId: id,
2451
+ title: typeof view.title === 'string' && view.title.trim() ? view.title : id,
2452
+ componentType: view.componentType,
2453
+ initialProps: view.initialProps
2454
+ });
2455
+ });
2456
+ return result;
2457
+ };
2389
2458
 
2390
2459
  var initialState = {
2391
2460
  id: '',
@@ -3697,7 +3766,7 @@ workspaceListListener.startListening({
3697
3766
  effect: function () {
3698
3767
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(_ref2, listenerApi) {
3699
3768
  var _listenerApi$getState2;
3700
- var payload, workspaceState, credentials, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, scope, originalData, workspaceDataNewTitle, _originalData$views, _data$views2, _originalData, mergedViews, payloadToSave, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, workspaceData, viewsWithInitialProps, newWorkspace, _listenerApi$getState3, _credentials, hasChanges, message, _listenerApi$getState4, category, _t;
3769
+ var payload, workspaceState, credentials, presetId, presetAction, data, emptyMapPresetTitle, emptyWorkspacePresetTitle, emptySoundingsPresetTitle, scope, originalData, workspaceDataNewTitle, _originalData$views, _data$views2, _originalData, mergedViews, payloadToSave, isSaveWorkspaceAction, isSaveAsWorkspaceAction, hasWorkspaceAlreadyBeenSaved, workspaceId, workspaceData, viewsWithInitialProps, newWorkspace, _listenerApi$getState3, _credentials, hasChanges, message, _listenerApi$getState4, category, _t;
3701
3770
  return _regenerator().w(function (_context2) {
3702
3771
  while (1) switch (_context2.p = _context2.n) {
3703
3772
  case 0:
@@ -3705,7 +3774,7 @@ workspaceListListener.startListening({
3705
3774
  listenerApi.cancelActiveListeners();
3706
3775
  workspaceState = listenerApi.getState();
3707
3776
  credentials = (_listenerApi$getState2 = listenerApi.getState().common) == null || (_listenerApi$getState2 = _listenerApi$getState2.auth) == null ? void 0 : _listenerApi$getState2.credentials;
3708
- presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle;
3777
+ presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle, emptySoundingsPresetTitle = payload.emptySoundingsPresetTitle;
3709
3778
  scope = data.scope || 'user';
3710
3779
  _context2.p = 1;
3711
3780
  // duplicate
@@ -3871,6 +3940,12 @@ workspaceListListener.startListening({
3871
3940
  newMapPresetText: emptyMapPresetTitle,
3872
3941
  newWorkspaceText: emptyWorkspacePresetTitle
3873
3942
  }));
3943
+ } else if (presetId === LOCAL_SOUNDINGS_ID) {
3944
+ listenerApi.dispatch(workspaceActions.changePreset({
3945
+ workspacePreset: Object.assign({}, getNewSoundingsWorkspace(), {
3946
+ title: emptySoundingsPresetTitle || getNewSoundingsWorkspace().title
3947
+ })
3948
+ }));
3874
3949
  } else {
3875
3950
  listenerApi.dispatch(workspaceActions.fetchWorkspace({
3876
3951
  workspaceId: presetId
@@ -4010,10 +4085,7 @@ workspaceListener.startListening({
4010
4085
  allSyncGroups.map(function (syncGroup) {
4011
4086
  return listenerApi.dispatch(syncGroupsActions.syncGroupAddGroup(syncGroup));
4012
4087
  });
4013
- listenerApi.dispatch(genericActions.setLinkedMap({
4014
- newLinks: (_payload$workspacePre = payload.workspacePreset.linking) != null ? _payload$workspacePre : {}
4015
- }));
4016
- isTimeScrollingEnabled = (_payload$workspacePre2 = payload.workspacePreset.isTimeScrollingEnabled) != null ? _payload$workspacePre2 : false;
4088
+ isTimeScrollingEnabled = (_payload$workspacePre = payload.workspacePreset.isTimeScrollingEnabled) != null ? _payload$workspacePre : false;
4017
4089
  listenerApi.dispatch(syncGroupsActions.syncGroupToggleIsTimeScrollingEnabled({
4018
4090
  isTimeScrollingEnabled: isTimeScrollingEnabled
4019
4091
  }));
@@ -4061,6 +4133,9 @@ workspaceListener.startListening({
4061
4133
  isInline: hasInlineConfig
4062
4134
  }));
4063
4135
  });
4136
+ listenerApi.dispatch(genericActions.setLinkedMap({
4137
+ newLinks: (_payload$workspacePre2 = payload.workspacePreset.linking) != null ? _payload$workspacePre2 : {}
4138
+ }));
4064
4139
  if (payload.markAsChanged) {
4065
4140
  listenerApi.dispatch(workspaceActions.markWorkspaceChanged());
4066
4141
  listenerApi.dispatch(routerActions.navigateToUrl({
@@ -7174,6 +7249,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7174
7249
  });
7175
7250
  }
7176
7251
  var versions = workspacePreset.scope === 'plugin' ? (_workspacePreset$orig = (_workspacePreset$orig2 = workspacePreset.origin) == null ? void 0 : _workspacePreset$orig2.versions) != null ? _workspacePreset$orig : [] : [];
7252
+ var showInfoIcon = !!workspacePreset.id && workspacePreset.id !== LOCAL_SOUNDINGS_ID;
7177
7253
  return jsx(ListItem, {
7178
7254
  disablePadding: true,
7179
7255
  sx: {
@@ -7273,7 +7349,7 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7273
7349
  justifyContent: 'flex-end',
7274
7350
  gap: 0.5
7275
7351
  },
7276
- children: [!!workspacePreset.id && jsx(CustomIconButton, {
7352
+ children: [!!showInfoIcon && jsx(CustomIconButton, {
7277
7353
  "data-testid": testIdPrefix + "-listInfoButton",
7278
7354
  isSelected: isInfoOpen,
7279
7355
  onClick: onOpenInfoClick,
@@ -7366,7 +7442,7 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref2) {
7366
7442
  isEditable = _ref2.isEditable,
7367
7443
  isAdmin = _ref2.isAdmin,
7368
7444
  searchQuery = _ref2.searchQuery,
7369
- newPreset = _ref2.newPreset,
7445
+ newPresets = _ref2.newPresets,
7370
7446
  _ref2$testIdPrefix = _ref2.testIdPrefix,
7371
7447
  testIdPrefix = _ref2$testIdPrefix === void 0 ? 'workspace' : _ref2$testIdPrefix,
7372
7448
  onOpenPresetInfo = _ref2.onOpenPresetInfo,
@@ -7374,10 +7450,10 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref2) {
7374
7450
  onSelectVersion = _ref2.onSelectVersion;
7375
7451
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
7376
7452
  t = _useWorkspaceTranslat.t;
7377
- var newPresetTruthy = newPreset || getEmptyWorkspaceListItem(t);
7378
7453
  var items = React.useMemo(function () {
7379
- return !hideNewWorkspace ? [newPresetTruthy].concat(workspacePresets) : [].concat(workspacePresets);
7380
- }, [hideNewWorkspace, newPresetTruthy, workspacePresets]);
7454
+ var newPresetsTruthy = newPresets && newPresets.length > 0 ? newPresets : [getEmptyWorkspaceListItem(t), getNewSoundingsWorkspaceListItem(t)];
7455
+ return !hideNewWorkspace ? [].concat(newPresetsTruthy, workspacePresets) : [].concat(workspacePresets);
7456
+ }, [hideNewWorkspace, newPresets, workspacePresets, t]);
7381
7457
  return jsxs(Box, {
7382
7458
  "data-testid": testIdPrefix + "-selectList",
7383
7459
  sx: {
@@ -7939,9 +8015,9 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
7939
8015
  infoOpenPresetId: infoPreset == null ? void 0 : infoPreset.id,
7940
8016
  isAdmin: isAdmin,
7941
8017
  isEditable: isLoggedIn,
7942
- newPreset: Object.assign({}, getEmptyWorkspaceListItem(t), {
8018
+ newPresets: [Object.assign({}, getEmptyWorkspaceListItem(t), {
7943
8019
  title: t('workspace-mappreset-new')
7944
- }),
8020
+ })],
7945
8021
  onClickWorkspacePreset: selectViewPreset,
7946
8022
  onClickWorkspacePresetOption: onClickViewPresetOption,
7947
8023
  onOpenPresetInfo: onOpenPresetInfo,
@@ -8243,6 +8319,11 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8243
8319
  workspaceId: workspaceId
8244
8320
  }));
8245
8321
  }, [dispatch]);
8322
+ var setPreset = React.useCallback(function (workspacePreset) {
8323
+ dispatch(workspaceActions.changePreset({
8324
+ workspacePreset: workspacePreset
8325
+ }));
8326
+ }, [dispatch]);
8246
8327
  var setWorkspaceActionDialogOptions = React.useCallback(function (dialogOptions) {
8247
8328
  dispatch(workspaceListActions.openWorkspaceActionDialogOptions(dialogOptions));
8248
8329
  }, [dispatch]);
@@ -8274,8 +8355,19 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8274
8355
  newWorkspaceText: t('workspace-new')
8275
8356
  }));
8276
8357
  }, [dispatch, t]);
8358
+ var onClickNewSoundingsPreset = React.useCallback(function (id) {
8359
+ dispatch(routerActions.navigateToUrl({
8360
+ url: getWorkspaceRouteUrl(id)
8361
+ }));
8362
+ dispatch(workspaceListActions.toggleWorkspaceDialog({
8363
+ isWorkspaceListDialogOpen: false
8364
+ }));
8365
+ setPreset(getNewSoundingsWorkspace(t));
8366
+ }, [dispatch, setPreset, t]);
8277
8367
  var onClickWorkspacePreset = function onClickWorkspacePreset(id) {
8278
- if (id === getEmptyMapWorkspace(t).id) {
8368
+ if (id === LOCAL_SOUNDINGS_ID) {
8369
+ onClickNewSoundingsPreset(id);
8370
+ } else if (id === getEmptyMapWorkspace(t).id) {
8279
8371
  onClickNewPreset();
8280
8372
  } else if (!isFetching) {
8281
8373
  fetchWorkspace(id);
@@ -8291,36 +8383,44 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8291
8383
  }
8292
8384
  };
8293
8385
  var currentViewsToBE = React.useCallback(function () {
8294
- var _ws$views$allIds, _ws$views;
8295
- var ws = currentView;
8296
- var result = [];
8297
- ((_ws$views$allIds = ws == null || (_ws$views = ws.views) == null ? void 0 : _ws$views.allIds) != null ? _ws$views$allIds : []).forEach(function (id) {
8298
- var _ws$views$byId$id;
8299
- var view = (_ws$views$byId$id = ws.views.byId[id]) != null ? _ws$views$byId$id : {};
8300
- result.push({
8301
- mosaicNodeId: id,
8302
- title: typeof view.title === 'string' && view.title.trim() ? view.title : id,
8303
- componentType: view.componentType,
8304
- initialProps: view.initialProps
8305
- });
8306
- });
8307
- return result;
8386
+ return getBEViewsFromState(currentView);
8308
8387
  }, [currentView]);
8309
8388
  var onClickWorkspacePresetOption = /*#__PURE__*/function () {
8310
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(presetId, workspaceAction) {
8311
- var affectedPreset, presetTitle, _currentView$syncGrou, currentViews, adminMetadata, buildFormValues, url, preset, expanded, sanitized, _t;
8389
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(presetId, workspaceAction, workspacePreset) {
8390
+ var affectedPreset, presetTitle, _currentView$syncGrou, views, currentViews, adminMetadata, buildFormValues, url, preset, expanded, sanitized, _t;
8312
8391
  return _regenerator().w(function (_context2) {
8313
8392
  while (1) switch (_context2.p = _context2.n) {
8314
8393
  case 0:
8315
8394
  // If affectedPreset is the FE defined `New workspace` - use the definition from FE instead of BE
8316
- affectedPreset = presetId === getEmptyMapWorkspace(t).id ? getEmptyMapWorkspace(t) : workspacePresets.find(function (preset) {
8317
- return preset.id === presetId;
8318
- });
8395
+ affectedPreset = function () {
8396
+ if (presetId === LOCAL_SOUNDINGS_ID) {
8397
+ return getNewSoundingsWorkspace(t);
8398
+ }
8399
+ return !presetId ? getEmptyMapWorkspace(t) : workspacePresets.find(function (preset) {
8400
+ return preset.id === presetId;
8401
+ });
8402
+ }();
8319
8403
  presetTitle = affectedPreset == null ? void 0 : affectedPreset.title;
8320
8404
  _t = workspaceAction;
8321
- _context2.n = _t === WorkspacePresetAction.DUPLICATE ? 1 : _t === WorkspacePresetAction.EDIT ? 2 : _t === WorkspacePresetAction.DELETE ? 4 : _t === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 5 : _t === WorkspacePresetAction.SHARE ? 6 : _t === WorkspacePresetAction.OPEN_TAB ? 7 : _t === WorkspacePresetAction.COPY_TO_CLIPBOARD ? 8 : 14;
8405
+ _context2.n = _t === WorkspacePresetAction.DUPLICATE ? 1 : _t === WorkspacePresetAction.EDIT ? 3 : _t === WorkspacePresetAction.DELETE ? 5 : _t === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 6 : _t === WorkspacePresetAction.SHARE ? 7 : _t === WorkspacePresetAction.OPEN_TAB ? 8 : _t === WorkspacePresetAction.COPY_TO_CLIPBOARD ? 9 : 15;
8322
8406
  break;
8323
8407
  case 1:
8408
+ if (!(!presetId || presetId === LOCAL_SOUNDINGS_ID)) {
8409
+ _context2.n = 2;
8410
+ break;
8411
+ }
8412
+ // We are creating a duplicate workspace from new workspace/new soundings workspace
8413
+ views = getBEViewsFromState(affectedPreset);
8414
+ setWorkspaceActionDialogOptions({
8415
+ action: workspaceAction,
8416
+ presetId: undefined,
8417
+ formValues: Object.assign({}, affectedPreset, {
8418
+ scope: scope,
8419
+ views: views
8420
+ })
8421
+ });
8422
+ return _context2.a(3, 16);
8423
+ case 2:
8324
8424
  currentViews = currentViewsToBE();
8325
8425
  setWorkspaceActionDialogOptions({
8326
8426
  action: workspaceAction,
@@ -8336,8 +8436,8 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8336
8436
  syncGroups: (_currentView$syncGrou = currentView.syncGroups) != null ? _currentView$syncGrou : []
8337
8437
  }
8338
8438
  });
8339
- return _context2.a(3, 15);
8340
- case 2:
8439
+ return _context2.a(3, 16);
8440
+ case 3:
8341
8441
  adminMetadata = isAdmin && auth != null && auth.username ? {
8342
8442
  updated: new Date().toISOString(),
8343
8443
  updatedBy: auth.username
@@ -8359,7 +8459,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8359
8459
  }, adminMetadata);
8360
8460
  }; // If editing the active workspace, keep using the current workspace data
8361
8461
  if (!(presetId === (currentView == null ? void 0 : currentView.id) || !auth)) {
8362
- _context2.n = 3;
8462
+ _context2.n = 4;
8363
8463
  break;
8364
8464
  }
8365
8465
  setWorkspaceActionDialogOptions({
@@ -8367,8 +8467,8 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8367
8467
  presetId: presetId,
8368
8468
  formValues: buildFormValues(currentView, currentViewsToBE())
8369
8469
  });
8370
- return _context2.a(3, 15);
8371
- case 3:
8470
+ return _context2.a(3, 16);
8471
+ case 4:
8372
8472
  // Open dialog immediately with basic data, then hydrate with full preset once fetched
8373
8473
  setWorkspaceActionDialogOptions({
8374
8474
  action: workspaceAction,
@@ -8391,8 +8491,8 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8391
8491
  }
8392
8492
  }));
8393
8493
  });
8394
- return _context2.a(3, 15);
8395
- case 4:
8494
+ return _context2.a(3, 16);
8495
+ case 5:
8396
8496
  setWorkspaceActionDialogOptions({
8397
8497
  action: workspaceAction,
8398
8498
  presetId: presetId,
@@ -8401,8 +8501,8 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8401
8501
  scope: scope
8402
8502
  }
8403
8503
  });
8404
- return _context2.a(3, 15);
8405
- case 5:
8504
+ return _context2.a(3, 16);
8505
+ case 6:
8406
8506
  setWorkspaceActionDialogOptions({
8407
8507
  action: workspaceAction,
8408
8508
  presetId: presetId,
@@ -8411,8 +8511,8 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8411
8511
  scope: scope
8412
8512
  }
8413
8513
  });
8414
- return _context2.a(3, 15);
8415
- case 6:
8514
+ return _context2.a(3, 16);
8515
+ case 7:
8416
8516
  void getWorkspace(presetId, auth).then(/*#__PURE__*/function () {
8417
8517
  var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(preset) {
8418
8518
  return _regenerator().w(function (_context) {
@@ -8440,52 +8540,52 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8440
8540
  }
8441
8541
  }, _callee);
8442
8542
  }));
8443
- return function (_x3) {
8543
+ return function (_x4) {
8444
8544
  return _ref5.apply(this, arguments);
8445
8545
  };
8446
8546
  }());
8447
- return _context2.a(3, 15);
8448
- case 7:
8547
+ return _context2.a(3, 16);
8548
+ case 8:
8449
8549
  url = getWorkspaceRouteUrl(presetId);
8450
8550
  window.open(url, '_blank');
8451
- return _context2.a(3, 15);
8452
- case 8:
8453
- _context2.p = 8;
8454
- _context2.n = 9;
8455
- return getWorkspace(presetId, auth);
8551
+ return _context2.a(3, 16);
8456
8552
  case 9:
8457
- preset = _context2.v;
8553
+ _context2.p = 9;
8458
8554
  _context2.n = 10;
8459
- return expandWorkspaceViewPresets(preset, auth);
8555
+ return getWorkspace(presetId, auth);
8460
8556
  case 10:
8557
+ preset = _context2.v;
8558
+ _context2.n = 11;
8559
+ return expandWorkspaceViewPresets(preset, auth);
8560
+ case 11:
8461
8561
  expanded = _context2.v;
8462
8562
  sanitized = sanitizeWorkspaceForClipboard(expanded);
8463
- _context2.n = 11;
8563
+ _context2.n = 12;
8464
8564
  return writeToClipboard(JSON.stringify(sanitized, null, 2));
8465
- case 11:
8565
+ case 12:
8466
8566
  dispatch(snackbarActions.openSnackbar({
8467
8567
  type: snackbarTypes.SnackbarMessageType.VERBATIM_MESSAGE,
8468
8568
  message: t('workspace-copy-success')
8469
8569
  }));
8470
- _context2.n = 13;
8570
+ _context2.n = 14;
8471
8571
  break;
8472
- case 12:
8473
- _context2.p = 12;
8572
+ case 13:
8573
+ _context2.p = 13;
8474
8574
  _context2.v;
8475
8575
  dispatch(snackbarActions.openSnackbar({
8476
8576
  type: snackbarTypes.SnackbarMessageType.VERBATIM_MESSAGE,
8477
8577
  message: t('workspace-error-generic')
8478
8578
  }));
8479
- case 13:
8480
- return _context2.a(3, 15);
8481
8579
  case 14:
8482
- return _context2.a(3, 15);
8580
+ return _context2.a(3, 16);
8483
8581
  case 15:
8582
+ return _context2.a(3, 16);
8583
+ case 16:
8484
8584
  return _context2.a(2);
8485
8585
  }
8486
- }, _callee2, null, [[8, 12]]);
8586
+ }, _callee2, null, [[9, 13]]);
8487
8587
  }));
8488
- return function onClickWorkspacePresetOption(_x, _x2) {
8588
+ return function onClickWorkspacePresetOption(_x, _x2, _x3) {
8489
8589
  return _ref2.apply(this, arguments);
8490
8590
  };
8491
8591
  }();
@@ -8515,10 +8615,10 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8515
8615
  flexDirection: 'column',
8516
8616
  height: '100%'
8517
8617
  },
8518
- tabIndex: 0,
8519
8618
  sx: {
8520
8619
  bgcolor: 'geowebColors.background.surface'
8521
8620
  },
8621
+ tabIndex: 0,
8522
8622
  children: [jsx(Box, {
8523
8623
  sx: {
8524
8624
  height: 4,
@@ -10655,29 +10755,39 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
10655
10755
  while (1) switch (_context2.n) {
10656
10756
  case 0:
10657
10757
  _t2 = presetAction;
10658
- _context2.n = _t2 === WorkspacePresetAction.DELETE ? 1 : _t2 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 1 : _t2 === WorkspacePresetAction.DUPLICATE ? 2 : 7;
10758
+ _context2.n = _t2 === WorkspacePresetAction.DELETE ? 1 : _t2 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 1 : _t2 === WorkspacePresetAction.DUPLICATE ? 2 : 8;
10659
10759
  break;
10660
10760
  case 1:
10661
10761
  deleteWorkspace({
10662
10762
  id: presetId
10663
10763
  });
10664
- return _context2.a(3, 8);
10764
+ return _context2.a(3, 9);
10665
10765
  case 2:
10766
+ if (!(!presetId || presetId === LOCAL_SOUNDINGS_ID)) {
10767
+ _context2.n = 3;
10768
+ break;
10769
+ }
10770
+ createWorkspace({
10771
+ data: data,
10772
+ action: presetAction
10773
+ });
10774
+ return _context2.a(3, 9);
10775
+ case 3:
10666
10776
  if (!presetId) {
10667
- _context2.n = 4;
10777
+ _context2.n = 5;
10668
10778
  break;
10669
10779
  }
10670
- _context2.n = 3;
10780
+ _context2.n = 4;
10671
10781
  return getWorkspace(presetId, auth);
10672
- case 3:
10782
+ case 4:
10673
10783
  _t3 = _context2.v;
10674
- _context2.n = 5;
10784
+ _context2.n = 6;
10675
10785
  break;
10676
- case 4:
10677
- _t3 = emptyWorkspaceBEData;
10678
10786
  case 5:
10787
+ _t3 = emptyWorkspaceBEData;
10788
+ case 6:
10679
10789
  oldWorkspace = _t3;
10680
- _context2.n = 6;
10790
+ _context2.n = 7;
10681
10791
  return Promise.all(((_oldWorkspace$views = oldWorkspace.views) != null ? _oldWorkspace$views : []).map(/*#__PURE__*/function () {
10682
10792
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(view) {
10683
10793
  var rest, _preset$id, preset, _viewPresetId, _rest, componentType, initialProps, _title;
@@ -10723,7 +10833,7 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
10723
10833
  return _ref3.apply(this, arguments);
10724
10834
  };
10725
10835
  }()));
10726
- case 6:
10836
+ case 7:
10727
10837
  viewsToDuplicate = _context2.v;
10728
10838
  duplicatedWorkspace = Object.assign({}, oldWorkspace, {
10729
10839
  title: data.title,
@@ -10737,17 +10847,18 @@ var WorkspaceTabConnect = function WorkspaceTabConnect(_ref) {
10737
10847
  data: duplicatedWorkspace,
10738
10848
  action: presetAction
10739
10849
  });
10740
- return _context2.a(3, 8);
10741
- case 7:
10850
+ return _context2.a(3, 9);
10851
+ case 8:
10742
10852
  dispatch(workspaceListActions.submitFormWorkspaceActionDialogOptions({
10743
10853
  presetAction: presetAction,
10744
10854
  presetId: presetId,
10745
10855
  data: data,
10746
10856
  emptyMapPresetTitle: t('workspace-mappreset-new'),
10747
- emptyWorkspacePresetTitle: t('workspace-new')
10857
+ emptyWorkspacePresetTitle: t('workspace-new'),
10858
+ emptySoundingsPresetTitle: t('workspace-new-soundings')
10748
10859
  }));
10749
- return _context2.a(3, 8);
10750
- case 8:
10860
+ return _context2.a(3, 9);
10861
+ case 9:
10751
10862
  return _context2.a(2);
10752
10863
  }
10753
10864
  }, _callee2);
@@ -11401,6 +11512,11 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
11401
11512
  changeToEmptyMapWorkspace();
11402
11513
  navigateToUrl(routes.root);
11403
11514
  };
11515
+ var setPreset = React.useCallback(function (workspacePreset) {
11516
+ dispatch(workspaceActions.changePreset({
11517
+ workspacePreset: workspacePreset
11518
+ }));
11519
+ }, [dispatch]);
11404
11520
  React.useEffect(function () {
11405
11521
  var idToFetch = workspaceId || initialWorkspaceId;
11406
11522
  var hasWorkspaceData = workspaceState.views.allIds.length > 0;
@@ -11411,6 +11527,9 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
11411
11527
  isWorkspaceListDialogOpen: true
11412
11528
  }));
11413
11529
  }
11530
+ } else if (idToFetch === LOCAL_SOUNDINGS_ID) {
11531
+ // If the workspaceId is the local soundings id, we don't want to fetch it from the backend, but instead set it to an empty soundings workspace
11532
+ setPreset(getNewSoundingsWorkspace(t));
11414
11533
  } else if (idToFetch) {
11415
11534
  fetchWorkspace(idToFetch);
11416
11535
  }
@@ -11638,7 +11757,7 @@ var workspacePresets = [
11638
11757
  },
11639
11758
  {
11640
11759
  name: "10M/ta",
11641
- service: "https://geoservices.knmi.nl/adagucserver?dataset=OBS",
11760
+ service: "https://geoservices.knmi.nl/adagucserver?dataset=10-minute-in-situ-meteorological-observations",
11642
11761
  dimensions: [
11643
11762
  ],
11644
11763
  id: "layerid_67",
@@ -12,7 +12,7 @@ export interface WorkspaceSelectListProps extends BoxProps {
12
12
  isEditable?: boolean;
13
13
  isAdmin?: boolean;
14
14
  searchQuery?: string;
15
- newPreset?: WorkspacePresetListItem;
15
+ newPresets?: WorkspacePresetListItem[];
16
16
  testIdPrefix?: string;
17
17
  onSelectVersion?: (presetId: string, version: string) => void;
18
18
  }
@@ -91,6 +91,7 @@ export interface SubmitFormWorkspaceActionDialogPayload {
91
91
  data: WorkspacePresetForBE;
92
92
  emptyMapPresetTitle: string;
93
93
  emptyWorkspacePresetTitle: string;
94
+ emptySoundingsPresetTitle?: string;
94
95
  }
95
96
  export interface OnNonDeleteSuccesWorkspacePresetActionPayload {
96
97
  workspaceId: string;
@@ -1,7 +1,7 @@
1
1
  import type { TFunction } from 'i18next';
2
2
  import { snackbarTypes } from '@opengeoweb/snackbar';
3
3
  import type { MapPreset } from '@opengeoweb/store';
4
- import type { WorkspacePreset, WorkspacePresetListItem } from '../workspace/types';
4
+ import type { WorkspacePreset, WorkspacePresetListItem, WorkspaceState, WorkspaceViewsFromBE } from '../workspace/types';
5
5
  import { WorkspacePresetAction } from '../workspace/types';
6
6
  export declare const getSnackbarMessage: (action: WorkspacePresetAction, title: string, is_shared?: boolean) => snackbarTypes.TranslatableMessage;
7
7
  export declare function getEmptyWorkspaceListItem(): Omit<WorkspacePresetListItem, 'title'>;
@@ -11,3 +11,7 @@ export declare function getEmptyMapWorkspace(): Omit<WorkspacePreset, 'title'>;
11
11
  export declare function getEmptyMapWorkspace(t: TFunction): WorkspacePreset;
12
12
  export declare const getEmptyWorkspacePreset: () => Omit<WorkspacePreset, "title">;
13
13
  export declare const createCustomEmptyMapWorkspace: (emptyWorkspaceTitle: string, emptyMapWorkspaceTitle: string, customMapPreset?: MapPreset) => WorkspacePreset;
14
+ export declare const LOCAL_SOUNDINGS_ID = "newSoundingsWorkspace";
15
+ export declare const getNewSoundingsWorkspaceListItem: (t?: TFunction) => WorkspacePresetListItem;
16
+ export declare function getNewSoundingsWorkspace(t?: TFunction): WorkspacePreset;
17
+ export declare const getBEViewsFromState: (workspace: WorkspaceState) => WorkspaceViewsFromBE[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/workspace",
3
- "version": "19.1.1",
3
+ "version": "19.3.0",
4
4
  "description": "GeoWeb Workspace library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -30,7 +30,7 @@
30
30
  "@opengeoweb/snackbar": "*",
31
31
  "react-window": "^2.2.6",
32
32
  "lodash": "^4.18.1",
33
- "axios": "^1.16.0",
33
+ "axios": "^1.18.0",
34
34
  "react-mosaic-component": "npm:react-mosaic-component-opengeoweb@^6.1.1-opengeoweb.1",
35
35
  "@opengeoweb/form-fields": "*",
36
36
  "@opengeoweb/time-series": "*",