@opengeoweb/workspace 15.1.0 → 15.2.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.
Files changed (32) hide show
  1. package/index.esm.js +1843 -1836
  2. package/package.json +18 -19
  3. package/src/lib/WorkspaceAdmin.stories.d.ts +0 -1
  4. package/src/lib/api/types.d.ts +2 -0
  5. package/src/lib/api/utils.d.ts +2 -0
  6. package/src/lib/api/viewpreset-api/api.d.ts +3 -1
  7. package/src/lib/api/viewpreset-api/fakeApi/mockData.d.ts +3 -3
  8. package/src/lib/api/viewpreset-api/hooks.d.ts +11 -6
  9. package/src/lib/api/viewpreset-api/queryOptions.d.ts +16 -0
  10. package/src/lib/api/workspace-api/api.d.ts +3 -1
  11. package/src/lib/api/workspace-api/fakeApi/mockData.d.ts +1 -0
  12. package/src/lib/api/workspace-api/hooks.d.ts +3 -1
  13. package/src/lib/api/workspace-api/queryOptions.d.ts +15 -1
  14. package/src/lib/components/Providers/Providers.d.ts +0 -1
  15. package/src/lib/components/Providers/index.d.ts +0 -1
  16. package/src/lib/components/ViewPresetMenu/ViewPresetsError.stories.d.ts +15 -6
  17. package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialog.d.ts +1 -1
  18. package/src/lib/components/ViewPresetsFormDialog/ViewPresetsFormDialog.stories.d.ts +8 -1
  19. package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListError.stories.d.ts +8 -1
  20. package/src/lib/components/WorkspaceSelectList/WorkspaceSelectListRow.d.ts +1 -1
  21. package/src/lib/store/store.d.ts +2 -2
  22. package/src/lib/store/viewPresets/listener.d.ts +3 -4
  23. package/src/lib/store/viewPresets/utils.d.ts +0 -2
  24. package/src/lib/store/workspace/utils.d.ts +0 -7
  25. package/src/lib/storyUtils/StoryWrapper.d.ts +1 -2
  26. package/src/lib/storyUtils/componentsLookUp.stories.d.ts +1 -1
  27. package/src/lib/components/Providers/WorkspaceModuleProvider.d.ts +0 -7
  28. package/src/lib/utils/api.d.ts +0 -13
  29. package/src/lib/utils/api.spec.d.ts +0 -1
  30. package/src/lib/utils/fakeApi.d.ts +0 -12
  31. package/src/lib/utils/fakeApi.spec.d.ts +0 -1
  32. /package/src/lib/{components/Providers/WorkspaceModuleProvider.spec.d.ts → store/viewPresets/listener.spec.d.ts} +0 -0
package/index.esm.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf, combineReducers, configureStore } from '@reduxjs/toolkit';
2
- import { createApiInstance, createNonAuthApiInstance, getApi, getHeaders, handleResponse, createFakeApiInstance, getQueryClient, QueryClientProviderWrapper, ApiProvider, useApiContext, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
2
+ import { handleResponse, getHeaders, getQueryClient, QueryClientProviderWrapper, useAuthenticationContext as useAuthenticationContext$1, GEOWEB_ROLE_PRESETS_ADMIN as GEOWEB_ROLE_PRESETS_ADMIN$1 } from '@opengeoweb/api';
3
3
  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, uiTypes, linkComponentTypesConstants, loadingIndicatorSelectors, uiSelectors } from '@opengeoweb/store';
4
- import { chunk, union, cloneDeep, pick, isEmpty, isEqual, isString } from 'lodash';
4
+ import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/time-series';
5
+ import { chunk, union, cloneDeep, pick, isEqual, isString } from 'lodash';
5
6
  import { getLeaves, createBalancedTreeFromLeaves, MosaicContext, getAndAssertNodeAtPathExists, MosaicWindow, Mosaic } from 'react-mosaic-component';
6
- import { sessionStorageProvider, getAxiosErrorMessage, isAxiosError, isAxiosAuthError, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, usePrevious, AlertBanner, CustomAccordion, CustomTooltip, dateUtils, SystemScope, SearchHighlight, ToggleMenu, SearchField, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, ConfirmationButtons } from '@opengeoweb/shared';
7
7
  import { queryOptions, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
8
+ import { sessionStorageProvider, getAxiosErrorMessage, isAxiosError, isAxiosAuthError, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, ConfirmationServiceProvider, CustomIconButton, useConfirmationDialog, usePrevious, AlertBanner, CustomAccordion, CustomTooltip, dateUtils, SystemScope, SearchHighlight, ToggleMenu, SearchField, Filter, LastUpdateTime, renderCounter, CustomDialog, ToolContainer, CustomToggleButton, ConfirmationButtons } from '@opengeoweb/shared';
8
9
  import { soundingsActions, SoundingsTypes, soundingsSelectors, soundingsReducer } from '@opengeoweb/soundings';
9
- import { timeSeriesActions, TimeSeriesTypes, timeSeriesSelectors, timeSeriesReducer } from '@opengeoweb/time-series';
10
- import { publicWarningActions, publicWarningsSelectors, warningsTranslations, WARN_NAMESPACE } from '@opengeoweb/warnings';
10
+ import { warningsFiltersActions, publicWarningsSelectors, warningsTranslations, WARN_NAMESPACE } from '@opengeoweb/warnings';
11
11
  import { snackbarTypes, snackbarActions, snackbarListener, snackbarReducer, SnackbarWrapperConnect } from '@opengeoweb/snackbar';
12
12
  import { isAxiosError as isAxiosError$1 } from 'axios';
13
13
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -23,8 +23,7 @@ import React, { useCallback, useEffect } from 'react';
23
23
  import { Menu, Typography, List, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, LinearProgress, Box, Button, Stack, FormControlLabel, Chip, Popper, ClickAwayListener, Paper, IconButton, Collapse, Divider, Grid, useTheme, ListSubheader, MenuItem, Tabs } from '@mui/material';
24
24
  import 'react-mosaic-component/react-mosaic-component.css';
25
25
  import { useFormContext, useWatch, useForm, FormProvider } from 'react-hook-form';
26
- import AutoSizer from 'react-virtualized-auto-sizer';
27
- import { FixedSizeList } from 'react-window';
26
+ import { List as List$1 } from 'react-window';
28
27
  import { http, HttpResponse, delay } from 'msw';
29
28
 
30
29
  var en = {
@@ -806,99 +805,10 @@ function _regeneratorRuntime() {
806
805
  * See the License for the specific language governing permissions and
807
806
  * limitations under the License.
808
807
  *
809
- * Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
810
- * Copyright 2026 - Finnish Meteorological Institute (FMI)
811
- * Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
808
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
809
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
810
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
812
811
  * */
813
- /*
814
- configureLibraryDefaults([LIB_KEY], {
815
- staleTime: 5 * 60 * 1000,
816
- });
817
- */
818
- var LIB_KEY = 'workspace-lib';
819
- var getPresetBaseUrl = function getPresetBaseUrl() {
820
- var config = sessionStorageProvider.getConfig();
821
- return (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
822
- };
823
- var getIdFromUrl = function getIdFromUrl(url) {
824
- return url && /[^/]+$/.exec(url)[0];
825
- };
826
-
827
- var API_NAME = 'workspacepresets';
828
- var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
829
- return {
830
- // workspace presets
831
- getWorkspacePresets: function () {
832
- var _getWorkspacePresets = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(params) {
833
- return _regeneratorRuntime().wrap(function _callee$(_context) {
834
- while (1) switch (_context.prev = _context.next) {
835
- case 0:
836
- return _context.abrupt("return", axiosInstance.get('/workspacepreset', {
837
- params: params
838
- }));
839
- case 1:
840
- case "end":
841
- return _context.stop();
842
- }
843
- }, _callee);
844
- }));
845
- function getWorkspacePresets(_x) {
846
- return _getWorkspacePresets.apply(this, arguments);
847
- }
848
- return getWorkspacePresets;
849
- }(),
850
- saveViewPreset: function () {
851
- var _saveViewPreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(viewPresetId, data) {
852
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
853
- while (1) switch (_context2.prev = _context2.next) {
854
- case 0:
855
- return _context2.abrupt("return", axiosInstance.put("/viewpreset/" + viewPresetId + "/", data.initialProps === null ? Object.assign({}, data, {
856
- initialProps: {}
857
- }) : data));
858
- case 1:
859
- case "end":
860
- return _context2.stop();
861
- }
862
- }, _callee2);
863
- }));
864
- function saveViewPreset(_x2, _x3) {
865
- return _saveViewPreset.apply(this, arguments);
866
- }
867
- return saveViewPreset;
868
- }(),
869
- saveViewPresetAs: function () {
870
- var _saveViewPresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(data) {
871
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
872
- while (1) switch (_context3.prev = _context3.next) {
873
- case 0:
874
- return _context3.abrupt("return", axiosInstance.post("/viewpreset/", data.initialProps === null ? Object.assign({}, data, {
875
- initialProps: {}
876
- }) : data).then(function (response) {
877
- var headerLocation = response == null ? void 0 : response.request.getResponseHeader('Location');
878
- return getIdFromUrl(headerLocation);
879
- }));
880
- case 1:
881
- case "end":
882
- return _context3.stop();
883
- }
884
- }, _callee3);
885
- }));
886
- function saveViewPresetAs(_x4) {
887
- return _saveViewPresetAs.apply(this, arguments);
888
- }
889
- return saveViewPresetAs;
890
- }()
891
- };
892
- };
893
- var createApi$1 = function createApi(props) {
894
- var authInstance = createApiInstance(props);
895
- var nonAuthInstance = createNonAuthApiInstance(props);
896
- return getApiRoutes$1(props.auth ? authInstance : nonAuthInstance);
897
- };
898
-
899
- var getWorkspaceApi = function getWorkspaceApi() {
900
- return getApi(API_NAME);
901
- };
902
812
  var getViewPresetState = function getViewPresetState(viewPresetId, mosaicNodeId, state) {
903
813
  var titlePrefix = state === 'loading' ? 'Loading' : 'Error';
904
814
  var componentType = state === 'loading' ? 'ViewLoading' : 'ViewError';
@@ -1021,6 +931,32 @@ var toViewsArray = function toViewsArray(wsViews) {
1021
931
  });
1022
932
  };
1023
933
 
934
+ /* *
935
+ * Licensed under the Apache License, Version 2.0 (the "License");
936
+ * you may not use this file except in compliance with the License.
937
+ * You may obtain a copy of the License at
938
+ *
939
+ * http://www.apache.org/licenses/LICENSE-2.0
940
+ *
941
+ * Unless required by applicable law or agreed to in writing, software
942
+ * distributed under the License is distributed on an "AS IS" BASIS,
943
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
944
+ * See the License for the specific language governing permissions and
945
+ * limitations under the License.
946
+ *
947
+ * Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
948
+ * Copyright 2026 - Finnish Meteorological Institute (FMI)
949
+ * Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
950
+ * */
951
+ var LIB_KEY = 'workspace-lib';
952
+ var getPresetBaseUrl = function getPresetBaseUrl() {
953
+ var config = sessionStorageProvider.getConfig();
954
+ return (config == null ? void 0 : config.GW_PRESET_BACKEND_URL) || '';
955
+ };
956
+ var getIdFromUrl = function getIdFromUrl(url) {
957
+ return url && /[^/]+$/.exec(url)[0];
958
+ };
959
+
1024
960
  var getViewPreset = /*#__PURE__*/function () {
1025
961
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(viewpresetId, auth) {
1026
962
  return _regeneratorRuntime().wrap(function _callee$(_context) {
@@ -1091,25 +1027,82 @@ var updateViewPreset = /*#__PURE__*/function () {
1091
1027
  return _ref4.apply(this, arguments);
1092
1028
  };
1093
1029
  }();
1094
- var deleteViewPreset = /*#__PURE__*/function () {
1095
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(viewPresetId, auth) {
1030
+ var saveViewPreset = /*#__PURE__*/function () {
1031
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(viewPresetId, data, auth) {
1032
+ var payload;
1096
1033
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
1097
1034
  while (1) switch (_context4.prev = _context4.next) {
1098
1035
  case 0:
1099
- return _context4.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewPresetId, {
1100
- method: 'DELETE',
1101
- headers: getHeaders(auth)
1036
+ payload = data.initialProps === null ? Object.assign({}, data, {
1037
+ initialProps: {}
1038
+ }) : data;
1039
+ return _context4.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewPresetId + "/", {
1040
+ headers: getHeaders(auth),
1041
+ method: 'PUT',
1042
+ body: JSON.stringify(payload)
1102
1043
  }).then(handleResponse));
1103
- case 1:
1044
+ case 2:
1104
1045
  case "end":
1105
1046
  return _context4.stop();
1106
1047
  }
1107
1048
  }, _callee4);
1108
1049
  }));
1109
- return function deleteViewPreset(_x8, _x9) {
1050
+ return function saveViewPreset(_x8, _x9, _x0) {
1110
1051
  return _ref5.apply(this, arguments);
1111
1052
  };
1112
1053
  }();
1054
+ var saveViewPresetAs = /*#__PURE__*/function () {
1055
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(data, auth) {
1056
+ var _response$headers$get;
1057
+ var payload, response, headerLocation;
1058
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
1059
+ while (1) switch (_context5.prev = _context5.next) {
1060
+ case 0:
1061
+ payload = data.initialProps === null ? Object.assign({}, data, {
1062
+ initialProps: {}
1063
+ }) : data;
1064
+ _context5.next = 3;
1065
+ return fetch(getPresetBaseUrl() + "/viewpreset/", {
1066
+ headers: getHeaders(auth),
1067
+ method: 'POST',
1068
+ body: JSON.stringify(payload)
1069
+ });
1070
+ case 3:
1071
+ response = _context5.sent;
1072
+ _context5.next = 6;
1073
+ return handleResponse(response);
1074
+ case 6:
1075
+ headerLocation = (_response$headers$get = response.headers.get('Location')) != null ? _response$headers$get : response.headers.get('location');
1076
+ return _context5.abrupt("return", getIdFromUrl(headerLocation));
1077
+ case 8:
1078
+ case "end":
1079
+ return _context5.stop();
1080
+ }
1081
+ }, _callee5);
1082
+ }));
1083
+ return function saveViewPresetAs(_x1, _x10) {
1084
+ return _ref6.apply(this, arguments);
1085
+ };
1086
+ }();
1087
+ var deleteViewPreset = /*#__PURE__*/function () {
1088
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(viewPresetId, auth) {
1089
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
1090
+ while (1) switch (_context6.prev = _context6.next) {
1091
+ case 0:
1092
+ return _context6.abrupt("return", fetch(getPresetBaseUrl() + "/viewpreset/" + viewPresetId, {
1093
+ method: 'DELETE',
1094
+ headers: getHeaders(auth)
1095
+ }).then(handleResponse));
1096
+ case 1:
1097
+ case "end":
1098
+ return _context6.stop();
1099
+ }
1100
+ }, _callee6);
1101
+ }));
1102
+ return function deleteViewPreset(_x11, _x12) {
1103
+ return _ref7.apply(this, arguments);
1104
+ };
1105
+ }();
1113
1106
 
1114
1107
  var API_KEY$1 = 'viewpreset-api';
1115
1108
  var generateViewPresetQueryKeys = function generateViewPresetQueryKeys() {
@@ -1173,6 +1166,52 @@ var viewpresetQueryOptions = {
1173
1166
  return queryFn;
1174
1167
  }()
1175
1168
  });
1169
+ },
1170
+ saveViewPreset: function saveViewPreset$1(id, data, credentials) {
1171
+ return queryOptions({
1172
+ queryKey: [].concat(viewpresetQueryOptions.keys.views(), [id, 'save']),
1173
+ staleTime: 0,
1174
+ queryFn: function () {
1175
+ var _queryFn3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
1176
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
1177
+ while (1) switch (_context3.prev = _context3.next) {
1178
+ case 0:
1179
+ return _context3.abrupt("return", saveViewPreset(id, data, credentials));
1180
+ case 1:
1181
+ case "end":
1182
+ return _context3.stop();
1183
+ }
1184
+ }, _callee3);
1185
+ }));
1186
+ function queryFn() {
1187
+ return _queryFn3.apply(this, arguments);
1188
+ }
1189
+ return queryFn;
1190
+ }()
1191
+ });
1192
+ },
1193
+ saveViewPresetAs: function saveViewPresetAs$1(data, credentials) {
1194
+ return queryOptions({
1195
+ queryKey: [].concat(viewpresetQueryOptions.keys.views(), ['save-as']),
1196
+ staleTime: 0,
1197
+ queryFn: function () {
1198
+ var _queryFn4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
1199
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
1200
+ while (1) switch (_context4.prev = _context4.next) {
1201
+ case 0:
1202
+ return _context4.abrupt("return", saveViewPresetAs(data, credentials));
1203
+ case 1:
1204
+ case "end":
1205
+ return _context4.stop();
1206
+ }
1207
+ }, _callee4);
1208
+ }));
1209
+ function queryFn() {
1210
+ return _queryFn4.apply(this, arguments);
1211
+ }
1212
+ return queryFn;
1213
+ }()
1214
+ });
1176
1215
  }
1177
1216
  };
1178
1217
 
@@ -1529,9 +1568,9 @@ var viewPresetsAdapter = createEntityAdapter({
1529
1568
  }
1530
1569
  });
1531
1570
  var initialState$2 = viewPresetsAdapter.getInitialState();
1532
- var warningsPresetChangeActions = [publicWarningActions.setWarningFilters];
1571
+ var warningsPresetChangeActions = [warningsFiltersActions.setWarningFilters];
1533
1572
  var syncGroupChangeActions = [syncGroupsActions.syncGroupRemoveTarget, syncGroupsActions.syncGroupAddTarget];
1534
- var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, layerActions.layerChangeAcceptanceTime, mapActions.layerMoveLayer, mapActions.setAutoLayerId, mapActions.setAutoTimestepLayerId, mapActions.setAutoUpdateLayerId, mapActions.toggleAutoUpdate, mapActions.mapStartAnimation, mapActions.mapStopAnimation, mapActions.toggleTimeSliderIsVisible, mapActions.setTimeStep, mapActions.setTimeSliderSpan, mapActions.toggleTimeSpanAuto, mapActions.setAnimationDelay, mapActions.toggleTimestepAuto, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, mapActions.changeOverlayer, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox, mapActions.toggleClock];
1573
+ var mapPresetChangeActions = [layerActions.setBaseLayers, layerActions.layerDelete, layerActions.addLayer, layerActions.duplicateMapLayer, layerActions.layerChangeEnabled, layerActions.layerChangeName, layerActions.layerChangeStyle, layerActions.layerChangeOpacity, layerActions.layerChangeDimension, layerActions.layerChangeAcceptanceTime, mapActions.layerMoveLayer, mapActions.setAutoLayerId, mapActions.setAutoTimestepLayerId, mapActions.setAutoUpdateLayerId, mapActions.toggleAutoUpdate, mapActions.mapStartAnimation, mapActions.mapStopAnimation, mapActions.toggleTimeSliderIsVisible, mapActions.setTimeStep, mapActions.setTimeSliderSpan, mapActions.toggleTimeSpanAuto, mapActions.setAnimationDelay, mapActions.toggleTimestepAuto, mapActions.setAnimationStartTime, mapActions.setAnimationEndTime, mapActions.changeOverlayer, uiActions.setActiveMapIdForDialog, uiActions.setToggleOpenDialog, genericActions.setBbox, mapActions.setBbox, mapActions.toggleClock, mapActions.setClockPositionSize];
1535
1574
  var timeSeriesPresetChangeActions = [timeSeriesActions.addParameter, timeSeriesActions.addPlot, timeSeriesActions.deleteParameter, timeSeriesActions.deletePlot, timeSeriesActions.moveParameter, timeSeriesActions.movePlot, timeSeriesActions.toggleParameter, timeSeriesActions.togglePlot, timeSeriesActions.patchParameter, timeSeriesActions.updateTitle];
1536
1575
  var soundingsChangeActions = [soundingsActions.updateSelectedSource, soundingsActions.updateSelectedLocation, soundingsActions.updateSelectedTime, soundingsActions.updateDiagramType, soundingsActions.toggleLocationMarkers];
1537
1576
  var supportedMapActionOrigins = [layerTypes.LayerActionOrigin.layerManager, layerTypes.LayerActionOrigin.wmsLoader, mapEnums.MapActionOrigin.map];
