@opengeoweb/warnings 9.37.0 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
3
  import { Polygons, Share, ExitDomain, Edit, Delete, DrawPolygon, Visibility, Add, CoastalEvent, TemperatureLow, TemperatureHigh, Rain, Snow, Lightning, Fog, Wind, Thunderstorm, VulcanicEruption, Haze, FreezingPrecipitation, ModerateAircraftIcing, SevereAircraftIcing, ModerateTurbulence, SevereTurbulence, SandStorm, RadioactiveMaterials, breakpoints, Options, Close, ChevronDown, ChevronUp, Copy, Success, Expire, Remove, ArrowUpCompact, ArrowDownCompact } from '@opengeoweb/theme';
4
- import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawtoolSelectors, layerSelectors, uiSelectors, drawtoolActions, mapStoreActions, layerActions, useSetupDialog, useUpdateSharedData } from '@opengeoweb/store';
4
+ import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawtoolSelectors, layerSelectors, uiSelectors, drawingToolActions, layerActions, useSetupDialog, selectorMemoizationOptions, useUpdateSharedData } from '@opengeoweb/store';
5
5
  import { defaultPolygon, emptyGeoJSON, MapControlButton, getIcon, rewindGeometry, getGeoJSONPropertyValue, currentlySupportedDrawModes, defaultLayers, MapView, MapViewLayer, getFeatureExtent } from '@opengeoweb/webmap-react';
6
6
  import { SHARED_NAMESPACE, useConfirmationDialog, ToggleMenu, dateUtils, calculateStartSize, ToolContainerDraggable, AlertBanner, ConfirmationDialog, getAxiosErrorMessage, usePrevious, CustomIconButton, CustomTooltip, Avatar, getInitials, SwitchButton, CustomToggleButton, Filter, FilterChip, FilterOption, StatusTag, LastUpdateTime, ErrorBoundary, pollingIntervalTimeout, isAxiosError as isAxiosError$1 } from '@opengeoweb/shared';
7
7
  import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf } from '@reduxjs/toolkit';
@@ -19,7 +19,7 @@ import { VariableSizeList } from 'react-window';
19
19
  import AutoSizer from 'react-virtualized-auto-sizer';
20
20
  import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider, getHeaders, useAuthQuery, useAuthenticationContext, ProductStatus } from '@opengeoweb/api';
21
21
  import { useFormContext } from 'react-hook-form';
22
- import { isEqual, cloneDeep, clamp, groupBy, pick } from 'lodash';
22
+ import { isEqual, cloneDeep, clamp, groupBy, assign, pick } from 'lodash';
23
23
  import { getConfig, useAuthenticationContext as useAuthenticationContext$1 } from '@opengeoweb/authentication';
24
24
  import { useQueryClient } from '@tanstack/react-query';
25
25
  import { isAxiosError } from 'axios';
@@ -1186,7 +1186,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1186
1186
  drawMode: ''
1187
1187
  }));
1188
1188
  // reset active draw tool
