@opengeoweb/workspace 14.0.1 → 14.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.esm.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
1
|
+
import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf, combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
2
2
|
import { syncGroupsTypes, syncGroupsActions, layerActions, mapActions, uiActions, genericActions, layerTypes, mapEnums, selectorMemoizationOptions, genericSelectors, mapSelectors, syncGroupsSelectors, routerActions, createViewObjectForNewMap, mapListener, serviceListener, layersListener, syncGroupsListener, openlayersListener, uiReducer, loadingIndicatorReducer, syncGroupsReducer, layerReducer, serviceReducer, mapReducer, loadingIndicatorSelectors, uiTypes, linkComponentTypesConstants, uiSelectors } from '@opengeoweb/store';
|
|
3
3
|
import { createApiInstance, createNonAuthApiInstance, getApi, createFakeApiInstance, ApiProvider, getHeaders, handleResponse, useApiContext, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
|
|
4
4
|
import { chunk, cloneDeep, union, pick, isEmpty, isEqual, isString } from 'lodash';
|
|
5
5
|
import { getLeaves, createBalancedTreeFromLeaves, MosaicContext, getAndAssertNodeAtPathExists, MosaicWindow, Mosaic } from 'react-mosaic-component';
|
|
6
6
|
import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/time-series';
|
|
7
7
|
import { publicWarningActions, warningsTranslations, WARN_NAMESPACE, publicWarningsSelectors } from '@opengeoweb/warnings';
|
|
8
|
-
import { PROJECTION, getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, usePrevious, AlertBanner, sessionStorageProvider, SystemScope, CustomTooltip, SearchHighlight, ToggleMenu, CustomIconButton, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, useConfirmationDialog, ConfirmationButtons } from '@opengeoweb/shared';
|
|
9
8
|
import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
|
|
9
|
+
import { getAxiosErrorMessage, isAxiosAuthError, isAxiosError as isAxiosError$1, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, usePrevious, AlertBanner, sessionStorageProvider, SystemScope, CustomTooltip, SearchHighlight, ToggleMenu, CustomIconButton, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, useConfirmationDialog, ConfirmationButtons } from '@opengeoweb/shared';
|
|
10
10
|
import { isAxiosError } from 'axios';
|
|
11
11
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
12
12
|
import { ThemeWrapper, lightTheme, SharedPresetsMyUser, SharedPresetsOtherUsers, Delete, Preset, PresetWorkspace, PresetTiles, CloudLoading, CloudIdle, Options, Link, LinkOff, SplitVertical, SplitHorizontal, Expand, UnExpand, Close, WebAssetOff, Exclamation } from '@opengeoweb/theme';
|
|
@@ -1705,16 +1705,6 @@ function getEmptyMapWorkspace(t) {
|
|
|
1705
1705
|
componentType: 'Map',
|
|
1706
1706
|
initialProps: {
|
|
1707
1707
|
mapPreset: {
|
|
1708
|
-
layers: [],
|
|
1709
|
-
proj: {
|
|
1710
|
-
bbox: {
|
|
1711
|
-
left: 58703.6377,
|
|
1712
|
-
bottom: 6408480.4514,
|
|
1713
|
-
right: 3967387.5161,
|
|
1714
|
-
top: 11520588.9031
|
|
1715
|
-
},
|
|
1716
|
-
srs: PROJECTION.EPSG_3857.value
|
|
1717
|
-
},
|
|
1718
1708
|
shouldShowLayerManager: true,
|
|
1719
1709
|
dockedLayerManagerSize: 'sizeSmall'
|
|
1720
1710
|
},
|
|
@@ -1737,16 +1727,6 @@ var getEmptyWorkspacePreset = function getEmptyWorkspacePreset() {
|
|
|
1737
1727
|
componentType: 'Map',
|
|
1738
1728
|
initialProps: {
|
|
1739
1729
|
mapPreset: {
|
|
1740
|
-
layers: [],
|
|
1741
|
-
proj: {
|
|
1742
|
-
bbox: {
|
|
1743
|
-
left: 58703.6377,
|
|
1744
|
-
bottom: 6408480.4514,
|
|
1745
|
-
right: 3967387.5161,
|
|
1746
|
-
top: 11520588.9031
|
|
1747
|
-
},
|
|
1748
|
-
srs: PROJECTION.EPSG_3857.value
|
|
1749
|
-
},
|
|
1750
1730
|
shouldShowLayerManager: true,
|
|
1751
1731
|
dockedLayerManagerSize: 'sizeSmall'
|
|
1752
1732
|
},
|
|
@@ -4908,21 +4888,23 @@ workspaceListener.startListening({
|
|
|
4908
4888
|
}()
|
|
4909
4889
|
});
|
|
4910
4890
|
workspaceListener.startListening({
|
|
4911
|
-
|
|
4891
|
+
matcher: isAnyOf(workspaceActions.fetchWorkspace, routerActions.navigateBackOrForward),
|
|
4912
4892
|
effect: function () {
|
|
4913
|
-
var _effect5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(
|
|
4893
|
+
var _effect5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(action, listenerApi) {
|
|
4914
4894
|
var payload, workspaceId, workspaceApi, _yield$workspaceApi$g2, workspaceData, fullLoadingWorkspace, workspaceIdsInBatches, actionsToDispatch, errorType;
|
|
4915
4895
|
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
4916
4896
|
while (1) switch (_context7.prev = _context7.next) {
|
|
4917
4897
|
case 0:
|
|
4918
|
-
payload = _ref6.payload;
|
|
4919
4898
|
// Cancel any in-progress instances of this listener
|
|
4920
4899
|
listenerApi.cancelActiveListeners();
|
|
4900
|
+
payload = action.payload;
|
|
4921
4901
|
workspaceId = payload.workspaceId;
|
|
4922
4902
|
_context7.prev = 3;
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
|
|
4903
|
+
if (action.type === workspaceActions.fetchWorkspace.type) {
|
|
4904
|
+
listenerApi.dispatch(routerActions.navigateToUrl({
|
|
4905
|
+
url: getWorkspaceRouteUrl(workspaceId)
|
|
4906
|
+
}));
|
|
4907
|
+
}
|
|
4926
4908
|
listenerApi.dispatch(workspaceListActions.toggleWorkspaceDialog({
|
|
4927
4909
|
isWorkspaceListDialogOpen: false
|
|
4928
4910
|
}));
|
|
@@ -4953,7 +4935,7 @@ workspaceListener.startListening({
|
|
|
4953
4935
|
actionsToDispatch = [];
|
|
4954
4936
|
_context7.next = 20;
|
|
4955
4937
|
return Promise.all(workspaceIdsInBatches.map(/*#__PURE__*/function () {
|
|
4956
|
-
var
|
|
4938
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(batchCall) {
|
|
4957
4939
|
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
4958
4940
|
while (1) switch (_context6.prev = _context6.next) {
|
|
4959
4941
|
case 0:
|
|
@@ -4970,7 +4952,7 @@ workspaceListener.startListening({
|
|
|
4970
4952
|
}, _callee6);
|
|
4971
4953
|
}));
|
|
4972
4954
|
return function (_x12) {
|
|
4973
|
-
return
|
|
4955
|
+
return _ref6.apply(this, arguments);
|
|
4974
4956
|
};
|
|
4975
4957
|
}()));
|
|
4976
4958
|
case 20:
|
|
@@ -5004,12 +4986,12 @@ workspaceListener.startListening({
|
|
|
5004
4986
|
workspaceListener.startListening({
|
|
5005
4987
|
actionCreator: workspaceActions.saveWorkspacePreset,
|
|
5006
4988
|
effect: function () {
|
|
5007
|
-
var _effect6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(
|
|
4989
|
+
var _effect6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(_ref7, listenerApi) {
|
|
5008
4990
|
var payload, workspace, workspaceApi;
|
|
5009
4991
|
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
5010
4992
|
while (1) switch (_context8.prev = _context8.next) {
|
|
5011
4993
|
case 0:
|
|
5012
|
-
payload =
|
|
4994
|
+
payload = _ref7.payload;
|
|
5013
4995
|
// Cancel any in-progress instances of this listener
|
|
5014
4996
|
listenerApi.cancelActiveListeners();
|
|
5015
4997
|
workspace = payload.workspace;
|
|
@@ -5078,12 +5060,12 @@ workspaceListener.startListening({
|
|
|
5078
5060
|
workspaceListener.startListening({
|
|
5079
5061
|
actionCreator: workspaceActions.setNewWorkspaceView,
|
|
5080
5062
|
effect: function () {
|
|
5081
|
-
var _effect8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee0(
|
|
5063
|
+
var _effect8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee0(_ref8, listenerApi) {
|
|
5082
5064
|
var payload, mosaicNodeId, componentType, newId, bbox, srs, mapPreset;
|
|
5083
5065
|
return _regeneratorRuntime().wrap(function _callee0$(_context0) {
|
|
5084
5066
|
while (1) switch (_context0.prev = _context0.next) {
|
|
5085
5067
|
case 0:
|
|
5086
|
-
payload =
|
|
5068
|
+
payload = _ref8.payload;
|
|
5087
5069
|
mosaicNodeId = payload.mosaicNodeId, componentType = payload.componentType, newId = payload.newId; // TODO: this would be nice to move into the openlayers store
|
|
5088
5070
|
createViewObjectForNewMap(mosaicNodeId, newId);
|
|
5089
5071
|
// Note, at some point these might no longer be necessary
|
|
@@ -5278,6 +5260,100 @@ var getWorkspaceListSearchQuery = createSelector(getWorkspaceListStore, function
|
|
|
5278
5260
|
return (state == null ? void 0 : state.searchQuery) || '';
|
|
5279
5261
|
}, selectorMemoizationOptions);
|
|
5280
5262
|
|
|
5263
|
+
/* *
|
|
5264
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5265
|
+
* you may not use this file except in compliance with the License.
|
|
5266
|
+
* You may obtain a copy of the License at
|
|
5267
|
+
*
|
|
5268
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5269
|
+
*
|
|
5270
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
5271
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5272
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5273
|
+
* See the License for the specific language governing permissions and
|
|
5274
|
+
* limitations under the License.
|
|
5275
|
+
*
|
|
5276
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5277
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
5278
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5279
|
+
* */
|
|
5280
|
+
var viewPresetsListAdapter = createEntityAdapter();
|
|
5281
|
+
var initialState = viewPresetsListAdapter.getInitialState();
|
|
5282
|
+
var slice = createSlice({
|
|
5283
|
+
initialState: initialState,
|
|
5284
|
+
name: 'viewPresetsList',
|
|
5285
|
+
reducers: {
|
|
5286
|
+
fetchViewPresetsList: function fetchViewPresetsList(_draft, _action) {
|
|
5287
|
+
// action is intercepted in viewPresets/listener
|
|
5288
|
+
},
|
|
5289
|
+
fetchedViewPresetsList: function fetchedViewPresetsList(draft, action) {
|
|
5290
|
+
var viewPresets = action.payload.viewPresets;
|
|
5291
|
+
if (!viewPresets || !viewPresets.length) {
|
|
5292
|
+
viewPresetsListAdapter.removeAll(draft);
|
|
5293
|
+
return;
|
|
5294
|
+
}
|
|
5295
|
+
viewPresetsListAdapter.setAll(draft, viewPresets);
|
|
5296
|
+
}
|
|
5297
|
+
},
|
|
5298
|
+
extraReducers: function extraReducers(builder) {
|
|
5299
|
+
builder.addCase(viewPresetActions.fetchedViewPresets, function (draft, action) {
|
|
5300
|
+
var _action$payload = action.payload,
|
|
5301
|
+
viewPresets = _action$payload.viewPresets,
|
|
5302
|
+
filterParams = _action$payload.filterParams;
|
|
5303
|
+
// If there are filter params applied, don't do anything, these results are put in the specific panel filterResults
|
|
5304
|
+
var hasFilterParams = Object.keys(filterParams).length !== 0;
|
|
5305
|
+
var isDefaultScopeOnly = Object.keys(filterParams).length === 1 && filterParams.scope === 'user,system';
|
|
5306
|
+
if (hasFilterParams && !isDefaultScopeOnly) {
|
|
5307
|
+
return;
|
|
5308
|
+
}
|
|
5309
|
+
if (!viewPresets || !viewPresets.length) {
|
|
5310
|
+
viewPresetsListAdapter.removeAll(draft);
|
|
5311
|
+
return;
|
|
5312
|
+
}
|
|
5313
|
+
viewPresetsListAdapter.setAll(draft, action.payload.viewPresets);
|
|
5314
|
+
});
|
|
5315
|
+
}
|
|
5316
|
+
});
|
|
5317
|
+
var viewPresetsListReducer = slice.reducer,
|
|
5318
|
+
viewPresetsListActions = slice.actions;
|
|
5319
|
+
|
|
5320
|
+
/* *
|
|
5321
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5322
|
+
* you may not use this file except in compliance with the License.
|
|
5323
|
+
* You may obtain a copy of the License at
|
|
5324
|
+
*
|
|
5325
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5326
|
+
*
|
|
5327
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
5328
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5329
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5330
|
+
* See the License for the specific language governing permissions and
|
|
5331
|
+
* limitations under the License.
|
|
5332
|
+
*
|
|
5333
|
+
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5334
|
+
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
5335
|
+
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5336
|
+
* */
|
|
5337
|
+
// Used to retrieve the unfiltered, general view preset list.
|
|
5338
|
+
// To ensure you retrieve the view preset list specific for your view, use getFilteredViewPresetListForView
|
|
5339
|
+
var _viewPresetsListAdapt = viewPresetsListAdapter.getSelectors(function (state) {
|
|
5340
|
+
var _state$viewPresetsLis;
|
|
5341
|
+
return (_state$viewPresetsLis = state == null ? void 0 : state.viewPresetsList) != null ? _state$viewPresetsLis : {
|
|
5342
|
+
entities: {},
|
|
5343
|
+
ids: []
|
|
5344
|
+
};
|
|
5345
|
+
}),
|
|
5346
|
+
getViewPresetsList = _viewPresetsListAdapt.selectAll,
|
|
5347
|
+
getViewPresetFromList = _viewPresetsListAdapt.selectById;
|
|
5348
|
+
var getFilteredViewPresetListForView = createSelector(getViewPresetsList, getViewPresetListFilterResultsForView, getViewPresetListSearchQueryForView, function (fullViewPresetsList, filteredResults, searchQuery) {
|
|
5349
|
+
if (searchQuery !== '') {
|
|
5350
|
+
// Search active: return what backend gave us
|
|
5351
|
+
return filteredResults;
|
|
5352
|
+
}
|
|
5353
|
+
// No search: return full unfiltered list
|
|
5354
|
+
return fullViewPresetsList != null ? fullViewPresetsList : [];
|
|
5355
|
+
}, selectorMemoizationOptions);
|
|
5356
|
+
|
|
5281
5357
|
var processError = function processError(error, component, errorMessageKey) {
|
|
5282
5358
|
var message = isAxiosError(error) ? getAxiosErrorMessage(error) : errorMessageKey;
|
|
5283
5359
|
var errorType = isAxiosAuthError(error) ? ViewPresetErrorType.AUTH : ViewPresetErrorType.GENERIC;
|
|
@@ -5333,21 +5409,52 @@ viewPresetsListener.startListening({
|
|
|
5333
5409
|
return effect;
|
|
5334
5410
|
}()
|
|
5335
5411
|
});
|
|
5412
|
+
// fetch full view presets list
|
|
5413
|
+
viewPresetsListener.startListening({
|
|
5414
|
+
actionCreator: viewPresetsListActions.fetchViewPresetsList,
|
|
5415
|
+
effect: function () {
|
|
5416
|
+
var _effect2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_, listenerApi) {
|
|
5417
|
+
var workspaceApi, _yield$workspaceApi$g2, viewPresets;
|
|
5418
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
5419
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
5420
|
+
case 0:
|
|
5421
|
+
listenerApi.cancelActiveListeners();
|
|
5422
|
+
workspaceApi = getWorkspaceApi();
|
|
5423
|
+
_context2.next = 4;
|
|
5424
|
+
return workspaceApi.getViewPresets();
|
|
5425
|
+
case 4:
|
|
5426
|
+
_yield$workspaceApi$g2 = _context2.sent;
|
|
5427
|
+
viewPresets = _yield$workspaceApi$g2.data;
|
|
5428
|
+
listenerApi.dispatch(viewPresetsListActions.fetchedViewPresetsList({
|
|
5429
|
+
viewPresets: viewPresets
|
|
5430
|
+
}));
|
|
5431
|
+
case 7:
|
|
5432
|
+
case "end":
|
|
5433
|
+
return _context2.stop();
|
|
5434
|
+
}
|
|
5435
|
+
}, _callee2);
|
|
5436
|
+
}));
|
|
5437
|
+
function effect(_x3, _x4) {
|
|
5438
|
+
return _effect2.apply(this, arguments);
|
|
5439
|
+
}
|
|
5440
|
+
return effect;
|
|
5441
|
+
}()
|
|
5442
|
+
});
|
|
5336
5443
|
var saveViewPresetAsEffect = /*#__PURE__*/function () {
|
|
5337
|
-
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
5444
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref2, listenerApi) {
|
|
5338
5445
|
var payload, panelId, viewPreset, workspaceApi, viewPresetId;
|
|
5339
|
-
return _regeneratorRuntime().wrap(function
|
|
5340
|
-
while (1) switch (
|
|
5446
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
5447
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
5341
5448
|
case 0:
|
|
5342
5449
|
payload = _ref2.payload;
|
|
5343
5450
|
listenerApi.cancelActiveListeners();
|
|
5344
5451
|
panelId = payload.panelId, viewPreset = payload.viewPreset;
|
|
5345
|
-
|
|
5452
|
+
_context3.prev = 3;
|
|
5346
5453
|
workspaceApi = getWorkspaceApi();
|
|
5347
|
-
|
|
5454
|
+
_context3.next = 7;
|
|
5348
5455
|
return workspaceApi.saveViewPresetAs(viewPreset);
|
|
5349
5456
|
case 7:
|
|
5350
|
-
viewPresetId =
|
|
5457
|
+
viewPresetId = _context3.sent;
|
|
5351
5458
|
listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(PresetAction.SAVE, viewPreset.title)));
|
|
5352
5459
|
listenerApi.dispatch(viewPresetActions.savedViewPreset({
|
|
5353
5460
|
panelId: panelId,
|
|
@@ -5358,39 +5465,39 @@ var saveViewPresetAsEffect = /*#__PURE__*/function () {
|
|
|
5358
5465
|
viewPresetId: viewPresetId,
|
|
5359
5466
|
viewPreset: viewPreset
|
|
5360
5467
|
}));
|
|
5361
|
-
return
|
|
5468
|
+
return _context3.abrupt("return", Object.assign({}, viewPreset, {
|
|
5362
5469
|
id: viewPresetId
|
|
5363
5470
|
}));
|
|
5364
5471
|
case 14:
|
|
5365
|
-
|
|
5366
|
-
|
|
5472
|
+
_context3.prev = 14;
|
|
5473
|
+
_context3.t0 = _context3["catch"](3);
|
|
5367
5474
|
listenerApi.dispatch(viewPresetActions.errorViewPreset({
|
|
5368
|
-
error: processError(
|
|
5475
|
+
error: processError(_context3.t0, ViewPresetErrorComponent.PRESET_DETAIL, 'workspace-mappreset-error-save'),
|
|
5369
5476
|
panelId: panelId
|
|
5370
5477
|
}));
|
|
5371
|
-
return
|
|
5478
|
+
return _context3.abrupt("return", _context3.t0);
|
|
5372
5479
|
case 18:
|
|
5373
5480
|
case "end":
|
|
5374
|
-
return
|
|
5481
|
+
return _context3.stop();
|
|
5375
5482
|
}
|
|
5376
|
-
},
|
|
5483
|
+
}, _callee3, null, [[3, 14]]);
|
|
5377
5484
|
}));
|
|
5378
|
-
return function saveViewPresetAsEffect(
|
|
5485
|
+
return function saveViewPresetAsEffect(_x5, _x6) {
|
|
5379
5486
|
return _ref3.apply(this, arguments);
|
|
5380
5487
|
};
|
|
5381
5488
|
}();
|
|
5382
5489
|
var saveViewPresetEffect = /*#__PURE__*/function () {
|
|
5383
|
-
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
5490
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref4, listenerApi) {
|
|
5384
5491
|
var payload, panelId, viewPreset, viewPresetId, workspaceApi;
|
|
5385
|
-
return _regeneratorRuntime().wrap(function
|
|
5386
|
-
while (1) switch (
|
|
5492
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
5493
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
5387
5494
|
case 0:
|
|
5388
5495
|
payload = _ref4.payload;
|
|
5389
5496
|
listenerApi.cancelActiveListeners();
|
|
5390
5497
|
panelId = payload.panelId, viewPreset = payload.viewPreset, viewPresetId = payload.viewPresetId;
|
|
5391
|
-
|
|
5498
|
+
_context4.prev = 3;
|
|
5392
5499
|
workspaceApi = getWorkspaceApi();
|
|
5393
|
-
|
|
5500
|
+
_context4.next = 7;
|
|
5394
5501
|
return workspaceApi.saveViewPreset(viewPresetId, viewPreset);
|
|
5395
5502
|
case 7:
|
|
5396
5503
|
listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(PresetAction.SAVE, viewPreset.title)));
|
|
@@ -5403,23 +5510,23 @@ var saveViewPresetEffect = /*#__PURE__*/function () {
|
|
|
5403
5510
|
viewPresetId: viewPresetId,
|
|
5404
5511
|
viewPreset: viewPreset
|
|
5405
5512
|
}));
|
|
5406
|
-
return
|
|
5513
|
+
return _context4.abrupt("return", viewPreset);
|
|
5407
5514
|
case 13:
|
|
5408
|
-
|
|
5409
|
-
|
|
5515
|
+
_context4.prev = 13;
|
|
5516
|
+
_context4.t0 = _context4["catch"](3);
|
|
5410
5517
|
listenerApi.dispatch(viewPresetActions.errorViewPreset({
|
|
5411
|
-
error: processError(
|
|
5518
|
+
error: processError(_context4.t0, ViewPresetErrorComponent.PRESET_DETAIL, 'workspace-mappreset-error-save'),
|
|
5412
5519
|
panelId: panelId,
|
|
5413
5520
|
viewPresetId: viewPresetId
|
|
5414
5521
|
}));
|
|
5415
|
-
return
|
|
5522
|
+
return _context4.abrupt("return", _context4.t0);
|
|
5416
5523
|
case 17:
|
|
5417
5524
|
case "end":
|
|
5418
|
-
return
|
|
5525
|
+
return _context4.stop();
|
|
5419
5526
|
}
|
|
5420
|
-
},
|
|
5527
|
+
}, _callee4, null, [[3, 13]]);
|
|
5421
5528
|
}));
|
|
5422
|
-
return function saveViewPresetEffect(
|
|
5529
|
+
return function saveViewPresetEffect(_x7, _x8) {
|
|
5423
5530
|
return _ref5.apply(this, arguments);
|
|
5424
5531
|
};
|
|
5425
5532
|
}();
|
|
@@ -5432,10 +5539,10 @@ viewPresetsListener.startListening({
|
|
|
5432
5539
|
viewPresetsListener.startListening({
|
|
5433
5540
|
actionCreator: viewPresetActions.selectViewPreset,
|
|
5434
5541
|
effect: function () {
|
|
5435
|
-
var
|
|
5542
|
+
var _effect3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref6, listenerApi) {
|
|
5436
5543
|
var payload, panelId, _payload$viewPresetId, viewPresetId, isMapAnimating;
|
|
5437
|
-
return _regeneratorRuntime().wrap(function
|
|
5438
|
-
while (1) switch (
|
|
5544
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
5545
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
5439
5546
|
case 0:
|
|
5440
5547
|
payload = _ref6.payload;
|
|
5441
5548
|
listenerApi.cancelActiveListeners();
|
|
@@ -5471,12 +5578,12 @@ viewPresetsListener.startListening({
|
|
|
5471
5578
|
}
|
|
5472
5579
|
case 6:
|
|
5473
5580
|
case "end":
|
|
5474
|
-
return
|
|
5581
|
+
return _context5.stop();
|
|
5475
5582
|
}
|
|
5476
|
-
},
|
|
5583
|
+
}, _callee5);
|
|
5477
5584
|
}));
|
|
5478
|
-
function effect(
|
|
5479
|
-
return
|
|
5585
|
+
function effect(_x9, _x0) {
|
|
5586
|
+
return _effect3.apply(this, arguments);
|
|
5480
5587
|
}
|
|
5481
5588
|
return effect;
|
|
5482
5589
|
}()
|
|
@@ -5485,10 +5592,10 @@ viewPresetsListener.startListening({
|
|
|
5485
5592
|
viewPresetsListener.startListening({
|
|
5486
5593
|
actionCreator: viewPresetActions.onSuccessViewPresetAction,
|
|
5487
5594
|
effect: function () {
|
|
5488
|
-
var
|
|
5595
|
+
var _effect4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref7, listenerApi) {
|
|
5489
5596
|
var payload, action, viewPresetId, title, panelId, is_shared, activeMapPresetId, hasChanges, viewPresetFilters, viewPresetSearchQuery;
|
|
5490
|
-
return _regeneratorRuntime().wrap(function
|
|
5491
|
-
while (1) switch (
|
|
5597
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
5598
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
5492
5599
|
case 0:
|
|
5493
5600
|
payload = _ref7.payload;
|
|
5494
5601
|
listenerApi.cancelActiveListeners();
|
|
@@ -5505,8 +5612,10 @@ viewPresetsListener.startListening({
|
|
|
5505
5612
|
}));
|
|
5506
5613
|
hasChanges = true;
|
|
5507
5614
|
}
|
|
5508
|
-
//
|
|
5509
|
-
|
|
5615
|
+
// Fetch the full list to update the list store with the latest presets
|
|
5616
|
+
listenerApi.dispatch(viewPresetsListActions.fetchViewPresetsList());
|
|
5617
|
+
// Also retrieve new list with current filter and search query for current panel
|
|
5618
|
+
viewPresetFilters = getViewPresetListFiltersForView(listenerApi.getState(), panelId);
|
|
5510
5619
|
viewPresetSearchQuery = getViewPresetListSearchQueryForView(listenerApi.getState(), panelId);
|
|
5511
5620
|
listenerApi.dispatch(viewPresetActions.fetchViewPresets({
|
|
5512
5621
|
panelId: panelId,
|
|
@@ -5529,12 +5638,12 @@ viewPresetsListener.startListening({
|
|
|
5529
5638
|
}
|
|
5530
5639
|
case 5:
|
|
5531
5640
|
case "end":
|
|
5532
|
-
return
|
|
5641
|
+
return _context6.stop();
|
|
5533
5642
|
}
|
|
5534
|
-
},
|
|
5643
|
+
}, _callee6);
|
|
5535
5644
|
}));
|
|
5536
|
-
function effect(
|
|
5537
|
-
return
|
|
5645
|
+
function effect(_x1, _x10) {
|
|
5646
|
+
return _effect4.apply(this, arguments);
|
|
5538
5647
|
}
|
|
5539
5648
|
return effect;
|
|
5540
5649
|
}()
|
|
@@ -5812,86 +5921,6 @@ workspaceListListener.startListening({
|
|
|
5812
5921
|
}()
|
|
5813
5922
|
});
|
|
5814
5923
|
|
|
5815
|
-
/* *
|
|
5816
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5817
|
-
* you may not use this file except in compliance with the License.
|
|
5818
|
-
* You may obtain a copy of the License at
|
|
5819
|
-
*
|
|
5820
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5821
|
-
*
|
|
5822
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5823
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5824
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5825
|
-
* See the License for the specific language governing permissions and
|
|
5826
|
-
* limitations under the License.
|
|
5827
|
-
*
|
|
5828
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5829
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
5830
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5831
|
-
* */
|
|
5832
|
-
var viewPresetsListAdapter = createEntityAdapter();
|
|
5833
|
-
var initialState = viewPresetsListAdapter.getInitialState();
|
|
5834
|
-
var slice = createSlice({
|
|
5835
|
-
initialState: initialState,
|
|
5836
|
-
name: 'viewPresetsList',
|
|
5837
|
-
reducers: {},
|
|
5838
|
-
extraReducers: function extraReducers(builder) {
|
|
5839
|
-
builder.addCase(viewPresetActions.fetchedViewPresets, function (draft, action) {
|
|
5840
|
-
var _action$payload = action.payload,
|
|
5841
|
-
viewPresets = _action$payload.viewPresets,
|
|
5842
|
-
filterParams = _action$payload.filterParams;
|
|
5843
|
-
// If there are filter params applied, don't do anything, these results are put in the specific panel filterResults
|
|
5844
|
-
if (Object.keys(filterParams).length !== 0) {
|
|
5845
|
-
return;
|
|
5846
|
-
}
|
|
5847
|
-
if (!viewPresets || !viewPresets.length) {
|
|
5848
|
-
viewPresetsListAdapter.removeAll(draft);
|
|
5849
|
-
return;
|
|
5850
|
-
}
|
|
5851
|
-
viewPresetsListAdapter.setAll(draft, action.payload.viewPresets);
|
|
5852
|
-
});
|
|
5853
|
-
}
|
|
5854
|
-
});
|
|
5855
|
-
var viewPresetsListReducer = slice.reducer;
|
|
5856
|
-
slice.actions;
|
|
5857
|
-
|
|
5858
|
-
/* *
|
|
5859
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5860
|
-
* you may not use this file except in compliance with the License.
|
|
5861
|
-
* You may obtain a copy of the License at
|
|
5862
|
-
*
|
|
5863
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5864
|
-
*
|
|
5865
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5866
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5867
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5868
|
-
* See the License for the specific language governing permissions and
|
|
5869
|
-
* limitations under the License.
|
|
5870
|
-
*
|
|
5871
|
-
* Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5872
|
-
* Copyright 2023 - Finnish Meteorological Institute (FMI)
|
|
5873
|
-
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
5874
|
-
* */
|
|
5875
|
-
// Used to retrieve the unfiltered, general view preset list.
|
|
5876
|
-
// To ensure you retrieve the view preset list specific for your view, use getFilteredViewPresetListForView
|
|
5877
|
-
var _viewPresetsListAdapt = viewPresetsListAdapter.getSelectors(function (state) {
|
|
5878
|
-
var _state$viewPresetsLis;
|
|
5879
|
-
return (_state$viewPresetsLis = state == null ? void 0 : state.viewPresetsList) != null ? _state$viewPresetsLis : {
|
|
5880
|
-
entities: {},
|
|
5881
|
-
ids: []
|
|
5882
|
-
};
|
|
5883
|
-
}),
|
|
5884
|
-
getViewPresetsList = _viewPresetsListAdapt.selectAll,
|
|
5885
|
-
getViewPresetFromList = _viewPresetsListAdapt.selectById;
|
|
5886
|
-
var getFilteredViewPresetListForView = createSelector(getViewPresetsList, getViewPresetListFilterResultsForView, getViewPresetListSearchQueryForView, function (fullViewPresetsList, filteredResults, searchQuery) {
|
|
5887
|
-
if (searchQuery !== '') {
|
|
5888
|
-
// Search active: return what backend gave us
|
|
5889
|
-
return filteredResults;
|
|
5890
|
-
}
|
|
5891
|
-
// No search: return full unfiltered list
|
|
5892
|
-
return fullViewPresetsList != null ? fullViewPresetsList : [];
|
|
5893
|
-
}, selectorMemoizationOptions);
|
|
5894
|
-
|
|
5895
5924
|
/* *
|
|
5896
5925
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5897
5926
|
* you may not use this file except in compliance with the License.
|
|
@@ -7481,12 +7510,11 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
|
|
|
7481
7510
|
return syncGroupsSelectors.getAllTargetGroupsForSource(store, panelId);
|
|
7482
7511
|
});
|
|
7483
7512
|
var currentViewPreset = useSelector(function (store) {
|
|
7484
|
-
return
|
|
7513
|
+
return activeViewPresetId ? getViewPresetFromList(store, activeViewPresetId) : undefined;
|
|
7485
7514
|
});
|
|
7486
7515
|
var presetAbstract = workspaceView == null ? void 0 : workspaceView["abstract"];
|
|
7487
7516
|
var isNewActive = activeViewPresetId === '';
|
|
7488
7517
|
var title = workspaceView.title || t('workspace-mappreset-new');
|
|
7489
|
-
var viewScope = workspaceView.scope;
|
|
7490
7518
|
var fullTitle = getPresetTitle(title, hasViewPresetChanges, isNewActive, t);
|
|
7491
7519
|
var openViewPresetsDialog = React.useCallback(function (viewPresetDialogOptions) {
|
|
7492
7520
|
dispatch(viewPresetActions.openViewPresetDialog({
|
|
@@ -7589,7 +7617,7 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
|
|
|
7589
7617
|
renderCounter.count(WorkspaceViewTitleConnectNoMemo.name);
|
|
7590
7618
|
var viewpresetCreator = (currentViewPreset == null ? void 0 : currentViewPreset.username) || '';
|
|
7591
7619
|
var isUserPresetCreator = (auth == null ? void 0 : auth.username) === viewpresetCreator;
|
|
7592
|
-
var currentViewScope =
|
|
7620
|
+
var currentViewScope = (currentViewPreset == null ? void 0 : currentViewPreset.scope) || 'system';
|
|
7593
7621
|
var isEnabled = (currentViewScope === 'user' && isUserPresetCreator || isAdmin && currentViewScope === 'system') && activeViewPresetId !== '' && isLoggedIn;
|
|
7594
7622
|
return (
|
|
7595
7623
|
// Zero-length string assignment prevents showing title as an empty object '[object Object]'.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeoweb/workspace",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.2.1",
|
|
4
4
|
"description": "GeoWeb Workspace library for the opengeoweb project",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -9,32 +9,33 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"react-redux": "^9.2.0",
|
|
12
|
-
"@opengeoweb/shared": "14.
|
|
13
|
-
"@opengeoweb/store": "14.
|
|
14
|
-
"@opengeoweb/api": "14.
|
|
12
|
+
"@opengeoweb/shared": "14.2.1",
|
|
13
|
+
"@opengeoweb/store": "14.2.1",
|
|
14
|
+
"@opengeoweb/api": "14.2.1",
|
|
15
15
|
"react-hook-form": "^7.50.1",
|
|
16
|
-
"@opengeoweb/theme": "14.
|
|
16
|
+
"@opengeoweb/theme": "14.2.1",
|
|
17
17
|
"@reduxjs/toolkit": "^2.6.1",
|
|
18
|
-
"@opengeoweb/snackbar": "14.
|
|
18
|
+
"@opengeoweb/snackbar": "14.2.1",
|
|
19
19
|
"react-window": "^1.8.10",
|
|
20
20
|
"lodash": "^4.17.21",
|
|
21
21
|
"axios": "^1.7.7",
|
|
22
22
|
"react-virtualized-auto-sizer": "^1.0.21",
|
|
23
23
|
"react-mosaic-component": "^6.1.0",
|
|
24
|
-
"@opengeoweb/form-fields": "14.
|
|
25
|
-
"@opengeoweb/time-series": "14.
|
|
26
|
-
"@opengeoweb/authentication": "14.
|
|
27
|
-
"@opengeoweb/core": "14.
|
|
28
|
-
"@opengeoweb/taf": "14.
|
|
29
|
-
"@opengeoweb/sigmet-airmet": "14.
|
|
30
|
-
"@opengeoweb/warnings": "14.
|
|
31
|
-
"@opengeoweb/space-weather": "14.
|
|
24
|
+
"@opengeoweb/form-fields": "14.2.1",
|
|
25
|
+
"@opengeoweb/time-series": "14.2.1",
|
|
26
|
+
"@opengeoweb/authentication": "14.2.1",
|
|
27
|
+
"@opengeoweb/core": "14.2.1",
|
|
28
|
+
"@opengeoweb/taf": "14.2.1",
|
|
29
|
+
"@opengeoweb/sigmet-airmet": "14.2.1",
|
|
30
|
+
"@opengeoweb/warnings": "14.2.1",
|
|
31
|
+
"@opengeoweb/space-weather": "14.2.1",
|
|
32
32
|
"i18next": "^25.0.1",
|
|
33
33
|
"react-i18next": "^15.1.1",
|
|
34
34
|
"@mui/material": "^7.0.1",
|
|
35
|
-
"@opengeoweb/webmap-react": "14.
|
|
35
|
+
"@opengeoweb/webmap-react": "14.2.1",
|
|
36
36
|
"@tanstack/react-query": "^5.85.5",
|
|
37
|
-
"@opengeoweb/soundings": "14.
|
|
37
|
+
"@opengeoweb/soundings": "14.2.1",
|
|
38
|
+
"@opengeoweb/knmi-components": "14.2.1"
|
|
38
39
|
},
|
|
39
40
|
"peerDependencies": {
|
|
40
41
|
"react": "18",
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import { Draft, PayloadAction } from '@reduxjs/toolkit';
|
|
1
2
|
import { ViewPresetListItem, ViewPresetListState } from './types';
|
|
2
3
|
export declare const viewPresetsListAdapter: import("@reduxjs/toolkit").EntityAdapter<ViewPresetListItem, string>;
|
|
3
4
|
export declare const initialState: ViewPresetListState;
|
|
4
|
-
export declare const viewPresetsListReducer: import("redux").Reducer<ViewPresetListState>, viewPresetsListActions: import("@reduxjs/toolkit").CaseReducerActions<{
|
|
5
|
+
export declare const viewPresetsListReducer: import("redux").Reducer<ViewPresetListState>, viewPresetsListActions: import("@reduxjs/toolkit").CaseReducerActions<{
|
|
6
|
+
fetchViewPresetsList: (_draft: Draft<ViewPresetListState>, _action: PayloadAction) => void;
|
|
7
|
+
fetchedViewPresetsList: (draft: Draft<ViewPresetListState>, action: PayloadAction<{
|
|
8
|
+
viewPresets: ViewPresetListItem[];
|
|
9
|
+
}>) => void;
|
|
10
|
+
}, "viewPresetsList">;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import type { TFunction } from 'i18next';
|
|
1
2
|
import { snackbarTypes } from '@opengeoweb/snackbar';
|
|
2
|
-
import { MapPreset } from '@opengeoweb/store';
|
|
3
|
-
import {
|
|
4
|
-
import { ViewPresetsListFilter } from '../viewPresets/types';
|
|
5
|
-
import { FetchViewPresetsListParams } from '../viewPresetsList/types';
|
|
6
|
-
import { WorkspacePreset,
|
|
7
|
-
import {
|
|
3
|
+
import type { MapPreset } from '@opengeoweb/store';
|
|
4
|
+
import type { FetchWorkspaceParams, WorkspaceListFilter } from './types';
|
|
5
|
+
import type { ViewPresetsListFilter } from '../viewPresets/types';
|
|
6
|
+
import type { FetchViewPresetsListParams } from '../viewPresetsList/types';
|
|
7
|
+
import type { WorkspacePreset, WorkspacePresetListItem } from '../workspace/types';
|
|
8
|
+
import { WorkspacePresetAction } from '../workspace/types';
|
|
8
9
|
export declare const getSnackbarMessage: (action: WorkspacePresetAction, title: string, is_shared?: boolean) => snackbarTypes.TranslatableMessage;
|
|
9
10
|
export declare function getEmptyWorkspaceListItem(): Omit<WorkspacePresetListItem, 'title'>;
|
|
10
11
|
export declare function getEmptyWorkspaceListItem(t: TFunction): WorkspacePresetListItem;
|
package/src/lib/utils/i18n.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import i18n
|
|
1
|
+
import i18n from 'i18next';
|
|
2
2
|
import { UseTranslationResponse } from 'react-i18next';
|
|
3
3
|
export declare const WORKSPACE_NAMESPACE = "workspace";
|
|
4
4
|
export declare const initWorkspaceTestI18n: () => void;
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const translateInTestsAndStories: (key: string, params?: Record<string, string | number> | undefined) => string;
|
|
6
6
|
export declare const useWorkspaceTranslation: () => UseTranslationResponse<typeof WORKSPACE_NAMESPACE, typeof i18n>;
|
|
7
7
|
export { i18n };
|