@@ -1833,11 +1872,11 @@ var slice$2 = createSlice({
1833
1872
  error = _action$payload13.error;
1834
1873
  var entity = draft.entities[mapId];
1835
1874
  if (entity) {
1836
- entity.error = {
1875
+ entity.error = error ? {
1837
1876
  message: error,
1838
1877
  component: ViewPresetErrorComponent.PRESET_DETAIL,
1839
1878
  errorType: ViewPresetErrorType.GENERIC
1840
- };
1879
+ } : undefined;
1841
1880
  entity.isFetching = false;
1842
1881
  viewPresetsAdapter.setOne(draft, entity);
1843
1882
  }
@@ -2510,6 +2549,7 @@ var slice$1 = createSlice({
2510
2549
  entity.title = title;
2511
2550
  entity.scope = scope || 'user';
2512
2551
  entity["abstract"] = _abstract;
2552
+ entity.description = action.payload.description;
2513
2553
  entity.labels = labels;
2514
2554
  }
2515
2555
  });
@@ -2816,7 +2856,9 @@ var getViewComponentType = createSelector(getViewById, function (store) {
2816
2856
  var _store$componentType;
2817
2857
  return (_store$componentType = store == null ? void 0 : store.componentType) != null ? _store$componentType : 'Map';
2818
2858
  }, selectorMemoizationOptions);
2819
- var getViewPresetToSendToBackend = createSelector(getViewById, getViewComponentType, mapSelectors.getMapPreset, syncGroupsSelectors.getAllTargetGroupsForSource, timeSeriesSelectors.getTimeSeriesPreset, publicWarningsSelectors.getWarningsPresetById, mapSelectors.getMultiMapInitialProps, mapSelectors.getTimeSliderInitialProps, soundingsSelectors.getSoundingsPreset, function (store) {
2859
+ var getViewPresetToSendToBackend = createSelector(getViewById, getViewComponentType, mapSelectors.getMapPreset, syncGroupsSelectors.getAllTargetGroupsForSource, timeSeriesSelectors.getTimeSeriesPreset, publicWarningsSelectors.getWarningsPresetById, mapSelectors.getMultiMapInitialProps, mapSelectors.getTimeSliderInitialProps, function (store, panelId) {
2860
+ return soundingsSelectors.getSoundingsPreset(store, panelId);
2861
+ }, function (store) {
2820
2862
  return store;
2821
2863
  }, function (panelId) {
2822
2864
  return panelId;
@@ -2919,7 +2961,7 @@ var getViewPresetsError = createSelector(getViewPresetById, function (_store, pa
2919
2961
  var getViewPresetDetailError = createSelector(getViewPresetsError, function (_store, panelId) {
2920
2962
  return panelId;
2921
2963
  }, function (error) {
2922
- if (error && error.component === 'PRESET_DETAIL') {
2964
+ if ((error == null ? void 0 : error.component) === 'PRESET_DETAIL') {
2923
2965
  return error.message;
2924
2966
  }
2925
2967
  return undefined;
@@ -2993,6 +3035,25 @@ var getViewPresetLabelFilters = createSelector(getViewPresetById, function (_sto
2993
3035
  return viewPreset == null ? void 0 : viewPreset.labelFilters;
2994
3036
  }, selectorMemoizationOptions);
2995
3037
 
3038
+ /* *
3039
+ * Licensed under the Apache License, Version 2.0 (the "License");
3040
+ * you may not use this file except in compliance with the License.
3041
+ * You may obtain a copy of the License at
3042
+ *
3043
+ * http://www.apache.org/licenses/LICENSE-2.0
3044
+ *
3045
+ * Unless required by applicable law or agreed to in writing, software
3046
+ * distributed under the License is distributed on an "AS IS" BASIS,
3047
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3048
+ * See the License for the specific language governing permissions and
3049
+ * limitations under the License.
3050
+ *
3051
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3052
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
3053
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
3054
+ * */
3055
+ var ERROR_NOT_FOUND = 'Request failed with status code 400';
3056
+
2996
3057
  var getWorkspaceLabelsConfig = /*#__PURE__*/function () {
2997
3058
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(auth) {
2998
3059
  return _regeneratorRuntime().wrap(function _callee$(_context) {
@@ -3029,32 +3090,45 @@ var getWorkspacePreset = /*#__PURE__*/function () {
3029
3090
  return _ref2.apply(this, arguments);
3030
3091
  };
3031
3092
  }();
3032
- var getWorkspace = /*#__PURE__*/function () {
3033
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workspaceId, auth) {
3093
+ var getWorkspacePresets = /*#__PURE__*/function () {
3094
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(auth, params) {
3095
+ var presetsUrl, searchParams, queryString, url;
3034
3096
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
3035
3097
  while (1) switch (_context3.prev = _context3.next) {
3036
3098
  case 0:
3037
- return _context3.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3099
+ presetsUrl = getPresetBaseUrl() + "/workspacepreset";
3100
+ searchParams = new URLSearchParams();
3101
+ if (params) {
3102
+ Object.entries(params).forEach(function (_ref4) {
3103
+ var key = _ref4[0],
3104
+ value = _ref4[1];
3105
+ if (value !== undefined && value !== null) {
3106
+ searchParams.append(key, String(value));
3107
+ }
3108
+ });
3109
+ }
3110
+ queryString = searchParams.toString();
3111
+ url = queryString ? presetsUrl + "?" + queryString : presetsUrl;
3112
+ return _context3.abrupt("return", fetch(url, {
3038
3113
  headers: getHeaders(auth)
3039
3114
  }).then(handleResponse));
3040
- case 1:
3115
+ case 6:
3041
3116
  case "end":
3042
3117
  return _context3.stop();
3043
3118
  }
3044
3119
  }, _callee3);
3045
3120
  }));
3046
- return function getWorkspace(_x4, _x5) {
3121
+ return function getWorkspacePresets(_x4, _x5) {
3047
3122
  return _ref3.apply(this, arguments);
3048
3123
  };
3049
3124
  }();
3050
- var deleteWorkspace = /*#__PURE__*/function () {
3051
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(workspaceId, auth) {
3125
+ var getWorkspace = /*#__PURE__*/function () {
3126
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(workspaceId, auth) {
3052
3127
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
3053
3128
  while (1) switch (_context4.prev = _context4.next) {
3054
3129
  case 0:
3055
3130
  return _context4.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3056
- headers: getHeaders(auth),
3057
- method: 'DELETE'
3131
+ headers: getHeaders(auth)
3058
3132
  }).then(handleResponse));
3059
3133
  case 1:
3060
3134
  case "end":
@@ -3062,19 +3136,18 @@ var deleteWorkspace = /*#__PURE__*/function () {
3062
3136
  }
3063
3137
  }, _callee4);
3064
3138
  }));
3065
- return function deleteWorkspace(_x6, _x7) {
3066
- return _ref4.apply(this, arguments);
3139
+ return function getWorkspace(_x6, _x7) {
3140
+ return _ref5.apply(this, arguments);
3067
3141
  };
3068
3142
  }();
3069
- var updateWorkspace = /*#__PURE__*/function () {
3070
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workspaceId, data, auth) {
3143
+ var deleteWorkspace = /*#__PURE__*/function () {
3144
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workspaceId, auth) {
3071
3145
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
3072
3146
  while (1) switch (_context5.prev = _context5.next) {
3073
3147
  case 0:
3074
3148
  return _context5.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3075
3149
  headers: getHeaders(auth),
3076
- method: 'PUT',
3077
- body: JSON.stringify(data)
3150
+ method: 'DELETE'
3078
3151
  }).then(handleResponse));
3079
3152
  case 1:
3080
3153
  case "end":
@@ -3082,16 +3155,16 @@ var updateWorkspace = /*#__PURE__*/function () {
3082
3155
  }
3083
3156
  }, _callee5);
3084
3157
  }));
3085
- return function updateWorkspace(_x8, _x9, _x0) {
3086
- return _ref5.apply(this, arguments);
3158
+ return function deleteWorkspace(_x8, _x9) {
3159
+ return _ref6.apply(this, arguments);
3087
3160
  };
3088
3161
  }();
3089
- var saveWorkspacePreset = /*#__PURE__*/function () {
3090
- var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(workspaceId, data, auth) {
3162
+ var updateWorkspace = /*#__PURE__*/function () {
3163
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(workspaceId, data, auth) {
3091
3164
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
3092
3165
  while (1) switch (_context6.prev = _context6.next) {
3093
3166
  case 0:
3094
- return _context6.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId + "/", {
3167
+ return _context6.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId, {
3095
3168
  headers: getHeaders(auth),
3096
3169
  method: 'PUT',
3097
3170
  body: JSON.stringify(data)
@@ -3102,18 +3175,18 @@ var saveWorkspacePreset = /*#__PURE__*/function () {
3102
3175
  }
3103
3176
  }, _callee6);
3104
3177
  }));
3105
- return function saveWorkspacePreset(_x1, _x10, _x11) {
3106
- return _ref6.apply(this, arguments);
3178
+ return function updateWorkspace(_x0, _x1, _x10) {
3179
+ return _ref7.apply(this, arguments);
3107
3180
  };
3108
3181
  }();
3109
- var createWorkspace = /*#__PURE__*/function () {
3110
- var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(data, auth) {
3182
+ var saveWorkspacePreset = /*#__PURE__*/function () {
3183
+ var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(workspaceId, data, auth) {
3111
3184
  return _regeneratorRuntime().wrap(function _callee7$(_context7) {
3112
3185
  while (1) switch (_context7.prev = _context7.next) {
3113
3186
  case 0:
3114
- return _context7.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset", {
3187
+ return _context7.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset/" + workspaceId + "/", {
3115
3188
  headers: getHeaders(auth),
3116
- method: 'POST',
3189
+ method: 'PUT',
3117
3190
  body: JSON.stringify(data)
3118
3191
  }).then(handleResponse));
3119
3192
  case 1:
@@ -3122,38 +3195,58 @@ var createWorkspace = /*#__PURE__*/function () {
3122
3195
  }
3123
3196
  }, _callee7);
3124
3197
  }));
3125
- return function createWorkspace(_x12, _x13) {
3126
- return _ref7.apply(this, arguments);
3198
+ return function saveWorkspacePreset(_x11, _x12, _x13) {
3199
+ return _ref8.apply(this, arguments);
3200
+ };
3201
+ }();
3202
+ var createWorkspace = /*#__PURE__*/function () {
3203
+ var _ref9 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(data, auth) {
3204
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
3205
+ while (1) switch (_context8.prev = _context8.next) {
3206
+ case 0:
3207
+ return _context8.abrupt("return", fetch(getPresetBaseUrl() + "/workspacepreset", {
3208
+ headers: getHeaders(auth),
3209
+ method: 'POST',
3210
+ body: JSON.stringify(data)
3211
+ }).then(handleResponse));
3212
+ case 1:
3213
+ case "end":
3214
+ return _context8.stop();
3215
+ }
3216
+ }, _callee8);
3217
+ }));
3218
+ return function createWorkspace(_x14, _x15) {
3219
+ return _ref9.apply(this, arguments);
3127
3220
  };
3128
3221
  }();
3129
3222
  var saveWorkspacePresetAs = /*#__PURE__*/function () {
3130
- var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(data, auth) {
3223
+ var _ref0 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9(data, auth) {
3131
3224
  var _response$headers$get;
3132
3225
  var response, headerLocation;
3133
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
3134
- while (1) switch (_context8.prev = _context8.next) {
3226
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
3227
+ while (1) switch (_context9.prev = _context9.next) {
3135
3228
  case 0:
3136
- _context8.next = 2;
3229
+ _context9.next = 2;
3137
3230
  return fetch(getPresetBaseUrl() + "/workspacepreset", {
3138
3231
  headers: getHeaders(auth),
3139
3232
  method: 'POST',
3140
3233
  body: JSON.stringify(data)
3141
3234
  });
3142
3235
  case 2:
3143
- response = _context8.sent;
3144
- _context8.next = 5;
3236
+ response = _context9.sent;
3237
+ _context9.next = 5;
3145
3238
  return handleResponse(response);
3146
3239
  case 5:
3147
3240
  headerLocation = (_response$headers$get = response.headers.get('Location')) != null ? _response$headers$get : response.headers.get('location');
3148
- return _context8.abrupt("return", getIdFromUrl(headerLocation));
3241
+ return _context9.abrupt("return", getIdFromUrl(headerLocation));
3149
3242
  case 7:
3150
3243
  case "end":
3151
- return _context8.stop();
3244
+ return _context9.stop();
3152
3245
  }
3153
- }, _callee8);
3246
+ }, _callee9);
3154
3247
  }));
3155
- return function saveWorkspacePresetAs(_x14, _x15) {
3156
- return _ref8.apply(this, arguments);
3248
+ return function saveWorkspacePresetAs(_x16, _x17) {
3249
+ return _ref0.apply(this, arguments);
3157
3250
  };
3158
3251
  }();
3159
3252
 
@@ -3165,6 +3258,17 @@ var generateWorkspaceQueryKeys = function generateWorkspaceQueryKeys() {
3165
3258
  return [LIB_KEY, API_KEY].concat(queryKeys);
3166
3259
  };