1189
- dispatch(drawtoolActions.changeDrawToolMode({
1189
+ dispatch(drawingToolActions.changeDrawToolMode({
1190
1190
  drawToolId: drawingDialogType,
1191
1191
  drawModeId: drawDialogActiveDrawModeId
1192
1192
  }));
@@ -1213,7 +1213,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1213
1213
  }
1214
1214
  // clear existing geoJSON
1215
1215
  if (featureLayerContainsGeoJSON) {
1216
- dispatch(mapStoreActions.layerChangeGeojson({
1216
+ dispatch(layerActions.layerChangeGeojson({
1217
1217
  layerId: drawLayerId,
1218
1218
  geojson: emptyGeoJSON
1219
1219
  }));
@@ -1260,7 +1260,7 @@ var useCloseObjectDialog = function useCloseObjectDialog(_ref3) {
1260
1260
  source: source
1261
1261
  }));
1262
1262
  if (featureLayerContainsGeoJSON && shouldReset) {
1263
- dispatch(mapStoreActions.layerChangeGeojson({
1263
+ dispatch(layerActions.layerChangeGeojson({
1264
1264
  layerId: drawLayerId,
1265
1265
  geojson: emptyGeoJSON
1266
1266
  }));
@@ -1318,7 +1318,7 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1318
1318
  objectDialogLayerHasGeoJSON = _useDialogOptions2.hasGeoJSON,
1319
1319
  objectDialogLayerId = _useDialogOptions2.dialogLayerId;
1320
1320
  var clearGeoJSON = function clearGeoJSON(layerId) {
1321
- dispatch(mapStoreActions.layerChangeGeojson({
1321
+ dispatch(layerActions.layerChangeGeojson({
1322
1322
  layerId: layerId,
1323
1323
  geojson: emptyGeoJSON
1324
1324
  }));
@@ -1366,7 +1366,7 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1366
1366
  // move shape to screen
1367
1367
  if (isObjectDialogOpen && objectDialogLayerHasGeoJSON) {
1368
1368
  // update new shape
1369
- dispatch(mapStoreActions.layerSetGeojsonFromLayer({
1369
+ dispatch(layerActions.layerSetGeojsonFromLayer({
1370
1370
  layerId: currentDrawLayerId,
1371
1371
  sourceLayerId: objectDialogLayerId
1372
1372
  }));
@@ -1399,13 +1399,13 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1399
1399
  source: source
1400
1400
  }));
1401
1401
  // activate draw tool
1402
- dispatch(drawtoolActions.updateGeoJSONLayerId({
1402
+ dispatch(drawingToolActions.updateGeoJSONLayerId({
1403
1403
  drawToolId: drawingDialogType,
1404
1404
  geoJSONLayerId: currentDrawLayerId
1405
1405
  }));
1406
1406
  // activate default draw mode
1407
1407
  if (!drawDialogActiveDrawModeId && !isDrawDialogOpen) {
1408
- dispatch(drawtoolActions.changeDrawToolMode({
1408
+ dispatch(drawingToolActions.changeDrawToolMode({
1409
1409
  drawToolId: drawingDialogType,
1410
1410
  drawModeId: defaultPolygon.drawModeId
1411
1411
  }));
@@ -1413,7 +1413,7 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1413
1413
  // move shape to screen
1414
1414
  if (isDrawDialogOpen && drawDialogLayerHasGeoJSON) {
1415
1415
  // update new shape
1416
- dispatch(mapStoreActions.layerSetGeojsonFromLayer({
1416
+ dispatch(layerActions.layerSetGeojsonFromLayer({
1417
1417
  layerId: currentDrawLayerId,
1418
1418
  sourceLayerId: drawDialogLayerId
1419
1419
  }));
@@ -1435,7 +1435,7 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1435
1435
  }));
1436
1436
  }
1437
1437
  if (newGeoJSON) {
1438
- dispatch(mapStoreActions.layerChangeGeojson({
1438
+ dispatch(layerActions.layerChangeGeojson({
1439
1439
  layerId: currentDrawLayerId,
1440
1440
  geojson: newGeoJSON
1441
1441
  }));
@@ -1589,7 +1589,7 @@ var Objects = function Objects(_ref2) {
1589
1589
  var _useWarningsTranslati = useWarningsTranslation(),
1590
1590
  t = _useWarningsTranslati.t;
1591
1591
  var listRef = React__default.useRef(null);
1592
- var _getListInclHeaders = getListInclHeaders$1(objects),
1592
+ var _getListInclHeaders = getListInclHeaders$1(objects || []),
1593
1593
  listInclHeaders = _getListInclHeaders.listInclHeaders,
1594
1594
  headerList = _getListInclHeaders.headerList;
1595
1595
  var getItemSize = function getItemSize(width, index) {
@@ -2108,7 +2108,8 @@ var publicWarningsAdapter = createEntityAdapter({
2108
2108
  var initialState$1 = {
2109
2109
  warnings: publicWarningsAdapter.getInitialState(),
2110
2110
  isLoading: true,
2111
- lastUpdatedTime: ''
2111
+ lastUpdatedTime: '',
2112
+ filterState: {}
2112
2113
  };
2113
2114
  var slice$1 = createSlice({
2114
2115
  initialState: initialState$1,
@@ -2130,6 +2131,14 @@ var slice$1 = createSlice({
2130
2131
  var error = action.payload.error;
2131
2132
  draft.isLoading = false;
2132
2133
  draft.error = error;
2134
+ },
2135
+ setWarningFilters: function setWarningFilters(draft, action) {
2136
+ var _action$payload2 = action.payload,
2137
+ filterState = _action$payload2.filterState,
2138
+ panelId = _action$payload2.panelId;
2139
+ if (panelId) {
2140
+ draft.filterState[panelId] = filterState;
2141
+ }
2133
2142
  }
2134
2143
  }
2135
2144
  });
@@ -2178,7 +2187,8 @@ var slice = createSlice({
2178
2187
  var area = action.payload.area;
2179
2188
  // only support 1 area (for now)
2180
2189
  if (draft.publicWarning) {
2181
- draft.publicWarning.warningDetail.areas = [area];
2190
+ var areaWithPreservedUUID = Object.assign({}, draft.publicWarning.warningDetail.areas.at(0), area);
2191
+ draft.publicWarning.warningDetail.areas = [areaWithPreservedUUID];
2182
2192
  } else {
2183
2193
  var newWarning = {
2184
2194
  warningDetail: {
@@ -2197,6 +2207,11 @@ var slice = createSlice({
2197
2207
  draft.publicWarning.warningDetail.areas = removeAreas;
2198
2208
  }
2199
2209
  },
2210
+ removeAllAreas: function removeAllAreas(draft) {
2211
+ if (draft.publicWarning) {
2212
+ draft.publicWarning.warningDetail.areas = [];
2213
+ }
2214
+ },
2200
2215
  openPublicWarningFormDialog: function openPublicWarningFormDialog(draft, action) {
2201
2216
  var _action$payload2 = action.payload,
2202
2217
  object = _action$payload2.object,
@@ -2204,12 +2219,14 @@ var slice = createSlice({
2204
2219
  _action$payload2$form = _action$payload2.formState,
2205
2220
  formState = _action$payload2$form === void 0 ? '' : _action$payload2$form,
2206
2221
  _action$payload2$warn = _action$payload2.warningType,
2207
- warningType = _action$payload2$warn === void 0 ? 'public' : _action$payload2$warn;
2222
+ warningType = _action$payload2$warn === void 0 ? 'public' : _action$payload2$warn,
2223
+ panelId = _action$payload2.panelId;
2208
2224
  draft.object = object;
2209
2225
  draft.publicWarning = publicWarning;
2210
2226
  draft.selectedPublicWarningId = publicWarning == null ? void 0 : publicWarning.id;
2211
2227
  draft.formState = formState;
2212
2228
  draft.warningType = warningType;
2229
+ draft.panelId = panelId;
2213
2230
  },
2214
2231
  toggleEditorWarning: function toggleEditorWarning(draft,
2215
2232
  // eslint-disable-next-line no-unused-vars
@@ -2385,7 +2402,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2385
2402
  };
2386
2403
  var showGeoJSONLayer = function showGeoJSONLayer(drawing) {
2387
2404
  if (!currentLayer) {
2388
- dispatch(mapStoreActions.addLayer({
2405
+ dispatch(layerActions.addLayer({
2389
2406
  mapId: mapId,
2390
2407
  layer: {
2391
2408
  geojson: drawing.geoJSON
@@ -2394,7 +2411,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2394
2411
  origin: 'warnings-lib'
2395
2412
  }));
2396
2413
  } else {
2397
- dispatch(mapStoreActions.layerChangeGeojson({
2414
+ dispatch(layerActions.layerChangeGeojson({
2398
2415
  layerId: geoJSONLayerId,
2399
2416
  geojson: drawing.geoJSON
2400
2417
  }));
@@ -2466,10 +2483,12 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2466
2483
  _context2.prev = 13;
2467
2484
  _context2.t0 = _context2["catch"](2);
2468
2485
  setLoading(false);
2469
- dispatch(uiActions.setErrorDialog({
2470
- error: _context2.t0.message,
2471
- type: objectDialogType
2472
- }));
2486
+ if (_context2.t0 instanceof Error) {
2487
+ dispatch(uiActions.setErrorDialog({
2488
+ error: _context2.t0.message,
2489
+ type: objectDialogType
2490
+ }));
2491
+ }
2473
2492
  case 17:
2474
2493
  case "end":
2475
2494
  return _context2.stop();
@@ -7522,7 +7541,8 @@ var DrawingToolForm = function DrawingToolForm(_ref) {
7522
7541
  }));
7523
7542
  }, [geoJSONProperties, drawModes]);
7524
7543
  var onChangeOpacity = React.useCallback(function (event) {
7525
- var value = event.target.value;
7544
+ var target = event.target;
7545
+ var value = target.value;
7526
7546
  var newOpacity = parseInt(value, 10) / 100;
7527
7547
  var additionalStrokeOpacity = 0.8;
7528
7548
  onChangeProperties({
@@ -7609,7 +7629,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7609
7629
  }));
7610
7630
  }, [dispatch, drawTool == null ? void 0 : drawTool.geoJSONLayerId]);
7611
7631
  var onChangeDrawMode = React.useCallback(function (tool) {
7612
- dispatch(drawtoolActions.changeDrawToolMode({
7632
+ dispatch(drawingToolActions.changeDrawToolMode({
7613
7633
  drawToolId: drawToolId,
7614
7634
  drawModeId: tool.drawModeId
7615
7635
  }));
@@ -7621,7 +7641,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7621
7641
  drawMode: ''
7622
7642
  }));
7623
7643
  if (drawTool != null && drawTool.activeDrawModeId) {
7624
- dispatch(drawtoolActions.changeDrawToolMode({
7644
+ dispatch(drawingToolActions.changeDrawToolMode({
7625
7645
  drawToolId: drawToolId,
7626
7646
  drawModeId: drawTool == null ? void 0 : drawTool.activeDrawModeId
7627
7647
  }));
@@ -7713,12 +7733,12 @@ var DrawingToolConnect = function DrawingToolConnect(_ref) {
7713
7733
  var dispatch = useDispatch();
7714
7734
  React.useEffect(function () {
7715
7735
  var defaultDrawModes = translateDrawModes(currentlySupportedDrawModes, t);
7716
- dispatch(drawtoolActions.registerDrawTool({
7736
+ dispatch(drawingToolActions.registerDrawTool({
7717
7737
  drawToolId: drawingDialogType,
7718
7738
  defaultDrawModes: defaultDrawModes
7719
7739
  }));
7720
7740
  return function () {
7721
- dispatch(drawtoolActions.unregisterDrawTool({
7741
+ dispatch(drawingToolActions.unregisterDrawTool({
7722
7742
  drawToolId: drawingDialogType
7723
7743
  }));
7724
7744
  };
@@ -8184,7 +8204,7 @@ var AreaField = function AreaField(_ref) {
8184
8204
  });
8185
8205
  };
8186
8206
 
8187
- var _defaultLevelFilter, _defaultEmptyFilter, _defaultPhenomenonFil;
8207
+ var _defaultLevelFilter, _defaultEmptyFilter;
8188
8208
  /* *
8189
8209
  * Licensed under the Apache License, Version 2.0 (the "License");
8190
8210
  * you may not use this file except in compliance with the License.
@@ -8239,9 +8259,23 @@ var domainLevels = {
8239
8259
  "public": [Level.extreme, Level.moderate, Level.severe]
8240
8260
  };
8241
8261
  var defaultLevelFilter = (_defaultLevelFilter = {}, _defaultLevelFilter[emptyFilterId] = true, _defaultLevelFilter.extreme = true, _defaultLevelFilter.moderate = true, _defaultLevelFilter.severe = true, _defaultLevelFilter.AIR = true, _defaultLevelFilter.SIG = true, _defaultLevelFilter);
8242
- (_defaultEmptyFilter = {}, _defaultEmptyFilter[emptyFilterId] = true, _defaultEmptyFilter);
8243
- var defaultPhenomenonFilter = (_defaultPhenomenonFil = {}, _defaultPhenomenonFil[emptyFilterId] = true, _defaultPhenomenonFil.coastalEvent = true, _defaultPhenomenonFil.fog = true, _defaultPhenomenonFil.highTemp = true, _defaultPhenomenonFil.lowTemp = true, _defaultPhenomenonFil.rain = true, _defaultPhenomenonFil.snowIce = true, _defaultPhenomenonFil.thunderstorm = true, _defaultPhenomenonFil.wind = true, _defaultPhenomenonFil);
8244
- var useSelectedOptions = function useSelectedOptions(options) {
8262
+ var defaultEmptyFilter = (_defaultEmptyFilter = {}, _defaultEmptyFilter[emptyFilterId] = true, _defaultEmptyFilter);
8263
+ var makeFilterFromList = function makeFilterFromList(options) {
8264
+ var _options$reduce;
8265
+ return options.reduce(function (acc, p) {
8266
+ var _Object$assign;
8267
+ return p ? Object.assign({}, acc, (_Object$assign = {}, _Object$assign[p] = true, _Object$assign)) : acc;
8268
+ }, (_options$reduce = {}, _options$reduce[emptyFilterId] = true, _options$reduce));
8269
+ };
8270
+ var defaultPhenomenonFilter = makeFilterFromList(Object.values(Phenomenon$1));
8271
+ var initialFilters = {
8272
+ incident: defaultEmptyFilter,
8273
+ source: defaultEmptyFilter,
8274
+ domain: defaultDomainFilter,
8275
+ phenomenon: defaultPhenomenonFilter,
8276
+ level: defaultLevelFilter
8277
+ };
8278
+ var getSelectedOptions = function getSelectedOptions(options) {
8245
8279
  var selectedOptions = Object.keys(options).filter(function (k) {
8246
8280
  return options[k];
8247
8281
  });
@@ -8252,17 +8286,23 @@ var useSelectedOptions = function useSelectedOptions(options) {
8252
8286
  };
8253
8287
  };
8254
8288
  var updateState = function updateState(state, optionKey, value, only) {
8255
- var _Object$assign3;
8289
+ var _Object$assign4;
8256
8290
  if (only) {
8257
8291
  return Object.keys(state).reduce(function (acc, k) {
8258
- var _Object$assign;
8259
- return Object.assign({}, acc, (_Object$assign = {}, _Object$assign[k] = k === optionKey, _Object$assign));
8292
+ var _Object$assign2;
8293
+ return Object.assign({}, acc, (_Object$assign2 = {}, _Object$assign2[k] = k === optionKey, _Object$assign2));
8260
8294
  }, {});
8261
8295
  }
8262
- return optionKey === 'ALL' ? Object.keys(state).reduce(function (acc, k) {
8263
- var _Object$assign2;
8264
- return Object.assign({}, acc, (_Object$assign2 = {}, _Object$assign2[k] = value, _Object$assign2));
8265
- }, {}) : Object.assign({}, state, (_Object$assign3 = {}, _Object$assign3[optionKey] = value, _Object$assign3));
8296
+ if (optionKey === 'ALL') {
8297
+ if (Object.keys(state).length < 2) {
8298
+ return state;
8299
+ }
8300
+ return Object.keys(state).reduce(function (acc, k) {
8301
+ var _Object$assign3;
8302
+ return Object.assign({}, acc, (_Object$assign3 = {}, _Object$assign3[k] = value, _Object$assign3));
8303
+ }, {});
8304
+ }
8305
+ return Object.assign({}, state, (_Object$assign4 = {}, _Object$assign4[optionKey] = value, _Object$assign4));
8266
8306
  };
8267
8307
  /** Make sure our value is in the filter */
8268
8308
  var getValue = function getValue(values, value) {
@@ -9181,7 +9221,8 @@ var prepareFormValues = function prepareFormValues(data) {
9181
9221
  var productToPost = _objectWithoutPropertiesLoose(data, _excluded$6);
9182
9222
  // remove empty fields
9183
9223
  return Object.keys(productToPost).reduce(function (warningDetail, fieldName) {
9184
- var fieldValue = productToPost[fieldName];
9224
+ var key = fieldName;
9225
+ var fieldValue = productToPost[key];
9185
9226
  if (Array.isArray(fieldValue)) {
9186
9227
  if (!fieldValue.length || fieldValue[0].geoJSON === null) {
9187
9228
  return warningDetail;
@@ -9189,7 +9230,7 @@ var prepareFormValues = function prepareFormValues(data) {
9189
9230
  }
9190
9231
  if (fieldValue) {
9191
9232
  var _Object$assign;
9192
- return Object.assign({}, warningDetail, (_Object$assign = {}, _Object$assign[fieldName] = fieldValue, _Object$assign));
9233
+ return Object.assign({}, warningDetail, (_Object$assign = {}, _Object$assign[key] = fieldValue, _Object$assign));
9193
9234
  }
9194
9235
  return warningDetail;
9195
9236
  }, {});
@@ -9277,6 +9318,8 @@ var Form = function Form(_ref5) {
9277
9318
  onSaveForm = _ref5$onSaveForm === void 0 ? function () {} : _ref5$onSaveForm,
9278
9319
  _ref5$onPublishForm = _ref5.onPublishForm,
9279
9320
  onPublishForm = _ref5$onPublishForm === void 0 ? function () {} : _ref5$onPublishForm,
9321
+ _ref5$onClearForm = _ref5.onClearForm,
9322
+ onClearForm = _ref5$onClearForm === void 0 ? function () {} : _ref5$onClearForm,
9280
9323
  object = _ref5.object,
9281
9324
  _ref5$formAction = _ref5.formAction,
9282
9325
  formAction = _ref5$formAction === void 0 ? '' : _ref5$formAction,
@@ -9374,6 +9417,7 @@ var Form = function Form(_ref5) {
9374
9417
  var onPressClear = function onPressClear() {
9375
9418
  reset(getEmptyPublicWarning());
9376
9419
  setWarningGeoJSONFeature(undefined);
9420
+ onClearForm();
9377
9421
  };
9378
9422
  var publicWarningId = publicWarningDetails == null ? void 0 : publicWarningDetails.id;
9379
9423
  React.useEffect(function () {
@@ -9783,6 +9827,9 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
9783
9827
  }
9784
9828
  }));
9785
9829
  };
9830
+ var clearForm = function clearForm() {
9831
+ dispatch(publicWarningFormActions.removeAllAreas());
9832
+ };
9786
9833
  var saveForm = function saveForm(newFormValues) {
9787
9834
  var status = newFormValues.linked_to_id ? PublicWarningStatus.DRAFT_PUBLISHED : PublicWarningStatus.DRAFT;
9788
9835
  dispatch(publicWarningFormActions.saveWarning({
@@ -9831,6 +9878,7 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
9831
9878
  publicWarningDetails: publicWarning == null ? void 0 : publicWarning.warningDetail,
9832
9879
  onPublishForm: publishForm,
9833
9880
  onSaveForm: saveForm,
9881
+ onClearForm: clearForm,
9834
9882
  formAction: publicWarningFormAction,
9835
9883
  isReadOnly: isReadOnly,
9836
9884
  error: publicWarningFormError,
@@ -10347,6 +10395,9 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
10347
10395
  var warningId = useSelector(function (store) {
10348
10396
  return getPublicWarningId(store);
10349
10397
  });
10398
+ var warningStatus = useSelector(function (store) {
10399
+ return getPublicWarningStatus(store);
10400
+ });
10350
10401
  var fetchItems = function fetchItems() {
10351
10402
  dispatch(uiActions.setErrorDialog({
10352
10403
  error: '',
@@ -10427,7 +10478,7 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
10427
10478
  }
10428
10479
  // eslint-disable-next-line react-hooks/exhaustive-deps
10429
10480
  }, [areas, searchQuery]);
10430
- var isChangeAreaDisabled = warningId !== undefined && typeof warningId === 'string' && warningId.length > 0;
10481
+ var isChangeAreaDisabled = warningId !== undefined && typeof warningId === 'string' && warningId.length > 0 && warningStatus !== PublicWarningStatus.DRAFT && warningStatus !== PublicWarningStatus.DRAFT_PUBLISHED;
10431
10482
  var drawingError = uiError ? {
10432
10483
  type: areaObjectLoaderType,
10433
10484
  error: uiError
@@ -10479,6 +10530,7 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
10479
10530
  * */
10480
10531
  var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(apiAirmet) {
10481
10532
  var airmet = apiAirmet.airmet;
10533
+ var cancelAirmet = apiAirmet == null ? void 0 : apiAirmet.airmet;
10482
10534
  var areas = [];
10483
10535
  if (airmet.startGeometry) {
10484
10536
  areas.push({
@@ -10508,12 +10560,14 @@ var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(api
10508
10560
  level: 'AIR',
10509
10561
  probability: 0,
10510
10562
  incident: airmet.sequence,
10511
- firName: airmet.firName
10563
+ firName: airmet.firName,
10564
+ cancelId: isInstanceOfCancelAirmet(airmet) ? cancelAirmet.cancelsAirmetSequenceId : undefined
10512
10565
  }
10513
10566
  };
10514
10567
  };
10515
10568
  var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(apiSigmet) {
10516
10569
  var sigmet = apiSigmet.sigmet;
10570
+ var cancelSigmet = apiSigmet == null ? void 0 : apiSigmet.sigmet;
10517
10571
  var areas = [];
10518
10572
  if (sigmet.startGeometry) {
10519
10573
  areas.push({
@@ -10559,7 +10613,8 @@ var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(api
10559
10613
  level: 'SIG',
10560
10614
  probability: 0,
10561
10615
  incident: sigmet.sequence,
10562
- firName: sigmet.firName
10616
+ firName: sigmet.firName,
10617
+ cancelId: isInstanceOfCancelSigmet(sigmet) ? cancelSigmet.cancelsSigmetSequenceId : undefined
10563
10618
  }
10564
10619
  };
10565
10620
  };
@@ -11009,9 +11064,10 @@ var warningColors = Object.assign({}, LevelColors);
11009
11064
 
11010
11065
  var _excluded$5 = ["id", "warningDetail", "status", "editor"],
11011
11066
  _excluded2 = ["id", "linked_to_id", "proposal_id", "warning_handle_uuid"],
11012
- _excluded3 = ["id"],
11013
- _excluded4 = ["id", "warningDetail"],
11014
- _excluded5 = ["id"];
11067
+ _excluded3 = ["published_warning_uuid"],
11068
+ _excluded4 = ["id"],
11069
+ _excluded5 = ["id", "warningDetail"],
11070
+ _excluded6 = ["id"];
11015
11071
  var getSortedStatus = function getSortedStatus(status) {
11016
11072
  switch (status) {
11017
11073
  case 'DRAFT_PUBLISHED':
@@ -11035,15 +11091,22 @@ var getWarningWithoutIdStatusEditor = function getWarningWithoutIdStatusEditor(w
11035
11091
  warningDetail.proposal_id;
11036
11092
  warningDetail.warning_handle_uuid;
11037
11093
  var cleanWarningDetail = _objectWithoutPropertiesLoose(warningDetail, _excluded2);
11094
+ var areas = warningDetail.areas.map(function (_ref) {
11095
+ _ref.published_warning_uuid;
11096
+ var area = _objectWithoutPropertiesLoose(_ref, _excluded3);
11097
+ return area;
11098
+ });
11038
11099
  return Object.assign({}, fullWarning, {
11039
- warningDetail: cleanWarningDetail
11100
+ warningDetail: Object.assign({}, cleanWarningDetail, {
11101
+ areas: areas
11102
+ })
11040
11103
  });
11041
11104
  };
11042
11105
  var getWarningWithLinkedToId = function getWarningWithLinkedToId(warning) {
11043
11106
  var id = warning.id,
11044
11107
  warningDetail = warning.warningDetail;
11045
11108
  warningDetail.id;
11046
- var cleanWarningDetail = _objectWithoutPropertiesLoose(warningDetail, _excluded3);
11109
+ var cleanWarningDetail = _objectWithoutPropertiesLoose(warningDetail, _excluded4);
11047
11110
  return Object.assign({}, warning, {
11048
11111
  warningDetail: Object.assign({}, cleanWarningDetail, {
11049
11112
  linked_to_id: id
@@ -11054,9 +11117,9 @@ var getWarningWithLinkedToId = function getWarningWithLinkedToId(warning) {
11054
11117
  var getWarningWithProposalId = function getWarningWithProposalId(warning) {
11055
11118
  var id = warning.id,
11056
11119
  warningDetail = warning.warningDetail,
11057
- fullWarning = _objectWithoutPropertiesLoose(warning, _excluded4);
11120
+ fullWarning = _objectWithoutPropertiesLoose(warning, _excluded5);
11058
11121
  warningDetail.id;
11059
- var cleanWarningDetail = _objectWithoutPropertiesLoose(warningDetail, _excluded5);
11122
+ var cleanWarningDetail = _objectWithoutPropertiesLoose(warningDetail, _excluded6);
11060
11123
  return Object.assign({}, fullWarning, {
11061
11124
  warningDetail: Object.assign({}, cleanWarningDetail, {
11062
11125
  proposal_id: id
@@ -11103,9 +11166,9 @@ var ExpandableFilterChip = function ExpandableFilterChip(_ref) {
11103
11166
  var _useState = useState(null),
11104
11167
  anchorEl = _useState[0],
11105
11168
  setAnchorEl = _useState[1];
11106
- var _useSelectedOptions = useSelectedOptions(options),
11107
- noSelectedOptions = _useSelectedOptions.noSelectedOptions,
11108
- allSelected = _useSelectedOptions.allSelected;
11169
+ var _getSelectedOptions = getSelectedOptions(options),
11170
+ noSelectedOptions = _getSelectedOptions.noSelectedOptions,
11171
+ allSelected = _getSelectedOptions.allSelected;
11109
11172
  var isDisabled = Object.keys(options).length < 2;
11110
11173
  return jsxs(Fragment, {
11111
11174
  children: [jsx(CustomTooltip, {
@@ -11225,7 +11288,8 @@ var ExpandableFilterChip = function ExpandableFilterChip(_ref) {
11225
11288
  label: jsx(Fragment, {
11226
11289
  children: t(getTranslationKey(emptyFilterId, id))
11227
11290
  })
11228
- }, id + "-" + emptyFilterId), Object.keys(options).map(function (optionId) {
11291
+ }, id + "-" + emptyFilterId), Object.keys(options).map(function (_optionId) {
11292
+ var optionId = _optionId;
11229
11293
  if (optionId === emptyFilterId) {
11230
11294
  return null;
11231
11295
  }
@@ -11254,6 +11318,7 @@ var ExpandableFilterChip = function ExpandableFilterChip(_ref) {
11254
11318
  });
11255
11319
  };
11256
11320
 
11321
+ var filterOrder = ['incident', 'source', 'domain', 'phenomenon', 'level'];
11257
11322
  var FilterList = function FilterList(_ref) {
11258
11323
  var _ref$onClickAll = _ref.onClickAll,
11259
11324
  onClickAll = _ref$onClickAll === void 0 ? function () {} : _ref$onClickAll,
@@ -11291,7 +11356,7 @@ var FilterList = function FilterList(_ref) {
11291
11356
  size: "medium"
11292
11357
  })
11293
11358
  })
11294
- }), Object.keys(filterState).map(function (filterId) {
11359
+ }), filterOrder.map(function (filterId) {
11295
11360
  return jsx(ExpandableFilterChip, {
11296
11361
  id: filterId,
11297
11362
  options: filterState[filterId],
@@ -11491,7 +11556,7 @@ var renderLevelText = function renderLevelText(levelString) {
11491
11556
  })]
11492
11557
  });
11493
11558
  };
11494
- var renderStatusIcon = function renderStatusIcon(status) {
11559
+ var renderStatusIcon = function renderStatusIcon(warning, status) {
11495
11560
  var getStatusTag = function getStatusTag(content, color, icon) {
11496
11561
  if (icon === void 0) {
11497
11562
  icon = null;
@@ -11507,6 +11572,12 @@ var renderStatusIcon = function renderStatusIcon(status) {
11507
11572
  icon: icon
11508
11573
  });
11509
11574
  };
11575
+ if (warning.productStatus === ProductStatus.PUBLISHED && warning.warningDetail.cancelId) {
11576
+ return getStatusTag("Cnls " + warning.warningDetail.cancelId, 'red');
11577
+ }
11578
+ if (warning.productStatus === ProductStatus.CANCELLED && warning.warningDetail.cancelId === undefined) {
11579
+ return getStatusTag('Cnld', 'red');
11580
+ }
11510
11581
  switch (status) {
11511
11582
  case PublicWarningStatus.TODO:
11512
11583
  return null;
@@ -11521,7 +11592,9 @@ var renderStatusIcon = function renderStatusIcon(status) {
11521
11592
  color: 'geowebColors.iconButtons.flat.default.color',
11522
11593
  marginRight: 2
11523
11594
  },
11524
- children: jsx(Edit, {})
11595
+ children: jsx(Edit, {
11596
+ "data-testid": "EditPencilIcon"
11597
+ })
11525
11598
  });
11526
11599
  case PublicWarningStatus.DRAFT_PUBLISHED:
11527
11600
  return getStatusTag('Pub', 'green', jsx(Edit, {
@@ -11770,7 +11843,7 @@ var WarningListItem = function WarningListItem(_ref) {
11770
11843
  sx: {
11771
11844
  position: 'relative'
11772
11845
  },
11773
- children: [renderStatusIcon(status), warning.editor && jsx(Box, {
11846
+ children: [renderStatusIcon(warning, status), warning.editor && jsx(Box, {
11774
11847
  sx: {
11775
11848
  width: '16px',
11776
11849
  position: 'absolute',
@@ -12014,8 +12087,7 @@ var PublicWarningList = function PublicWarningList(_ref) {
12014
12087
  hoveredFeatureId = _ref.hoveredFeatureId,
12015
12088
  expandedSections = _ref.expandedSections,
12016
12089
  setExpandedSections = _ref.setExpandedSections;
12017
- var filterState = filterHookState.filterState,
12018
- updateFilter = filterHookState.updateFilter,
12090
+ var updateFilter = filterHookState.updateFilter,
12019
12091
  allSelected = filterHookState.allSelected;
12020
12092
  var _useWarningsTranslati = useWarningsTranslation(),
12021
12093
  t = _useWarningsTranslati.t;
@@ -12148,7 +12220,7 @@ var PublicWarningList = function PublicWarningList(_ref) {
12148
12220
  children: jsx(FilterList, {
12149
12221
  isAllSelected: allSelected,
12150
12222
  onClickAll: onClickAll,
12151
- filterState: filterState,
12223
+ filterState: filterHookState.filterState,
12152
12224
  updateFilter: updateFilter
12153
12225
  })
12154
12226
  }), jsxs(Grid2, {
@@ -12351,6 +12423,37 @@ var getPublicWarningsError = createSelector(getPublicWarningsStore, function (st
12351
12423
  var getPublicWarningsLastUpdatedTime = createSelector(getPublicWarningsStore, function (store) {
12352
12424
  return store == null ? void 0 : store.lastUpdatedTime;
12353
12425
  });
12426
+ var getWarningsFilterState = createSelector(getPublicWarningsStore, function (store) {
12427
+ return store == null ? void 0 : store.filterState;
12428
+ }, selectorMemoizationOptions);
12429
+ var getWarningsFilterById = createSelector(getWarningsFilterState, function (_store, panelId) {
12430
+ return panelId;
12431
+ }, function (filterState, panelId) {
12432
+ return panelId && filterState && filterState[panelId] ? filterState[panelId] : initialFilters;
12433
+ }, selectorMemoizationOptions);
12434
+ var getWarningsPresetById = createSelector(getWarningsFilterState, function (_store, panelId) {
12435
+ return panelId;
12436
+ }, function (filterState, panelId) {
12437
+ if (!panelId || !filterState || !filterState[panelId]) {
12438
+ return {
12439
+ filterState: null
12440
+ };
12441
+ }
12442
+ return {
12443
+ filterState: filterState[panelId]
12444
+ };
12445
+ }, selectorMemoizationOptions);
12446
+
12447
+ var selectors = /*#__PURE__*/Object.freeze({
12448
+ __proto__: null,
12449
+ getPublicWarningsError: getPublicWarningsError,
12450
+ getPublicWarningsLastUpdatedTime: getPublicWarningsLastUpdatedTime,
12451
+ getPublicWarningsStore: getPublicWarningsStore,
12452
+ getWarningsFilterById: getWarningsFilterById,
12453
+ getWarningsPresetById: getWarningsPresetById,
12454
+ isPublicWarningsLoading: isPublicWarningsLoading,
12455
+ selectAllPublicWarnings: selectAllPublicWarnings
12456
+ });
12354
12457
 
12355
12458
  var ConfirmDeleteWarningDialog = function ConfirmDeleteWarningDialog(_ref) {
12356
12459
  var _ref$onClose = _ref.onClose,
@@ -12447,35 +12550,51 @@ var ConfirmDeleteWarningDialog = function ConfirmDeleteWarningDialog(_ref) {
12447
12550
  * Copyright 2024 - Finnish Meteorological Institute (FMI)
12448
12551
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
12449
12552
  * */
12450
- var useFilter = function useFilter(defaultFilter, pickedOptions) {
12451
- var _useState = useState(defaultFilter),
12452
- filter = _useState[0],
12453
- setFilter = _useState[1];
12454
- var pickedFilterOptions = pick(filter, [emptyFilterId].concat(pickedOptions));
12455
- var _useSelectedOptions = useSelectedOptions(pickedFilterOptions),
12456
- allSelected = _useSelectedOptions.allSelected;
12457
- return [pickedFilterOptions, setFilter, allSelected];
12458
- };
12459
- var useWarningFilters = function useWarningFilters(warnings) {
12460
- var _useState2 = useState(defaultDomainFilter),
12461
- domainFilter = _useState2[0],
12462
- setDomainFilter = _useState2[1];
12463
- var relevantLevels = Object.keys(domainFilter).flatMap(function (domain) {
12553
+ var getLevelsForDomainFilter = function getLevelsForDomainFilter(domainFilter) {
12554
+ return Object.keys(domainFilter).flatMap(function (domain) {
12464
12555
  return domainFilter[domain] ? domainLevels[domain] : [];
12465
12556
  });
12466
- var _useFilter = useFilter(defaultLevelFilter, relevantLevels),
12467
- pickedLevelFilter = _useFilter[0],
12468
- setLevelFilter = _useFilter[1],
12469
- allLevelsSelected = _useFilter[2];
12470
- var existingPhenomenon = Object.values(Phenomenon$1).filter(function (p) {
12471
- return warnings.find(function (w) {
12472
- return w.warningDetail.phenomenon === p;
12473
- });
12557
+ };
12558
+ var getFilterOptions = function getFilterOptions(defaultFilter, allOptions, savedFilter) {
12559
+ var pickedFilterOptions = pick(defaultFilter, [emptyFilterId].concat(allOptions));
12560
+ // keep options state from savedFilter if it still exists
12561
+ var updatedOptions = assign(pickedFilterOptions, pick(savedFilter || {}, Object.keys(pickedFilterOptions)));
12562
+ var _getSelectedOptions = getSelectedOptions(updatedOptions),
12563
+ allSelected = _getSelectedOptions.allSelected;
12564
+ return [updatedOptions, allSelected];
12565
+ };
12566
+ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, savedFilterState, presetFilterState) {
12567
+ var pickedDomainFilter = savedFilterState.domain,
12568
+ pickedPhenomenonFilter = savedFilterState.phenomenon,
12569
+ pickedLevelFilter = savedFilterState.level,
12570
+ pickedSourceFilter = savedFilterState.source,
12571
+ pickedIncidentFilter = savedFilterState.incident;
12572
+ /// level
12573
+ var relevantLevels = useMemo(function () {
12574
+ return getLevelsForDomainFilter(pickedDomainFilter);
12575
+ }, [pickedDomainFilter]);
12576
+ var _getFilterOptions = getFilterOptions(defaultLevelFilter, relevantLevels, pickedLevelFilter),
12577
+ updatedPickedLevels = _getFilterOptions[0],
12578
+ allLevelsSelected = _getFilterOptions[1];
12579
+ // phenomenon
12580
+ var warningsPhenomena = useMemo(function () {
12581
+ return getFiltersFromWarnings(warnings, 'phenomenon');
12582
+ }, [warnings]);
12583
+ // filter out aviation phenomena
12584
+ var phenomenaKeysToFilter = new Set(Object.values(Phenomenon$1));
12585
+ var relevantPhenomena = warningsPhenomena.filter(function (item) {
12586
+ return phenomenaKeysToFilter.has(item);
12474
12587
  });
12475
- var _useFilter2 = useFilter(defaultPhenomenonFilter, existingPhenomenon),
12476
- pickedPhenomenonFilter = _useFilter2[0],
12477
- setPhenomenonFilter = _useFilter2[1],
12478
- allPhenomenonSelected = _useFilter2[2];
12588
+ relevantPhenomena.push(emptyFilterId);
12589
+ var defaultPhenomenonFilter = useMemo(function () {
12590
+ return Object.fromEntries(relevantPhenomena.map(function (key) {
12591
+ return [key, true];
12592
+ }));
12593
+ }, [relevantPhenomena]);
12594
+ var _getFilterOptions2 = getFilterOptions(defaultPhenomenonFilter, relevantPhenomena, pickedPhenomenonFilter),
12595
+ updatedPickedPhenomena = _getFilterOptions2[0],
12596
+ allPhenomenaSelected = _getFilterOptions2[1];
12597
+ // source
12479
12598
  var relevantSources = useMemo(function () {
12480
12599
  return getFiltersFromWarnings(warnings, 'warningProposalSource');
12481
12600
  }, [warnings]);
@@ -12484,20 +12603,10 @@ var useWarningFilters = function useWarningFilters(warnings) {
12484
12603
  return [key, true];
12485
12604
  }));
12486
12605
  }, [relevantSources]);
12487
- var _useFilter3 = useFilter(defaultSourceFilter, relevantSources),
12488
- pickedSourceFilter = _useFilter3[0],
12489
- setSourceFilter = _useFilter3[1],
12490
- allSourcesSelected = _useFilter3[2];
12491
- useEffect(function () {
12492
- setSourceFilter(function (prevFilter) {
12493
- var newSourceFilter = Object.assign({}, defaultSourceFilter, prevFilter);
12494
- // Only update state if the new filter differs from the current one
12495
- if (JSON.stringify(newSourceFilter) !== JSON.stringify(prevFilter)) {
12496
- return newSourceFilter;
12497
- }
12498
- return prevFilter;
12499
- });
12500
- }, [defaultSourceFilter, setSourceFilter]);
12606
+ var _getFilterOptions3 = getFilterOptions(defaultSourceFilter, relevantSources, pickedSourceFilter),
12607
+ updatedPickedSources = _getFilterOptions3[0],
12608
+ allSourcesSelected = _getFilterOptions3[1];
12609
+ // incident
12501
12610
  var relevantIncidents = useMemo(function () {
12502
12611
  return getFiltersFromWarnings(warnings, 'incident');
12503
12612
  }, [warnings]);
@@ -12506,23 +12615,25 @@ var useWarningFilters = function useWarningFilters(warnings) {
12506
12615
  return [key, true];
12507
12616
  }));
12508
12617
  }, [relevantIncidents]);
12509
- var _useFilter4 = useFilter(defaultIncidentFilter, relevantIncidents),
12510
- pickedIncidentFilter = _useFilter4[0],
12511
- setIncidentFilter = _useFilter4[1],
12512
- allIncidentsSelected = _useFilter4[2];
12618
+ var _getFilterOptions4 = getFilterOptions(defaultIncidentFilter, relevantIncidents, pickedIncidentFilter),
12619
+ updatedPickedIncidents = _getFilterOptions4[0],
12620
+ allIncidentsSelected = _getFilterOptions4[1];
12513
12621
  useEffect(function () {
12514
- setIncidentFilter(function (prevFilter) {
12515
- var newIncidentFilter = Object.assign({}, defaultIncidentFilter, prevFilter);
12516
- // Only update state if the new filter differs from the current one
12517
- if (JSON.stringify(newIncidentFilter) !== JSON.stringify(prevFilter)) {
12518
- return newIncidentFilter;
12519
- }
12520
- return prevFilter;
12521
- });
12522
- }, [defaultIncidentFilter, setIncidentFilter]);
12523
- var _useSelectedOptions2 = useSelectedOptions(domainFilter),
12524
- allDomainSelected = _useSelectedOptions2.allSelected;
12525
- var allSelected = allDomainSelected && allLevelsSelected && allPhenomenonSelected && allIncidentsSelected && allSourcesSelected;
12622
+ // when the preset changes, update the filters
12623
+ if (presetFilterState) {
12624
+ onUpdateFilters(assign({}, initialFilters, presetFilterState), 'system');
12625
+ } else {
12626
+ // for a preset without filters saved use the initial filters
12627
+ onUpdateFilters(Object.assign({}, initialFilters, {
12628
+ incident: makeFilterFromList(relevantIncidents),
12629
+ source: makeFilterFromList(relevantSources)
12630
+ }), 'system');
12631
+ }
12632
+ // eslint-disable-next-line react-hooks/exhaustive-deps
12633
+ }, [presetFilterState, onUpdateFilters]);
12634
+ var _getSelectedOptions2 = getSelectedOptions(pickedDomainFilter),
12635
+ allDomainSelected = _getSelectedOptions2.allSelected;
12636
+ var allSelected = allDomainSelected && allLevelsSelected && allPhenomenaSelected && allIncidentsSelected && allSourcesSelected;
12526
12637
  /**
12527
12638
  * @param filterKey - Name of the filter | "ALL" filters
12528
12639
  * @param optionKey - Name of the option | "ALL" options
@@ -12530,49 +12641,47 @@ var useWarningFilters = function useWarningFilters(warnings) {
12530
12641
  * @param only - Flag that decides if all other options should be disabled
12531
12642
  */
12532
12643
  var updateFilter = function updateFilter(filterKey, optionKey, value, only) {
12644
+ var levelFilter = value ? defaultLevelFilter : defaultEmptyFilter;
12533
12645
  if (filterKey === 'ALL') {
12534
- setDomainFilter(function (state) {
12535
- return updateState(state, 'ALL', value);
12536
- });
12537
- setLevelFilter(function (state) {
12538
- return updateState(state, 'ALL', value);
12539
- });
12540
- setPhenomenonFilter(function (state) {
12541
- return updateState(state, 'ALL', value);
12542
- });
12543
- setSourceFilter(function (state) {
12544
- return updateState(state, 'ALL', value);
12545
- });
12546
- setIncidentFilter(function (state) {
12547
- return updateState(state, 'ALL', value);
12548
- });
12646
+ onUpdateFilters({
12647
+ domain: updateState(pickedDomainFilter, 'ALL', value),
12648
+ level: updateState(levelFilter, 'ALL', value),
12649
+ phenomenon: updateState(pickedPhenomenonFilter, 'ALL', value),
12650
+ incident: updateState(pickedIncidentFilter, 'ALL', value),
12651
+ source: updateState(pickedSourceFilter, 'ALL', value)
12652
+ }, 'user');
12549
12653
  } else if (filterKey === 'domain') {
12550
- setDomainFilter(function (state) {
12551
- return updateState(state, optionKey, value, only);
12552
- });
12654
+ var newDomain = updateState(pickedDomainFilter, optionKey, value, only);
12655
+ var _relevantLevels = getLevelsForDomainFilter(newDomain);
12656
+ var _getFilterOptions5 = getFilterOptions(defaultLevelFilter, _relevantLevels, pickedLevelFilter),
12657
+ newLevel = _getFilterOptions5[0];
12658
+ onUpdateFilters(Object.assign({}, savedFilterState, {
12659
+ domain: newDomain,
12660
+ level: newLevel // levels depend on selected domains
12661
+ }), 'user');
12553
12662
  } else if (filterKey === 'level') {
12554
- setLevelFilter(function (state) {
12555
- return updateState(state, optionKey, value, only);
12556
- });
12663
+ onUpdateFilters(Object.assign({}, savedFilterState, {
12664
+ level: updateState(pickedLevelFilter, optionKey, value, only)
12665
+ }), 'user');
12557
12666
  } else if (filterKey === 'phenomenon') {
12558
- setPhenomenonFilter(function (state) {
12559
- return updateState(state, optionKey, value, only);
12560
- });
12667
+ onUpdateFilters(Object.assign({}, savedFilterState, {
12668
+ phenomenon: updateState(pickedPhenomenonFilter, optionKey, value, only)
12669
+ }), 'user');
12561
12670
  } else if (filterKey === 'source') {
12562
- setSourceFilter(function (state) {
12563
- return updateState(state, optionKey, value, only);
12564
- });
12671
+ onUpdateFilters(Object.assign({}, savedFilterState, {
12672
+ source: updateState(pickedSourceFilter, optionKey, value, only)
12673
+ }), 'user');
12565
12674
  } else if (filterKey === 'incident') {
12566
- setIncidentFilter(function (state) {
12567
- return updateState(state, optionKey, value, only);
12568
- });
12675
+ onUpdateFilters(Object.assign({}, savedFilterState, {
12676
+ incident: updateState(pickedIncidentFilter, optionKey, value, only)
12677
+ }), 'user');
12569
12678
  }
12570
12679
  };
12571
12680
  var byFilterState = useCallback(function (warning) {
12572
12681
  var levelDomain = ['SIG', 'AIR'].find(function (d) {
12573
12682
  return d === warning.warningDetail.level;
12574
12683
  }) ? Domain.aviation : Domain["public"];
12575
- if (!domainFilter[levelDomain]) {
12684
+ if (!pickedDomainFilter[levelDomain]) {
12576
12685
  return false;
12577
12686
  }
12578
12687
  var level = getValue(Level, warning.warningDetail.level);
@@ -12586,33 +12695,34 @@ var useWarningFilters = function useWarningFilters(warnings) {
12586
12695
  var source = relevantSources.find(function (source) {
12587
12696
  return source === warning.warningDetail.warningProposalSource;
12588
12697
  }) || emptyFilterId;
12589
- if (!pickedSourceFilter[source]) {
12698
+ if (!updatedPickedSources[source]) {
12590
12699
  return false;
12591
12700
  }
12592
12701
  var incident = relevantIncidents.find(function (incident) {
12593
12702
  return incident === warning.warningDetail.incident;
12594
12703
  }) || emptyFilterId;
12595
- if (!pickedIncidentFilter[incident]) {
12704
+ if (!updatedPickedIncidents[incident]) {
12596
12705
  return false;
12597
12706
  }
12598
12707
  return true;
12599
- }, [domainFilter, pickedLevelFilter, pickedPhenomenonFilter, relevantSources, pickedSourceFilter, relevantIncidents, pickedIncidentFilter]);
12708
+ }, [pickedDomainFilter, pickedLevelFilter, pickedPhenomenonFilter, relevantSources, updatedPickedSources, relevantIncidents, updatedPickedIncidents]);
12600
12709
  return {
12601
- filterState: {
12602
- incident: pickedIncidentFilter,
12603
- source: pickedSourceFilter,
12604
- domain: domainFilter,
12605
- phenomenon: pickedPhenomenonFilter,
12606
- level: pickedLevelFilter
12607
- },
12608
12710
  allSelected: allSelected,
12609
12711
  updateFilter: updateFilter,
12610
- byFilterState: byFilterState
12712
+ byFilterState: byFilterState,
12713
+ filterState: {
12714
+ domain: pickedDomainFilter,
12715
+ level: updatedPickedLevels,
12716
+ phenomenon: updatedPickedPhenomena,
12717
+ incident: updatedPickedIncidents,
12718
+ source: updatedPickedSources
12719
+ }
12611
12720
  };
12612
12721
  };
12613
12722
 
12614
12723
  var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12615
- var panelId = _ref.panelId;
12724
+ var panelId = _ref.panelId,
12725
+ presetFilterState = _ref.presetFilterState;
12616
12726
  var _useWarningsTranslati = useWarningsTranslation(),
12617
12727
  t = _useWarningsTranslati.t;
12618
12728
  var dispatch = useDispatch();
@@ -12632,10 +12742,13 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12632
12742
  setConfirmDialogOptions = _React$useState[1];
12633
12743
  var publicWarnings = useSelector(selectAllPublicWarnings);
12634
12744
  var selectedPublicWarningId = useSelector(getSelectedPublicWarningId);
12635
- var isLoading = useSelector(isPublicWarningsLoading || isFetchingAirmet || isFetchingSigmet);
12745
+ var isLoading = useSelector(isPublicWarningsLoading) || isFetchingAirmet || isFetchingSigmet;
12636
12746
  var error = useSelector(getPublicWarningsError);
12637
12747
  var isFormDirty = useSelector(getSelectedPublicIsFormDirty);
12638
12748
  var lastUpdatedTime = useSelector(getPublicWarningsLastUpdatedTime);
12749
+ var savedFilterState = useSelector(function (store) {
12750
+ return getWarningsFilterById(store, panelId);
12751
+ });
12639
12752
  var warningsApi = getWarningsApi();
12640
12753
  var openPublicWarningDialog = /*#__PURE__*/function () {
12641
12754
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(formAction, publicWarning, warningType) {
@@ -12665,7 +12778,8 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12665
12778
  publicWarning: publicWarning
12666
12779
  }, {
12667
12780
  formState: formAction,
12668
- warningType: warningType
12781
+ warningType: warningType,
12782
+ panelId: panelId
12669
12783
  })));
12670
12784
  case 7:
12671
12785
  case "end":
@@ -12840,7 +12954,14 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12840
12954
  var transformedAirmets = (airmetList == null ? void 0 : airmetList.map(transformAirmetToWarningFormat)) || [];
12841
12955
  return publicWarnings.concat(transformedSigmets).concat(transformedAirmets);
12842
12956
  }, [publicWarnings, sigmetList, airmetList]);
12843
- var filterHookState = useWarningFilters(combinedWarnings);
12957
+ var onUpdateFilters = React__default.useCallback(function (filterState, origin) {
12958
+ dispatch(publicWarningActions.setWarningFilters({
12959
+ filterState: filterState,
12960
+ panelId: panelId,
12961
+ origin: origin
12962
+ }));
12963
+ }, [dispatch, panelId]);
12964
+ var filterHookState = useWarningFilters(combinedWarnings, onUpdateFilters, savedFilterState, presetFilterState);
12844
12965
  var filteredWarnings = React__default.useMemo(function () {
12845
12966
  return combinedWarnings.filter(filterHookState.byFilterState);
12846
12967
  }, [combinedWarnings, filterHookState.byFilterState]);
@@ -12922,7 +13043,8 @@ var PublicWarningApiWrapper = function PublicWarningApiWrapper(_ref) {
12922
13043
  var config = _ref.config,
12923
13044
  auth = _ref.auth,
12924
13045
  onSetAuth = _ref.onSetAuth,
12925
- panelId = _ref.panelId;
13046
+ panelId = _ref.panelId,
13047
+ presetFilterState = _ref.presetFilterState;
12926
13048
  return config ? jsx(ApiProvider, {
12927
13049
  config: {
12928
13050
  baseURL: config.baseURL,
@@ -12935,25 +13057,29 @@ var PublicWarningApiWrapper = function PublicWarningApiWrapper(_ref) {
12935
13057
  createApi: createApi$1,
12936
13058
  children: jsx(ErrorBoundary, {
12937
13059
  children: jsx(PublicWarningListConnect, {
12938
- panelId: panelId
13060
+ panelId: panelId,
13061
+ presetFilterState: presetFilterState
12939
13062
  })
12940
13063
  })
12941
13064
  }) : null;
12942
13065
  };
12943
13066
  var componentsLookUp = function componentsLookUp(payload, apiProps) {
12944
13067
  var id = payload.id,
12945
- componentType = payload.componentType;
13068
+ componentType = payload.componentType,
13069
+ initialProps = payload.initialProps;
12946
13070
  switch (componentType) {
12947
13071
  case warningListViewPreset.componentType:
12948
13072
  if (apiProps && apiProps.config) {
12949
13073
  return jsx(PublicWarningApiWrapper, Object.assign({}, apiProps, {
12950
13074
  panelId: id,
12951
- "data-testid": "publicWarningModule"
13075
+ "data-testid": "publicWarningModule",
13076
+ presetFilterState: initialProps.filterState
12952
13077
  }));
12953
13078
  }
12954
13079
  return jsx(PublicWarningListConnect, {
12955
13080
  panelId: id,
12956
- "data-testid": "publicWarningList"
13081
+ "data-testid": "publicWarningList",
13082
+ presetFilterState: initialProps.filterState
12957
13083
  });
12958
13084
  default:
12959
13085
  return null;
@@ -13153,16 +13279,20 @@ publicWarningFormListener.startListening({
13153
13279
  publicWarningFormListener.startListening({
13154
13280
  actionCreator: publicWarningFormActions.openPublicWarningFormDialog,
13155
13281
  effect: function () {
13156
- var _effect6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_, listenerApi) {
13282
+ var _effect6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref5, listenerApi) {
13283
+ var payload, panelId;
13157
13284
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
13158
13285
  while (1) switch (_context6.prev = _context6.next) {
13159
13286
  case 0:
13287
+ payload = _ref5.payload;
13160
13288
  listenerApi.cancelActiveListeners();
13289
+ panelId = payload.panelId;
13161
13290
  listenerApi.dispatch(uiActions.setToggleOpenDialog({
13162
13291
  setOpen: true,
13163
- type: publicWarningDialogType
13292
+ type: publicWarningDialogType,
13293
+ sourcePanelId: panelId
13164
13294
  }));
13165
- case 2:
13295
+ case 4:
13166
13296
  case "end":
13167
13297
  return _context6.stop();
13168
13298
  }
@@ -13175,7 +13305,7 @@ publicWarningFormListener.startListening({
13175
13305
  }()
13176
13306
  });
13177
13307
  var saveOrUpdateWarning = /*#__PURE__*/function () {
13178
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(publicWarning) {
13308
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(publicWarning) {
13179
13309
  var warningsApi, warningDetail, status, warning, newWarningId;
13180
13310
  return _regeneratorRuntime().wrap(function _callee7$(_context7) {
13181
13311
  while (1) switch (_context7.prev = _context7.next) {
@@ -13221,7 +13351,7 @@ var saveOrUpdateWarning = /*#__PURE__*/function () {
13221
13351
  }, _callee7);
13222
13352
  }));
13223
13353
  return function saveOrUpdateWarning(_x13) {
13224
- return _ref5.apply(this, arguments);
13354
+ return _ref6.apply(this, arguments);
13225
13355
  };
13226
13356
  }();
13227
13357
  var toggleDialogLoadingEffect = function toggleDialogLoadingEffect(dispatch, isDialogOpen, isLoading) {
@@ -13241,12 +13371,12 @@ var errorEffect = function errorEffect(dispatch, message, isDialogOpen) {
13241
13371
  publicWarningFormListener.startListening({
13242
13372
  actionCreator: uiActions.setToggleOpenDialog,
13243
13373
  effect: function () {
13244
- var _effect7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(_ref6, listenerApi) {
13374
+ var _effect7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(_ref7, listenerApi) {
13245
13375
  var payload;
13246
13376
  return _regeneratorRuntime().wrap(function _callee8$(_context8) {
13247
13377
  while (1) switch (_context8.prev = _context8.next) {
13248
13378
  case 0:
13249
- payload = _ref6.payload;
13379
+ payload = _ref7.payload;
13250
13380
  if (!payload.setOpen && payload.type === publicWarningDialogType) {
13251
13381
  listenerApi.dispatch(uiActions.setToggleOpenDialog({
13252
13382
  setOpen: false,
@@ -13274,7 +13404,7 @@ publicWarningsListener.startListening({
13274
13404
  actionCreator: publicWarningActions.fetchWarnings,
13275
13405
  effect: function () {
13276
13406
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_, listenerApi) {
13277
- var warningsApi, _yield$warningsApi$ge, warnings, lastUpdatedTime;
13407
+ var warningsApi, _yield$warningsApi$ge, warnings, lastUpdatedTime, taskError;
13278
13408
  return _regeneratorRuntime().wrap(function _callee$(_context) {
13279
13409
  while (1) switch (_context.prev = _context.next) {
13280
13410
  case 0:
@@ -13295,21 +13425,21 @@ publicWarningsListener.startListening({
13295
13425
  return listenerApi.delay(pollingIntervalTimeout);
13296
13426
  case 11:
13297
13427
  listenerApi.dispatch(publicWarningActions.fetchWarnings());
13298
- _context.next = 17;
13428
+ _context.next = 18;
13299
13429
  break;
13300
13430
  case 14:
13301
13431
  _context.prev = 14;
13302
13432
  _context.t0 = _context["catch"](1);
13303
- // Don't set an error if the cancelActiveListeners was invoked (which throws a TaskAbortError)
13304
- if ((_context.t0 == null ? void 0 : _context.t0.code) !== 'listener-cancelled') {
13433
+ taskError = _context.t0; // Don't set an error if the cancelActiveListeners was invoked (which throws a TaskAbortError)
13434
+ if ((taskError == null ? void 0 : taskError.code) !== 'listener-cancelled') {
13305
13435
  listenerApi.dispatch(publicWarningActions.fetchWarningsError({
13306
13436
  error: {
13307
- name: _context.t0.name,
13308
- message: _context.t0.message
13437
+ name: taskError.name,
13438
+ message: taskError.message
13309
13439
  }
13310
13440
  }));
13311
13441
  }
13312
- case 17:
13442
+ case 18:
13313
13443
  case "end":
13314
13444
  return _context.stop();
13315
13445
  }
@@ -13358,7 +13488,7 @@ drawingsListener.startListening({
13358
13488
  actionCreator: drawActions.submitDrawValues,
13359
13489
  effect: function () {
13360
13490
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
13361
- var payload, id, formValues, warningsApi, newID, errorMessage;
13491
+ var payload, id, formValues, warningsApi, newID, taskError, errorMessage;
13362
13492
  return _regeneratorRuntime().wrap(function _callee$(_context) {
13363
13493
  while (1) switch (_context.prev = _context.next) {
13364
13494
  case 0:
@@ -13399,24 +13529,25 @@ drawingsListener.startListening({
13399
13529
  isLoading: false,
13400
13530
  type: drawingDialogType
13401
13531
  }));
13402
- _context.next = 23;
13532
+ _context.next = 24;
13403
13533
  break;
13404
13534
  case 20:
13405
13535
  _context.prev = 20;
13406
13536
  _context.t0 = _context["catch"](3);
13407
13537
  // Don't do anything if the cancelActiveListeners was invoked (which throws a TaskAbortError)
13408
- if (_context.t0.code !== 'listener-cancelled') {
13538
+ taskError = _context.t0;
13539
+ if ((taskError == null ? void 0 : taskError.code) !== 'listener-cancelled') {
13409
13540
  listenerApi.dispatch(uiActions.toggleIsLoadingDialog({
13410
13541
  isLoading: false,
13411
13542
  type: drawingDialogType
13412
13543
  }));
13413
- errorMessage = isAxiosError$1(_context.t0) ? getAxiosErrorMessage(_context.t0) : _context.t0.message;
13544
+ errorMessage = isAxiosError$1(taskError) ? getAxiosErrorMessage(taskError) : taskError.message;
13414
13545
  listenerApi.dispatch(uiActions.setErrorDialog({
13415
13546
  type: drawingDialogType,
13416
13547
  error: errorMessage
13417
13548
  }));
13418
13549
  }
13419
- case 23:
13550
+ case 24:
13420
13551
  case "end":
13421
13552
  return _context.stop();
13422
13553
  }
@@ -13447,8 +13578,6 @@ drawingsListener.startListening({
13447
13578
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13448
13579
  * */
13449
13580
  var drawingModuleConfig = {
13450
- // TODO: remove id in https://gitlab.com/opengeoweb/opengeoweb/-/issues/5561
13451
- id: 'drawing-module',
13452
13581
  reducersMap: {
13453
13582
  drawings: reducer$2,
13454
13583
  publicWarningForm: reducer,
@@ -13457,4 +13586,4 @@ var drawingModuleConfig = {
13457
13586
  middlewares: [drawingsListener.middleware, publicWarningsListener.middleware, publicWarningFormListener.middleware]
13458
13587
  };
13459
13588
 
13460
- export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningApiWrapper, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningsModuleProvider, componentsLookUp, drawingModuleConfig, isAlreadyEdited, useObjectDrawDialogAction, warningFormConfirmationOptions, warningsTranslations };
13589
+ export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningApiWrapper, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningsModuleProvider, componentsLookUp, drawingModuleConfig, initialState$1 as initialState, isAlreadyEdited, publicWarningActions, publicWarningFormListener, reducer as publicWarningFormReducer, publicWarningsAdapter, publicWarningsListener, reducer$1 as publicWarningsReducer, selectors as publicWarningsSelectors, reducer$1 as reducer, useObjectDrawDialogAction, warningFormConfirmationOptions, drawingsListener as warningsDrawingsListener, reducer$2 as warningsDrawingsReducer, warningsTranslations };