3167
3260
  var workspaceQueryOptions = {
3261
+ keys: {
3262
+ all: function all() {
3263
+ return generateWorkspaceQueryKeys();
3264
+ },
3265
+ workspaces: function workspaces() {
3266
+ return [].concat(workspaceQueryOptions.keys.all(), ['workspace']);
3267
+ },
3268
+ lists: function lists() {
3269
+ return [].concat(workspaceQueryOptions.keys.all(), ['list']);
3270
+ }
3271
+ },
3168
3272
  getWorkspacePreset: function getWorkspacePreset$1(id, credentials) {
3169
3273
  return queryOptions({
3170
3274
  queryKey: generateWorkspaceQueryKeys(id),
@@ -3187,16 +3291,15 @@ var workspaceQueryOptions = {
3187
3291
  }()
3188
3292
  });
3189
3293
  },
3190
- saveWorkspacePreset: function saveWorkspacePreset$1(id, data, credentials) {
3294
+ getWorkspacePresets: function getWorkspacePresets$1(params, credentials) {
3191
3295
  return queryOptions({
3192
- queryKey: generateWorkspaceQueryKeys(id),
3193
- staleTime: 0,
3296
+ queryKey: [].concat(workspaceQueryOptions.keys.lists(), [JSON.stringify(params != null ? params : {})]),
3194
3297
  queryFn: function () {
3195
3298
  var _queryFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
3196
3299
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
3197
3300
  while (1) switch (_context2.prev = _context2.next) {
3198
3301
  case 0:
3199
- return _context2.abrupt("return", saveWorkspacePreset(id, data, credentials));
3302
+ return _context2.abrupt("return", getWorkspacePresets(credentials, params));
3200
3303
  case 1:
3201
3304
  case "end":
3202
3305
  return _context2.stop();
@@ -3210,16 +3313,16 @@ var workspaceQueryOptions = {
3210
3313
  }()
3211
3314
  });
3212
3315
  },
3213
- saveWorkspacePresetAs: function saveWorkspacePresetAs$1(data, credentials) {
3316
+ saveWorkspacePreset: function saveWorkspacePreset$1(id, data, credentials) {
3214
3317
  return queryOptions({
3215
- queryKey: generateWorkspaceQueryKeys('save-as'),
3318
+ queryKey: generateWorkspaceQueryKeys(id),
3216
3319
  staleTime: 0,
3217
3320
  queryFn: function () {
3218
3321
  var _queryFn3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
3219
3322
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
3220
3323
  while (1) switch (_context3.prev = _context3.next) {
3221
3324
  case 0:
3222
- return _context3.abrupt("return", saveWorkspacePresetAs(data, credentials));
3325
+ return _context3.abrupt("return", saveWorkspacePreset(id, data, credentials));
3223
3326
  case 1:
3224
3327
  case "end":
3225
3328
  return _context3.stop();
@@ -3232,1441 +3335,30 @@ var workspaceQueryOptions = {
3232
3335
  return queryFn;
3233
3336
  }()
3234
3337
  });
3235
- }
3236
- };
3237
-
3238
- var workspacePresets = [
3239
- {
3240
- id: "screenConfigRadarTemp",
3241
- title: "Radar and temperature",
3242
- scope: "system",
3243
- abstract: "",
3244
- description: "Radar and temp preset multi",
3245
- viewType: "multiWindow",
3246
- views: [
3247
- {
3248
- mosaicNodeId: "viewA",
3249
- componentType: "Map",
3250
- initialProps: {
3251
- mapPreset: {
3252
- layers: [
3253
- {
3254
- name: "WorldMap_Light_Grey_Canvas",
3255
- type: "twms",
3256
- dimensions: [
3257
- ],
3258
- id: "layerid_64",
3259
- opacity: 1,
3260
- acceptanceTimeInMinutes: 60,
3261
- enabled: true,
3262
- layerType: "baseLayer",
3263
- status: "default",
3264
- useLatestReferenceTime: true
3265
- },
3266
- {
3267
- service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
3268
- name: "countryborders",
3269
- format: "image/png",
3270
- dimensions: [
3271
- ],
3272
- id: "layerid_63",
3273
- opacity: 1,
3274
- acceptanceTimeInMinutes: 60,
3275
- enabled: true,
3276
- layerType: "overLayer",
3277
- status: "default",
3278
- useLatestReferenceTime: true
3279
- },
3280
- {
3281
- name: "Radar:suomi_dbz_eureffin",
3282
- style: "Radar dbz Summer",
3283
- format: "image/png",
3284
- service: "https://openwms.fmi.fi/geoserver/wms?",
3285
- dimensions: [
3286
- ],
3287
- id: "layerid_59",
3288
- opacity: 1,
3289
- acceptanceTimeInMinutes: 60,
3290
- enabled: true,
3291
- layerType: "mapLayer",
3292
- status: "default",
3293
- useLatestReferenceTime: true
3294
- },
3295
- {
3296
- name: "radar_precipitation_intensity_nordic",
3297
- style: "",
3298
- format: "image/png",
3299
- service: "https://public-wms.met.no/verportal/verportal.map?SERVICE=WMS&REQUEST=GetCapabilities",
3300
- dimensions: [
3301
- ],
3302
- id: "layerid_60",
3303
- opacity: 1,
3304
- acceptanceTimeInMinutes: 60,
3305
- enabled: true,
3306
- layerType: "mapLayer",
3307
- status: "default",
3308
- useLatestReferenceTime: true
3309
- },
3310
- {
3311
- name: "RAD_NL25_PCP_CM",
3312
- style: "precip-blue-transparent/nearest",
3313
- format: "image/png",
3314
- service: "https://geoservices.knmi.nl/wms?dataset=RADAR",
3315
- dimensions: [
3316
- ],
3317
- id: "layerid_61",
3318
- opacity: 1,
3319
- acceptanceTimeInMinutes: 60,
3320
- enabled: true,
3321
- layerType: "mapLayer",
3322
- status: "default",
3323
- useLatestReferenceTime: true
3324
- }
3325
- ],
3326
- proj: {
3327
- bbox: {
3328
- left: -4537320.252629031,
3329
- bottom: 6408480.451399999,
3330
- right: 8563411.406429032,
3331
- top: 11520588.9031
3332
- },
3333
- srs: "EPSG:3857"
3334
- },
3335
- shouldAnimate: false,
3336
- shouldAutoUpdate: false,
3337
- showTimeSlider: true,
3338
- displayMapPin: false,
3339
- shouldShowZoomControls: true,
3340
- animationPayload: {
3341
- interval: 60,
3342
- speed: 4,
3343
- duration: 290
3344
- },
3345
- toggleTimestepAuto: true,
3346
- toggleTimeSpanAuto: true,
3347
- shouldShowLegend: false,
3348
- timeSliderSpan: 86400,
3349
- shouldShowDataExplorer: false,
3350
- defaultOverlayer: "countryborders"
3351
- },
3352
- syncGroupsIds: [
3353
- "Area_radarTemp",
3354
- "Time_radarTemp"
3355
- ]
3356
- },
3357
- title: "Radar",
3358
- originalViewPresetId: "Radar"
3359
- },
3360
- {
3361
- mosaicNodeId: "viewB",
3362
- componentType: "Map",
3363
- initialProps: {
3364
- mapPreset: {
3365
- layers: [
3366
- {
3367
- name: "WorldMap_Light_Grey_Canvas",
3368
- type: "twms",
3369
- dimensions: [
3370
- ],
3371
- id: "layerid_71",
3372
- opacity: 1,
3373
- acceptanceTimeInMinutes: 60,
3374
- enabled: true,
3375
- layerType: "baseLayer",
3376
- status: "default",
3377
- useLatestReferenceTime: true
3378
- },
3379
- {
3380
- service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
3381
- name: "countryborders",
3382
- format: "image/png",
3383
- dimensions: [
3384
- ],
3385
- id: "layerid_70",
3386
- opacity: 1,
3387
- acceptanceTimeInMinutes: 60,
3388
- enabled: true,
3389
- layerType: "overLayer",
3390
- status: "default",
3391
- useLatestReferenceTime: true
3392
- },
3393
- {
3394
- name: "10M/ta",
3395
- service: "https://geoservices.knmi.nl/adagucserver?dataset=OBS",
3396
- dimensions: [
3397
- ],
3398
- id: "layerid_67",
3399
- opacity: 1,
3400
- acceptanceTimeInMinutes: 60,
3401
- enabled: true,
3402
- layerType: "mapLayer",
3403
- status: "default",
3404
- useLatestReferenceTime: true
3405
- },
3406
- {
3407
- name: "t850_public",
3408
- service: "https://eccharts.ecmwf.int/wms/?token=public",
3409
- dimensions: [
3410
- ],
3411
- id: "layerid_68",
3412
- opacity: 0.8,
3413
- acceptanceTimeInMinutes: 60,
3414
- enabled: true,
3415
- layerType: "mapLayer",
3416
- status: "default",
3417
- useLatestReferenceTime: true
3418
- }
3419
- ],
3420
- proj: {
3421
- bbox: {
3422
- left: -4537320.252629031,
3423
- bottom: 6408480.451399999,
3424
- right: 8563411.406429032,
3425
- top: 11520588.9031
3426
- },
3427
- srs: "EPSG:3857"
3428
- },
3429
- shouldAnimate: false,
3430
- shouldAutoUpdate: false,
3431
- showTimeSlider: true,
3432
- displayMapPin: false,
3433
- shouldShowZoomControls: true,
3434
- animationPayload: {
3435
- interval: 60,
3436
- speed: 4,
3437
- duration: 290
3438
- },
3439
- toggleTimestepAuto: true,
3440
- toggleTimeSpanAuto: true,
3441
- shouldShowLegend: false,
3442
- timeSliderSpan: 86400,
3443
- shouldShowDataExplorer: false,
3444
- defaultOverlayer: "countryborders"
3445
- },
3446
- syncGroupsIds: [
3447
- "Area_radarTemp",
3448
- "Time_radarTemp"
3449
- ]
3450
- },
3451
- title: "Temperature"
3452
- }
3453
- ],
3454
- syncGroups: [
3455
- {
3456
- id: "Area_RadarTemp",
3457
- type: "SYNCGROUPS_TYPE_SETBBOX"
3458
- },
3459
- {
3460
- id: "Time_RadarTemp",
3461
- type: "SYNCGROUPS_TYPE_SETTIME"
3462
- }
3463
- ],
3464
- mosaicNode: {
3465
- direction: "row",
3466
- first: "screen_no_1",
3467
- second: "screen_no_2",
3468
- splitPercentage: 50
3469
- }
3470
- },
3471
- {
3472
- id: "screenConfigRadarRadar",
3473
- title: "Radar and Radar",
3474
- scope: "system",
3475
- abstract: "",
3476
- viewType: "multiWindow",
3477
- views: [
3478
- {
3479
- mosaicNodeId: "view-1",
3480
- viewPresetId: "radar"
3481
- },
3482
- {
3483
- mosaicNodeId: "view-2",
3484
- viewPresetId: "radar"
3485
- }
3486
- ],
3487
- syncGroups: [
3488
- {
3489
- id: "Area_RadarTemp",
3490
- type: "SYNCGROUPS_TYPE_SETBBOX"
3491
- },
3492
- {
3493
- id: "Time_RadarTemp",
3494
- type: "SYNCGROUPS_TYPE_SETTIME"
3495
- }
3496
- ],
3497
- mosaicNode: {
3498
- direction: "row",
3499
- first: "view-1",
3500
- second: "view-2",
3501
- splitPercentage: 50
3502
- }
3503
- },
3504
- {
3505
- id: "screenConfigTimeSeries_knmi_timeseries_ha43_dini",
3506
- title: "TimeSeries EDR KNMI HA43 DINI",
3507
- scope: "system",
3508
- abstract: "This contains a very very long abstract so that you can see some ellipsis. Who knows how it will behave. ",
3509
- viewType: "multiWindow",
3510
- views: [
3511
- {
3512
- mosaicNodeId: "view-1",
3513
- componentType: "Map",
3514
- initialProps: {
3515
- mapPreset: {
3516
- layers: [
3517
- {
3518
- name: "WorldMap_Light_Grey_Canvas",
3519
- type: "twms",
3520
- dimensions: [
3521
- ],
3522
- id: "layerid_89",
3523
- opacity: 1,
3524
- acceptanceTimeInMinutes: 60,
3525
- enabled: true,
3526
- layerType: "baseLayer",
3527
- status: "default",
3528
- useLatestReferenceTime: true
3529
- },
3530
- {
3531
- service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
3532
- name: "countryborders",
3533
- format: "image/png",
3534
- dimensions: [
3535
- ],
3536
- id: "layerid_88",
3537
- opacity: 1,
3538
- acceptanceTimeInMinutes: 60,
3539
- enabled: true,
3540
- layerType: "overLayer",
3541
- status: "default",
3542
- useLatestReferenceTime: true
3543
- },
3544
- {
3545
- name: "air_pressure_at_mean_sea_level_hagl",
3546
- service: "https://geoservices.knmi.nl/adaguc-server?DATASET=uwcw_ha43_dini_5p5km",
3547
- dimensions: [
3548
- {
3549
- name: "reference_time",
3550
- units: "ISO8601",
3551
- currentValue: "2025-11-03T08:00:00Z",
3552
- maxValue: "2025-11-03T08:00:00Z",
3553
- minValue: "2025-11-02T11:00:00Z",
3554
- synced: false,
3555
- values: "2025-11-02T11:00:00Z,2025-11-02T12:00:00Z,2025-11-02T13:00:00Z,2025-11-02T14:00:00Z,2025-11-02T15:00:00Z,2025-11-02T16:00:00Z,2025-11-02T17:00:00Z,2025-11-02T18:00:00Z,2025-11-02T19:00:00Z,2025-11-02T20:00:00Z,2025-11-02T21:00:00Z,2025-11-02T22:00:00Z,2025-11-02T23:00:00Z,2025-11-03T00:00:00Z,2025-11-03T01:00:00Z,2025-11-03T02:00:00Z,2025-11-03T03:00:00Z,2025-11-03T04:00:00Z,2025-11-03T05:00:00Z,2025-11-03T06:00:00Z,2025-11-03T07:00:00Z,2025-11-03T08:00:00Z",
3556
- unitSymbol: ""
3557
- },
3558
- {
3559
- name: "height_above_ground_level_in_m",
3560
- units: "m",
3561
- currentValue: "0",
3562
- maxValue: "0",
3563
- minValue: "0",
3564
- synced: false,
3565
- values: "0",
3566
- unitSymbol: ""
3567
- }
3568
- ],
3569
- id: "layerid_84",
3570
- opacity: 1,
3571
- acceptanceTimeInMinutes: 60,
3572
- enabled: true,
3573
- layerType: "mapLayer",
3574
- status: "default",
3575
- useLatestReferenceTime: true
3576
- },
3577
- {
3578
- name: "total_precipitation_rate_hagl",
3579
- service: "https://geoservices.knmi.nl/adaguc-server?DATASET=uwcw_ha43_dini_5p5km",
3580
- dimensions: [
3581
- {
3582
- name: "reference_time",
3583
- units: "ISO8601",
3584
- currentValue: "2025-11-03T08:00:00Z",
3585
- maxValue: "2025-11-03T08:00:00Z",
3586
- minValue: "2025-11-02T11:00:00Z",
3587
- synced: false,
3588
- values: "2025-11-02T11:00:00Z,2025-11-02T12:00:00Z,2025-11-02T13:00:00Z,2025-11-02T14:00:00Z,2025-11-02T15:00:00Z,2025-11-02T16:00:00Z,2025-11-02T17:00:00Z,2025-11-02T18:00:00Z,2025-11-02T19:00:00Z,2025-11-02T20:00:00Z,2025-11-02T21:00:00Z,2025-11-02T22:00:00Z,2025-11-02T23:00:00Z,2025-11-03T00:00:00Z,2025-11-03T01:00:00Z,2025-11-03T02:00:00Z,2025-11-03T03:00:00Z,2025-11-03T04:00:00Z,2025-11-03T05:00:00Z,2025-11-03T06:00:00Z,2025-11-03T07:00:00Z,2025-11-03T08:00:00Z",
3589
- unitSymbol: ""
3590
- },
3591
- {
3592
- name: "height_above_ground_level_in_m",
3593
- units: "m",
3594
- currentValue: "0",
3595
- maxValue: "0",
3596
- minValue: "0",
3597
- synced: false,
3598
- values: "0",
3599
- unitSymbol: ""
3600
- }
3601
- ],
3602
- id: "layerid_85",
3603
- opacity: 1,
3604
- acceptanceTimeInMinutes: 60,
3605
- enabled: true,
3606
- layerType: "mapLayer",
3607
- status: "default",
3608
- useLatestReferenceTime: true
3609
- },
3610
- {
3611
- name: "air_temperature_hagl",
3612
- style: "temperature_wow/shaded",
3613
- service: "https://geoservices.knmi.nl/adaguc-server?DATASET=uwcw_ha43_dini_5p5km",
3614
- dimensions: [
3615
- {
3616
- name: "reference_time",
3617
- units: "ISO8601",
3618
- currentValue: "2025-11-03T08:00:00Z",
3619
- maxValue: "2025-11-03T08:00:00Z",
3620
- minValue: "2025-11-02T11:00:00Z",
3621
- synced: false,
3622
- values: "2025-11-02T11:00:00Z,2025-11-02T12:00:00Z,2025-11-02T13:00:00Z,2025-11-02T14:00:00Z,2025-11-02T15:00:00Z,2025-11-02T16:00:00Z,2025-11-02T17:00:00Z,2025-11-02T18:00:00Z,2025-11-02T19:00:00Z,2025-11-02T20:00:00Z,2025-11-02T21:00:00Z,2025-11-02T22:00:00Z,2025-11-02T23:00:00Z,2025-11-03T00:00:00Z,2025-11-03T01:00:00Z,2025-11-03T02:00:00Z,2025-11-03T03:00:00Z,2025-11-03T04:00:00Z,2025-11-03T05:00:00Z,2025-11-03T06:00:00Z,2025-11-03T07:00:00Z,2025-11-03T08:00:00Z",
3623
- unitSymbol: ""
3624
- },
3625
- {
3626
- name: "height_above_ground_level_in_m",
3627
- units: "m",
3628
- currentValue: "2",
3629
- maxValue: "2",
3630
- minValue: "2",
3631
- synced: false,
3632
- values: "2",
3633
- unitSymbol: ""
3634
- }
3635
- ],
3636
- id: "layerid_86",
3637
- opacity: 1,
3638
- acceptanceTimeInMinutes: 60,
3639
- enabled: true,
3640
- layerType: "mapLayer",
3641
- status: "default",
3642
- useLatestReferenceTime: true
3643
- }
3644
- ],
3645
- proj: {
3646
- bbox: {
3647
- top: 7438773.776232235,
3648
- left: -450651.2255879827,
3649
- right: 1428345.8183648037,
3650
- bottom: 6490531.093143953
3651
- },
3652
- srs: "EPSG:3857"
3653
- },
3654
- shouldAnimate: false,
3655
- shouldAutoUpdate: false,
3656
- showTimeSlider: true,
3657
- displayMapPin: true,
3658
- shouldShowZoomControls: true,
3659
- animationPayload: {
3660
- interval: 60,
3661
- speed: 4,
3662
- duration: 290
3663
- },
3664
- toggleTimestepAuto: true,
3665
- toggleTimeSpanAuto: true,
3666
- shouldShowLegend: false,
3667
- timeSliderSpan: 86400,
3668
- shouldShowDataExplorer: false,
3669
- defaultOverlayer: "countryborders"
3670
- },
3671
- syncGroupsIds: [
3672
- ]
3673
- },
3674
- title: "KNMI WMS UWCW HA43 DINI forecast",
3675
- originalViewPresetId: "view_knmi_timeseries_ha43_dini_wms"
3676
- },
3677
- {
3678
- mosaicNodeId: "view-2",
3679
- componentType: "TimeSeries",
3680
- initialProps: {
3681
- plotPreset: {
3682
- mapId: "view_knmi_timeseries_ha43_dini_wms",
3683
- plots: [
3684
- {
3685
- title: "HA43 Air pressure",
3686
- plotId: "Plot_1"
3687
- },
3688
- {
3689
- title: "HA43 Air temperature",
3690
- plotId: "Plot_2"
3691
- },
3692
- {
3693
- title: "HA43 precipitation",
3694
- plotId: "Plot_3"
3695
- },
3696
- {
3697
- title: "HA43 Relative humidity",
3698
- plotId: "Plot_4"
3699
- }
3700
- ],
3701
- parameters: [
3702
- {
3703
- unit: "hPa",
3704
- plotId: "Plot_1",
3705
- plotType: "line",
3706
- serviceId: "knmi_geoservices_edr",
3707
- collectionId: "uwcw_ha43_dini_5p5km.hagl",
3708
- propertyName: "air_pressure_at_mean_sea_level_hagl",
3709
- id: "timeseriesparamid_2ceef258-edf0-4170-b8ec-a998e1175839",
3710
- opacity: 70
3711
- },
3712
- {
3713
- unit: "C",
3714
- plotId: "Plot_2",
3715
- plotType: "line",
3716
- serviceId: "knmi_geoservices_edr",
3717
- collectionId: "uwcw_ha43_dini_5p5km.hagl",
3718
- propertyName: "air_temperature_hagl",
3719
- id: "timeseriesparamid_fbbe34f2-2aaa-4636-9dae-6d9c6b8530db",
3720
- opacity: 70
3721
- },
3722
- {
3723
- unit: "mm/hr",
3724
- plotId: "Plot_3",
3725
- plotType: "bar",
3726
- serviceId: "knmi_geoservices_edr",
3727
- collectionId: "uwcw_ha43_dini_5p5km.hagl",
3728
- propertyName: "total_precipitation_rate_hagl",
3729
- id: "timeseriesparamid_7a02c8f2-8401-4231-81d7-5b1dc9c24fb1",
3730
- opacity: 70
3731
- },
3732
- {
3733
- unit: "%",
3734
- plotId: "Plot_4",
3735
- plotType: "line",
3736
- serviceId: "knmi_geoservices_edr",
3737
- collectionId: "uwcw_ha43_dini_5p5km.hagl",
3738
- propertyName: "relative_humidity_hagl",
3739
- id: "timeseriesparamid_7ef987eb-f244-4997-8a3d-8e099f3187cf",
3740
- opacity: 70
3741
- }
3742
- ]
3743
- },
3744
- services: [
3745
- {
3746
- name: "KNMI Geoservices",
3747
- url: "https://geoservices.knmi.nl/edr",
3748
- id: "knmi_geoservices_edr",
3749
- description: "KNMI EDR on geoservices with UWCW HA43 DINI",
3750
- type: "EDR",
3751
- scope: "system"
3752
- }
3753
- ]
3754
- },
3755
- title: "KNMI EDR UWCW HA43 DINI forecast"
3756
- }
3757
- ],
3758
- syncGroups: [
3759
- ],
3760
- mosaicNode: {
3761
- direction: "row",
3762
- first: "view-1",
3763
- second: "view-2"
3764
- }
3765
- },
3766
- {
3767
- id: "screenConfigTimeSeriesEDRKNMI",
3768
- title: "TimeSeries EDR KNMI Example",
3769
- scope: "system",
3770
- abstract: "This contains a very very long abstract so that you can see some ellipsis. Who knows how it will behave. ",
3771
- viewType: "multiWindow",
3772
- views: [
3773
- {
3774
- mosaicNodeId: "view-1",
3775
- viewPresetId: "TimeseriesMap"
3776
- },
3777
- {
3778
- mosaicNodeId: "view-2",
3779
- viewPresetId: "Timeseries_EDR_KNMI"
3780
- }
3781
- ],
3782
- syncGroups: [
3783
- ],
3784
- mosaicNode: {
3785
- direction: "row",
3786
- first: "view-1",
3787
- second: "view-2"
3788
- }
3789
- },
3790
- {
3791
- id: "screenConfigTimeSeriesEDRFMI",
3792
- title: "TimeSeries EDR FMI Example",
3793
- scope: "system",
3794
- abstract: "This contains a very very long abstract so that you can see some ellipsis. Who knows how it will behave. ",
3795
- viewType: "multiWindow",
3796
- views: [
3797
- {
3798
- mosaicNodeId: "view-1",
3799
- viewPresetId: "TimeseriesMap"
3800
- },
3801
- {
3802
- mosaicNodeId: "view-2",
3803
- viewPresetId: "Timeseries_EDR_FMI"
3804
- }
3805
- ],
3806
- syncGroups: [
3807
- ],
3808
- mosaicNode: {
3809
- direction: "row",
3810
- first: "view-1",
3811
- second: "view-2"
3812
- }
3813
- },
3814
- {
3815
- id: "screenConfigHarmoniePrecipMSLRefTimePresetWithoutMultiMapLayerManager",
3816
- title: "Precipitation, pressure and wind 1:1",
3817
- scope: "system",
3818
- abstract: "",
3819
- viewType: "tiledWindow",
3820
- views: [
3821
- {
3822
- mosaicNodeId: "view-1",
3823
- viewPresetId: "harmRefTime"
3824
- }
3825
- ],
3826
- syncGroups: [
3827
- {
3828
- id: "areaLayerGroupA",
3829
- type: "SYNCGROUPS_TYPE_SETBBOX"
3830
- },
3831
- {
3832
- id: "timeLayerGroupA",
3833
- type: "SYNCGROUPS_TYPE_SETTIME"
3834
- },
3835
- {
3836
- id: "layerGroupA",
3837
- type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
3838
- }
3839
- ],
3840
- mosaicNode: "view-1"
3841
- },
3842
- {
3843
- id: "screenConfigHarmoniePrecipMSLRefTimePresetWithMultiMapLayerManager",
3844
- title: "Precipitation, pressure and wind 1:all",
3845
- scope: "system",
3846
- abstract: "",
3847
- viewType: "tiledWindow",
3848
- views: [
3849
- {
3850
- mosaicNodeId: "viewA",
3851
- componentType: "ModelRunInterval",
3852
- initialProps: {
3853
- mapPreset: {
3854
- layers: [
3855
- ],
3856
- proj: {
3857
- bbox: {
3858
- },
3859
- srs: ""
3860
- },
3861
- shouldAnimate: false,
3862
- shouldAutoUpdate: false,
3863
- showTimeSlider: true,
3864
- displayMapPin: false,
3865
- shouldShowZoomControls: true,
3866
- animationPayload: {
3867
- interval: 60,
3868
- speed: 4,
3869
- duration: 350
3870
- },
3871
- toggleTimestepAuto: false,
3872
- toggleTimeSpanAuto: false,
3873
- shouldShowLegend: false,
3874
- timeSliderSpan: 86400,
3875
- shouldShowDataExplorer: false,
3876
- defaultOverlayer: "none"
3877
- },
3878
- syncGroupsIds: [
3879
- "areaLayerGroupA",
3880
- "layerGroupA"
3881
- ]
3882
- },
3883
- title: "Harmonie precipitation, pressure and wind all",
3884
- originalViewPresetId: "screenRefTimeAll"
3885
- }
3886
- ],
3887
- syncGroups: [
3888
- {
3889
- id: "areaLayerGroupA",
3890
- type: "SYNCGROUPS_TYPE_SETBBOX"
3891
- },
3892
- {
3893
- id: "timeLayerGroupA",
3894
- type: "SYNCGROUPS_TYPE_SETTIME"
3895
- },
3896
- {
3897
- id: "layerGroupA",
3898
- type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
3899
- }
3900
- ],
3901
- mosaicNode: "view-1"
3902
- },
3903
- {
3904
- id: "screenConfigHarmoniePresetWithoutMultiMapLayerManager",
3905
- title: "Harmonie Temperature and Precipitation 1:1",
3906
- scope: "system",
3907
- abstract: "",
3908
- viewType: "tiledWindow",
3909
- views: [
3910
- {
3911
- mosaicNodeId: "view-1",
3912
- viewPresetId: "screenHarm"
3913
- }
3914
- ],
3915
- syncGroups: [
3916
- {
3917
- id: "areaLayerGroupA",
3918
- type: "SYNCGROUPS_TYPE_SETBBOX"
3919
- },
3920
- {
3921
- id: "timeLayerGroupA",
3922
- type: "SYNCGROUPS_TYPE_SETTIME"
3923
- },
3924
- {
3925
- id: "layerGroupA",
3926
- type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
3927
- },
3928
- {
3929
- id: "layerGroupB",
3930
- type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
3931
- }
3932
- ],
3933
- mosaicNode: "view-1"
3934
- },
3935
- {
3936
- id: "screenConfigHarmoniePresetWithMultiMapLayerManager",
3937
- title: "Harmonie Temperature and Precipitation 1:all",
3938
- scope: "system",
3939
- abstract: "",
3940
- viewType: "tiledWindow",
3941
- views: [
3942
- {
3943
- mosaicNodeId: "view-1",
3944
- viewPresetId: "screenHarmAll"
3945
- }
3946
- ],
3947
- syncGroups: [
3948
- {
3949
- id: "areaLayerGroupA",
3950
- type: "SYNCGROUPS_TYPE_SETBBOX"
3951
- },
3952
- {
3953
- id: "timeLayerGroupA",
3954
- type: "SYNCGROUPS_TYPE_SETTIME"
3955
- },
3956
- {
3957
- id: "layerGroupA",
3958
- type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
3959
- },
3960
- {
3961
- id: "layerGroupB",
3962
- type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
3963
- }
3964
- ],
3965
- mosaicNode: "view-1"
3966
- },
3967
- {
3968
- id: "screenConfigD",
3969
- title: "Radar & Sat",
3970
- scope: "system",
3971
- abstract: "",
3972
- viewType: "multiWindow",
3973
- views: [
3974
- {
3975
- mosaicNodeId: "viewAsat",
3976
- viewPresetId: "sat"
3977
- },
3978
- {
3979
- mosaicNodeId: "viewBrad",
3980
- viewPresetId: "rad"
3981
- }
3982
- ],
3983
- syncGroups: [
3984
- {
3985
- id: "Area_SatRadar",
3986
- type: "SYNCGROUPS_TYPE_SETBBOX"
3987
- },
3988
- {
3989
- id: "Time_SatRadar",
3990
- type: "SYNCGROUPS_TYPE_SETTIME"
3991
- }
3992
- ],
3993
- mosaicNode: {
3994
- direction: "row",
3995
- first: "viewAsat",
3996
- second: "viewBrad",
3997
- splitPercentage: 50
3998
- }
3999
- },
4000
- {
4001
- id: "screenConfigOBS",
4002
- title: "OBS",
4003
- scope: "system",
4004
- abstract: "",
4005
- viewType: "multiWindow",
4006
- views: [
4007
- {
4008
- mosaicNodeId: "map_OBSTA",
4009
- viewPresetId: "map_OBSTA"
4010
- },
4011
- {
4012
- mosaicNodeId: "map_OBSPP",
4013
- viewPresetId: "map_OBSPP"
4014
- },
4015
- {
4016
- mosaicNodeId: "map_OBSWind",
4017
- viewPresetId: "map_OBSWind"
4018
- },
4019
- {
4020
- mosaicNodeId: "map_OBSRH",
4021
- viewPresetId: "map_OBSRH"
4022
- },
4023
- {
4024
- mosaicNodeId: "map_OBSQG",
4025
- viewPresetId: "map_OBSQG"
4026
- }
4027
- ],
4028
- syncGroups: [
4029
- {
4030
- id: "Area_A",
4031
- type: "SYNCGROUPS_TYPE_SETBBOX"
4032
- },
4033
- {
4034
- id: "Time_A",
4035
- type: "SYNCGROUPS_TYPE_SETTIME"
4036
- }
4037
- ],
4038
- mosaicNode: {
4039
- direction: "column",
4040
- first: {
4041
- direction: "row",
4042
- first: "map_OBSTA",
4043
- second: "map_OBSPP"
4044
- },
4045
- second: {
4046
- direction: "row",
4047
- first: "map_OBSWind",
4048
- second: {
4049
- direction: "row",
4050
- first: "map_OBSRH",
4051
- second: "map_OBSQG"
4052
- },
4053
- splitPercentage: 33
4054
- }
4055
- }
4056
- },
4057
- {
4058
- id: "screenConfigRadAndObs",
4059
- title: "FourMapsInOneView",
4060
- scope: "system",
4061
- abstract: "",
4062
- viewType: "tiledWindow",
4063
- views: [
4064
- {
4065
- mosaicNodeId: "view-1",
4066
- viewPresetId: "screenRadAndObs"
4067
- }
4068
- ],
4069
- syncGroups: [
4070
- {
4071
- id: "Area_screenRadAndObs",
4072
- type: "SYNCGROUPS_TYPE_SETBBOX"
4073
- },
4074
- {
4075
- id: "Time_screenRadAndObs",
4076
- type: "SYNCGROUPS_TYPE_SETTIME"
4077
- }
4078
- ],
4079
- mosaicNode: "view-1"
4080
- },
4081
- {
4082
- id: "screenConfigHarmonie",
4083
- title: "Harmonie",
4084
- scope: "system",
4085
- abstract: "",
4086
- viewType: "multiWindow",
4087
- views: [
4088
- {
4089
- mosaicNodeId: "viewAharmPrecip",
4090
- viewPresetId: "harmPrecip"
4091
- },
4092
- {
4093
- mosaicNodeId: "viewBharmTemp",
4094
- viewPresetId: "harmTemp"
4095
- },
4096
- {
4097
- mosaicNodeId: "viewCharmPressure",
4098
- viewPresetId: "harmPressure"
4099
- },
4100
- {
4101
- mosaicNodeId: "viewDslider",
4102
- viewPresetId: "slider"
4103
- }
4104
- ],
4105
- syncGroups: [
4106
- {
4107
- id: "Area_B",
4108
- type: "SYNCGROUPS_TYPE_SETBBOX"
4109
- },
4110
- {
4111
- id: "Time_B",
4112
- type: "SYNCGROUPS_TYPE_SETTIME"
4113
- }
4114
- ],
4115
- mosaicNode: {
4116
- direction: "column",
4117
- first: {
4118
- direction: "row",
4119
- first: "viewAharmPrecip",
4120
- second: {
4121
- direction: "row",
4122
- first: "viewBharmTemp",
4123
- second: "viewCharmPressure"
4124
- },
4125
- splitPercentage: 33
4126
- },
4127
- second: "viewDslider",
4128
- splitPercentage: 80
4129
- }
4130
- },
4131
- {
4132
- id: "workspaceHarmonie",
4133
- title: "Harmonie",
4134
- scope: "system",
4135
- abstract: "",
4136
- viewType: "singleWindow",
4137
- views: [
4138
- {
4139
- mosaicNodeId: "screen1",
4140
- viewPresetId: "viewHarmonie"
4141
- }
4142
- ],
4143
- syncGroups: [
4144
- ],
4145
- mosaicNode: "screen1"
4146
- },
4147
- {
4148
- id: "screenConfigOnlyBBOXGroup",
4149
- title: "SyncGroups only BBOX predefined",
4150
- scope: "system",
4151
- abstract: "",
4152
- viewType: "multiWindow",
4153
- views: [
4154
- {
4155
- mosaicNodeId: "view-1",
4156
- viewPresetId: "demosyncgroupbbox_radar"
4157
- },
4158
- {
4159
- mosaicNodeId: "view-2",
4160
- viewPresetId: "demosyncgroupbbox_temp"
4161
- }
4162
- ],
4163
- syncGroups: [
4164
- {
4165
- id: "Area_radar",
4166
- type: "SYNCGROUPS_TYPE_SETBBOX"
4167
- },
4168
- {
4169
- id: "Area_temp",
4170
- type: "SYNCGROUPS_TYPE_SETBBOX"
4171
- }
4172
- ],
4173
- mosaicNode: {
4174
- direction: "row",
4175
- first: "view-1",
4176
- second: "view-2",
4177
- splitPercentage: 50
4178
- }
4179
- },
4180
- {
4181
- id: "screenConfigOnlyTIMEGroup",
4182
- title: "SyncGroups only TIME predefined",
4183
- scope: "system",
4184
- abstract: "",
4185
- viewType: "multiWindow",
4186
- views: [
4187
- {
4188
- mosaicNodeId: "view-1",
4189
- viewPresetId: "demosyncgrouptime_radar"
4190
- },
4191
- {
4192
- mosaicNodeId: "view-2",
4193
- viewPresetId: "demosyncgrouptime_temp"
4194
- }
4195
- ],
4196
- syncGroups: [
4197
- {
4198
- id: "Time_radar",
4199
- type: "SYNCGROUPS_TYPE_SETTIME"
4200
- },
4201
- {
4202
- id: "Time_temp",
4203
- type: "SYNCGROUPS_TYPE_SETTIME"
4204
- }
4205
- ],
4206
- mosaicNode: {
4207
- direction: "row",
4208
- first: "view-1",
4209
- second: "view-2",
4210
- splitPercentage: 50
4211
- }
4212
- },
4213
- {
4214
- id: "emptyMap",
4215
- title: "Empty map",
4216
- scope: "system",
4217
- abstract: "",
4218
- viewType: "singleWindow",
4219
- views: [
4220
- {
4221
- mosaicNodeId: "emptyMapView",
4222
- viewPresetId: "emptyMap"
4223
- }
4224
- ],
4225
- mosaicNode: "emptyMapView"
4226
- },
4227
- {
4228
- id: "radarView",
4229
- title: "Radar",
4230
- scope: "user",
4231
- abstract: "",
4232
- viewType: "singleWindow",
4233
- views: [
4234
- {
4235
- mosaicNodeId: "radarView",
4236
- viewPresetId: "radar"
4237
- }
4238
- ],
4239
- mosaicNode: "radarView"
4240
- },
4241
- {
4242
- id: "workspaceHarmonie",
4243
- title: "Harmonie workspace",
4244
- scope: "system",
4245
- abstract: "",
4246
- viewType: "singleWindow",
4247
- views: [
4248
- {
4249
- mosaicNodeId: "harmView",
4250
- viewPresetId: "viewHarmonie"
4251
- }
4252
- ],
4253
- mosaicNode: "harmView"
4254
- },
4255
- {
4256
- id: "capWorkspace",
4257
- title: "Cap Warnings",
4258
- scope: "system",
4259
- abstract: "",
4260
- viewType: "multiWindow",
4261
- views: [
4262
- {
4263
- mosaicNodeId: "view-1",
4264
- viewPresetId: "capMapView"
4265
- },
4266
- {
4267
- mosaicNodeId: "view-2",
4268
- viewPresetId: "capListView"
4269
- }
4270
- ],
4271
- mosaicNode: {
4272
- direction: "row",
4273
- first: "view-1",
4274
- second: "view-2",
4275
- splitPercentage: 50
4276
- }
4277
- },
4278
- {
4279
- id: "newFormatRadarView",
4280
- abstract: "A radar view of hurricane Melissa",
4281
- title: "Radar Melissa",
4282
- isTimeScrollingEnabled: false,
4283
- scope: "user",
4284
- viewType: "singleWindow",
4285
- views: [
4286
- {
4287
- title: "Radar view",
4288
- abstract: "",
4289
- componentType: "Map",
4290
- initialProps: {
4291
- mapPreset: {
4292
- proj: {
4293
- srs: "EPSG:3857",
4294
- bbox: {
4295
- top: 11520588.9031,
4296
- left: 58703.6377,
4297
- right: 3967387.5161,
4298
- bottom: 6408480.4514
4299
- }
4300
- },
4301
- layers: [
4302
- {
4303
- id: "layerid_75",
4304
- name: "WorldMap_Light_Grey_Canvas",
4305
- type: "twms",
4306
- status: "default",
4307
- enabled: true,
4308
- opacity: 1,
4309
- layerType: "baseLayer",
4310
- dimensions: [
4311
- ],
4312
- useLatestReferenceTime: true,
4313
- acceptanceTimeInMinutes: 60
4314
- },
4315
- {
4316
- id: "layerid_74",
4317
- name: "countryborders",
4318
- format: "image/png",
4319
- status: "default",
4320
- enabled: true,
4321
- opacity: 1,
4322
- service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
4323
- layerType: "overLayer",
4324
- dimensions: [
4325
- ],
4326
- useLatestReferenceTime: true,
4327
- acceptanceTimeInMinutes: 60
4328
- },
4329
- {
4330
- id: "layerid_70",
4331
- name: "RAD_NL25_PCP_CM",
4332
- style: "radar/nearest",
4333
- format: "image/png",
4334
- status: "default",
4335
- enabled: true,
4336
- opacity: 1,
4337
- service: "https://geoservices.knmi.nl/wms?dataset=RADAR",
4338
- layerType: "mapLayer",
4339
- dimensions: [
4340
- ],
4341
- useLatestReferenceTime: true,
4342
- acceptanceTimeInMinutes: 60
4343
- },
4344
- {
4345
- id: "layerid_71",
4346
- name: "Radar:suomi_dbz_eureffin",
4347
- style: "Radar dbz Summer",
4348
- format: "image/png",
4349
- status: "default",
4350
- enabled: true,
4351
- opacity: 1,
4352
- service: "https://openwms.fmi.fi/geoserver/wms?",
4353
- layerType: "mapLayer",
4354
- dimensions: [
4355
- ],
4356
- useLatestReferenceTime: true,
4357
- acceptanceTimeInMinutes: 60
4358
- },
4359
- {
4360
- id: "layerid_72",
4361
- name: "radar_precipitation_intensity_nordic",
4362
- style: "",
4363
- format: "image/png",
4364
- status: "default",
4365
- enabled: true,
4366
- opacity: 1,
4367
- service: "https://public-wms.met.no/verportal/verportal.map?SERVICE=WMS&REQUEST=GetCapabilities",
4368
- layerType: "mapLayer",
4369
- dimensions: [
4370
- ],
4371
- useLatestReferenceTime: true,
4372
- acceptanceTimeInMinutes: 60
4373
- }
4374
- ],
4375
- displayMapPin: false,
4376
- shouldAnimate: true,
4377
- showTimeSlider: true,
4378
- timeSliderSpan: 86400,
4379
- animationPayload: {
4380
- speed: 2,
4381
- duration: 240,
4382
- interval: 5
4383
- },
4384
- defaultOverlayer: "countryborders",
4385
- shouldAutoUpdate: false,
4386
- shouldShowLegend: false,
4387
- toggleTimeSpanAuto: true,
4388
- toggleTimestepAuto: false,
4389
- shouldShowDataExplorer: false,
4390
- shouldShowZoomControls: true
4391
- },
4392
- syncGroupsIds: [
4393
- ]
4394
- },
4395
- mosaicNodeId: "2_screen",
4396
- originalViewPresetId: "radarView"
4397
- }
4398
- ],
4399
- mosaicNode: "radarView"
4400
- },
4401
- {
4402
- id: "test-1",
4403
- title: "Test view preset error",
4404
- scope: "system",
4405
- username: "user.name",
4406
- abstract: "",
4407
- viewType: "multiWindow",
4408
- views: [
4409
- {
4410
- mosaicNodeId: "screen_no_1",
4411
- viewPresetId: "temp"
4412
- }
4413
- ],
4414
- syncGroups: [
4415
- {
4416
- id: "Area_RadarTemp",
4417
- type: "SYNCGROUPS_TYPE_SETBBOX"
4418
- }
4419
- ],
4420
- mosaicNode: "screen_no_1"
4421
- }
4422
- ];
4423
-
4424
- var workspacePresetsList = [
4425
- {
4426
- id: "screenConfigRadarTemp",
4427
- title: "Radar and temperature",
4428
- date: "2022-06-01T12:34:27.787184",
4429
- scope: "system",
4430
- abstract: "Radar and temperature maps",
4431
- viewType: "multiWindow"
4432
- },
4433
- {
4434
- id: "screenConfigRadarRadar",
4435
- title: "Radar and Radar",
4436
- date: "2022-06-01T12:34:27.787184",
4437
- scope: "system",
4438
- abstract: "",
4439
- viewType: "multiWindow"
4440
- },
4441
- {
4442
- id: "screenConfigTimeSeries_knmi_timeseries_ha43_dini",
4443
- title: "TimeSeries KNMI EDR HA43 Dini",
4444
- date: "2022-06-01T12:34:27.787184",
4445
- scope: "system",
4446
- abstract: "",
4447
- viewType: "multiWindow"
4448
- },
4449
- {
4450
- id: "screenConfigTimeSeriesEDRKNMI",
4451
- title: "TimeSeries EDR KNMI Example",
4452
- date: "2022-06-01T12:34:27.787184",
4453
- scope: "system",
4454
- abstract: "",
4455
- viewType: "multiWindow"
4456
- },
4457
- {
4458
- id: "screenConfigTimeSeriesEDRFMI",
4459
- title: "TimeSeries EDR FMI Example",
4460
- date: "2022-06-01T12:34:27.787184",
4461
- scope: "system",
4462
- abstract: "",
4463
- viewType: "multiWindow"
4464
- },
4465
- {
4466
- id: "screenConfigHarmoniePrecipMSLRefTimePresetWithoutMultiMapLayerManager",
4467
- title: "Precipitation, pressure and wind 1:1",
4468
- date: "2022-06-01T12:34:27.787184",
4469
- scope: "system",
4470
- abstract: "",
4471
- viewType: "tiledWindow"
4472
- },
4473
- {
4474
- id: "screenConfigHarmoniePrecipMSLRefTimePresetWithMultiMapLayerManager",
4475
- title: "Precipitation, pressure and wind 1:all",
4476
- date: "2022-06-01T12:34:27.787184",
4477
- scope: "system",
4478
- abstract: "",
4479
- viewType: "tiledWindow"
4480
- },
4481
- {
4482
- id: "screenConfigHarmoniePresetWithoutMultiMapLayerManager",
4483
- title: "Harmonie Temperature and Precipitation 1:1",
4484
- date: "2022-06-01T12:34:27.787184",
4485
- scope: "system",
4486
- abstract: "",
4487
- viewType: "tiledWindow"
4488
- },
4489
- {
4490
- id: "screenConfigHarmoniePresetWithMultiMapLayerManager",
4491
- title: "Harmonie Temperature and Precipitation 1:all",
4492
- date: "2022-06-01T12:34:27.787184",
4493
- scope: "system",
4494
- abstract: "",
4495
- viewType: "tiledWindow"
4496
- },
4497
- {
4498
- id: "radarView",
4499
- title: "Radar",
4500
- date: "2022-06-01T12:34:27.787184",
4501
- scope: "user",
4502
- abstract: "Some abstract",
4503
- description: "Some description",
4504
- viewType: "singleWindow",
4505
- username: "user.name"
4506
- },
4507
- {
4508
- id: "screenConfigD",
4509
- title: "Radar & Sat",
4510
- date: "2022-06-01T12:34:27.787184",
4511
- scope: "system",
4512
- abstract: "",
4513
- viewType: "multiWindow"
4514
- },
4515
- {
4516
- id: "screenConfigOBS",
4517
- title: "OBS",
4518
- date: "2022-06-01T12:34:27.787184",
4519
- scope: "system",
4520
- abstract: "",
4521
- viewType: "multiWindow"
4522
- },
4523
- {
4524
- id: "screenConfigRadAndObs",
4525
- title: "FourMapsInOneView",
4526
- date: "2022-06-01T12:34:27.787184",
4527
- scope: "system",
4528
- abstract: "Four grid maps",
4529
- viewType: "tiledWindow"
4530
- },
4531
- {
4532
- id: "screenConfigHarmonie",
4533
- title: "Harmonie multi",
4534
- date: "2022-06-01T12:34:27.787184",
4535
- scope: "system",
4536
- abstract: "",
4537
- viewType: "multiWindow"
4538
- },
4539
- {
4540
- id: "workspaceHarmonie",
4541
- title: "Harmonie",
4542
- date: "2022-06-01T12:34:27.787184",
4543
- scope: "system",
4544
- abstract: "",
4545
- viewType: "singleWindow"
4546
- },
4547
- {
4548
- id: "screenConfigOnlyBBOXGroup",
4549
- title: "SyncGroups only BBOX predefined",
4550
- date: "2022-06-01T12:34:27.787184",
4551
- scope: "system",
4552
- abstract: "SyncGroups synced BBOX",
4553
- viewType: "multiWindow"
4554
- },
4555
- {
4556
- id: "screenConfigOnlyTIMEGroup",
4557
- title: "SyncGroups only TIME predefined",
4558
- date: "2022-06-01T12:34:27.787184",
4559
- scope: "system",
4560
- abstract: "SyncGroups synced TIME",
4561
- viewType: "multiWindow"
4562
- },
4563
- {
4564
- id: "emptyMap",
4565
- title: "Empty map",
4566
- date: "2022-06-01T12:34:27.787184",
4567
- scope: "system",
4568
- abstract: "",
4569
- viewType: "singleWindow"
4570
- },
4571
- {
4572
- id: "capWorkspace",
4573
- title: "Cap Warnings",
4574
- date: "2022-06-01T12:34:27.787184",
4575
- scope: "system",
4576
- abstract: "",
4577
- viewType: "multiWindow"
4578
- }
4579
- ];
4580
-
4581
- var ERROR_NOT_FOUND = 'Request failed with status code 400';
4582
- var filterWorkspacePresetList = function filterWorkspacePresetList(params) {
4583
- if (isEmpty(params)) {
4584
- return workspacePresetsList;
4585
- }
4586
- return workspacePresetsList.reduce(function (list, workspacePresetRaw) {
4587
- var workspacePreset = workspacePresetRaw;
4588
- if (params.search) {
4589
- var searchQuery = getCleanSearchQuery(params.search);
4590
- var hasResult = searchQuery.split(',').every(function (query) {
4591
- return workspacePreset.title.toLowerCase().includes(query.toLowerCase()) || workspacePreset["abstract"].toLowerCase().includes(query.toLowerCase());
4592
- });
4593
- return hasResult ? list.concat(workspacePreset) : list;
4594
- }
4595
- return list;
4596
- }, []);
4597
- };
4598
- var getApiRoutes = function getApiRoutes(axiosInstance) {
4599
- return {
4600
- getWorkspacePresets: function () {
4601
- var _getWorkspacePresets = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(params) {
4602
- return _regeneratorRuntime().wrap(function _callee$(_context) {
4603
- while (1) switch (_context.prev = _context.next) {
4604
- case 0:
4605
- return _context.abrupt("return", axiosInstance.get('/workspacepreset', {
4606
- params: params
4607
- }).then(function () {
4608
- var data = filterWorkspacePresetList(params);
4609
- return {
4610
- data: data
4611
- };
4612
- }));
4613
- case 1:
4614
- case "end":
4615
- return _context.stop();
4616
- }
4617
- }, _callee);
4618
- }));
4619
- function getWorkspacePresets(_x) {
4620
- return _getWorkspacePresets.apply(this, arguments);
4621
- }
4622
- return getWorkspacePresets;
4623
- }(),
4624
- saveViewPreset: function () {
4625
- var _saveViewPreset = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(presetId, data) {
4626
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
4627
- while (1) switch (_context2.prev = _context2.next) {
4628
- case 0:
4629
- // eslint-disable-next-line no-console
4630
- console.log('api: save view preset', presetId, data);
4631
- return _context2.abrupt("return", axiosInstance.put("/viewpreset/" + presetId + "/", data));
4632
- case 2:
4633
- case "end":
4634
- return _context2.stop();
4635
- }
4636
- }, _callee2);
4637
- }));
4638
- function saveViewPreset(_x2, _x3) {
4639
- return _saveViewPreset.apply(this, arguments);
4640
- }
4641
- return saveViewPreset;
4642
- }(),
4643
- saveViewPresetAs: function () {
4644
- var _saveViewPresetAs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(data) {
4645
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
4646
- while (1) switch (_context3.prev = _context3.next) {
4647
- case 0:
4648
- // eslint-disable-next-line no-console
4649
- console.log('api: save view preset as', data);
4650
- return _context3.abrupt("return", axiosInstance.post("/viewpreset/", data).then(function () {
4651
- return null;
4652
- }));
4653
- case 2:
4654
- case "end":
4655
- return _context3.stop();
4656
- }
4657
- }, _callee3);
4658
- }));
4659
- function saveViewPresetAs(_x4) {
4660
- return _saveViewPresetAs.apply(this, arguments);
4661
- }
4662
- return saveViewPresetAs;
4663
- }()
4664
- };
4665
- };
4666
- // used in storybook
4667
- var createApi = function createApi() {
4668
- var instance = createFakeApiInstance();
4669
- return getApiRoutes(instance);
3338
+ },
3339
+ saveWorkspacePresetAs: function saveWorkspacePresetAs$1(data, credentials) {
3340
+ return queryOptions({
3341
+ queryKey: generateWorkspaceQueryKeys('save-as'),
3342
+ staleTime: 0,
3343
+ queryFn: function () {
3344
+ var _queryFn4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
3345
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
3346
+ while (1) switch (_context4.prev = _context4.next) {
3347
+ case 0:
3348
+ return _context4.abrupt("return", saveWorkspacePresetAs(data, credentials));
3349
+ case 1:
3350
+ case "end":
3351
+ return _context4.stop();
3352
+ }
3353
+ }, _callee4);
3354
+ }));
3355
+ function queryFn() {
3356
+ return _queryFn4.apply(this, arguments);
3357
+ }
3358
+ return queryFn;
3359
+ }()
3360
+ });
3361
+ }
4670
3362
  };
4671
3363
 
4672
3364
  /* *
@@ -4807,33 +3499,32 @@ workspaceListListener.startListening({
4807
3499
  actionCreator: workspaceListActions.fetchWorkspaceList,
4808
3500
  effect: function () {
4809
3501
  var _effect = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
4810
- var workspaceFilterParams, workspaceApi, _yield$workspaceApi$g, data, isAuthError, workspaceListError;
3502
+ var workspaceFilterParams, _listenerApi$getState, common, data, isAuthError, workspaceListError;
4811
3503
  return _regeneratorRuntime().wrap(function _callee$(_context) {
4812
3504
  while (1) switch (_context.prev = _context.next) {
4813
3505
  case 0:
4814
3506
  workspaceFilterParams = _ref.payload;
4815
3507
  listenerApi.cancelActiveListeners();
4816
- _context.prev = 2;
4817
- workspaceApi = getWorkspaceApi();
3508
+ _listenerApi$getState = listenerApi.getState(), common = _listenerApi$getState.common;
3509
+ _context.prev = 3;
4818
3510
  _context.next = 6;
4819
- return workspaceApi.getWorkspacePresets(workspaceFilterParams);
3511
+ return getQueryClient().fetchQuery(workspaceQueryOptions.getWorkspacePresets(workspaceFilterParams, common == null ? void 0 : common.auth.credentials));
4820
3512
  case 6:
4821
- _yield$workspaceApi$g = _context.sent;
4822
- data = _yield$workspaceApi$g.data;
3513
+ data = _context.sent;
4823
3514
  if (!listenerApi.signal.aborted) {
4824
- _context.next = 10;
3515
+ _context.next = 9;
4825
3516
  break;
4826
3517
  }
4827
3518
  return _context.abrupt("return");
4828
- case 10:
3519
+ case 9:
4829
3520
  listenerApi.dispatch(workspaceListActions.fetchedWorkspaceList({
4830
3521
  workspaceList: data
4831
3522
  }));
4832
- _context.next = 18;
3523
+ _context.next = 17;
4833
3524
  break;
4834
- case 13:
4835
- _context.prev = 13;
4836
- _context.t0 = _context["catch"](2);
3525
+ case 12:
3526
+ _context.prev = 12;
3527
+ _context.t0 = _context["catch"](3);
4837
3528
  isAuthError = isAxiosAuthError(_context.t0);
4838
3529
  workspaceListError = isAuthError ? {
4839
3530
  type: WorkspaceListErrorType.VERBATIM_ERROR,
@@ -4847,11 +3538,11 @@ workspaceListListener.startListening({
4847
3538
  listenerApi.dispatch(workspaceListActions.errorWorkspaceList({
4848
3539
  error: workspaceListError
4849
3540
  }));
4850
- case 18:
3541
+ case 17:
4851
3542
  case "end":
4852
3543
  return _context.stop();
4853
3544
  }
4854
- }, _callee, null, [[2, 13]]);
3545
+ }, _callee, null, [[3, 12]]);
4855
3546
  }));
4856
3547
  function effect(_x, _x2) {
4857
3548
  return _effect.apply(this, arguments);
@@ -4863,16 +3554,25 @@ workspaceListListener.startListening({
4863
3554
  actionCreator: workspaceListActions.onSuccessWorkspacePresetAction,
4864
3555
  effect: function () {
4865
3556
  var _effect2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
4866
- var _listenerApi$getOrigi;
4867
- var payload, currentWorkspaceId, action, workspaceId, title, is_shared, searchQuery;
3557
+ var _listenerApi$getOrigi, _listenerApi$getState2;
3558
+ var payload, currentWorkspaceId, credentials, action, workspaceId, title, is_shared, searchQuery;
4868
3559
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
4869
3560
  while (1) switch (_context2.prev = _context2.next) {
4870
3561
  case 0:
4871
3562
  payload = _ref2.payload;
4872
3563
  listenerApi.cancelActiveListeners();
4873
3564
  currentWorkspaceId = (_listenerApi$getOrigi = listenerApi.getOriginalState().workspace) == null ? void 0 : _listenerApi$getOrigi.id;
3565
+ credentials = (_listenerApi$getState2 = listenerApi.getState().common) == null || (_listenerApi$getState2 = _listenerApi$getState2.auth) == null ? void 0 : _listenerApi$getState2.credentials;
4874
3566
  action = payload.action, workspaceId = payload.workspaceId, title = payload.title; // eslint-disable-next-line @typescript-eslint/naming-convention
4875
3567
  is_shared = 'is_shared' in payload ? payload.is_shared : undefined;
3568
+ _context2.next = 8;
3569
+ return getQueryClient().invalidateQueries(workspaceQueryOptions.getWorkspacePreset(workspaceId, credentials));
3570
+ case 8:
3571
+ _context2.next = 10;
3572
+ return getQueryClient().invalidateQueries({
3573
+ queryKey: workspaceQueryOptions.keys.lists()
3574
+ });
3575
+ case 10:
4876
3576
  listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage$1(action, title, is_shared)));
4877
3577
  // if active workspace has been deleted, empty out url
4878
3578
  if ((action === WorkspacePresetAction.DELETE || action === WorkspacePresetAction.DELETE_SYSTEM_PRESET) && currentWorkspaceId && workspaceId === currentWorkspaceId) {
@@ -4889,7 +3589,7 @@ workspaceListListener.startListening({
4889
3589
  // Retrieve new list with current search query
4890
3590
  searchQuery = getWorkspaceListSearchQuery(listenerApi.getState());
4891
3591
  listenerApi.dispatch(workspaceListActions.fetchWorkspaceList(constructFilterParams([], searchQuery)));
4892
- case 10:
3592
+ case 15:
4893
3593
  case "end":
4894
3594
  return _context2.stop();
4895
3595
  }
@@ -4905,15 +3605,15 @@ workspaceListListener.startListening({
4905
3605
  actionCreator: workspaceListActions.submitFormWorkspaceActionDialogOptions,
4906
3606
  effect: function () {
4907
3607
  var _effect3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3, listenerApi) {
4908
- var _listenerApi$getState;
4909
- 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$getState2, _credentials, hasChanges, message, category;
3608
+ var _listenerApi$getState3;
3609
+ 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$getState4, _credentials, hasChanges, message, category;
4910
3610
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
4911
3611
  while (1) switch (_context3.prev = _context3.next) {
4912
3612
  case 0:
4913
3613
  payload = _ref3.payload;
4914
3614
  listenerApi.cancelActiveListeners();
4915
3615
  workspaceState = listenerApi.getState();
4916
- credentials = (_listenerApi$getState = listenerApi.getState().common) == null || (_listenerApi$getState = _listenerApi$getState.auth) == null ? void 0 : _listenerApi$getState.credentials;
3616
+ credentials = (_listenerApi$getState3 = listenerApi.getState().common) == null || (_listenerApi$getState3 = _listenerApi$getState3.auth) == null ? void 0 : _listenerApi$getState3.credentials;
4917
3617
  _context3.prev = 4;
4918
3618
  presetId = payload.presetId, presetAction = payload.presetAction, data = payload.data, emptyMapPresetTitle = payload.emptyMapPresetTitle, emptyWorkspacePresetTitle = payload.emptyWorkspacePresetTitle;
4919
3619
  scope = data.scope || 'user'; // duplicate
@@ -5026,7 +3726,7 @@ workspaceListListener.startListening({
5026
3726
  _context3.next = 44;
5027
3727
  break;
5028
3728
  }
5029
- _credentials = (_listenerApi$getState2 = listenerApi.getState().common) == null || (_listenerApi$getState2 = _listenerApi$getState2.auth) == null ? void 0 : _listenerApi$getState2.credentials;
3729
+ _credentials = (_listenerApi$getState4 = listenerApi.getState().common) == null || (_listenerApi$getState4 = _listenerApi$getState4.auth) == null ? void 0 : _listenerApi$getState4.credentials;
5030
3730
  _context3.next = 42;
5031
3731
  return getQueryClient().fetchQuery(workspaceQueryOptions.saveWorkspacePresetAs(newWorkspace, _credentials));
5032
3732
  case 42:
@@ -5200,6 +3900,7 @@ workspaceListener.startListening({
5200
3900
  _context4.next = 6;
5201
3901
  return listenerApi.take(workspaceActions.teardownComplete.match);
5202
3902
  case 6:
3903
+ listenerApi.dispatch(timeSeriesActions.resetTimeSeriesPanels());
5203
3904
  listenerApi.dispatch(syncGroupsActions.syncGroupClear());
5204
3905
  listenerApi.dispatch(workspaceActions.setPreset(payload));
5205
3906
  allSyncGroups = getSyncGroups(payload.workspacePreset.syncGroups);
@@ -5214,7 +3915,7 @@ workspaceListener.startListening({
5214
3915
  isTimeScrollingEnabled: isTimeScrollingEnabled
5215
3916
  }));
5216
3917
  views = toViewsArray(payload.workspacePreset.views);
5217
- _context4.next = 16;
3918
+ _context4.next = 17;
5218
3919
  return Promise.all(views.map(/*#__PURE__*/function () {
5219
3920
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(view) {
5220
3921
  var _view$initialProps$sy, _view$initialProps;
@@ -5246,7 +3947,7 @@ workspaceListener.startListening({
5246
3947
  return _ref4.apply(this, arguments);
5247
3948
  };
5248
3949
  }()));
5249
- case 16:
3950
+ case 17:
5250
3951
  views.forEach(function (view) {
5251
3952
  var panelId = view.mosaicNodeId;
5252
3953
  if (!panelId) {
@@ -5258,7 +3959,7 @@ workspaceListener.startListening({
5258
3959
  isInline: hasInlineConfig
5259
3960
  }));
5260
3961
  });
5261
- case 17:
3962
+ case 18:
5262
3963
  case "end":
5263
3964
  return _context4.stop();
5264
3965
  }
@@ -5890,19 +4591,39 @@ viewPresetsListener.startListening({
5890
4591
  }()
5891
4592
  });
5892
4593
  var saveViewPresetEffect = /*#__PURE__*/function () {
5893
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref4, listenerApi) {
5894
- var payload, panelId, viewPreset, viewPresetId, workspaceApi;
5895
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
5896
- while (1) switch (_context4.prev = _context4.next) {
4594
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref2, listenerApi) {
4595
+ var payload, panelId, viewPreset, viewPresetId, hasChanges, _listenerApi$getState3, credentials;
4596
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
4597
+ while (1) switch (_context3.prev = _context3.next) {
5897
4598
  case 0:
5898
- payload = _ref4.payload;
4599
+ payload = _ref2.payload;
5899
4600
  listenerApi.cancelActiveListeners();
5900
4601
  panelId = payload.panelId, viewPreset = payload.viewPreset, viewPresetId = payload.viewPresetId;
5901
- _context4.prev = 3;
5902
- workspaceApi = getWorkspaceApi();
5903
- _context4.next = 7;
5904
- return workspaceApi.saveViewPreset(viewPresetId, viewPreset);
5905
- case 7:
4602
+ hasChanges = getViewPresetHasChanges(listenerApi.getState(), panelId);
4603
+ if (hasChanges) {
4604
+ _context3.next = 8;
4605
+ break;
4606
+ }
4607
+ listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(PresetAction.SAVE, viewPreset.title)));
4608
+ listenerApi.dispatch(viewPresetActions.savedViewPreset({
4609
+ panelId: panelId,
4610
+ viewPresetId: viewPresetId
4611
+ }));
4612
+ return _context3.abrupt("return");
4613
+ case 8:
4614
+ _context3.prev = 8;
4615
+ credentials = (_listenerApi$getState3 = listenerApi.getState().common) == null || (_listenerApi$getState3 = _listenerApi$getState3.auth) == null ? void 0 : _listenerApi$getState3.credentials;
4616
+ _context3.next = 12;
4617
+ return getQueryClient().fetchQuery(viewpresetQueryOptions.saveViewPreset(viewPresetId, viewPreset, credentials));
4618
+ case 12:
4619
+ _context3.next = 14;
4620
+ return getQueryClient().invalidateQueries(viewpresetQueryOptions.getViewPreset(viewPresetId));
4621
+ case 14:
4622
+ _context3.next = 16;
4623
+ return getQueryClient().invalidateQueries({
4624
+ queryKey: viewpresetQueryOptions.keys.lists()
4625
+ });
4626
+ case 16:
5906
4627
  listenerApi.dispatch(snackbarActions.openSnackbar(getSnackbarMessage(PresetAction.SAVE, viewPreset.title)));
5907
4628
  listenerApi.dispatch(viewPresetActions.savedViewPreset({
5908
4629
  panelId: panelId,
@@ -5913,24 +4634,24 @@ var saveViewPresetEffect = /*#__PURE__*/function () {
5913
4634
  viewPresetId: viewPresetId,
5914
4635
  viewPreset: viewPreset
5915
4636
  }));
5916
- return _context4.abrupt("return", viewPreset);
5917
- case 13:
5918
- _context4.prev = 13;
5919
- _context4.t0 = _context4["catch"](3);
4637
+ _context3.next = 24;
4638
+ break;
4639
+ case 21:
4640
+ _context3.prev = 21;
4641
+ _context3.t0 = _context3["catch"](8);
5920
4642
  listenerApi.dispatch(viewPresetActions.errorViewPreset({
5921
- error: processError(_context4.t0, ViewPresetErrorComponent.PRESET_DETAIL, 'workspace-mappreset-error-save'),
4643
+ error: processError(_context3.t0, ViewPresetErrorComponent.PRESET_DETAIL, 'workspace-mappreset-error-save'),
5922
4644
  panelId: panelId,
5923
4645
  viewPresetId: viewPresetId
5924
4646
  }));
5925
- return _context4.abrupt("return", _context4.t0);
5926
- case 17:
4647
+ case 24:
5927
4648
  case "end":
5928
- return _context4.stop();
4649
+ return _context3.stop();
5929
4650
  }
5930
- }, _callee4, null, [[3, 13]]);
4651
+ }, _callee3, null, [[8, 21]]);
5931
4652
  }));
5932
- return function saveViewPresetEffect(_x7, _x8) {
5933
- return _ref5.apply(this, arguments);
4653
+ return function saveViewPresetEffect(_x5, _x6) {
4654
+ return _ref3.apply(this, arguments);
5934
4655
  };
5935
4656
  }();
5936
4657
  // save view preset
@@ -5942,12 +4663,12 @@ viewPresetsListener.startListening({
5942
4663
  viewPresetsListener.startListening({
5943
4664
  actionCreator: viewPresetActions.selectViewPreset,
5944
4665
  effect: function () {
5945
- var _effect3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref6, listenerApi) {
4666
+ var _effect3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref4, listenerApi) {
5946
4667
  var payload, panelId, _payload$viewPresetId, viewPresetId, isMapAnimating;
5947
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
5948
- while (1) switch (_context5.prev = _context5.next) {
4668
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
4669
+ while (1) switch (_context4.prev = _context4.next) {
5949
4670
  case 0:
5950
- payload = _ref6.payload;
4671
+ payload = _ref4.payload;
5951
4672
  listenerApi.cancelActiveListeners();
5952
4673
  panelId = payload.panelId, _payload$viewPresetId = payload.viewPresetId, viewPresetId = _payload$viewPresetId === void 0 ? '' : _payload$viewPresetId;
5953
4674
  isMapAnimating = mapSelectors.isAnimating(listenerApi.getState(), panelId);
@@ -5981,11 +4702,11 @@ viewPresetsListener.startListening({
5981
4702
  }
5982
4703
  case 6:
5983
4704
  case "end":
5984
- return _context5.stop();
4705
+ return _context4.stop();
5985
4706
  }
5986
- }, _callee5);
4707
+ }, _callee4);
5987
4708
  }));
5988
- function effect(_x9, _x0) {
4709
+ function effect(_x7, _x8) {
5989
4710
  return _effect3.apply(this, arguments);
5990
4711
  }
5991
4712
  return effect;
@@ -5995,19 +4716,19 @@ viewPresetsListener.startListening({
5995
4716
  viewPresetsListener.startListening({
5996
4717
  actionCreator: viewPresetActions.onSuccessViewPresetAction,
5997
4718
  effect: function () {
5998
- var _effect4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref7, listenerApi) {
5999
- var payload, action, viewPresetId, title, panelId, is_shared, activeMapPresetId, hasChanges, viewPresetFilters, viewPresetSearchQuery;
6000
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
6001
- while (1) switch (_context6.prev = _context6.next) {
4719
+ var _effect4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref5, listenerApi) {
4720
+ var payload, action, viewPresetId, title, panelId, is_shared, activeMapPresetId, hasChanges, viewPresetSearchQuery;
4721
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
4722
+ while (1) switch (_context5.prev = _context5.next) {
6002
4723
  case 0:
6003
- payload = _ref7.payload;
4724
+ payload = _ref5.payload;
6004
4725
  listenerApi.cancelActiveListeners();
6005
4726
  action = payload.action, viewPresetId = payload.viewPresetId, title = payload.title, panelId = payload.panelId; // eslint-disable-next-line @typescript-eslint/naming-convention
6006
4727
  is_shared = 'is_shared' in payload ? payload.is_shared : undefined;
6007
- _context6.next = 6;
4728
+ _context5.next = 6;
6008
4729
  return getQueryClient().invalidateQueries(viewpresetQueryOptions.getViewPreset(viewPresetId));
6009
4730
  case 6:
6010
- _context6.next = 8;
4731
+ _context5.next = 8;
6011
4732
  return getQueryClient().invalidateQueries({
6012
4733
  queryKey: viewpresetQueryOptions.keys.lists()
6013
4734
  });
@@ -6023,15 +4744,16 @@ viewPresetsListener.startListening({
6023
4744
  }));
6024
4745
  hasChanges = true;
6025
4746
  }
6026
- // Fetch the full list to update the list store with the latest presets
6027
- listenerApi.dispatch(viewPresetsListActions.fetchViewPresetsList());
6028
- // Also retrieve new list with current filter and search query for current panel
6029
- viewPresetFilters = getViewPresetListFiltersForView(listenerApi.getState(), panelId);
6030
4747
  viewPresetSearchQuery = getViewPresetListSearchQueryForView(listenerApi.getState(), panelId);
6031
- listenerApi.dispatch(viewPresetActions.fetchViewPresets({
6032
- panelId: panelId,
6033
- filterParams: constructFilterParams(viewPresetFilters, viewPresetSearchQuery)
6034
- }));
4748
+ if (viewPresetSearchQuery != null && viewPresetSearchQuery.trim().length) {
4749
+ listenerApi.dispatch(viewPresetActions.fetchViewPresets({
4750
+ panelId: panelId,
4751
+ filterParams: constructFilterParams([], viewPresetSearchQuery)
4752
+ }));
4753
+ } else {
4754
+ // Fetch the full list to update the list store with the latest presets
4755
+ listenerApi.dispatch(viewPresetsListActions.fetchViewPresetsList());
4756
+ }
6035
4757
  if (action !== PresetAction.EDIT) {
6036
4758
  listenerApi.dispatch(viewPresetActions.setViewPresetHasChanges({
6037
4759
  panelId: panelId,
@@ -6049,11 +4771,11 @@ viewPresetsListener.startListening({
6049
4771
  }
6050
4772
  case 9:
6051
4773
  case "end":
6052
- return _context6.stop();
4774
+ return _context5.stop();
6053
4775
  }
6054
- }, _callee6);
4776
+ }, _callee5);
6055
4777
  }));
6056
- function effect(_x1, _x10) {
4778
+ function effect(_x9, _x0) {
6057
4779
  return _effect4.apply(this, arguments);
6058
4780
  }
6059
4781
  return effect;
@@ -6183,23 +4905,17 @@ var WorkspaceStoreWrapper = function WorkspaceStoreWrapper(_ref3) {
6183
4905
  var children = _ref3.children,
6184
4906
  _ref3$store = _ref3.store,
6185
4907
  store = _ref3$store === void 0 ? createMockStore() : _ref3$store,
6186
- _ref3$createApi = _ref3.createApi,
6187
- createApi$1 = _ref3$createApi === void 0 ? createApi : _ref3$createApi,
6188
4908
  _ref3$auth = _ref3.auth,
6189
4909
  auth = _ref3$auth === void 0 ? defaultAuthConfig : _ref3$auth;
6190
4910
  return jsx(AuthenticationProvider, {
6191
4911
  value: auth,
6192
4912
  children: jsx(QueryClientProviderWrapper, {
6193
4913
  mode: "test",
6194
- children: jsx(ApiProvider, {
6195
- createApi: createApi$1,
6196
- name: API_NAME,
6197
- children: jsx(Provider, {
6198
- store: store,
6199
- children: jsx(SnackbarWrapperConnect, {
6200
- children: jsx(ConfirmationServiceProvider, {
6201
- children: children
6202
- })
4914
+ children: jsx(Provider, {
4915
+ store: store,
4916
+ children: jsx(SnackbarWrapperConnect, {
4917
+ children: jsx(ConfirmationServiceProvider, {
4918
+ children: children
6203
4919
  })
6204
4920
  })
6205
4921
  })
@@ -6210,8 +4926,6 @@ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithSto
6210
4926
  var children = _ref4.children,
6211
4927
  _ref4$store = _ref4.store,
6212
4928
  store = _ref4$store === void 0 ? createMockStore() : _ref4$store,
6213
- _ref4$createApi = _ref4.createApi,
6214
- createApi$1 = _ref4$createApi === void 0 ? createApi : _ref4$createApi,
6215
4929
  theme = _ref4.theme,
6216
4930
  _ref4$auth = _ref4.auth,
6217
4931
  auth = _ref4$auth === void 0 ? defaultAuthConfig : _ref4$auth;
@@ -6220,7 +4934,6 @@ var WorkspaceWrapperProviderWithStore = function WorkspaceWrapperProviderWithSto
6220
4934
  children: jsx(WorkspaceI18nProvider, {
6221
4935
  children: jsx(WorkspaceStoreWrapper, {
6222
4936
  auth: auth,
6223
- createApi: createApi$1,
6224
4937
  store: store,
6225
4938
  children: children
6226
4939
  })
@@ -6236,21 +4949,6 @@ var WorkspaceI18nProvider = function WorkspaceI18nProvider(_ref5) {
6236
4949
  });
6237
4950
  };
6238
4951
 
6239
- var WorkspaceModuleProvider = function WorkspaceModuleProvider(_ref) {
6240
- var config = _ref.config,
6241
- auth = _ref.auth,
6242
- onSetAuth = _ref.onSetAuth,
6243
- children = _ref.children;
6244
- return jsx(ApiProvider, {
6245
- auth: auth,
6246
- config: config,
6247
- createApi: config.baseURL ? createApi$1 : createApi,
6248
- name: API_NAME,
6249
- onSetAuth: onSetAuth,
6250
- children: children
6251
- });
6252
- };
6253
-
6254
4952
  var _excluded$5 = ["component", "payload"];
6255
4953
  // takes a component and connects module methods with workspace store
6256
4954
  var ComponentsLookUpWrapper = function ComponentsLookUpWrapper(_ref) {
@@ -7214,8 +5912,8 @@ var onWorkspaceApiError = function onWorkspaceApiError(dispatch, error, t) {
7214
5912
  }));
7215
5913
  };
7216
5914
  var useDeleteWorkspacePreset = function useDeleteWorkspacePreset() {
7217
- var _useAuthenticationCon2 = useAuthenticationContext(),
7218
- auth = _useAuthenticationCon2.auth;
5915
+ var _useAuthenticationCon3 = useAuthenticationContext(),
5916
+ auth = _useAuthenticationCon3.auth;
7219
5917
  var _useSelector = useSelector(getWorkspaceActionFormValues),
7220
5918
  title = _useSelector.title;
7221
5919
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
@@ -7261,8 +5959,8 @@ var useDeleteWorkspacePreset = function useDeleteWorkspacePreset() {
7261
5959
  });
7262
5960
  };
7263
5961
  var useCreateWorkspacePreset = function useCreateWorkspacePreset() {
7264
- var _useAuthenticationCon3 = useAuthenticationContext(),
7265
- auth = _useAuthenticationCon3.auth;
5962
+ var _useAuthenticationCon4 = useAuthenticationContext(),
5963
+ auth = _useAuthenticationCon4.auth;
7266
5964
  var _useWorkspaceTranslat2 = useWorkspaceTranslation(),
7267
5965
  t = _useWorkspaceTranslat2.t;
7268
5966
  var dispatch = useDispatch();
@@ -7737,7 +6435,7 @@ var WorkspacePresetInfo = function WorkspacePresetInfo(_ref) {
7737
6435
  });
7738
6436
  };
7739
6437
 
7740
- var WORKSPACE_SELECT_LIST_ROW_HEIGHT = 41;
6438
+ var WORKSPACE_SELECT_LIST_ROW_HEIGHT = 40;
7741
6439
  var getPresetIcon = function getPresetIcon(preset, currentUsername) {
7742
6440
  if (preset.scope === 'system') {
7743
6441
  return jsx(WorkspacePresetsSystemIcon, {
@@ -7985,25 +6683,56 @@ var WorkspaceSelectListRow = function WorkspaceSelectListRow(_ref) {
7985
6683
  });
7986
6684
  };
7987
6685
 
7988
- var MIN_HEIGHT_SCROLLABLE_LIST = 88; // Slightly less than 2 rows
7989
- var LIST_PADDING_TOP = 8;
7990
- var DEFAULT_RESULTS_HEIGHT = 22;
7991
- // row height = height + margin
7992
- var rowHeight = WORKSPACE_SELECT_LIST_ROW_HEIGHT + 12;
7993
- var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
7994
- var workspacePresets = _ref.workspacePresets,
6686
+ var RowComponent = function RowComponent(_ref) {
6687
+ var index = _ref.index,
6688
+ style = _ref.style,
6689
+ items = _ref.items,
7995
6690
  currentSelectedId = _ref.currentSelectedId,
7996
6691
  onClickWorkspacePreset = _ref.onClickWorkspacePreset,
7997
6692
  onClickWorkspacePresetOption = _ref.onClickWorkspacePresetOption,
7998
- hideNewWorkspace = _ref.hideNewWorkspace,
6693
+ onOpenPresetInfo = _ref.onOpenPresetInfo,
6694
+ infoOpenPresetId = _ref.infoOpenPresetId,
7999
6695
  isEditable = _ref.isEditable,
8000
6696
  isAdmin = _ref.isAdmin,
8001
6697
  searchQuery = _ref.searchQuery,
8002
- newPreset = _ref.newPreset,
8003
- _ref$testIdPrefix = _ref.testIdPrefix,
8004
- testIdPrefix = _ref$testIdPrefix === void 0 ? 'workspace' : _ref$testIdPrefix,
8005
- onOpenPresetInfo = _ref.onOpenPresetInfo,
8006
- infoOpenPresetId = _ref.infoOpenPresetId;
6698
+ testIdPrefix = _ref.testIdPrefix;
6699
+ var preset = items[index];
6700
+ return jsx("div", {
6701
+ style: Object.assign({}, style, {
6702
+ paddingRight: '8px'
6703
+ }),
6704
+ children: jsx(WorkspaceSelectListRow, {
6705
+ infoOpenPresetId: infoOpenPresetId,
6706
+ isAdmin: isAdmin,
6707
+ isEditable: isEditable,
6708
+ isSelected: currentSelectedId === preset.id || currentSelectedId === '' && preset.id === undefined,
6709
+ onClickWorkspacePreset: onClickWorkspacePreset,
6710
+ onClickWorkspacePresetOption: onClickWorkspacePresetOption,
6711
+ onOpenPresetInfo: onOpenPresetInfo,
6712
+ searchQuery: searchQuery,
6713
+ testIdPrefix: testIdPrefix,
6714
+ workspacePreset: preset
6715
+ })
6716
+ }, preset.id || 'emptyPreset');
6717
+ };
6718
+ var MIN_HEIGHT_SCROLLABLE_LIST = 88; // Slightly less than 2 rows
6719
+ var LIST_PADDING_TOP = 8;
6720
+ // row height = height + margin
6721
+ var rowHeight = WORKSPACE_SELECT_LIST_ROW_HEIGHT + 12;
6722
+ var WorkspaceSelectList = function WorkspaceSelectList(_ref2) {
6723
+ var workspacePresets = _ref2.workspacePresets,
6724
+ currentSelectedId = _ref2.currentSelectedId,
6725
+ onClickWorkspacePreset = _ref2.onClickWorkspacePreset,
6726
+ onClickWorkspacePresetOption = _ref2.onClickWorkspacePresetOption,
6727
+ hideNewWorkspace = _ref2.hideNewWorkspace,
6728
+ isEditable = _ref2.isEditable,
6729
+ isAdmin = _ref2.isAdmin,
6730
+ searchQuery = _ref2.searchQuery,
6731
+ newPreset = _ref2.newPreset,
6732
+ _ref2$testIdPrefix = _ref2.testIdPrefix,
6733
+ testIdPrefix = _ref2$testIdPrefix === void 0 ? 'workspace' : _ref2$testIdPrefix,
6734
+ onOpenPresetInfo = _ref2.onOpenPresetInfo,
6735
+ infoOpenPresetId = _ref2.infoOpenPresetId;
8007
6736
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
8008
6737
  t = _useWorkspaceTranslat.t;
8009
6738
  var newPresetTruthy = newPreset || getEmptyWorkspaceListItem(t);
@@ -8024,46 +6753,28 @@ var WorkspaceSelectList = function WorkspaceSelectList(_ref) {
8024
6753
  ml: 0.5
8025
6754
  },
8026
6755
  children: [workspacePresets.length, " ", t('workspace-results')]
8027
- }), jsx(AutoSizer, {
8028
- children: function children(_ref2) {
8029
- var _ref2$height = _ref2.height,
8030
- height = _ref2$height === void 0 ? 0 : _ref2$height,
8031
- _ref2$width = _ref2.width,
8032
- width = _ref2$width === void 0 ? 0 : _ref2$width;
8033
- return jsx(Box, {
8034
- sx: {
8035
- paddingTop: LIST_PADDING_TOP + "px"
8036
- },
8037
- children: jsx(FixedSizeList, {
8038
- height: height - DEFAULT_RESULTS_HEIGHT,
8039
- itemCount: items.length,
8040
- itemSize: rowHeight,
8041
- width: width,
8042
- children: function children(_ref3) {
8043
- var index = _ref3.index,
8044
- style = _ref3.style;
8045
- var preset = items[index];
8046
- return jsx("div", {
8047
- style: Object.assign({}, style, {
8048
- paddingRight: '8px'
8049
- }),
8050
- children: jsx(WorkspaceSelectListRow, {
8051
- infoOpenPresetId: infoOpenPresetId,
8052
- isAdmin: isAdmin,
8053
- isEditable: isEditable,
8054
- isSelected: currentSelectedId === preset.id || currentSelectedId === '' && preset.id === undefined,
8055
- onClickWorkspacePreset: onClickWorkspacePreset,
8056
- onClickWorkspacePresetOption: onClickWorkspacePresetOption,
8057
- onOpenPresetInfo: onOpenPresetInfo,
8058
- searchQuery: searchQuery,
8059
- testIdPrefix: testIdPrefix,
8060
- workspacePreset: preset
8061
- })
8062
- }, preset.id || 'emptyPreset');
8063
- }
8064
- })
8065
- });
8066
- }
6756
+ }), jsx(Box, {
6757
+ sx: {
6758
+ paddingTop: LIST_PADDING_TOP + "px",
6759
+ height: "calc(100% - 24px)"
6760
+ },
6761
+ children: jsx(List$1, {
6762
+ rowComponent: RowComponent,
6763
+ rowCount: items.length,
6764
+ rowHeight: rowHeight,
6765
+ rowProps: {
6766
+ items: items,
6767
+ currentSelectedId: currentSelectedId,
6768
+ onClickWorkspacePreset: onClickWorkspacePreset,
6769
+ onClickWorkspacePresetOption: onClickWorkspacePresetOption,
6770
+ onOpenPresetInfo: onOpenPresetInfo,
6771
+ infoOpenPresetId: infoOpenPresetId,
6772
+ isEditable: isEditable,
6773
+ isAdmin: isAdmin,
6774
+ searchQuery: searchQuery,
6775
+ testIdPrefix: testIdPrefix
6776
+ }
6777
+ })
8067
6778
  })]
8068
6779
  });
8069
6780
  };
@@ -8145,7 +6856,7 @@ var ViewPresetMenuListConnect = function ViewPresetMenuListConnect(_ref) {
8145
6856
  return mapSelectors.getMapPreset(store, panelId);
8146
6857
  });
8147
6858
  var currentTimeSeriesPreset = useSelector(function (store) {
8148
- return timeSeriesSelectors.getTimeSeriesPreset(store);
6859
+ return timeSeriesSelectors.getTimeSeriesPreset(store, panelId);
8149
6860
  });
8150
6861
  var currentWarningsPreset = useSelector(function (store) {
8151
6862
  return publicWarningsSelectors.getWarningsPresetById(store, panelId);
@@ -8695,6 +7406,22 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8695
7406
  var filterParams = constructFilterParams([], workspaceSearchQuery);
8696
7407
  dispatch(workspaceListActions.fetchWorkspaceList(filterParams));
8697
7408
  }, [dispatch, workspaceSearchQuery]);
7409
+ var refreshWorkspacePresets = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
7410
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
7411
+ while (1) switch (_context.prev = _context.next) {
7412
+ case 0:
7413
+ _context.next = 2;
7414
+ return getQueryClient().invalidateQueries({
7415
+ queryKey: workspaceQueryOptions.keys.lists()
7416
+ });
7417
+ case 2:
7418
+ fetchWorkspaceList();
7419
+ case 3:
7420
+ case "end":
7421
+ return _context.stop();
7422
+ }
7423
+ }, _callee);
7424
+ })), [fetchWorkspaceList]);
8698
7425
  var fetchWorkspace = React.useCallback(function (workspaceId) {
8699
7426
  dispatch(workspaceActions.fetchWorkspace({
8700
7427
  workspaceId: workspaceId
@@ -8764,18 +7491,18 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8764
7491
  return result;
8765
7492
  }, [currentView]);
8766
7493
  var onClickWorkspacePresetOption = /*#__PURE__*/function () {
8767
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(presetId, workspaceAction) {
7494
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(presetId, workspaceAction) {
8768
7495
  var affectedPreset, presetTitle, _currentView$syncGrou, currentViews, adminMetadata, buildFormValues, url;
8769
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
8770
- while (1) switch (_context2.prev = _context2.next) {
7496
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
7497
+ while (1) switch (_context3.prev = _context3.next) {
8771
7498
  case 0:
8772
7499
  // If affectedPreset is the FE defined `New workspace` - use the definition from FE instead of BE
8773
7500
  affectedPreset = presetId === getEmptyMapWorkspace(t).id ? getEmptyMapWorkspace(t) : workspacePresets.find(function (preset) {
8774
7501
  return preset.id === presetId;
8775
7502
  });
8776
7503
  presetTitle = affectedPreset == null ? void 0 : affectedPreset.title;
8777
- _context2.t0 = workspaceAction;
8778
- _context2.next = _context2.t0 === WorkspacePresetAction.DUPLICATE ? 5 : _context2.t0 === WorkspacePresetAction.EDIT ? 8 : _context2.t0 === WorkspacePresetAction.DELETE ? 16 : _context2.t0 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 18 : _context2.t0 === WorkspacePresetAction.SHARE ? 20 : _context2.t0 === WorkspacePresetAction.OPEN_TAB ? 22 : 25;
7504
+ _context3.t0 = workspaceAction;
7505
+ _context3.next = _context3.t0 === WorkspacePresetAction.DUPLICATE ? 5 : _context3.t0 === WorkspacePresetAction.EDIT ? 8 : _context3.t0 === WorkspacePresetAction.DELETE ? 16 : _context3.t0 === WorkspacePresetAction.DELETE_SYSTEM_PRESET ? 18 : _context3.t0 === WorkspacePresetAction.SHARE ? 20 : _context3.t0 === WorkspacePresetAction.OPEN_TAB ? 22 : 25;
8779
7506
  break;
8780
7507
  case 5:
8781
7508
  currentViews = currentViewsToBE();
@@ -8793,30 +7520,30 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8793
7520
  syncGroups: (_currentView$syncGrou = currentView.syncGroups) != null ? _currentView$syncGrou : []
8794
7521
  }
8795
7522
  });
8796
- return _context2.abrupt("break", 26);
7523
+ return _context3.abrupt("break", 26);
8797
7524
  case 8:
8798
7525
  adminMetadata = isAdmin && auth != null && auth.username ? {
8799
7526
  updated: new Date().toISOString(),
8800
7527
  updatedBy: auth.username
8801
7528
  } : {};
8802
7529
  buildFormValues = function buildFormValues(presetDetails, presetViews) {
8803
- var _ref3, _presetDetails$title, _presetDetails$abstra, _presetDetails$descri, _presetDetails$labels, _ref4, _presetDetails$mosaic, _presetDetails$scope;
7530
+ var _ref4, _presetDetails$title, _presetDetails$abstra, _presetDetails$descri, _presetDetails$labels, _ref5, _presetDetails$mosaic, _presetDetails$scope;
8804
7531
  if (presetViews === void 0) {
8805
7532
  presetViews = [];
8806
7533
  }
8807
7534
  return Object.assign({
8808
- title: (_ref3 = (_presetDetails$title = presetDetails == null ? void 0 : presetDetails.title) != null ? _presetDetails$title : presetTitle) != null ? _ref3 : '',
7535
+ title: (_ref4 = (_presetDetails$title = presetDetails == null ? void 0 : presetDetails.title) != null ? _presetDetails$title : presetTitle) != null ? _ref4 : '',
8809
7536
  "abstract": (_presetDetails$abstra = presetDetails == null ? void 0 : presetDetails["abstract"]) != null ? _presetDetails$abstra : affectedPreset == null ? void 0 : affectedPreset["abstract"],
8810
7537
  description: (_presetDetails$descri = presetDetails == null ? void 0 : presetDetails.description) != null ? _presetDetails$descri : affectedPreset == null ? void 0 : affectedPreset.description,
8811
7538
  labels: (_presetDetails$labels = presetDetails == null ? void 0 : presetDetails.labels) != null ? _presetDetails$labels : affectedPreset == null ? void 0 : affectedPreset.labels,
8812
- mosaicNode: (_ref4 = (_presetDetails$mosaic = presetDetails == null ? void 0 : presetDetails.mosaicNode) != null ? _presetDetails$mosaic : currentView == null ? void 0 : currentView.mosaicNode) != null ? _ref4 : undefined,
7539
+ mosaicNode: (_ref5 = (_presetDetails$mosaic = presetDetails == null ? void 0 : presetDetails.mosaicNode) != null ? _presetDetails$mosaic : currentView == null ? void 0 : currentView.mosaicNode) != null ? _ref5 : undefined,
8813
7540
  scope: (_presetDetails$scope = presetDetails == null ? void 0 : presetDetails.scope) != null ? _presetDetails$scope : scope,
8814
7541
  views: presetViews,
8815
7542
  updated: new Date().toISOString()
8816
7543
  }, adminMetadata);
8817
7544
  }; // If editing the active workspace, keep using the current workspace data
8818
7545
  if (!(presetId === (currentView == null ? void 0 : currentView.id) || !auth)) {
8819
- _context2.next = 13;
7546
+ _context3.next = 13;
8820
7547
  break;
8821
7548
  }
8822
7549
  setWorkspaceActionDialogOptions({
@@ -8824,7 +7551,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8824
7551
  presetId: presetId,
8825
7552
  formValues: buildFormValues(currentView, currentViewsToBE())
8826
7553
  });
8827
- return _context2.abrupt("break", 26);
7554
+ return _context3.abrupt("break", 26);
8828
7555
  case 13:
8829
7556
  // Open dialog immediately with basic data, then hydrate with full preset once fetched
8830
7557
  setWorkspaceActionDialogOptions({
@@ -8848,7 +7575,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8848
7575
  }
8849
7576
  }));
8850
7577
  });
8851
- return _context2.abrupt("break", 26);
7578
+ return _context3.abrupt("break", 26);
8852
7579
  case 16:
8853
7580
  setWorkspaceActionDialogOptions({
8854
7581
  action: workspaceAction,
@@ -8858,7 +7585,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8858
7585
  scope: scope
8859
7586
  }
8860
7587
  });
8861
- return _context2.abrupt("break", 26);
7588
+ return _context3.abrupt("break", 26);
8862
7589
  case 18:
8863
7590
  setWorkspaceActionDialogOptions({
8864
7591
  action: workspaceAction,
@@ -8868,14 +7595,14 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8868
7595
  scope: scope
8869
7596
  }
8870
7597
  });
8871
- return _context2.abrupt("break", 26);
7598
+ return _context3.abrupt("break", 26);
8872
7599
  case 20:
8873
7600
  void getWorkspace(presetId, auth).then(/*#__PURE__*/function () {
8874
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(preset) {
8875
- return _regeneratorRuntime().wrap(function _callee$(_context) {
8876
- while (1) switch (_context.prev = _context.next) {
7601
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(preset) {
7602
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
7603
+ while (1) switch (_context2.prev = _context2.next) {
8877
7604
  case 0:
8878
- return _context.abrupt("return", updateWorkspace(presetId, Object.assign({}, preset, {
7605
+ return _context2.abrupt("return", updateWorkspace(presetId, Object.assign({}, preset, {
8879
7606
  is_shared: !preset.is_shared
8880
7607
  }), auth).then(function () {
8881
7608
  dispatch(workspaceListActions.onSuccessWorkspacePresetAction({
@@ -8897,29 +7624,29 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8897
7624
  }));
8898
7625
  case 1:
8899
7626
  case "end":
8900
- return _context.stop();
7627
+ return _context2.stop();
8901
7628
  }
8902
- }, _callee);
7629
+ }, _callee2);
8903
7630
  }));
8904
7631
  return function (_x3) {
8905
- return _ref5.apply(this, arguments);
7632
+ return _ref6.apply(this, arguments);
8906
7633
  };
8907
7634
  }());
8908
- return _context2.abrupt("break", 26);
7635
+ return _context3.abrupt("break", 26);
8909
7636
  case 22:
8910
7637
  url = getWorkspaceRouteUrl(presetId);
8911
7638
  window.open(url, '_blank');
8912
- return _context2.abrupt("break", 26);
7639
+ return _context3.abrupt("break", 26);
8913
7640
  case 25:
8914
- return _context2.abrupt("break", 26);
7641
+ return _context3.abrupt("break", 26);
8915
7642
  case 26:
8916
7643
  case "end":
8917
- return _context2.stop();
7644
+ return _context3.stop();
8918
7645
  }
8919
- }, _callee2);
7646
+ }, _callee3);
8920
7647
  }));
8921
7648
  return function onClickWorkspacePresetOption(_x, _x2) {
8922
- return _ref2.apply(this, arguments);
7649
+ return _ref3.apply(this, arguments);
8923
7650
  };
8924
7651
  }();
8925
7652
  var isAllSelected = workspaceListFilters.length > 0 && workspaceListFilters.every(function (filter) {
@@ -8974,7 +7701,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
8974
7701
  actionButtonProps: {
8975
7702
  title: t('workspace-retry'),
8976
7703
  onClick: function onClick() {
8977
- return fetchWorkspaceList();
7704
+ void refreshWorkspacePresets();
8978
7705
  }
8979
7706
  }
8980
7707
  }))
@@ -9044,7 +7771,7 @@ var WorkspaceSelectListConnect = function WorkspaceSelectListConnect(_ref) {
9044
7771
  marginLeft: 0
9045
7772
  },
9046
7773
  onPressRefresh: function onPressRefresh() {
9047
- return fetchWorkspaceList();
7774
+ void refreshWorkspacePresets();
9048
7775
  }
9049
7776
  })
9050
7777
  })]
@@ -9398,7 +8125,7 @@ var LoadingIndicatorConnect = function LoadingIndicatorConnect(_ref) {
9398
8125
 
9399
8126
  var _excluded$4 = ["title", "scope"];
9400
8127
  var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_ref) {
9401
- var _currentWorkspace$sco, _currentWorkspacePres;
8128
+ var _currentWorkspace$sco, _currentViewPreset$ab, _currentViewPreset$de, _currentViewPreset$la, _currentWorkspacePres;
9402
8129
  var panelId = _ref.panelId,
9403
8130
  isViewPresetDialogOpen = _ref.isViewPresetDialogOpen;
9404
8131
  var dispatch = useDispatch();
@@ -9458,9 +8185,9 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
9458
8185
  dispatch(workspaceActions.markWorkspaceChanged());
9459
8186
  }
9460
8187
  }, [hasViewPresetChanges, dispatch]);
9461
- var presetAbstract = workspaceView == null ? void 0 : workspaceView["abstract"];
9462
- var presetDescription = workspaceView == null ? void 0 : workspaceView.description;
9463
- var presetLabels = workspaceView == null ? void 0 : workspaceView.labels;
8188
+ var presetAbstract = (_currentViewPreset$ab = currentViewPreset == null ? void 0 : currentViewPreset["abstract"]) != null ? _currentViewPreset$ab : workspaceView == null ? void 0 : workspaceView["abstract"];
8189
+ var presetDescription = (_currentViewPreset$de = currentViewPreset == null ? void 0 : currentViewPreset.description) != null ? _currentViewPreset$de : workspaceView == null ? void 0 : workspaceView.description;
8190
+ var presetLabels = (_currentViewPreset$la = currentViewPreset == null ? void 0 : currentViewPreset.labels) != null ? _currentViewPreset$la : workspaceView == null ? void 0 : workspaceView.labels;
9464
8191
  var title = workspaceView.title || t('workspace-mappreset-new');
9465
8192
  var isNewActive = activeViewPresetId === '';
9466
8193
  var showChangedInViewTitle = !!hasViewPresetChanges;
@@ -9479,9 +8206,9 @@ var WorkspaceViewTitleConnectNoMemo = function WorkspaceViewTitleConnectNoMemo(_
9479
8206
  case 'WarningList':
9480
8207
  return currentWarningsPreset;
9481
8208
  case 'TimeSeries':
9482
- return timeSeriesSelectors.getTimeSeriesPreset(store.getState());
8209
+ return timeSeriesSelectors.getTimeSeriesPreset(store.getState(), panelId);
9483
8210
  case 'Soundings':
9484
- return soundingsSelectors.getSoundingsPreset(store.getState());
8211
+ return soundingsSelectors.getSoundingsPreset(store.getState(), panelId);
9485
8212
  case 'Map':
9486
8213
  return {
9487
8214
  mapPreset: mapSelectors.getMapPreset(store.getState(), panelId),
@@ -11068,7 +9795,9 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
11068
9795
  var shouldShowLabelsForm = action === PresetAction.SAVE_AS || action === PresetAction.EDIT;
11069
9796
  var marginBottom = 2;
11070
9797
  return jsxs(Fragment, {
11071
- children: [(action === PresetAction.SAVE_AS || action === PresetAction.EDIT) && jsx("form", {
9798
+ children: [Boolean(error) && jsx(AlertBanner, {
9799
+ title: error
9800
+ }), (action === PresetAction.SAVE_AS || action === PresetAction.EDIT) && jsx("form", {
11072
9801
  "data-testid": "map-preset-form",
11073
9802
  onSubmit: onSubmitForm,
11074
9803
  style: {
@@ -11080,9 +9809,7 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
11080
9809
  flexDirection: 'column',
11081
9810
  height: '100%'
11082
9811
  },
11083
- children: [Boolean(error) && jsx(AlertBanner, {
11084
- title: error
11085
- }), jsxs(Box, {
9812
+ children: [jsxs(Box, {
11086
9813
  sx: {
11087
9814
  flex: 1,
11088
9815
  minHeight: 360,
@@ -11230,12 +9957,106 @@ var ViewPresetsForm = function ViewPresetsForm(_ref) {
11230
9957
  position: 'relative',
11231
9958
  color: 'geowebColors.functional.warning'
11232
9959
  }
11233
- }), t('workspace-dialog-confirm-reset-view-message')]
11234
- }), jsx(ReactHookFormHiddenInput, {
11235
- defaultValue: title,
11236
- name: "title"
11237
- }, "title")]
11238
- })]
9960
+ }), t('workspace-dialog-confirm-reset-view-message')]
9961
+ }), jsx(ReactHookFormHiddenInput, {
9962
+ defaultValue: title,
9963
+ name: "title"
9964
+ }, "title")]
9965
+ })]
9966
+ });
9967
+ };
9968
+
9969
+ var useDeleteViewPreset = function useDeleteViewPreset() {
9970
+ var _useAuthenticationCon = useAuthenticationContext(),
9971
+ auth = _useAuthenticationCon.auth;
9972
+ return useMutation({
9973
+ mutationFn: function () {
9974
+ var _mutationFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
9975
+ var id;
9976
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
9977
+ while (1) switch (_context.prev = _context.next) {
9978
+ case 0:
9979
+ id = _ref.id;
9980
+ if (auth) {
9981
+ _context.next = 3;
9982
+ break;
9983
+ }
9984
+ throw new Error('Authentication context not found');
9985
+ case 3:
9986
+ return _context.abrupt("return", deleteViewPreset(id, auth));
9987
+ case 4:
9988
+ case "end":
9989
+ return _context.stop();
9990
+ }
9991
+ }, _callee);
9992
+ }));
9993
+ function mutationFn(_x) {
9994
+ return _mutationFn.apply(this, arguments);
9995
+ }
9996
+ return mutationFn;
9997
+ }()
9998
+ });
9999
+ };
10000
+ var useSaveViewPreset = function useSaveViewPreset() {
10001
+ var _useAuthenticationCon2 = useAuthenticationContext(),
10002
+ auth = _useAuthenticationCon2.auth;
10003
+ return useMutation({
10004
+ mutationFn: function () {
10005
+ var _mutationFn2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2) {
10006
+ var id, data;
10007
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
10008
+ while (1) switch (_context2.prev = _context2.next) {
10009
+ case 0:
10010
+ id = _ref2.id, data = _ref2.data;
10011
+ if (auth) {
10012
+ _context2.next = 3;
10013
+ break;
10014
+ }
10015
+ throw new Error('Authentication context not found');
10016
+ case 3:
10017
+ return _context2.abrupt("return", saveViewPreset(id, data, auth));
10018
+ case 4:
10019
+ case "end":
10020
+ return _context2.stop();
10021
+ }
10022
+ }, _callee2);
10023
+ }));
10024
+ function mutationFn(_x2) {
10025
+ return _mutationFn2.apply(this, arguments);
10026
+ }
10027
+ return mutationFn;
10028
+ }()
10029
+ });
10030
+ };
10031
+ var useSaveViewPresetAs = function useSaveViewPresetAs() {
10032
+ var _useAuthenticationCon3 = useAuthenticationContext(),
10033
+ auth = _useAuthenticationCon3.auth;
10034
+ return useMutation({
10035
+ mutationFn: function () {
10036
+ var _mutationFn3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3) {
10037
+ var data;
10038
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
10039
+ while (1) switch (_context3.prev = _context3.next) {
10040
+ case 0:
10041
+ data = _ref3.data;
10042
+ if (auth) {
10043
+ _context3.next = 3;
10044
+ break;
10045
+ }
10046
+ throw new Error('Authentication context not found');
10047
+ case 3:
10048
+ return _context3.abrupt("return", saveViewPresetAs(data, auth));
10049
+ case 4:
10050
+ case "end":
10051
+ return _context3.stop();
10052
+ }
10053
+ }, _callee3);
10054
+ }));
10055
+ function mutationFn(_x3) {
10056
+ return _mutationFn3.apply(this, arguments);
10057
+ }
10058
+ return mutationFn;
10059
+ }()
11239
10060
  });
11240
10061
  };
11241
10062
 
@@ -11256,11 +10077,13 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
11256
10077
  reset = _useFormContext.reset;
11257
10078
  var _useWorkspaceTranslat = useWorkspaceTranslation(),
11258
10079
  t = _useWorkspaceTranslat.t;
11259
- var _useApiContext = useApiContext(),
11260
- api = _useApiContext.api;
11261
10080
  var _useAuthenticationCon = useAuthenticationContext$1(),
11262
10081
  currentRole = _useAuthenticationCon.currentRole,
11263
10082
  auth = _useAuthenticationCon.auth;
10083
+ var _useSaveViewPreset = useSaveViewPreset(),
10084
+ saveViewPreset = _useSaveViewPreset.mutateAsync;
10085
+ var _useSaveViewPresetAs = useSaveViewPresetAs(),
10086
+ saveViewPresetAs = _useSaveViewPresetAs.mutateAsync;
11264
10087
  var isAdmin = (currentRole == null ? void 0 : currentRole.name) === GEOWEB_ROLE_PRESETS_ADMIN$1.name;
11265
10088
  var _React$useState = React.useState(),
11266
10089
  error = _React$useState[0],
@@ -11322,7 +10145,9 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
11322
10145
  break;
11323
10146
  case 10:
11324
10147
  _context.next = 12;
11325
- return api.saveViewPresetAs(newFormValues);
10148
+ return saveViewPresetAs({
10149
+ data: newFormValues
10150
+ });
11326
10151
  case 12:
11327
10152
  newId = _context.sent;
11328
10153
  handleSuccess(newId);
@@ -11348,7 +10173,10 @@ var ViewPresetsFormDialog = function ViewPresetsFormDialog(_ref) {
11348
10173
  scope: scope
11349
10174
  });
11350
10175
  _context.next = 25;
11351
- return api.saveViewPreset(viewPresetId, viewPresetEdited);
10176
+ return saveViewPreset({
10177
+ id: viewPresetId,
10178
+ data: viewPresetEdited
10179
+ });
11352
10180
  case 25:
11353
10181
  handleSuccess(viewPresetId);
11354
10182
  return _context.abrupt("break", 31);
@@ -11474,38 +10302,6 @@ var ViewPresetsFormDialogWrapper = function ViewPresetsFormDialogWrapper(_ref5)
11474
10302
  });
11475
10303
  };
11476
10304
 
11477
- var useDeleteViewPreset = function useDeleteViewPreset() {
11478
- var _useAuthenticationCon = useAuthenticationContext(),
11479
- auth = _useAuthenticationCon.auth;
11480
- return useMutation({
11481
- mutationFn: function () {
11482
- var _mutationFn = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref) {
11483
- var id;
11484
- return _regeneratorRuntime().wrap(function _callee$(_context) {
11485
- while (1) switch (_context.prev = _context.next) {
11486
- case 0:
11487
- id = _ref.id;
11488
- if (auth) {
11489
- _context.next = 3;
11490
- break;
11491
- }
11492
- throw new Error('Authentication context not found');
11493
- case 3:
11494
- return _context.abrupt("return", deleteViewPreset(id, auth));
11495
- case 4:
11496
- case "end":
11497
- return _context.stop();
11498
- }
11499
- }, _callee);
11500
- }));
11501
- function mutationFn(_x) {
11502
- return _mutationFn.apply(this, arguments);
11503
- }
11504
- return mutationFn;
11505
- }()
11506
- });
11507
- };
11508
-
11509
10305
  var ViewPresetsFormDialogConnect = function ViewPresetsFormDialogConnect(_ref) {
11510
10306
  var _dialogOptions$formVa;
11511
10307
  var _ref$scope = _ref.scope,
@@ -11683,6 +10479,1192 @@ var WorkspaceDetail = function WorkspaceDetail(_ref) {
11683
10479
  });
11684
10480
  };
11685
10481
 
10482
+ var workspacePresets = [
10483
+ {
10484
+ id: "screenConfigRadarTemp",
10485
+ title: "Radar and temperature",
10486
+ scope: "system",
10487
+ abstract: "",
10488
+ description: "Radar and temp preset multi",
10489
+ viewType: "multiWindow",
10490
+ views: [
10491
+ {
10492
+ mosaicNodeId: "viewA",
10493
+ componentType: "Map",
10494
+ initialProps: {
10495
+ mapPreset: {
10496
+ layers: [
10497
+ {
10498
+ name: "WorldMap_Light_Grey_Canvas",
10499
+ type: "twms",
10500
+ dimensions: [
10501
+ ],
10502
+ id: "layerid_64",
10503
+ opacity: 1,
10504
+ acceptanceTimeInMinutes: 60,
10505
+ enabled: true,
10506
+ layerType: "baseLayer",
10507
+ status: "default",
10508
+ useLatestReferenceTime: true
10509
+ },
10510
+ {
10511
+ service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
10512
+ name: "countryborders",
10513
+ format: "image/png",
10514
+ dimensions: [
10515
+ ],
10516
+ id: "layerid_63",
10517
+ opacity: 1,
10518
+ acceptanceTimeInMinutes: 60,
10519
+ enabled: true,
10520
+ layerType: "overLayer",
10521
+ status: "default",
10522
+ useLatestReferenceTime: true
10523
+ },
10524
+ {
10525
+ name: "Radar:suomi_dbz_eureffin",
10526
+ style: "Radar dbz Summer",
10527
+ format: "image/png",
10528
+ service: "https://openwms.fmi.fi/geoserver/wms?",
10529
+ dimensions: [
10530
+ ],
10531
+ id: "layerid_59",
10532
+ opacity: 1,
10533
+ acceptanceTimeInMinutes: 60,
10534
+ enabled: true,
10535
+ layerType: "mapLayer",
10536
+ status: "default",
10537
+ useLatestReferenceTime: true
10538
+ },
10539
+ {
10540
+ name: "radar_precipitation_intensity_nordic",
10541
+ style: "",
10542
+ format: "image/png",
10543
+ service: "https://public-wms.met.no/verportal/verportal.map?SERVICE=WMS&REQUEST=GetCapabilities",
10544
+ dimensions: [
10545
+ ],
10546
+ id: "layerid_60",
10547
+ opacity: 1,
10548
+ acceptanceTimeInMinutes: 60,
10549
+ enabled: true,
10550
+ layerType: "mapLayer",
10551
+ status: "default",
10552
+ useLatestReferenceTime: true
10553
+ },
10554
+ {
10555
+ name: "RAD_NL25_PCP_CM",
10556
+ style: "precip-blue-transparent/nearest",
10557
+ format: "image/png",
10558
+ service: "https://geoservices.knmi.nl/wms?dataset=RADAR",
10559
+ dimensions: [
10560
+ ],
10561
+ id: "layerid_61",
10562
+ opacity: 1,
10563
+ acceptanceTimeInMinutes: 60,
10564
+ enabled: true,
10565
+ layerType: "mapLayer",
10566
+ status: "default",
10567
+ useLatestReferenceTime: true
10568
+ }
10569
+ ],
10570
+ proj: {
10571
+ bbox: {
10572
+ left: -4537320.252629031,
10573
+ bottom: 6408480.451399999,
10574
+ right: 8563411.406429032,
10575
+ top: 11520588.9031
10576
+ },
10577
+ srs: "EPSG:3857"
10578
+ },
10579
+ shouldAnimate: false,
10580
+ shouldAutoUpdate: false,
10581
+ showTimeSlider: true,
10582
+ displayMapPin: false,
10583
+ shouldShowZoomControls: true,
10584
+ animationPayload: {
10585
+ interval: 60,
10586
+ speed: 4,
10587
+ duration: 290
10588
+ },
10589
+ toggleTimestepAuto: true,
10590
+ toggleTimeSpanAuto: true,
10591
+ shouldShowLegend: false,
10592
+ timeSliderSpan: 86400,
10593
+ shouldShowDataExplorer: false,
10594
+ defaultOverlayer: "countryborders"
10595
+ },
10596
+ syncGroupsIds: [
10597
+ "Area_radarTemp",
10598
+ "Time_radarTemp"
10599
+ ]
10600
+ },
10601
+ title: "Radar",
10602
+ originalViewPresetId: "Radar"
10603
+ },
10604
+ {
10605
+ mosaicNodeId: "viewB",
10606
+ componentType: "Map",
10607
+ initialProps: {
10608
+ mapPreset: {
10609
+ layers: [
10610
+ {
10611
+ name: "WorldMap_Light_Grey_Canvas",
10612
+ type: "twms",
10613
+ dimensions: [
10614
+ ],
10615
+ id: "layerid_71",
10616
+ opacity: 1,
10617
+ acceptanceTimeInMinutes: 60,
10618
+ enabled: true,
10619
+ layerType: "baseLayer",
10620
+ status: "default",
10621
+ useLatestReferenceTime: true
10622
+ },
10623
+ {
10624
+ service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
10625
+ name: "countryborders",
10626
+ format: "image/png",
10627
+ dimensions: [
10628
+ ],
10629
+ id: "layerid_70",
10630
+ opacity: 1,
10631
+ acceptanceTimeInMinutes: 60,
10632
+ enabled: true,
10633
+ layerType: "overLayer",
10634
+ status: "default",
10635
+ useLatestReferenceTime: true
10636
+ },
10637
+ {
10638
+ name: "10M/ta",
10639
+ service: "https://geoservices.knmi.nl/adagucserver?dataset=OBS",
10640
+ dimensions: [
10641
+ ],
10642
+ id: "layerid_67",
10643
+ opacity: 1,
10644
+ acceptanceTimeInMinutes: 60,
10645
+ enabled: true,
10646
+ layerType: "mapLayer",
10647
+ status: "default",
10648
+ useLatestReferenceTime: true
10649
+ },
10650
+ {
10651
+ name: "t850_public",
10652
+ service: "https://eccharts.ecmwf.int/wms/?token=public",
10653
+ dimensions: [
10654
+ ],
10655
+ id: "layerid_68",
10656
+ opacity: 0.8,
10657
+ acceptanceTimeInMinutes: 60,
10658
+ enabled: true,
10659
+ layerType: "mapLayer",
10660
+ status: "default",
10661
+ useLatestReferenceTime: true
10662
+ }
10663
+ ],
10664
+ proj: {
10665
+ bbox: {
10666
+ left: -4537320.252629031,
10667
+ bottom: 6408480.451399999,
10668
+ right: 8563411.406429032,
10669
+ top: 11520588.9031
10670
+ },
10671
+ srs: "EPSG:3857"
10672
+ },
10673
+ shouldAnimate: false,
10674
+ shouldAutoUpdate: false,
10675
+ showTimeSlider: true,
10676
+ displayMapPin: false,
10677
+ shouldShowZoomControls: true,
10678
+ animationPayload: {
10679
+ interval: 60,
10680
+ speed: 4,
10681
+ duration: 290
10682
+ },
10683
+ toggleTimestepAuto: true,
10684
+ toggleTimeSpanAuto: true,
10685
+ shouldShowLegend: false,
10686
+ timeSliderSpan: 86400,
10687
+ shouldShowDataExplorer: false,
10688
+ defaultOverlayer: "countryborders"
10689
+ },
10690
+ syncGroupsIds: [
10691
+ "Area_radarTemp",
10692
+ "Time_radarTemp"
10693
+ ]
10694
+ },
10695
+ title: "Temperature"
10696
+ }
10697
+ ],
10698
+ syncGroups: [
10699
+ {
10700
+ id: "Area_RadarTemp",
10701
+ type: "SYNCGROUPS_TYPE_SETBBOX"
10702
+ },
10703
+ {
10704
+ id: "Time_RadarTemp",
10705
+ type: "SYNCGROUPS_TYPE_SETTIME"
10706
+ }
10707
+ ],
10708
+ mosaicNode: {
10709
+ direction: "row",
10710
+ first: "screen_no_1",
10711
+ second: "screen_no_2",
10712
+ splitPercentage: 50
10713
+ }
10714
+ },
10715
+ {
10716
+ id: "screenConfigRadarRadar",
10717
+ title: "Radar and Radar",
10718
+ scope: "system",
10719
+ abstract: "",
10720
+ viewType: "multiWindow",
10721
+ views: [
10722
+ {
10723
+ mosaicNodeId: "view-1",
10724
+ viewPresetId: "radar"
10725
+ },
10726
+ {
10727
+ mosaicNodeId: "view-2",
10728
+ viewPresetId: "radar"
10729
+ }
10730
+ ],
10731
+ syncGroups: [
10732
+ {
10733
+ id: "Area_RadarTemp",
10734
+ type: "SYNCGROUPS_TYPE_SETBBOX"
10735
+ },
10736
+ {
10737
+ id: "Time_RadarTemp",
10738
+ type: "SYNCGROUPS_TYPE_SETTIME"
10739
+ }
10740
+ ],
10741
+ mosaicNode: {
10742
+ direction: "row",
10743
+ first: "view-1",
10744
+ second: "view-2",
10745
+ splitPercentage: 50
10746
+ }
10747
+ },
10748
+ {
10749
+ id: "screenConfigTimeSeries_knmi_timeseries_ha43_dini",
10750
+ title: "TimeSeries EDR KNMI HA43 DINI",
10751
+ scope: "system",
10752
+ abstract: "This contains a very very long abstract so that you can see some ellipsis. Who knows how it will behave. ",
10753
+ viewType: "multiWindow",
10754
+ views: [
10755
+ {
10756
+ mosaicNodeId: "view-1",
10757
+ componentType: "Map",
10758
+ initialProps: {
10759
+ mapPreset: {
10760
+ layers: [
10761
+ {
10762
+ name: "WorldMap_Light_Grey_Canvas",
10763
+ type: "twms",
10764
+ dimensions: [
10765
+ ],
10766
+ id: "layerid_89",
10767
+ opacity: 1,
10768
+ acceptanceTimeInMinutes: 60,
10769
+ enabled: true,
10770
+ layerType: "baseLayer",
10771
+ status: "default",
10772
+ useLatestReferenceTime: true
10773
+ },
10774
+ {
10775
+ service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
10776
+ name: "countryborders",
10777
+ format: "image/png",
10778
+ dimensions: [
10779
+ ],
10780
+ id: "layerid_88",
10781
+ opacity: 1,
10782
+ acceptanceTimeInMinutes: 60,
10783
+ enabled: true,
10784
+ layerType: "overLayer",
10785
+ status: "default",
10786
+ useLatestReferenceTime: true
10787
+ },
10788
+ {
10789
+ name: "air_pressure_at_mean_sea_level_hagl",
10790
+ service: "https://geoservices.knmi.nl/adaguc-server?DATASET=uwcw_ha43_dini_5p5km",
10791
+ dimensions: [
10792
+ {
10793
+ name: "reference_time",
10794
+ units: "ISO8601",
10795
+ currentValue: "2025-11-03T08:00:00Z",
10796
+ maxValue: "2025-11-03T08:00:00Z",
10797
+ minValue: "2025-11-02T11:00:00Z",
10798
+ synced: false,
10799
+ values: "2025-11-02T11:00:00Z,2025-11-02T12:00:00Z,2025-11-02T13:00:00Z,2025-11-02T14:00:00Z,2025-11-02T15:00:00Z,2025-11-02T16:00:00Z,2025-11-02T17:00:00Z,2025-11-02T18:00:00Z,2025-11-02T19:00:00Z,2025-11-02T20:00:00Z,2025-11-02T21:00:00Z,2025-11-02T22:00:00Z,2025-11-02T23:00:00Z,2025-11-03T00:00:00Z,2025-11-03T01:00:00Z,2025-11-03T02:00:00Z,2025-11-03T03:00:00Z,2025-11-03T04:00:00Z,2025-11-03T05:00:00Z,2025-11-03T06:00:00Z,2025-11-03T07:00:00Z,2025-11-03T08:00:00Z",
10800
+ unitSymbol: ""
10801
+ },
10802
+ {
10803
+ name: "height_above_ground_level_in_m",
10804
+ units: "m",
10805
+ currentValue: "0",
10806
+ maxValue: "0",
10807
+ minValue: "0",
10808
+ synced: false,
10809
+ values: "0",
10810
+ unitSymbol: ""
10811
+ }
10812
+ ],
10813
+ id: "layerid_84",
10814
+ opacity: 1,
10815
+ acceptanceTimeInMinutes: 60,
10816
+ enabled: true,
10817
+ layerType: "mapLayer",
10818
+ status: "default",
10819
+ useLatestReferenceTime: true
10820
+ },
10821
+ {
10822
+ name: "total_precipitation_rate_hagl",
10823
+ service: "https://geoservices.knmi.nl/adaguc-server?DATASET=uwcw_ha43_dini_5p5km",
10824
+ dimensions: [
10825
+ {
10826
+ name: "reference_time",
10827
+ units: "ISO8601",
10828
+ currentValue: "2025-11-03T08:00:00Z",
10829
+ maxValue: "2025-11-03T08:00:00Z",
10830
+ minValue: "2025-11-02T11:00:00Z",
10831
+ synced: false,
10832
+ values: "2025-11-02T11:00:00Z,2025-11-02T12:00:00Z,2025-11-02T13:00:00Z,2025-11-02T14:00:00Z,2025-11-02T15:00:00Z,2025-11-02T16:00:00Z,2025-11-02T17:00:00Z,2025-11-02T18:00:00Z,2025-11-02T19:00:00Z,2025-11-02T20:00:00Z,2025-11-02T21:00:00Z,2025-11-02T22:00:00Z,2025-11-02T23:00:00Z,2025-11-03T00:00:00Z,2025-11-03T01:00:00Z,2025-11-03T02:00:00Z,2025-11-03T03:00:00Z,2025-11-03T04:00:00Z,2025-11-03T05:00:00Z,2025-11-03T06:00:00Z,2025-11-03T07:00:00Z,2025-11-03T08:00:00Z",
10833
+ unitSymbol: ""
10834
+ },
10835
+ {
10836
+ name: "height_above_ground_level_in_m",
10837
+ units: "m",
10838
+ currentValue: "0",
10839
+ maxValue: "0",
10840
+ minValue: "0",
10841
+ synced: false,
10842
+ values: "0",
10843
+ unitSymbol: ""
10844
+ }
10845
+ ],
10846
+ id: "layerid_85",
10847
+ opacity: 1,
10848
+ acceptanceTimeInMinutes: 60,
10849
+ enabled: true,
10850
+ layerType: "mapLayer",
10851
+ status: "default",
10852
+ useLatestReferenceTime: true
10853
+ },
10854
+ {
10855
+ name: "air_temperature_hagl",
10856
+ style: "temperature_wow/shaded",
10857
+ service: "https://geoservices.knmi.nl/adaguc-server?DATASET=uwcw_ha43_dini_5p5km",
10858
+ dimensions: [
10859
+ {
10860
+ name: "reference_time",
10861
+ units: "ISO8601",
10862
+ currentValue: "2025-11-03T08:00:00Z",
10863
+ maxValue: "2025-11-03T08:00:00Z",
10864
+ minValue: "2025-11-02T11:00:00Z",
10865
+ synced: false,
10866
+ values: "2025-11-02T11:00:00Z,2025-11-02T12:00:00Z,2025-11-02T13:00:00Z,2025-11-02T14:00:00Z,2025-11-02T15:00:00Z,2025-11-02T16:00:00Z,2025-11-02T17:00:00Z,2025-11-02T18:00:00Z,2025-11-02T19:00:00Z,2025-11-02T20:00:00Z,2025-11-02T21:00:00Z,2025-11-02T22:00:00Z,2025-11-02T23:00:00Z,2025-11-03T00:00:00Z,2025-11-03T01:00:00Z,2025-11-03T02:00:00Z,2025-11-03T03:00:00Z,2025-11-03T04:00:00Z,2025-11-03T05:00:00Z,2025-11-03T06:00:00Z,2025-11-03T07:00:00Z,2025-11-03T08:00:00Z",
10867
+ unitSymbol: ""
10868
+ },
10869
+ {
10870
+ name: "height_above_ground_level_in_m",
10871
+ units: "m",
10872
+ currentValue: "2",
10873
+ maxValue: "2",
10874
+ minValue: "2",
10875
+ synced: false,
10876
+ values: "2",
10877
+ unitSymbol: ""
10878
+ }
10879
+ ],
10880
+ id: "layerid_86",
10881
+ opacity: 1,
10882
+ acceptanceTimeInMinutes: 60,
10883
+ enabled: true,
10884
+ layerType: "mapLayer",
10885
+ status: "default",
10886
+ useLatestReferenceTime: true
10887
+ }
10888
+ ],
10889
+ proj: {
10890
+ bbox: {
10891
+ top: 7438773.776232235,
10892
+ left: -450651.2255879827,
10893
+ right: 1428345.8183648037,
10894
+ bottom: 6490531.093143953
10895
+ },
10896
+ srs: "EPSG:3857"
10897
+ },
10898
+ shouldAnimate: false,
10899
+ shouldAutoUpdate: false,
10900
+ showTimeSlider: true,
10901
+ displayMapPin: true,
10902
+ shouldShowZoomControls: true,
10903
+ animationPayload: {
10904
+ interval: 60,
10905
+ speed: 4,
10906
+ duration: 290
10907
+ },
10908
+ toggleTimestepAuto: true,
10909
+ toggleTimeSpanAuto: true,
10910
+ shouldShowLegend: false,
10911
+ timeSliderSpan: 86400,
10912
+ shouldShowDataExplorer: false,
10913
+ defaultOverlayer: "countryborders"
10914
+ },
10915
+ syncGroupsIds: [
10916
+ ]
10917
+ },
10918
+ title: "KNMI WMS UWCW HA43 DINI forecast",
10919
+ originalViewPresetId: "view_knmi_timeseries_ha43_dini_wms"
10920
+ },
10921
+ {
10922
+ mosaicNodeId: "view-2",
10923
+ componentType: "TimeSeries",
10924
+ initialProps: {
10925
+ plotPreset: {
10926
+ mapId: "view_knmi_timeseries_ha43_dini_wms",
10927
+ plots: [
10928
+ {
10929
+ title: "HA43 Air pressure",
10930
+ plotId: "Plot_1"
10931
+ },
10932
+ {
10933
+ title: "HA43 Air temperature",
10934
+ plotId: "Plot_2"
10935
+ },
10936
+ {
10937
+ title: "HA43 precipitation",
10938
+ plotId: "Plot_3"
10939
+ },
10940
+ {
10941
+ title: "HA43 Relative humidity",
10942
+ plotId: "Plot_4"
10943
+ }
10944
+ ],
10945
+ parameters: [
10946
+ {
10947
+ unit: "hPa",
10948
+ plotId: "Plot_1",
10949
+ plotType: "line",
10950
+ serviceId: "knmi_geoservices_edr",
10951
+ collectionId: "uwcw_ha43_dini_5p5km.hagl",
10952
+ propertyName: "air_pressure_at_mean_sea_level_hagl",
10953
+ id: "timeseriesparamid_2ceef258-edf0-4170-b8ec-a998e1175839",
10954
+ opacity: 70
10955
+ },
10956
+ {
10957
+ unit: "C",
10958
+ plotId: "Plot_2",
10959
+ plotType: "line",
10960
+ serviceId: "knmi_geoservices_edr",
10961
+ collectionId: "uwcw_ha43_dini_5p5km.hagl",
10962
+ propertyName: "air_temperature_hagl",
10963
+ id: "timeseriesparamid_fbbe34f2-2aaa-4636-9dae-6d9c6b8530db",
10964
+ opacity: 70
10965
+ },
10966
+ {
10967
+ unit: "mm/hr",
10968
+ plotId: "Plot_3",
10969
+ plotType: "bar",
10970
+ serviceId: "knmi_geoservices_edr",
10971
+ collectionId: "uwcw_ha43_dini_5p5km.hagl",
10972
+ propertyName: "total_precipitation_rate_hagl",
10973
+ id: "timeseriesparamid_7a02c8f2-8401-4231-81d7-5b1dc9c24fb1",
10974
+ opacity: 70
10975
+ },
10976
+ {
10977
+ unit: "%",
10978
+ plotId: "Plot_4",
10979
+ plotType: "line",
10980
+ serviceId: "knmi_geoservices_edr",
10981
+ collectionId: "uwcw_ha43_dini_5p5km.hagl",
10982
+ propertyName: "relative_humidity_hagl",
10983
+ id: "timeseriesparamid_7ef987eb-f244-4997-8a3d-8e099f3187cf",
10984
+ opacity: 70
10985
+ }
10986
+ ]
10987
+ },
10988
+ services: [
10989
+ {
10990
+ name: "KNMI Geoservices",
10991
+ url: "https://geoservices.knmi.nl/edr",
10992
+ id: "knmi_geoservices_edr",
10993
+ description: "KNMI EDR on geoservices with UWCW HA43 DINI",
10994
+ type: "EDR",
10995
+ scope: "system"
10996
+ }
10997
+ ]
10998
+ },
10999
+ title: "KNMI EDR UWCW HA43 DINI forecast"
11000
+ }
11001
+ ],
11002
+ syncGroups: [
11003
+ ],
11004
+ mosaicNode: {
11005
+ direction: "row",
11006
+ first: "view-1",
11007
+ second: "view-2"
11008
+ }
11009
+ },
11010
+ {
11011
+ id: "screenConfigTimeSeriesEDRKNMI",
11012
+ title: "TimeSeries EDR KNMI Example",
11013
+ scope: "system",
11014
+ abstract: "This contains a very very long abstract so that you can see some ellipsis. Who knows how it will behave. ",
11015
+ viewType: "multiWindow",
11016
+ views: [
11017
+ {
11018
+ mosaicNodeId: "view-1",
11019
+ viewPresetId: "TimeseriesMap"
11020
+ },
11021
+ {
11022
+ mosaicNodeId: "view-2",
11023
+ viewPresetId: "Timeseries_EDR_KNMI"
11024
+ }
11025
+ ],
11026
+ syncGroups: [
11027
+ ],
11028
+ mosaicNode: {
11029
+ direction: "row",
11030
+ first: "view-1",
11031
+ second: "view-2"
11032
+ }
11033
+ },
11034
+ {
11035
+ id: "screenConfigTimeSeriesEDRFMI",
11036
+ title: "TimeSeries EDR FMI Example",
11037
+ scope: "system",
11038
+ abstract: "This contains a very very long abstract so that you can see some ellipsis. Who knows how it will behave. ",
11039
+ viewType: "multiWindow",
11040
+ views: [
11041
+ {
11042
+ mosaicNodeId: "view-1",
11043
+ viewPresetId: "TimeseriesMap"
11044
+ },
11045
+ {
11046
+ mosaicNodeId: "view-2",
11047
+ viewPresetId: "Timeseries_EDR_FMI"
11048
+ }
11049
+ ],
11050
+ syncGroups: [
11051
+ ],
11052
+ mosaicNode: {
11053
+ direction: "row",
11054
+ first: "view-1",
11055
+ second: "view-2"
11056
+ }
11057
+ },
11058
+ {
11059
+ id: "screenConfigHarmoniePrecipMSLRefTimePresetWithoutMultiMapLayerManager",
11060
+ title: "Precipitation, pressure and wind 1:1",
11061
+ scope: "system",
11062
+ abstract: "",
11063
+ viewType: "tiledWindow",
11064
+ views: [
11065
+ {
11066
+ mosaicNodeId: "view-1",
11067
+ viewPresetId: "harmRefTime"
11068
+ }
11069
+ ],
11070
+ syncGroups: [
11071
+ {
11072
+ id: "areaLayerGroupA",
11073
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11074
+ },
11075
+ {
11076
+ id: "timeLayerGroupA",
11077
+ type: "SYNCGROUPS_TYPE_SETTIME"
11078
+ },
11079
+ {
11080
+ id: "layerGroupA",
11081
+ type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
11082
+ }
11083
+ ],
11084
+ mosaicNode: "view-1"
11085
+ },
11086
+ {
11087
+ id: "screenConfigHarmoniePrecipMSLRefTimePresetWithMultiMapLayerManager",
11088
+ title: "Precipitation, pressure and wind 1:all",
11089
+ scope: "system",
11090
+ abstract: "",
11091
+ viewType: "tiledWindow",
11092
+ views: [
11093
+ {
11094
+ mosaicNodeId: "viewA",
11095
+ componentType: "ModelRunInterval",
11096
+ initialProps: {
11097
+ mapPreset: {
11098
+ layers: [
11099
+ ],
11100
+ proj: {
11101
+ bbox: {
11102
+ },
11103
+ srs: ""
11104
+ },
11105
+ shouldAnimate: false,
11106
+ shouldAutoUpdate: false,
11107
+ showTimeSlider: true,
11108
+ displayMapPin: false,
11109
+ shouldShowZoomControls: true,
11110
+ animationPayload: {
11111
+ interval: 60,
11112
+ speed: 4,
11113
+ duration: 350
11114
+ },
11115
+ toggleTimestepAuto: false,
11116
+ toggleTimeSpanAuto: false,
11117
+ shouldShowLegend: false,
11118
+ timeSliderSpan: 86400,
11119
+ shouldShowDataExplorer: false,
11120
+ defaultOverlayer: "none"
11121
+ },
11122
+ syncGroupsIds: [
11123
+ "areaLayerGroupA",
11124
+ "layerGroupA"
11125
+ ]
11126
+ },
11127
+ title: "Harmonie precipitation, pressure and wind all",
11128
+ originalViewPresetId: "screenRefTimeAll"
11129
+ }
11130
+ ],
11131
+ syncGroups: [
11132
+ {
11133
+ id: "areaLayerGroupA",
11134
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11135
+ },
11136
+ {
11137
+ id: "timeLayerGroupA",
11138
+ type: "SYNCGROUPS_TYPE_SETTIME"
11139
+ },
11140
+ {
11141
+ id: "layerGroupA",
11142
+ type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
11143
+ }
11144
+ ],
11145
+ mosaicNode: "view-1"
11146
+ },
11147
+ {
11148
+ id: "screenConfigHarmoniePresetWithoutMultiMapLayerManager",
11149
+ title: "Harmonie Temperature and Precipitation 1:1",
11150
+ scope: "system",
11151
+ abstract: "",
11152
+ viewType: "tiledWindow",
11153
+ views: [
11154
+ {
11155
+ mosaicNodeId: "view-1",
11156
+ viewPresetId: "screenHarm"
11157
+ }
11158
+ ],
11159
+ syncGroups: [
11160
+ {
11161
+ id: "areaLayerGroupA",
11162
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11163
+ },
11164
+ {
11165
+ id: "timeLayerGroupA",
11166
+ type: "SYNCGROUPS_TYPE_SETTIME"
11167
+ },
11168
+ {
11169
+ id: "layerGroupA",
11170
+ type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
11171
+ },
11172
+ {
11173
+ id: "layerGroupB",
11174
+ type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
11175
+ }
11176
+ ],
11177
+ mosaicNode: "view-1"
11178
+ },
11179
+ {
11180
+ id: "screenConfigHarmoniePresetWithMultiMapLayerManager",
11181
+ title: "Harmonie Temperature and Precipitation 1:all",
11182
+ scope: "system",
11183
+ abstract: "",
11184
+ viewType: "tiledWindow",
11185
+ views: [
11186
+ {
11187
+ mosaicNodeId: "view-1",
11188
+ viewPresetId: "screenHarmAll"
11189
+ }
11190
+ ],
11191
+ syncGroups: [
11192
+ {
11193
+ id: "areaLayerGroupA",
11194
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11195
+ },
11196
+ {
11197
+ id: "timeLayerGroupA",
11198
+ type: "SYNCGROUPS_TYPE_SETTIME"
11199
+ },
11200
+ {
11201
+ id: "layerGroupA",
11202
+ type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
11203
+ },
11204
+ {
11205
+ id: "layerGroupB",
11206
+ type: "SYNCGROUPS_TYPE_SETLAYERACTIONS"
11207
+ }
11208
+ ],
11209
+ mosaicNode: "view-1"
11210
+ },
11211
+ {
11212
+ id: "screenConfigD",
11213
+ title: "Radar & Sat",
11214
+ scope: "system",
11215
+ abstract: "",
11216
+ viewType: "multiWindow",
11217
+ views: [
11218
+ {
11219
+ mosaicNodeId: "viewAsat",
11220
+ viewPresetId: "sat"
11221
+ },
11222
+ {
11223
+ mosaicNodeId: "viewBrad",
11224
+ viewPresetId: "rad"
11225
+ }
11226
+ ],
11227
+ syncGroups: [
11228
+ {
11229
+ id: "Area_SatRadar",
11230
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11231
+ },
11232
+ {
11233
+ id: "Time_SatRadar",
11234
+ type: "SYNCGROUPS_TYPE_SETTIME"
11235
+ }
11236
+ ],
11237
+ mosaicNode: {
11238
+ direction: "row",
11239
+ first: "viewAsat",
11240
+ second: "viewBrad",
11241
+ splitPercentage: 50
11242
+ }
11243
+ },
11244
+ {
11245
+ id: "screenConfigOBS",
11246
+ title: "OBS",
11247
+ scope: "system",
11248
+ abstract: "",
11249
+ viewType: "multiWindow",
11250
+ views: [
11251
+ {
11252
+ mosaicNodeId: "map_OBSTA",
11253
+ viewPresetId: "map_OBSTA"
11254
+ },
11255
+ {
11256
+ mosaicNodeId: "map_OBSPP",
11257
+ viewPresetId: "map_OBSPP"
11258
+ },
11259
+ {
11260
+ mosaicNodeId: "map_OBSWind",
11261
+ viewPresetId: "map_OBSWind"
11262
+ },
11263
+ {
11264
+ mosaicNodeId: "map_OBSRH",
11265
+ viewPresetId: "map_OBSRH"
11266
+ },
11267
+ {
11268
+ mosaicNodeId: "map_OBSQG",
11269
+ viewPresetId: "map_OBSQG"
11270
+ }
11271
+ ],
11272
+ syncGroups: [
11273
+ {
11274
+ id: "Area_A",
11275
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11276
+ },
11277
+ {
11278
+ id: "Time_A",
11279
+ type: "SYNCGROUPS_TYPE_SETTIME"
11280
+ }
11281
+ ],
11282
+ mosaicNode: {
11283
+ direction: "column",
11284
+ first: {
11285
+ direction: "row",
11286
+ first: "map_OBSTA",
11287
+ second: "map_OBSPP"
11288
+ },
11289
+ second: {
11290
+ direction: "row",
11291
+ first: "map_OBSWind",
11292
+ second: {
11293
+ direction: "row",
11294
+ first: "map_OBSRH",
11295
+ second: "map_OBSQG"
11296
+ },
11297
+ splitPercentage: 33
11298
+ }
11299
+ }
11300
+ },
11301
+ {
11302
+ id: "screenConfigRadAndObs",
11303
+ title: "FourMapsInOneView",
11304
+ scope: "system",
11305
+ abstract: "",
11306
+ viewType: "tiledWindow",
11307
+ views: [
11308
+ {
11309
+ mosaicNodeId: "view-1",
11310
+ viewPresetId: "screenRadAndObs"
11311
+ }
11312
+ ],
11313
+ syncGroups: [
11314
+ {
11315
+ id: "Area_screenRadAndObs",
11316
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11317
+ },
11318
+ {
11319
+ id: "Time_screenRadAndObs",
11320
+ type: "SYNCGROUPS_TYPE_SETTIME"
11321
+ }
11322
+ ],
11323
+ mosaicNode: "view-1"
11324
+ },
11325
+ {
11326
+ id: "screenConfigHarmonie",
11327
+ title: "Harmonie",
11328
+ scope: "system",
11329
+ abstract: "",
11330
+ viewType: "multiWindow",
11331
+ views: [
11332
+ {
11333
+ mosaicNodeId: "viewAharmPrecip",
11334
+ viewPresetId: "harmPrecip"
11335
+ },
11336
+ {
11337
+ mosaicNodeId: "viewBharmTemp",
11338
+ viewPresetId: "harmTemp"
11339
+ },
11340
+ {
11341
+ mosaicNodeId: "viewCharmPressure",
11342
+ viewPresetId: "harmPressure"
11343
+ },
11344
+ {
11345
+ mosaicNodeId: "viewDslider",
11346
+ viewPresetId: "slider"
11347
+ }
11348
+ ],
11349
+ syncGroups: [
11350
+ {
11351
+ id: "Area_B",
11352
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11353
+ },
11354
+ {
11355
+ id: "Time_B",
11356
+ type: "SYNCGROUPS_TYPE_SETTIME"
11357
+ }
11358
+ ],
11359
+ mosaicNode: {
11360
+ direction: "column",
11361
+ first: {
11362
+ direction: "row",
11363
+ first: "viewAharmPrecip",
11364
+ second: {
11365
+ direction: "row",
11366
+ first: "viewBharmTemp",
11367
+ second: "viewCharmPressure"
11368
+ },
11369
+ splitPercentage: 33
11370
+ },
11371
+ second: "viewDslider",
11372
+ splitPercentage: 80
11373
+ }
11374
+ },
11375
+ {
11376
+ id: "workspaceHarmonie",
11377
+ title: "Harmonie",
11378
+ scope: "system",
11379
+ abstract: "",
11380
+ viewType: "singleWindow",
11381
+ views: [
11382
+ {
11383
+ mosaicNodeId: "screen1",
11384
+ viewPresetId: "viewHarmonie"
11385
+ }
11386
+ ],
11387
+ syncGroups: [
11388
+ ],
11389
+ mosaicNode: "screen1"
11390
+ },
11391
+ {
11392
+ id: "screenConfigOnlyBBOXGroup",
11393
+ title: "SyncGroups only BBOX predefined",
11394
+ scope: "system",
11395
+ abstract: "",
11396
+ viewType: "multiWindow",
11397
+ views: [
11398
+ {
11399
+ mosaicNodeId: "view-1",
11400
+ viewPresetId: "demosyncgroupbbox_radar"
11401
+ },
11402
+ {
11403
+ mosaicNodeId: "view-2",
11404
+ viewPresetId: "demosyncgroupbbox_temp"
11405
+ }
11406
+ ],
11407
+ syncGroups: [
11408
+ {
11409
+ id: "Area_radar",
11410
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11411
+ },
11412
+ {
11413
+ id: "Area_temp",
11414
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11415
+ }
11416
+ ],
11417
+ mosaicNode: {
11418
+ direction: "row",
11419
+ first: "view-1",
11420
+ second: "view-2",
11421
+ splitPercentage: 50
11422
+ }
11423
+ },
11424
+ {
11425
+ id: "screenConfigOnlyTIMEGroup",
11426
+ title: "SyncGroups only TIME predefined",
11427
+ scope: "system",
11428
+ abstract: "",
11429
+ viewType: "multiWindow",
11430
+ views: [
11431
+ {
11432
+ mosaicNodeId: "view-1",
11433
+ viewPresetId: "demosyncgrouptime_radar"
11434
+ },
11435
+ {
11436
+ mosaicNodeId: "view-2",
11437
+ viewPresetId: "demosyncgrouptime_temp"
11438
+ }
11439
+ ],
11440
+ syncGroups: [
11441
+ {
11442
+ id: "Time_radar",
11443
+ type: "SYNCGROUPS_TYPE_SETTIME"
11444
+ },
11445
+ {
11446
+ id: "Time_temp",
11447
+ type: "SYNCGROUPS_TYPE_SETTIME"
11448
+ }
11449
+ ],
11450
+ mosaicNode: {
11451
+ direction: "row",
11452
+ first: "view-1",
11453
+ second: "view-2",
11454
+ splitPercentage: 50
11455
+ }
11456
+ },
11457
+ {
11458
+ id: "emptyMap",
11459
+ title: "Empty map",
11460
+ scope: "system",
11461
+ abstract: "",
11462
+ viewType: "singleWindow",
11463
+ views: [
11464
+ {
11465
+ mosaicNodeId: "emptyMapView",
11466
+ viewPresetId: "emptyMap"
11467
+ }
11468
+ ],
11469
+ mosaicNode: "emptyMapView"
11470
+ },
11471
+ {
11472
+ id: "radarView",
11473
+ title: "Radar",
11474
+ scope: "user",
11475
+ abstract: "",
11476
+ viewType: "singleWindow",
11477
+ views: [
11478
+ {
11479
+ mosaicNodeId: "radarView",
11480
+ viewPresetId: "radar"
11481
+ }
11482
+ ],
11483
+ mosaicNode: "radarView"
11484
+ },
11485
+ {
11486
+ id: "workspaceHarmonie",
11487
+ title: "Harmonie workspace",
11488
+ scope: "system",
11489
+ abstract: "",
11490
+ viewType: "singleWindow",
11491
+ views: [
11492
+ {
11493
+ mosaicNodeId: "harmView",
11494
+ viewPresetId: "viewHarmonie"
11495
+ }
11496
+ ],
11497
+ mosaicNode: "harmView"
11498
+ },
11499
+ {
11500
+ id: "capWorkspace",
11501
+ title: "Cap Warnings",
11502
+ scope: "system",
11503
+ abstract: "",
11504
+ viewType: "multiWindow",
11505
+ views: [
11506
+ {
11507
+ mosaicNodeId: "view-1",
11508
+ viewPresetId: "capMapView"
11509
+ },
11510
+ {
11511
+ mosaicNodeId: "view-2",
11512
+ viewPresetId: "capListView"
11513
+ }
11514
+ ],
11515
+ mosaicNode: {
11516
+ direction: "row",
11517
+ first: "view-1",
11518
+ second: "view-2",
11519
+ splitPercentage: 50
11520
+ }
11521
+ },
11522
+ {
11523
+ id: "newFormatRadarView",
11524
+ abstract: "A radar view of hurricane Melissa",
11525
+ title: "Radar Melissa",
11526
+ isTimeScrollingEnabled: false,
11527
+ scope: "user",
11528
+ viewType: "singleWindow",
11529
+ views: [
11530
+ {
11531
+ title: "Radar view",
11532
+ abstract: "",
11533
+ componentType: "Map",
11534
+ initialProps: {
11535
+ mapPreset: {
11536
+ proj: {
11537
+ srs: "EPSG:3857",
11538
+ bbox: {
11539
+ top: 11520588.9031,
11540
+ left: 58703.6377,
11541
+ right: 3967387.5161,
11542
+ bottom: 6408480.4514
11543
+ }
11544
+ },
11545
+ layers: [
11546
+ {
11547
+ id: "layerid_75",
11548
+ name: "WorldMap_Light_Grey_Canvas",
11549
+ type: "twms",
11550
+ status: "default",
11551
+ enabled: true,
11552
+ opacity: 1,
11553
+ layerType: "baseLayer",
11554
+ dimensions: [
11555
+ ],
11556
+ useLatestReferenceTime: true,
11557
+ acceptanceTimeInMinutes: 60
11558
+ },
11559
+ {
11560
+ id: "layerid_74",
11561
+ name: "countryborders",
11562
+ format: "image/png",
11563
+ status: "default",
11564
+ enabled: true,
11565
+ opacity: 1,
11566
+ service: "https://geoservices.knmi.nl/wms?DATASET=baselayers&",
11567
+ layerType: "overLayer",
11568
+ dimensions: [
11569
+ ],
11570
+ useLatestReferenceTime: true,
11571
+ acceptanceTimeInMinutes: 60
11572
+ },
11573
+ {
11574
+ id: "layerid_70",
11575
+ name: "RAD_NL25_PCP_CM",
11576
+ style: "radar/nearest",
11577
+ format: "image/png",
11578
+ status: "default",
11579
+ enabled: true,
11580
+ opacity: 1,
11581
+ service: "https://geoservices.knmi.nl/wms?dataset=RADAR",
11582
+ layerType: "mapLayer",
11583
+ dimensions: [
11584
+ ],
11585
+ useLatestReferenceTime: true,
11586
+ acceptanceTimeInMinutes: 60
11587
+ },
11588
+ {
11589
+ id: "layerid_71",
11590
+ name: "Radar:suomi_dbz_eureffin",
11591
+ style: "Radar dbz Summer",
11592
+ format: "image/png",
11593
+ status: "default",
11594
+ enabled: true,
11595
+ opacity: 1,
11596
+ service: "https://openwms.fmi.fi/geoserver/wms?",
11597
+ layerType: "mapLayer",
11598
+ dimensions: [
11599
+ ],
11600
+ useLatestReferenceTime: true,
11601
+ acceptanceTimeInMinutes: 60
11602
+ },
11603
+ {
11604
+ id: "layerid_72",
11605
+ name: "radar_precipitation_intensity_nordic",
11606
+ style: "",
11607
+ format: "image/png",
11608
+ status: "default",
11609
+ enabled: true,
11610
+ opacity: 1,
11611
+ service: "https://public-wms.met.no/verportal/verportal.map?SERVICE=WMS&REQUEST=GetCapabilities",
11612
+ layerType: "mapLayer",
11613
+ dimensions: [
11614
+ ],
11615
+ useLatestReferenceTime: true,
11616
+ acceptanceTimeInMinutes: 60
11617
+ }
11618
+ ],
11619
+ displayMapPin: false,
11620
+ shouldAnimate: true,
11621
+ showTimeSlider: true,
11622
+ timeSliderSpan: 86400,
11623
+ animationPayload: {
11624
+ speed: 2,
11625
+ duration: 240,
11626
+ interval: 5
11627
+ },
11628
+ defaultOverlayer: "countryborders",
11629
+ shouldAutoUpdate: false,
11630
+ shouldShowLegend: false,
11631
+ toggleTimeSpanAuto: true,
11632
+ toggleTimestepAuto: false,
11633
+ shouldShowDataExplorer: false,
11634
+ shouldShowZoomControls: true
11635
+ },
11636
+ syncGroupsIds: [
11637
+ ]
11638
+ },
11639
+ mosaicNodeId: "2_screen",
11640
+ originalViewPresetId: "radarView"
11641
+ }
11642
+ ],
11643
+ mosaicNode: "radarView"
11644
+ },
11645
+ {
11646
+ id: "test-1",
11647
+ title: "Test view preset error",
11648
+ scope: "system",
11649
+ username: "user.name",
11650
+ abstract: "",
11651
+ viewType: "multiWindow",
11652
+ views: [
11653
+ {
11654
+ mosaicNodeId: "screen_no_1",
11655
+ viewPresetId: "temp"
11656
+ }
11657
+ ],
11658
+ syncGroups: [
11659
+ {
11660
+ id: "Area_RadarTemp",
11661
+ type: "SYNCGROUPS_TYPE_SETBBOX"
11662
+ }
11663
+ ],
11664
+ mosaicNode: "screen_no_1"
11665
+ }
11666
+ ];
11667
+
11686
11668
  /* *
11687
11669
  * Licensed under the Apache License, Version 2.0 (the "License");
11688
11670
  * you may not use this file except in compliance with the License.
@@ -11709,6 +11691,18 @@ var LABELS_CONFIG_DEFAULT = {
11709
11691
  dataSource: ['Meps', 'Arome Arctic', 'Ecmwf', 'Ensemble', 'AIFS', 'BRIS', 'radar', 'satellite', 'synop']
11710
11692
  };
11711
11693
 
11694
+ // Transforms full workspace presets to list items
11695
+ var workspacePresetList = workspacePresets.map(function (preset) {
11696
+ var _preset$abstract;
11697
+ return {
11698
+ id: preset.id,
11699
+ title: preset.title,
11700
+ scope: preset.scope,
11701
+ viewType: preset.viewType,
11702
+ "abstract": (_preset$abstract = preset["abstract"]) != null ? _preset$abstract : '',
11703
+ description: preset.description
11704
+ };
11705
+ });
11712
11706
  var workspaceEndpoints = [http["delete"](/^.*\/workspacepreset\/(.*)$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
11713
11707
  return _regeneratorRuntime().wrap(function _callee$(_context) {
11714
11708
  while (1) switch (_context.prev = _context.next) {
@@ -11788,16 +11782,29 @@ var workspaceEndpoints = [http["delete"](/^.*\/workspacepreset\/(.*)$/, /*#__PUR
11788
11782
  return function (_x) {
11789
11783
  return _ref5.apply(this, arguments);
11790
11784
  };
11791
- }()), http.get(/^.*\/workspace-labels-config$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
11785
+ }()), http.get(/.*\/workspacepreset\/?$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
11792
11786
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
11793
11787
  while (1) switch (_context5.prev = _context5.next) {
11794
11788
  case 0:
11795
- return _context5.abrupt("return", HttpResponse.json(LABELS_CONFIG_DEFAULT));
11796
- case 1:
11789
+ _context5.next = 2;
11790
+ return delay();
11791
+ case 2:
11792
+ return _context5.abrupt("return", HttpResponse.json(workspacePresetList));
11793
+ case 3:
11797
11794
  case "end":
11798
11795
  return _context5.stop();
11799
11796
  }
11800
11797
  }, _callee5);
11798
+ }))), http.get(/^.*\/workspace-labels-config$/, /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
11799
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
11800
+ while (1) switch (_context6.prev = _context6.next) {
11801
+ case 0:
11802
+ return _context6.abrupt("return", HttpResponse.json(LABELS_CONFIG_DEFAULT));
11803
+ case 1:
11804
+ case "end":
11805
+ return _context6.stop();
11806
+ }
11807
+ }, _callee6);
11801
11808
  })))];
11802
11809
 
11803
- export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspaceModuleProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$2 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceEndpoints, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };
11810
+ export { ALL_COMPONENT_TYPES, AVIATION_COMPONENT_TYPES, CAP_COMPONENT_TYPES, ComponentsLookUpWrapper, DemoWrapper, PresetAction, SUPPORTED_COMPONENT_TYPES, SUPPORTED_TIMESERIES_COMPONENT_TYPES, ViewPresetErrorComponent, ViewPresetErrorType, WARNING_LIST_COMPONENT_TYPES, WORKSPACE_NAMESPACE, WorkspaceDetail, WorkspaceErrorType, WorkspaceI18nProvider, WorkspacePresetAction, WorkspaceStoreWrapper, WorkspaceThemeProvider, WorkspaceTopBar, WorkspaceViewConnect, WorkspaceWrapperProviderWithStore, createBalancedMosaicNode, createCustomEmptyMapWorkspace, defaultAuthConfig, getEmptyMapWorkspace, getWorkspaceRouteUrl, selectors$2 as selectors, viewPresetActions, viewPresetsListReducer, viewPresetsListener, viewPresetsReducer, workspaceActions, workspaceEndpoints, workspaceListActions, workspaceListListener, workspaceListReducer, workspaceListener, workspaceMiddlewares, workspaceReducer, workspaceReducersMap, routes as workspaceRoutes, workspaceTranslations };