@opengeoweb/warnings 10.1.0 → 10.2.1-spike-ol.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 (54) hide show
  1. package/index.esm.js +1557 -834
  2. package/package.json +3 -2
  3. package/src/index.d.ts +0 -2
  4. package/src/lib/api/api-utils.d.ts +10 -0
  5. package/src/lib/{aviation-api → api/aviation-api}/hooks.d.ts +1 -1
  6. package/src/lib/api/warning-api/api.d.ts +4 -0
  7. package/src/lib/api/warning-api/hooks.d.ts +15 -0
  8. package/src/lib/components/AreaObjectLoader/AreaObjectLoader.d.ts +1 -1
  9. package/src/lib/components/AreaObjectLoader/AreasObjects.d.ts +1 -1
  10. package/src/lib/components/FilterList/filter-hooks.d.ts +3 -3
  11. package/src/lib/components/FilterList/filter-utils.d.ts +6 -4
  12. package/src/lib/components/ObjectManager/ObjectManager.d.ts +1 -1
  13. package/src/lib/components/ObjectManager/Objects.d.ts +1 -1
  14. package/src/lib/components/Providers/Providers.d.ts +3 -0
  15. package/src/lib/components/PublicWarningList/PublicWarningList.d.ts +5 -4
  16. package/src/lib/components/PublicWarningList/PublicWarningListConnect.stories.d.ts +37 -4
  17. package/src/lib/components/PublicWarningList/WarningListItem.d.ts +3 -3
  18. package/src/lib/components/PublicWarningList/WarningListItemMenu.d.ts +9 -7
  19. package/src/lib/components/PublicWarningsForm/PublicWarningsForm.d.ts +1 -1
  20. package/src/lib/components/PublicWarningsForm/PublicWarningsFormConnect.d.ts +2 -0
  21. package/src/lib/components/WarningsMapView/WarningsMapView.d.ts +0 -1
  22. package/src/lib/store/index.d.ts +2 -1
  23. package/src/lib/store/publicWarningForm/index.d.ts +1 -1
  24. package/src/lib/store/publicWarningForm/reducer.d.ts +28 -33
  25. package/src/lib/store/publicWarningForm/selectors.d.ts +12 -17
  26. package/src/lib/store/publicWarningForm/types.d.ts +18 -6
  27. package/src/lib/store/publicWarnings/index.d.ts +1 -1
  28. package/src/lib/store/publicWarnings/reducer.d.ts +4 -16
  29. package/src/lib/store/publicWarnings/selectors.d.ts +1 -1
  30. package/src/lib/store/publicWarnings/types.d.ts +2 -2
  31. package/src/lib/store/store.d.ts +15 -0
  32. package/src/lib/store/types.d.ts +3 -3
  33. package/src/lib/store/warningsDrawings/index.d.ts +2 -0
  34. package/src/lib/store/warningsDrawings/listener.d.ts +2 -0
  35. package/src/lib/store/{drawings → warningsDrawings}/reducer.d.ts +1 -2
  36. package/src/lib/storybookUtils/testUtils.d.ts +2 -0
  37. package/src/lib/utils/api.d.ts +4 -8
  38. package/src/lib/utils/fakeApi/index.d.ts +9 -5
  39. package/src/lib/utils/fakeApi.d.ts +1 -1
  40. package/src/lib/utils/sig-airmet-util.d.ts +14 -7
  41. package/src/lib/utils/sig-airmet-util.spec.d.ts +1 -0
  42. package/src/lib/utils/warningUtils.d.ts +4 -4
  43. package/src/lib/store/config.d.ts +0 -9
  44. package/src/lib/store/drawings/index.d.ts +0 -2
  45. package/src/lib/store/drawings/listener.d.ts +0 -2
  46. package/src/lib/utils/testUtils.d.ts +0 -4
  47. /package/src/lib/{aviation-api → api/aviation-api}/api.d.ts +0 -0
  48. /package/src/lib/{aviation-api → api/aviation-api}/fakeApi.d.ts +0 -0
  49. /package/src/lib/{store/drawings/reducer.spec.d.ts → components/PublicWarningList/WarningListItemMenu.spec.d.ts} +0 -0
  50. /package/src/lib/store/{publicWarnings → warningsDrawings}/reducer.spec.d.ts +0 -0
  51. /package/src/lib/store/{drawings → warningsDrawings}/selectors.d.ts +0 -0
  52. /package/src/lib/store/{drawings → warningsDrawings}/selectors.spec.d.ts +0 -0
  53. /package/src/lib/store/{drawings → warningsDrawings}/types.d.ts +0 -0
  54. /package/src/lib/store/{drawings → warningsDrawings}/utils.d.ts +0 -0
package/index.esm.js CHANGED
@@ -1,27 +1,30 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useDispatch, useSelector } from 'react-redux';
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, drawingToolActions, layerActions, useSetupDialog, selectorMemoizationOptions, useUpdateSharedData } from '@opengeoweb/store';
5
- import { defaultPolygon, emptyGeoJSON, MapControlButton, getIcon, rewindGeometry, getGeoJSONPropertyValue, currentlySupportedDrawModes, defaultLayers, MapView, MapViewLayer, getFeatureExtent } from '@opengeoweb/webmap-react';
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
- import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf } from '@reduxjs/toolkit';
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, Update, Success, Expire, Remove, ArrowUpCompact, ArrowDownCompact } from '@opengeoweb/theme';
4
+ import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawingToolSelectors, layerSelectors, uiSelectors, drawingToolActions, layerActions, useSetupDialog, selectorMemoizationOptions, useUpdateSharedData, layersListener, drawingToolListener, layerReducer, uiReducer, drawingToolReducer } from '@opengeoweb/store';
5
+ import { defaultPolygon, emptyGeoJSON, MapControlButton, getIcon, rewindGeometry, getGeoJSONPropertyValue, currentlySupportedDrawModes, defaultLayers, getFeatureExtent, OpenLayersMapView, OpenLayersLayer, GeoJSONLayer, genericOpenlayersFeatureStyle } from '@opengeoweb/webmap-react';
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, isAxiosError as isAxiosError$1 } from '@opengeoweb/shared';
7
+ import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, isAnyOf, combineReducers, configureStore } from '@reduxjs/toolkit';
8
8
  import 'i18next';
9
9
  import { useTranslation } from 'react-i18next';
10
10
  import '@opengeoweb/core';
11
11
  import { FORM_FIELDS_NAMESPACE, ReactHookFormHiddenInput, isValidGeoJsonCoordinates, ReactHookFormSelect, ReactHookFormTextField, ReactHookFormProvider, defaultFormOptions, useDraftFormHelpers, errorMessages, ReactHookFormDateTime, isXHoursBefore, isXHoursAfter, isEmpty } from '@opengeoweb/form-fields';
12
- import { LayerType, generateMapId, getWMJSMapById, getGeoCoordFromLatLong, WMBBOX } from '@opengeoweb/webmap';
13
- import { SigmetForm, isInstanceOfCancelSigmet, AirmetForm, isInstanceOfCancelAirmet, getProductFormMode } from '@opengeoweb/sigmet-airmet';
14
- import { snackbarActions, snackbarTypes } from '@opengeoweb/snackbar';
12
+ import { LayerType, generateMapId } from '@opengeoweb/webmap';
13
+ import { airmetConfig, sigmetConfig, SigmetForm, isInstanceOfCancelSigmet, AirmetForm, isInstanceOfCancelAirmet, getDefaultValidUntilValue, getProductFormMode, ProductAction } from '@opengeoweb/sigmet-airmet';
14
+ import { snackbarActions, snackbarTypes, snackbarListener, snackbarReducer } from '@opengeoweb/snackbar';
15
15
  import * as React from 'react';
16
16
  import React__default, { useState, useEffect, useRef, useMemo, useCallback } from 'react';
17
17
  import { styled, Box, Typography, ListItem, Grid2, Paper, ListItemButton, Stack, LinearProgress, Button, FormHelperText, MenuItem, Tabs, Tab, Card, CardContent, CircularProgress, Menu, DialogTitle, DialogContent, Switch, ListItemText } from '@mui/material';
18
18
  import { VariableSizeList } from 'react-window';
19
19
  import AutoSizer from 'react-virtualized-auto-sizer';
20
- import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider, getHeaders, useAuthQuery, useAuthenticationContext, ProductStatus } from '@opengeoweb/api';
20
+ import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider, AirmetPhenomena, SigmetPhenomena, getHeaders, handleResponse, useAuthQuery, useAuthenticationContext, ProductStatus, optimisticUpdate } from '@opengeoweb/api';
21
+ import { rest } from 'msw';
22
+ import { concat, isEqual, cloneDeep, clamp, groupBy, pick, assign } from 'lodash';
21
23
  import { useFormContext } from 'react-hook-form';
22
- import { isEqual, cloneDeep, clamp, groupBy, assign, pick } from 'lodash';
23
24
  import { getConfig, useAuthenticationContext as useAuthenticationContext$1 } from '@opengeoweb/authentication';
24
- import { useQueryClient } from '@tanstack/react-query';
25
+ import { View } from 'ol';
26
+ import { fromLonLat } from 'ol/proj';
27
+ import { useQueryClient, useMutation } from '@tanstack/react-query';
25
28
  import { isAxiosError } from 'axios';
26
29
 
27
30
  var en = {
@@ -199,7 +202,8 @@ var en = {
199
202
  "warning-dialog-withdraw-title": "Withdraw warning",
200
203
  "warning-dialog-withdraw-confirm": "Withdraw",
201
204
  "warning-dialog-withdraw-description": "Are you sure you want to withdraw this warning?",
202
- "tac-missing-data": "Missing data: no TAC can be generated"
205
+ "tac-missing-data": "Missing data: no TAC can be generated",
206
+ "warning-list-button-renew": "Renew"
203
207
  };
204
208
  var nl = {
205
209
  "drawing-tool-form-tools": "Gereedschap",
@@ -337,7 +341,8 @@ var nl = {
337
341
  "warning-domain-maritime": "Maritiem",
338
342
  "warning-domain-public": "Publiek",
339
343
  "error-title-retry": "Probeer opnieuw",
340
- "tac-missing-data": "Ontbrekende gegevens: er kan geen TAC worden gegenereerd"
344
+ "tac-missing-data": "Ontbrekende gegevens: er kan geen TAC worden gegenereerd",
345
+ "warning-list-button-renew": "Hernieuwen"
341
346
  };
342
347
  var fi = {
343
348
  "drawing-tool-form-tools": "Työkalut",
@@ -475,7 +480,8 @@ var fi = {
475
480
  "warning-domain-maritime": "ei käännetty",
476
481
  "warning-domain-public": "ei käännetty",
477
482
  "error-title-retry": "Yritä uudelleen",
478
- "tac-missing-data": "Tarvittavia tietoja puuttu, TAC:ia ei voida generoida"
483
+ "tac-missing-data": "Tarvittavia tietoja puuttu, TAC:ia ei voida generoida",
484
+ "warning-list-button-renew": "Renew"
479
485
  };
480
486
  var no = {
481
487
  "drawing-tool-form-tools": "Verktøy",
@@ -613,7 +619,8 @@ var no = {
613
619
  "warning-domain-maritime": "ikke oversatt",
614
620
  "warning-domain-public": "ikke oversatt",
615
621
  "error-title-retry": "Prøv igjen",
616
- "tac-missing-data": "Mangler data: ingen TAC kan genereres"
622
+ "tac-missing-data": "Mangler data: ingen TAC kan genereres",
623
+ "warning-list-button-renew": "Renew"
617
624
  };
618
625
  var warningsTranslations = {
619
626
  en: en,
@@ -1067,8 +1074,8 @@ var slice$2 = createSlice({
1067
1074
  });
1068
1075
  }
1069
1076
  });
1070
- var reducer$2 = slice$2.reducer;
1071
- var drawActions = slice$2.actions;
1077
+ var warningsDrawingsReducer = slice$2.reducer,
1078
+ warningsDrawingsActions = slice$2.actions;
1072
1079
 
1073
1080
  /* *
1074
1081
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1139,7 +1146,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1139
1146
  var dispatch = useDispatch();
1140
1147
  var drawLayerId = getSingularDrawtoolDrawLayerId(mapId);
1141
1148
  var drawDialogActiveDrawModeId = useSelector(function (store) {
1142
- return drawtoolSelectors.getActiveDrawModeId(store, drawingDialogType);
1149
+ return drawingToolSelectors.getActiveDrawModeId(store, drawingDialogType);
1143
1150
  });
1144
1151
  var featureLayerContainsGeoJSON = useSelector(function (store) {
1145
1152
  return layerSelectors.getHasFeatureLayerGeoJSON(store, drawLayerId);
@@ -1199,7 +1206,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1199
1206
  source: source
1200
1207
  }));
1201
1208
  // reset all drawings fields
1202
- dispatch(drawActions.setDrawValues({
1209
+ dispatch(warningsDrawingsActions.setDrawValues({
1203
1210
  drawingInstanceId: drawingDialogType,
1204
1211
  objectName: '',
1205
1212
  id: ''
@@ -1246,7 +1253,7 @@ var useCloseObjectDialog = function useCloseObjectDialog(_ref3) {
1246
1253
  }
1247
1254
  // reset active object
1248
1255
  if (shouldReset) {
1249
- dispatch(drawActions.setDrawValues({
1256
+ dispatch(warningsDrawingsActions.setDrawValues({
1250
1257
  drawingInstanceId: drawingDialogType,
1251
1258
  objectName: '',
1252
1259
  id: ''
@@ -1305,7 +1312,7 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1305
1312
  drawDialogLayerHasGeoJSON = _useDialogOptions.hasGeoJSON,
1306
1313
  drawDialogLayerId = _useDialogOptions.dialogLayerId;
1307
1314
  var drawDialogActiveDrawModeId = useSelector(function (store) {
1308
- return drawtoolSelectors.getActiveDrawModeId(store, drawingDialogType);
1315
+ return drawingToolSelectors.getActiveDrawModeId(store, drawingDialogType);
1309
1316
  });
1310
1317
  var isFormDirty = useSelector(function (store) {
1311
1318
  return getWarningFormDirty(store, drawingDialogType);
@@ -1952,10 +1959,6 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
1952
1959
  getAreaKeywords: function getAreaKeywords() {
1953
1960
  return axiosInstance.get("/area-keywords");
1954
1961
  },
1955
- // warnings
1956
- getWarnings: function getWarnings() {
1957
- return axiosInstance.get('/warnings');
1958
- },
1959
1962
  saveWarningAs: function saveWarningAs(data) {
1960
1963
  return axiosInstance.post("/warnings/", data).then(function (response) {
1961
1964
  var headerLocation = response == null ? void 0 : response.request.getResponseHeader('Location');
@@ -1967,9 +1970,6 @@ var getApiRoutes$1 = function getApiRoutes(axiosInstance) {
1967
1970
  },
1968
1971
  deleteWarning: function deleteWarning(warningId) {
1969
1972
  return axiosInstance.post("/warnings/" + warningId + "?delete=true");
1970
- },
1971
- toggleEditorWarning: function toggleEditorWarning(warningId, isEditor) {
1972
- return axiosInstance.post("/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false'));
1973
1973
  }
1974
1974
  };
1975
1975
  };
@@ -2100,84 +2100,22 @@ var publicWarningDialogType = uiTypes.DialogTypes.PublicWarnings;
2100
2100
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
2101
2101
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
2102
2102
  * */
2103
- var publicWarningsAdapter = createEntityAdapter({
2104
- selectId: function selectId(warning) {
2105
- return warning.id;
2106
- }
2107
- });
2108
- var initialState$1 = {
2109
- warnings: publicWarningsAdapter.getInitialState(),
2110
- isLoading: true,
2111
- lastUpdatedTime: '',
2112
- filterState: {}
2113
- };
2103
+ var TAKEOVER_MESSAGE = 'You are no longer the editor of this warning';
2104
+ var initialState$1 = {};
2114
2105
  var slice$1 = createSlice({
2115
2106
  initialState: initialState$1,
2116
- name: 'publicWarnings',
2117
- reducers: {
2118
- fetchWarnings: function fetchWarnings(draft) {
2119
- draft.isLoading = true;
2120
- delete draft.error;
2121
- },
2122
- fetchWarningsSuccess: function fetchWarningsSuccess(draft, action) {
2123
- var _action$payload = action.payload,
2124
- warnings = _action$payload.warnings,
2125
- lastUpdatedTime = _action$payload.lastUpdatedTime;
2126
- draft.isLoading = false;
2127
- draft.lastUpdatedTime = lastUpdatedTime;
2128
- publicWarningsAdapter.setAll(draft.warnings, warnings);
2129
- },
2130
- fetchWarningsError: function fetchWarningsError(draft, action) {
2131
- var error = action.payload.error;
2132
- draft.isLoading = false;
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
- }
2142
- }
2143
- }
2144
- });
2145
- var reducer$1 = slice$1.reducer;
2146
- var publicWarningActions = slice$1.actions;
2147
-
2148
- /* *
2149
- * Licensed under the Apache License, Version 2.0 (the "License");
2150
- * you may not use this file except in compliance with the License.
2151
- * You may obtain a copy of the License at
2152
- *
2153
- * http://www.apache.org/licenses/LICENSE-2.0
2154
- *
2155
- * Unless required by applicable law or agreed to in writing, software
2156
- * distributed under the License is distributed on an "AS IS" BASIS,
2157
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2158
- * See the License for the specific language governing permissions and
2159
- * limitations under the License.
2160
- *
2161
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
2162
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
2163
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
2164
- * */
2165
- var TAKEOVER_MESSAGE = 'You are no longer the editor of this warning';
2166
- var initialState = {};
2167
- var slice = createSlice({
2168
- initialState: initialState,
2169
2107
  name: 'publicWarningForm',
2170
2108
  reducers: {
2171
2109
  setFormValues: function setFormValues(draft, action) {
2172
2110
  var _action$payload = action.payload,
2173
2111
  object = _action$payload.object,
2174
- publicWarning = _action$payload.publicWarning,
2112
+ warning = _action$payload.warning,
2175
2113
  formState = _action$payload.formState;
2176
2114
  if (object) {
2177
2115
  draft.object = object;
2178
2116
  }
2179
- if (publicWarning) {
2180
- draft.publicWarning = publicWarning;
2117
+ if (warning) {
2118
+ draft.warning = warning;
2181
2119
  }
2182
2120
  if (formState !== undefined) {
2183
2121
  draft.formState = formState;
@@ -2186,62 +2124,50 @@ var slice = createSlice({
2186
2124
  addArea: function addArea(draft, action) {
2187
2125
  var area = action.payload.area;
2188
2126
  // only support 1 area (for now)
2189
- if (draft.publicWarning) {
2190
- var areaWithPreservedUUID = Object.assign({}, draft.publicWarning.warningDetail.areas.at(0), area);
2191
- draft.publicWarning.warningDetail.areas = [areaWithPreservedUUID];
2127
+ if (draft.warning) {
2128
+ var _draft$warning$warnin;
2129
+ var areaWithPreservedUUID = Object.assign({}, (_draft$warning$warnin = draft.warning.warningDetail.areas) == null ? void 0 : _draft$warning$warnin.at(0), area);
2130
+ draft.warning.warningDetail.areas = [areaWithPreservedUUID];
2192
2131
  } else {
2193
2132
  var newWarning = {
2194
2133
  warningDetail: {
2195
2134
  areas: [area]
2196
2135
  }
2197
2136
  };
2198
- draft.publicWarning = newWarning;
2137
+ draft.warning = newWarning;
2199
2138
  }
2200
2139
  },
2201
2140
  removeArea: function removeArea(draft, action) {
2202
2141
  var area = action.payload.area;
2203
- if (draft.publicWarning) {
2204
- var removeAreas = draft.publicWarning.warningDetail.areas.filter(function (existingArea) {
2142
+ if (draft.warning) {
2143
+ var _draft$warning$warnin2;
2144
+ var removeAreas = (_draft$warning$warnin2 = draft.warning.warningDetail.areas) == null ? void 0 : _draft$warning$warnin2.filter(function (existingArea) {
2205
2145
  return existingArea.objectName !== area.objectName;
2206
2146
  });
2207
- draft.publicWarning.warningDetail.areas = removeAreas;
2147
+ draft.warning.warningDetail.areas = removeAreas;
2208
2148
  }
2209
2149
  },
2210
2150
  removeAllAreas: function removeAllAreas(draft) {
2211
- if (draft.publicWarning) {
2212
- draft.publicWarning.warningDetail.areas = [];
2151
+ if (draft.warning) {
2152
+ draft.warning.warningDetail.areas = [];
2213
2153
  }
2214
2154
  },
2215
2155
  openPublicWarningFormDialog: function openPublicWarningFormDialog(draft, action) {
2216
2156
  var _action$payload2 = action.payload,
2217
2157
  object = _action$payload2.object,
2218
- publicWarning = _action$payload2.publicWarning,
2158
+ warning = _action$payload2.warning,
2219
2159
  _action$payload2$form = _action$payload2.formState,
2220
2160
  formState = _action$payload2$form === void 0 ? '' : _action$payload2$form,
2221
2161
  _action$payload2$warn = _action$payload2.warningType,
2222
2162
  warningType = _action$payload2$warn === void 0 ? 'public' : _action$payload2$warn,
2223
2163
  panelId = _action$payload2.panelId;
2224
2164
  draft.object = object;
2225
- draft.publicWarning = publicWarning;
2226
- draft.selectedPublicWarningId = publicWarning == null ? void 0 : publicWarning.id;
2165
+ draft.warning = warning;
2166
+ draft.selectedWarningId = warning == null ? void 0 : warning.id;
2227
2167
  draft.formState = formState;
2228
- draft.warningType = warningType;
2168
+ draft.warningType = (warning == null ? void 0 : warning.type) || warningType;
2229
2169
  draft.panelId = panelId;
2230
2170
  },
2231
- toggleEditorWarning: function toggleEditorWarning(draft,
2232
- // eslint-disable-next-line no-unused-vars
2233
- action) {
2234
- delete draft.error;
2235
- },
2236
- toggleEditorWarningSuccess: function toggleEditorWarningSuccess(draft, action) {
2237
- var _action$payload3 = action.payload,
2238
- isEditor = _action$payload3.isEditor,
2239
- username = _action$payload3.username;
2240
- if (draft.publicWarning) {
2241
- draft.publicWarning.editor = isEditor ? username : '';
2242
- }
2243
- draft.formState = isEditor ? '' : 'readonly';
2244
- },
2245
2171
  // publish warning
2246
2172
  publishWarning: function publishWarning(draft,
2247
2173
  // eslint-disable-next-line no-unused-vars
@@ -2251,7 +2177,7 @@ var slice = createSlice({
2251
2177
  },
2252
2178
  publishWarningSuccess: function publishWarningSuccess(draft, action) {
2253
2179
  var publicWarning = action.payload.publicWarning;
2254
- draft.publicWarning = publicWarning;
2180
+ draft.warning = publicWarning;
2255
2181
  // If form has been published, set form to readonly
2256
2182
  draft.formState = 'readonly';
2257
2183
  },
@@ -2261,70 +2187,60 @@ var slice = createSlice({
2261
2187
  action) {
2262
2188
  draft.formState = 'saving';
2263
2189
  delete draft.error;
2264
- draft.publicWarning = action.payload.publicWarning;
2190
+ draft.warning = action.payload.publicWarning;
2265
2191
  },
2266
2192
  saveWarningSuccess: function saveWarningSuccess(draft, action) {
2267
2193
  var _publicWarning$warnin;
2268
2194
  var publicWarning = action.payload.publicWarning;
2269
- draft.publicWarning = publicWarning;
2195
+ draft.warning = publicWarning;
2270
2196
  if (publicWarning != null && (_publicWarning$warnin = publicWarning.warningDetail) != null && _publicWarning$warnin.id) {
2271
- draft.selectedPublicWarningId = publicWarning.warningDetail.id;
2197
+ draft.selectedWarningId = publicWarning.warningDetail.id;
2272
2198
  }
2273
2199
  draft.formState = '';
2274
2200
  },
2275
2201
  setFormError: function setFormError(draft, action) {
2276
- var _action$payload4 = action.payload,
2277
- message = _action$payload4.message,
2278
- _action$payload4$seve = _action$payload4.severity,
2279
- severity = _action$payload4$seve === void 0 ? 'error' : _action$payload4$seve;
2202
+ var _action$payload3 = action.payload,
2203
+ message = _action$payload3.message,
2204
+ _action$payload3$seve = _action$payload3.severity,
2205
+ severity = _action$payload3$seve === void 0 ? 'error' : _action$payload3$seve;
2280
2206
  draft.formState = '';
2281
2207
  draft.error = {
2282
2208
  severity: severity,
2283
2209
  message: message
2284
2210
  };
2285
2211
  },
2212
+ removeFormError: function removeFormError(draft) {
2213
+ delete draft.error;
2214
+ },
2286
2215
  setFormDirty: function setFormDirty(draft, action) {
2287
2216
  var isFormDirty = action.payload.isFormDirty;
2288
2217
  draft.isFormDirty = isFormDirty;
2218
+ },
2219
+ setEditMode: function setEditMode(draft, action) {
2220
+ var warningId = action.payload.warningId;
2221
+ draft.selectedWarningId = warningId;
2222
+ draft.formState = 'edit';
2289
2223
  }
2290
2224
  },
2291
2225
  extraReducers: function extraReducers(builder) {
2292
2226
  builder.addCase(uiActions.setToggleOpenDialog, function (draft, action) {
2293
- var _action$payload5 = action.payload,
2294
- type = _action$payload5.type,
2295
- setOpen = _action$payload5.setOpen;
2227
+ var _action$payload4 = action.payload,
2228
+ type = _action$payload4.type,
2229
+ setOpen = _action$payload4.setOpen;
2296
2230
  if (type === publicWarningDialogType && setOpen === false) {
2297
2231
  delete draft.object;
2298
- delete draft.publicWarning;
2232
+ delete draft.warning;
2299
2233
  delete draft.formState;
2300
2234
  delete draft.error;
2301
- delete draft.selectedPublicWarningId;
2235
+ delete draft.selectedWarningId;
2302
2236
  delete draft.isFormDirty;
2303
2237
  delete draft.warningType;
2304
2238
  }
2305
- }).addCase(publicWarningActions.fetchWarningsSuccess, function (draft, action) {
2306
- var warnings = action.payload.warnings;
2307
- if (draft.selectedPublicWarningId) {
2308
- var _draft$publicWarning;
2309
- var currentWarning = warnings.find(function (warning) {
2310
- return warning.id === draft.selectedPublicWarningId;
2311
- });
2312
- if (currentWarning && ((_draft$publicWarning = draft.publicWarning) == null ? void 0 : _draft$publicWarning.editor) !== currentWarning.editor) {
2313
- draft.publicWarning.editor = currentWarning.editor;
2314
- // if form is in edit mode show warning
2315
- if (draft.formState === '') {
2316
- draft.error = {
2317
- severity: 'warning',
2318
- message: TAKEOVER_MESSAGE
2319
- };
2320
- }
2321
- }
2322
- }
2323
2239
  });
2324
2240
  }
2325
2241
  });
2326
- var reducer = slice.reducer;
2327
- var publicWarningFormActions = slice.actions;
2242
+ var publicWarningFormReducer = slice$1.reducer,
2243
+ publicWarningFormActions = slice$1.actions;
2328
2244
 
2329
2245
  var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2330
2246
  var bounds = _ref.bounds,
@@ -2424,7 +2340,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2424
2340
  while (1) switch (_context.prev = _context.next) {
2425
2341
  case 0:
2426
2342
  isActive = drawing.id === (currrentDrawing == null ? void 0 : currrentDrawing.id);
2427
- dispatch(drawActions.setDrawValues({
2343
+ dispatch(warningsDrawingsActions.setDrawValues({
2428
2344
  objectName: drawing.objectName,
2429
2345
  drawingInstanceId: drawingDialogType,
2430
2346
  id: !isActive ? drawing.id : ''
@@ -2470,7 +2386,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2470
2386
  _yield$warningsApi$ge = _context2.sent;
2471
2387
  data = _yield$warningsApi$ge.data;
2472
2388
  // update draw tool values
2473
- dispatch(drawActions.setDrawValues({
2389
+ dispatch(warningsDrawingsActions.setDrawValues({
2474
2390
  objectName: data.objectName,
2475
2391
  id: drawingId,
2476
2392
  drawingInstanceId: drawingDialogType
@@ -2508,13 +2424,14 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2508
2424
  var onShareObject = function onShareObject(object) {
2509
2425
  dispatch(publicWarningFormActions.openPublicWarningFormDialog({
2510
2426
  object: object,
2511
- publicWarning: {
2427
+ warning: {
2512
2428
  warningDetail: {
2513
2429
  areas: [{
2514
2430
  geoJSON: object.geoJSON,
2515
2431
  objectName: object.objectName
2516
2432
  }]
2517
- }
2433
+ },
2434
+ type: 'public'
2518
2435
  }
2519
2436
  }));
2520
2437
  };
@@ -6950,132 +6867,733 @@ var warningListJSON = [
6950
6867
  }
6951
6868
  ];
6952
6869
 
6953
- /* *
6954
- * Licensed under the Apache License, Version 2.0 (the "License");
6955
- * you may not use this file except in compliance with the License.
6956
- * You may obtain a copy of the License at
6957
- *
6958
- * http://www.apache.org/licenses/LICENSE-2.0
6959
- *
6960
- * Unless required by applicable law or agreed to in writing, software
6961
- * distributed under the License is distributed on an "AS IS" BASIS,
6962
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6963
- * See the License for the specific language governing permissions and
6964
- * limitations under the License.
6965
- *
6966
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6967
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
6968
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
6969
- * */
6970
- var drawingList = drawingListJSON;
6971
- var drawingsListFullContent = drawingsListFullContentJSON;
6972
- var warningList = warningListJSON;
6973
- warningList.filter(function (warning) {
6974
- return warning.status !== 'EXPIRED' && warning.status !== 'WITHDRAWN';
6975
- }).length;
6976
- var areaKeywordList = ['North Sea districts', 'Coastal Districts', 'KNMI Specific', 'Objects', 'Baltic areas', 'NL', 'FI', 'METNorway Specific', 'Provinces', 'FIR', 'Countries'];
6870
+ var sigmetListJSON$1 = [
6871
+ {
6872
+ id: "57eaf6c8-a247-11ef-ac05-12e0cc025418",
6873
+ lastUpdatedTime: "2024-11-14T05:14:37",
6874
+ productStatus: "DRAFT",
6875
+ sigmetAirmetDetails: {
6876
+ },
6877
+ warningDetail: {
6878
+ areas: [
6879
+ {
6880
+ geoJSON: {
6881
+ features: [
6882
+ {
6883
+ geometry: {
6884
+ type: "Polygon",
6885
+ coordinates: [
6886
+ [
6887
+ [
6888
+ 10,
6889
+ 20
6890
+ ],
6891
+ [
6892
+ 15,
6893
+ 25
6894
+ ],
6895
+ [
6896
+ 20,
6897
+ 20
6898
+ ],
6899
+ [
6900
+ 10,
6901
+ 20
6902
+ ]
6903
+ ]
6904
+ ]
6905
+ },
6906
+ properties: {
6907
+ selectionType: "fir",
6908
+ stroke: "#0075a9",
6909
+ "stroke-width": 1.5,
6910
+ "stroke-opacity": 1,
6911
+ fill: "#0075a9",
6912
+ "fill-opacity": 0.4
6913
+ },
6914
+ type: "Feature"
6915
+ }
6916
+ ],
6917
+ type: "FeatureCollection"
6918
+ },
6919
+ objectName: "ENOB"
6920
+ }
6921
+ ],
6922
+ descriptionOriginal: "",
6923
+ descriptionTranslation: "",
6924
+ firName: "BODOE OCEANIC FIR",
6925
+ incident: "-1",
6926
+ level: "SIG",
6927
+ phenomenon: "EMBD_TSGR",
6928
+ probability: "0",
6929
+ validFrom: "2024-11-14T05:30:14Z",
6930
+ validUntil: "2024-11-14T07:30:14Z"
6931
+ }
6932
+ },
6933
+ {
6934
+ id: "fc4c0002-8d32-11ef-888b-ee87a1644661",
6935
+ lastUpdatedTime: "2024-11-14T05:14:06",
6936
+ productStatus: "EXPIRED",
6937
+ sigmetAirmetDetails: {
6938
+ },
6939
+ warningDetail: {
6940
+ areas: [
6941
+ {
6942
+ geoJSON: null,
6943
+ objectName: "EFIN"
6944
+ }
6945
+ ],
6946
+ descriptionOriginal: "",
6947
+ descriptionTranslation: "",
6948
+ firName: "HELSINKI FIR",
6949
+ incident: "T01",
6950
+ level: "SIG",
6951
+ phenomenon: "OBSC_TS",
6952
+ probability: "0",
6953
+ validFrom: "2024-11-13T05:30:14Z",
6954
+ validUntil: "2024-11-13T07:30:14Z"
6955
+ }
6956
+ },
6957
+ {
6958
+ id: "fe4a14bc-8a90-11ef-9090-6c08d8abf452",
6959
+ lastUpdatedTime: "2024-10-08T08:10:30",
6960
+ productStatus: "PUBLISHED",
6961
+ sigmetAirmetDetails: {
6962
+ },
6963
+ warningDetail: {
6964
+ areas: [
6965
+ {
6966
+ geoJSON: null,
6967
+ objectName: "EHAA"
6968
+ }
6969
+ ],
6970
+ descriptionOriginal: "",
6971
+ descriptionTranslation: "",
6972
+ firName: "AMSTERDAM FIR",
6973
+ incident: "Z01",
6974
+ level: "SIG",
6975
+ phenomenon: "SEV_ICE",
6976
+ probability: "0",
6977
+ validFrom: "2024-10-08T05:30:14Z",
6978
+ validUntil: "2024-10-08T09:30:14Z"
6979
+ }
6980
+ },
6981
+ {
6982
+ id: "fe4a14bc-8a90-11ef-9090-6c08d8abf453",
6983
+ lastUpdatedTime: "2024-10-08T08:10:30",
6984
+ productStatus: "CANCELLED",
6985
+ warningDetail: {
6986
+ areas: [
6987
+ {
6988
+ geoJSON: null,
6989
+ objectName: "ENOR"
6990
+ }
6991
+ ],
6992
+ descriptionOriginal: "",
6993
+ descriptionTranslation: "",
6994
+ firName: "POLARIS FIR",
6995
+ incident: "U01",
6996
+ level: "SIG",
6997
+ phenomenon: "SEV_TURB",
6998
+ probability: "0",
6999
+ validFrom: "2024-10-08T05:30:14Z",
7000
+ validUntil: "2024-10-08T09:30:14Z"
7001
+ },
7002
+ sigmetAirmetDetails: {
7003
+ sequence: "U01",
7004
+ productStatus: "CANCELLED"
7005
+ }
7006
+ },
7007
+ {
7008
+ id: "fe4a14bc-8a90-11ef-9090-6c08d8abf454",
7009
+ lastUpdatedTime: "2024-10-08T08:10:30",
7010
+ productStatus: "PUBLISHED",
7011
+ warningDetail: {
7012
+ areas: [
7013
+ {
7014
+ geoJSON: null,
7015
+ objectName: "ENOR"
7016
+ }
7017
+ ],
7018
+ descriptionOriginal: "",
7019
+ descriptionTranslation: "",
7020
+ firName: "POLARIS FIR",
7021
+ incident: "U02",
7022
+ level: "SIG",
7023
+ phenomenon: "SEV_TURB",
7024
+ probability: "0",
7025
+ validFrom: "2024-10-08T05:30:14Z",
7026
+ validUntil: "2024-10-08T09:30:14Z"
7027
+ },
7028
+ sigmetAirmetDetails: {
7029
+ cancelsSigmetSequenceId: "U01",
7030
+ sequence: "U02",
7031
+ productStatus: "PUBLISHED"
7032
+ }
7033
+ }
7034
+ ];
6977
7035
 
6978
- /* *
6979
- * Licensed under the Apache License, Version 2.0 (the "License");
6980
- * you may not use this file except in compliance with the License.
6981
- * You may obtain a copy of the License at
6982
- *
6983
- * http://www.apache.org/licenses/LICENSE-2.0
6984
- *
6985
- * Unless required by applicable law or agreed to in writing, software
6986
- * distributed under the License is distributed on an "AS IS" BASIS,
6987
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6988
- * See the License for the specific language governing permissions and
6989
- * limitations under the License.
6990
- *
6991
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6992
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
6993
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
6994
- * */
6995
- var ERROR_NOT_FOUND = 'Request failed with status code 400';
6996
- var MOCK_USERNAME = 'user.name';
6997
- var extractDrawingDetailsFromJSON = function extractDrawingDetailsFromJSON(drawingId) {
6998
- return drawingsListFullContent.find(function (element) {
6999
- return element.id === drawingId;
7000
- });
7001
- };
7002
- // to copy
7003
- var getCleanSearchQuery = function getCleanSearchQuery(searchQuery) {
7004
- return searchQuery.trim().split(/\s+/).join();
7005
- };
7006
- var getApiRoutes = function getApiRoutes(axiosInstance) {
7007
- return {
7008
- // drawings
7009
- getDrawings: function getDrawings(params) {
7010
- return axiosInstance.get('/drawings', {
7011
- params: params
7012
- }).then(function () {
7013
- var result = drawingList.filter(function (element) {
7014
- if (params != null && params.search || params != null && params.keywords) {
7015
- var _params$keywords;
7016
- var searchQuery = getCleanSearchQuery(params.search || '').split(',');
7017
- var keyWordsQuery = ((_params$keywords = params.keywords) == null ? void 0 : _params$keywords.split(',')) || [];
7018
- var hasResult = [].concat(searchQuery, keyWordsQuery).every(function (query) {
7019
- var _element$keywords;
7020
- return element.objectName.toLowerCase().includes(query.toLowerCase()) || ((_element$keywords = element.keywords) == null ? void 0 : _element$keywords.toLowerCase().includes(query.toLowerCase()));
7021
- });
7022
- if (hasResult) {
7023
- return element;
7024
- }
7025
- } else {
7026
- return element;
7027
- }
7028
- return null;
7029
- });
7030
- return {
7031
- data: result
7032
- };
7033
- });
7034
- },
7035
- getDrawingDetails: function getDrawingDetails(drawingId) {
7036
- return axiosInstance.get("/drawings/" + drawingId).then(function () {
7037
- if (!extractDrawingDetailsFromJSON(drawingId)) {
7038
- throw new Error(ERROR_NOT_FOUND);
7039
- }
7040
- return {
7041
- data: extractDrawingDetailsFromJSON(drawingId)
7042
- };
7043
- });
7044
- },
7045
- updateDrawing: function updateDrawing(drawingId, data) {
7046
- // eslint-disable-next-line no-console
7047
- console.log('api: save drawing', drawingId, data);
7048
- return axiosInstance.post("/drawings/" + drawingId + "/", data);
7049
- },
7050
- saveDrawingAs: function saveDrawingAs(data) {
7051
- // eslint-disable-next-line no-console
7052
- console.log('api: save drawing as', data);
7053
- return axiosInstance.post("/drawings/", data).then(function () {
7054
- return 'new-drawing-id';
7055
- });
7056
- },
7057
- deleteDrawing: function deleteDrawing(drawingId) {
7058
- // eslint-disable-next-line no-console
7059
- console.log('api: delete drawing', drawingId);
7060
- drawingList.splice(drawingList.findIndex(function (drawing) {
7061
- return drawing.id === drawingId;
7062
- }), 1);
7063
- return axiosInstance.post("/drawings/" + drawingId + "?delete=true");
7064
- },
7065
- getAreaKeywords: function getAreaKeywords() {
7066
- return axiosInstance.get('/area-keywords').then(function () {
7067
- return {
7068
- data: areaKeywordList
7069
- };
7070
- });
7071
- },
7072
- // public warnings
7073
- getWarnings: function getWarnings() {
7074
- return axiosInstance.get("/warnings/").then(function () {
7075
- return {
7076
- data: warningList
7077
- };
7078
- });
7036
+ var airmetListJSON$1 = [
7037
+ {
7038
+ id: "02d3727a-b190-11ef-ba31-067f7750936d",
7039
+ lastUpdatedTime: "2024-12-03T16:02:35",
7040
+ productStatus: "DRAFT",
7041
+ sigmetAirmetDetails: {
7042
+ },
7043
+ warningDetail: {
7044
+ areas: [
7045
+ {
7046
+ geoJSON: null,
7047
+ objectName: "EHAA"
7048
+ }
7049
+ ],
7050
+ descriptionOriginal: "",
7051
+ descriptionTranslation: "",
7052
+ firName: "AMSTERDAM FIR",
7053
+ incident: "-1",
7054
+ level: "AIR",
7055
+ phenomenon: "SFC_WIND",
7056
+ probability: "0",
7057
+ validFrom: "2024-12-03T17:00:09Z",
7058
+ validUntil: "2024-12-03T21:00:09Z"
7059
+ }
7060
+ },
7061
+ {
7062
+ id: "1a868884-9076-11ef-8e82-5a063b90cdf6",
7063
+ lastUpdatedTime: "2024-10-22T13:03:56",
7064
+ productStatus: "DRAFT",
7065
+ sigmetAirmetDetails: {
7066
+ },
7067
+ warningDetail: {
7068
+ areas: [
7069
+ {
7070
+ geoJSON: null,
7071
+ objectName: "EHAA"
7072
+ }
7073
+ ],
7074
+ descriptionOriginal: "",
7075
+ descriptionTranslation: "",
7076
+ firName: "AMSTERDAM FIR",
7077
+ incident: "-1",
7078
+ level: "AIR",
7079
+ phenomenon: "MOD_TURB",
7080
+ probability: "0",
7081
+ validFrom: "2024-10-22T15:00:09Z",
7082
+ validUntil: "2024-10-22T18:00:09Z"
7083
+ }
7084
+ },
7085
+ {
7086
+ id: "4ac7fc94-c670-11ee-8ace-92491e683685",
7087
+ lastUpdatedTime: "2024-02-08T12:26:31.803468",
7088
+ productStatus: "EXPIRED",
7089
+ sigmetAirmetDetails: {
7090
+ },
7091
+ warningDetail: {
7092
+ areas: [
7093
+ {
7094
+ geoJSON: null,
7095
+ objectName: "ENOR"
7096
+ }
7097
+ ],
7098
+ descriptionOriginal: "",
7099
+ descriptionTranslation: "",
7100
+ firName: "POLARIS FIR",
7101
+ incident: "T01",
7102
+ level: "AIR",
7103
+ phenomenon: "OBSC_TS",
7104
+ probability: "0",
7105
+ validFrom: "2024-02-08T09:00:09Z",
7106
+ validUntil: "2024-02-08T11:00:09Z"
7107
+ }
7108
+ },
7109
+ {
7110
+ id: "9dbcd4c6-c4c0-11ee-a0e9-9e39e246af14",
7111
+ lastUpdatedTime: "2024-02-06T07:15:18.166785",
7112
+ productStatus: "PUBLISHED",
7113
+ sigmetAirmetDetails: {
7114
+ },
7115
+ warningDetail: {
7116
+ areas: [
7117
+ {
7118
+ geoJSON: null,
7119
+ objectName: "EHAA"
7120
+ }
7121
+ ],
7122
+ descriptionOriginal: "",
7123
+ descriptionTranslation: "",
7124
+ firName: "AMSTERDAM FIR",
7125
+ incident: "Z01",
7126
+ level: "AIR",
7127
+ phenomenon: "SEV_ICE",
7128
+ probability: "0",
7129
+ validFrom: "2024-02-06T08:00:09Z",
7130
+ validUntil: "2024-02-06T12:00:09Z"
7131
+ }
7132
+ }
7133
+ ];
7134
+
7135
+ var airmetListJSON = [
7136
+ {
7137
+ uuid: "02d3727a-b190-11ef-ba31-067f7750936d",
7138
+ lastUpdateDate: "2024-12-03T16:02:35",
7139
+ creationDate: "2024-12-03T16:02:35",
7140
+ canbe: [
7141
+ "DRAFTED",
7142
+ "DISCARDED",
7143
+ "PUBLISHED"
7144
+ ],
7145
+ airmet: {
7146
+ uuid: "02d3727a-b190-11ef-ba31-067f7750936d",
7147
+ phenomenon: "SFC_WIND",
7148
+ sequence: "-1",
7149
+ validDateStart: "2024-12-03T13:26:19Z",
7150
+ validDateEnd: "2024-12-03T15:26:19Z",
7151
+ firName: "AMSTERDAM FIR",
7152
+ locationIndicatorATSU: "EHAA",
7153
+ locationIndicatorATSR: "EHAA",
7154
+ locationIndicatorMWO: "EHDB",
7155
+ isObservationOrForecast: "OBS",
7156
+ observationOrForecastTime: "2024-12-03T11:26:19Z",
7157
+ movementType: "STATIONARY",
7158
+ change: "WKN",
7159
+ type: "NORMAL",
7160
+ status: "DRAFT",
7161
+ windDirection: 70,
7162
+ windSpeed: 35,
7163
+ windUnit: "KT",
7164
+ firGeometry: {
7165
+ },
7166
+ startGeometry: {
7167
+ type: "FeatureCollection",
7168
+ features: [
7169
+ {
7170
+ type: "Feature",
7171
+ geometry: {
7172
+ type: "Polygon",
7173
+ coordinates: [
7174
+ [
7175
+ [
7176
+ 5,
7177
+ 55
7178
+ ],
7179
+ [
7180
+ 4.331914,
7181
+ 55.332644
7182
+ ],
7183
+ [
7184
+ 3.368817,
7185
+ 55.764314
7186
+ ],
7187
+ [
7188
+ 2.761908,
7189
+ 54.379261
7190
+ ],
7191
+ [
7192
+ 3.15576,
7193
+ 52.913554
7194
+ ],
7195
+ [
7196
+ 2.000002,
7197
+ 51.500002
7198
+ ],
7199
+ [
7200
+ 3.370001,
7201
+ 51.369722
7202
+ ],
7203
+ [
7204
+ 3.370527,
7205
+ 51.36867
7206
+ ],
7207
+ [
7208
+ 3.362223,
7209
+ 51.320002
7210
+ ],
7211
+ [
7212
+ 3.36389,
7213
+ 51.313608
7214
+ ],
7215
+ [
7216
+ 3.373613,
7217
+ 51.309999
7218
+ ],
7219
+ [
7220
+ 3.952501,
7221
+ 51.214441
7222
+ ],
7223
+ [
7224
+ 4.397501,
7225
+ 51.452776
7226
+ ],
7227
+ [
7228
+ 5.078611,
7229
+ 51.391665
7230
+ ],
7231
+ [
7232
+ 5.848333,
7233
+ 51.139444
7234
+ ],
7235
+ [
7236
+ 5.651667,
7237
+ 50.824717
7238
+ ],
7239
+ [
7240
+ 6.011797,
7241
+ 50.757273
7242
+ ],
7243
+ [
7244
+ 5.934168,
7245
+ 51.036386
7246
+ ],
7247
+ [
7248
+ 6.222223,
7249
+ 51.361666
7250
+ ],
7251
+ [
7252
+ 5.94639,
7253
+ 51.811663
7254
+ ],
7255
+ [
7256
+ 6.405001,
7257
+ 51.830828
7258
+ ],
7259
+ [
7260
+ 7.053095,
7261
+ 52.237764
7262
+ ],
7263
+ [
7264
+ 7.031389,
7265
+ 52.268885
7266
+ ],
7267
+ [
7268
+ 7.063612,
7269
+ 52.346109
7270
+ ],
7271
+ [
7272
+ 7.065557,
7273
+ 52.385828
7274
+ ],
7275
+ [
7276
+ 7.133055,
7277
+ 52.888887
7278
+ ],
7279
+ [
7280
+ 7.14218,
7281
+ 52.898244
7282
+ ],
7283
+ [
7284
+ 7.191667,
7285
+ 53.3
7286
+ ],
7287
+ [
7288
+ 6.5,
7289
+ 53.666667
7290
+ ],
7291
+ [
7292
+ 6.500002,
7293
+ 55.000002
7294
+ ],
7295
+ [
7296
+ 5,
7297
+ 55
7298
+ ]
7299
+ ]
7300
+ ]
7301
+ },
7302
+ properties: {
7303
+ selectionType: "fir"
7304
+ }
7305
+ }
7306
+ ]
7307
+ }
7308
+ }
7309
+ }
7310
+ ];
7311
+
7312
+ var sigmetListJSON = [
7313
+ {
7314
+ uuid: "someuniqueidprescibedbyBE2",
7315
+ lastUpdateDate: "2020-09-17T12:00:00Z",
7316
+ creationDate: "2020-09-17T12:00:00Z",
7317
+ canbe: [
7318
+ "CANCELLED"
7319
+ ],
7320
+ sigmet: {
7321
+ uuid: "someuniqueidprescibedbyBE2",
7322
+ phenomenon: "VA_CLD",
7323
+ sequence: "A01V",
7324
+ issueDate: "2020-09-17T12:00:00Z",
7325
+ firName: "AMSTERDAM FIR",
7326
+ locationIndicatorATSU: "EHAA",
7327
+ locationIndicatorATSR: "EHAA",
7328
+ locationIndicatorMWO: "EHDB",
7329
+ isObservationOrForecast: "OBS",
7330
+ observationOrForecastTime: "",
7331
+ movementType: "STATIONARY",
7332
+ change: "WKN",
7333
+ type: "NORMAL",
7334
+ status: "PUBLISHED",
7335
+ levelInfoMode: "BETW",
7336
+ vaSigmetVolcanoName: "EYJAFJALLAJOKULL",
7337
+ vaSigmetVolcanoCoordinates: {
7338
+ latitude: 63.62,
7339
+ longitude: -19.61
7340
+ },
7341
+ level: {
7342
+ value: 2000,
7343
+ unit: "FT"
7344
+ },
7345
+ lowerLevel: {
7346
+ value: 1000,
7347
+ unit: "FT"
7348
+ },
7349
+ firGeometry: "",
7350
+ startGeometry: {
7351
+ type: "FeatureCollection",
7352
+ features: [
7353
+ {
7354
+ type: "Feature",
7355
+ properties: {
7356
+ selectionType: "poly"
7357
+ },
7358
+ geometry: {
7359
+ type: "Polygon",
7360
+ coordinates: [
7361
+ [
7362
+ [
7363
+ 4.799062887514267,
7364
+ 54.04327723979929
7365
+ ],
7366
+ [
7367
+ 6.006227982070749,
7368
+ 53.64012115183787
7369
+ ],
7370
+ [
7371
+ 4.6168492883359304,
7372
+ 53.32840097044425
7373
+ ],
7374
+ [
7375
+ 4.799062887514267,
7376
+ 54.04327723979929
7377
+ ]
7378
+ ]
7379
+ ]
7380
+ }
7381
+ }
7382
+ ]
7383
+ },
7384
+ startGeometryIntersect: {
7385
+ type: "FeatureCollection",
7386
+ features: [
7387
+ {
7388
+ type: "Feature",
7389
+ properties: {
7390
+ selectionType: "poly"
7391
+ },
7392
+ geometry: {
7393
+ type: "Polygon",
7394
+ coordinates: [
7395
+ [
7396
+ [
7397
+ 4.799062887514267,
7398
+ 54.04327723979929
7399
+ ],
7400
+ [
7401
+ 6.006227982070749,
7402
+ 53.64012115183787
7403
+ ],
7404
+ [
7405
+ 4.6168492883359304,
7406
+ 53.32840097044425
7407
+ ],
7408
+ [
7409
+ 4.799062887514267,
7410
+ 54.04327723979929
7411
+ ]
7412
+ ]
7413
+ ]
7414
+ }
7415
+ }
7416
+ ]
7417
+ }
7418
+ }
7419
+ }
7420
+ ];
7421
+
7422
+ /* *
7423
+ * Licensed under the Apache License, Version 2.0 (the "License");
7424
+ * you may not use this file except in compliance with the License.
7425
+ * You may obtain a copy of the License at
7426
+ *
7427
+ * http://www.apache.org/licenses/LICENSE-2.0
7428
+ *
7429
+ * Unless required by applicable law or agreed to in writing, software
7430
+ * distributed under the License is distributed on an "AS IS" BASIS,
7431
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7432
+ * See the License for the specific language governing permissions and
7433
+ * limitations under the License.
7434
+ *
7435
+ * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7436
+ * Copyright 2024 - Finnish Meteorological Institute (FMI)
7437
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7438
+ * */
7439
+ var airmetList$1 = airmetListJSON;
7440
+ var sigmetList$1 = sigmetListJSON;
7441
+ var fakeSigmetTAC = 'EHAA SIGMET 1 VALID 121249/121449 EHDB- EHAA AMSTERDAM FIR FRQ TS OBS ENTIRE FIR FL010 STNR WKN';
7442
+ var fakeAirmetTAC = 'EHAA AIRMET -1 VALID 310700/311100 EHDB- EHAA AMSTERDAM FIR ISOL CB OBS ENTIRE FIR FL020 STNR NC';
7443
+ [rest.get(/^.*\/airmetlist$/, function (_, res, ctx) {
7444
+ return res(ctx.status(200), ctx.json(airmetList$1));
7445
+ }), rest.get(/^.*\/sigmetlist$/, function (_, res, ctx) {
7446
+ return res(ctx.status(200), ctx.json(sigmetList$1));
7447
+ }), rest.get(/^.*\/airmet-config$/, function (_, res, ctx) {
7448
+ return res(ctx.status(200), ctx.json(airmetConfig));
7449
+ }), rest.get(/^.*\/sigmet-config$/, function (_, res, ctx) {
7450
+ return res(ctx.status(200), ctx.json(sigmetConfig));
7451
+ }), rest.post(/^.*\/airmet2tac$/, function (_, res, ctx) {
7452
+ return res(ctx.status(200), ctx.text(fakeAirmetTAC));
7453
+ }), rest.post(/^.*\/sigmet2tac$/, function (_, res, ctx) {
7454
+ return res(ctx.status(200), ctx.text(fakeSigmetTAC));
7455
+ }), rest.get(/^(?!.*(sigmet|airmet)).*$/, function (req) {
7456
+ return req.passthrough();
7457
+ })];
7458
+
7459
+ /* *
7460
+ * Licensed under the Apache License, Version 2.0 (the "License");
7461
+ * you may not use this file except in compliance with the License.
7462
+ * You may obtain a copy of the License at
7463
+ *
7464
+ * http://www.apache.org/licenses/LICENSE-2.0
7465
+ *
7466
+ * Unless required by applicable law or agreed to in writing, software
7467
+ * distributed under the License is distributed on an "AS IS" BASIS,
7468
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7469
+ * See the License for the specific language governing permissions and
7470
+ * limitations under the License.
7471
+ *
7472
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7473
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
7474
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7475
+ * */
7476
+ var drawingList = drawingListJSON;
7477
+ var drawingsListFullContent = drawingsListFullContentJSON;
7478
+ var warningList = warningListJSON.map(function (pw) {
7479
+ return Object.assign({}, pw, {
7480
+ type: 'public'
7481
+ });
7482
+ });
7483
+ warningList.filter(function (warning) {
7484
+ return warning.status !== 'EXPIRED' && warning.status !== 'WITHDRAWN';
7485
+ }).length;
7486
+ var sigmetList = sigmetListJSON$1.map(function (s) {
7487
+ return Object.assign({}, s, {
7488
+ type: 'sigmet'
7489
+ });
7490
+ });
7491
+ var airmetList = airmetListJSON$1.map(function (a) {
7492
+ return Object.assign({}, a, {
7493
+ type: 'airmet'
7494
+ });
7495
+ });
7496
+ concat(warningList, sigmetList, airmetList);
7497
+ var areaKeywordList = ['North Sea districts', 'Coastal Districts', 'KNMI Specific', 'Objects', 'Baltic areas', 'NL', 'FI', 'METNorway Specific', 'Provinces', 'FIR', 'Countries'];
7498
+ [rest.get(/^.*\/warnings$/, function (req, res, ctx) {
7499
+ // respond using a mocked JSON body
7500
+ return res(ctx.json(warningList));
7501
+ }), rest.post(/^.*\/warnings\/(.*)$/, function (req, res, ctx) {
7502
+ return res(ctx.json({}));
7503
+ })];
7504
+
7505
+ /* *
7506
+ * Licensed under the Apache License, Version 2.0 (the "License");
7507
+ * you may not use this file except in compliance with the License.
7508
+ * You may obtain a copy of the License at
7509
+ *
7510
+ * http://www.apache.org/licenses/LICENSE-2.0
7511
+ *
7512
+ * Unless required by applicable law or agreed to in writing, software
7513
+ * distributed under the License is distributed on an "AS IS" BASIS,
7514
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7515
+ * See the License for the specific language governing permissions and
7516
+ * limitations under the License.
7517
+ *
7518
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
7519
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
7520
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7521
+ * */
7522
+ var ERROR_NOT_FOUND = 'Request failed with status code 400';
7523
+ var extractDrawingDetailsFromJSON = function extractDrawingDetailsFromJSON(drawingId) {
7524
+ return drawingsListFullContent.find(function (element) {
7525
+ return element.id === drawingId;
7526
+ });
7527
+ };
7528
+ // to copy
7529
+ var getCleanSearchQuery = function getCleanSearchQuery(searchQuery) {
7530
+ return searchQuery.trim().split(/\s+/).join();
7531
+ };
7532
+ var getApiRoutes = function getApiRoutes(axiosInstance) {
7533
+ return {
7534
+ // drawings
7535
+ getDrawings: function getDrawings(params) {
7536
+ return axiosInstance.get('/drawings', {
7537
+ params: params
7538
+ }).then(function () {
7539
+ var result = drawingList.filter(function (element) {
7540
+ if (params != null && params.search || params != null && params.keywords) {
7541
+ var _params$keywords;
7542
+ var searchQuery = getCleanSearchQuery(params.search || '').split(',');
7543
+ var keyWordsQuery = ((_params$keywords = params.keywords) == null ? void 0 : _params$keywords.split(',')) || [];
7544
+ var hasResult = [].concat(searchQuery, keyWordsQuery).every(function (query) {
7545
+ var _element$keywords;
7546
+ return element.objectName.toLowerCase().includes(query.toLowerCase()) || ((_element$keywords = element.keywords) == null ? void 0 : _element$keywords.toLowerCase().includes(query.toLowerCase()));
7547
+ });
7548
+ if (hasResult) {
7549
+ return element;
7550
+ }
7551
+ } else {
7552
+ return element;
7553
+ }
7554
+ return null;
7555
+ });
7556
+ return {
7557
+ data: result
7558
+ };
7559
+ });
7560
+ },
7561
+ getDrawingDetails: function getDrawingDetails(drawingId) {
7562
+ return axiosInstance.get("/drawings/" + drawingId).then(function () {
7563
+ if (!extractDrawingDetailsFromJSON(drawingId)) {
7564
+ throw new Error(ERROR_NOT_FOUND);
7565
+ }
7566
+ return {
7567
+ data: extractDrawingDetailsFromJSON(drawingId)
7568
+ };
7569
+ });
7570
+ },
7571
+ updateDrawing: function updateDrawing(drawingId, data) {
7572
+ // eslint-disable-next-line no-console
7573
+ console.log('api: save drawing', drawingId, data);
7574
+ return axiosInstance.post("/drawings/" + drawingId + "/", data);
7575
+ },
7576
+ saveDrawingAs: function saveDrawingAs(data) {
7577
+ // eslint-disable-next-line no-console
7578
+ console.log('api: save drawing as', data);
7579
+ return axiosInstance.post("/drawings/", data).then(function () {
7580
+ return 'new-drawing-id';
7581
+ });
7582
+ },
7583
+ deleteDrawing: function deleteDrawing(drawingId) {
7584
+ // eslint-disable-next-line no-console
7585
+ console.log('api: delete drawing', drawingId);
7586
+ drawingList.splice(drawingList.findIndex(function (drawing) {
7587
+ return drawing.id === drawingId;
7588
+ }), 1);
7589
+ return axiosInstance.post("/drawings/" + drawingId + "?delete=true");
7590
+ },
7591
+ getAreaKeywords: function getAreaKeywords() {
7592
+ return axiosInstance.get('/area-keywords').then(function () {
7593
+ return {
7594
+ data: areaKeywordList
7595
+ };
7596
+ });
7079
7597
  },
7080
7598
  saveWarningAs: function saveWarningAs(data) {
7081
7599
  // eslint-disable-next-line no-console
@@ -7096,17 +7614,6 @@ var getApiRoutes = function getApiRoutes(axiosInstance) {
7096
7614
  return warning.id === warningId;
7097
7615
  }), 1);
7098
7616
  return axiosInstance.post("/warnings/" + warningId + "?delete=true");
7099
- },
7100
- toggleEditorWarning: function toggleEditorWarning(warningId, isEditor) {
7101
- // eslint-disable-next-line no-console
7102
- console.log('api: toggle editor warning', warningId, isEditor);
7103
- var index = warningList.findIndex(function (warning) {
7104
- return warning.id === warningId;
7105
- });
7106
- warningList.splice(index, 1, Object.assign({}, warningList[index], {
7107
- editor: isEditor ? MOCK_USERNAME : null
7108
- }));
7109
- return axiosInstance.post("/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false'));
7110
7617
  }
7111
7618
  };
7112
7619
  };
@@ -7457,7 +7964,7 @@ var DrawingToolFormContentsNoMemo = function DrawingToolFormContentsNoMemo(_ref)
7457
7964
  };
7458
7965
  var DrawingToolFormContents = /*#__PURE__*/React__default.memo(DrawingToolFormContentsNoMemo, isEqual);
7459
7966
 
7460
- var _excluded$8 = ["opacity", "geoJSON"];
7967
+ var _excluded$9 = ["opacity", "geoJSON"];
7461
7968
  var getObjectName$1 = function getObjectName(objectName) {
7462
7969
  return objectName || dateUtils.dateToString(new Date(), dateUtils.DATE_FORMAT_DATEPICKER, true) + " UTC";
7463
7970
  };
@@ -7527,7 +8034,7 @@ var DrawingToolForm = function DrawingToolForm(_ref) {
7527
8034
  // remove unneeded properties
7528
8035
  formValues.opacity;
7529
8036
  var geoJSON = formValues.geoJSON,
7530
- allFormValues = _objectWithoutPropertiesLoose(formValues, _excluded$8);
8037
+ allFormValues = _objectWithoutPropertiesLoose(formValues, _excluded$9);
7531
8038
  // rewind geometry
7532
8039
  var rewindedGeometry = rewindGeometry(geoJSON);
7533
8040
  onSubmitForm(Object.assign({}, allFormValues, {
@@ -7596,7 +8103,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7596
8103
  });
7597
8104
  var drawToolId = drawingDialogType;
7598
8105
  var drawTool = useSelector(function (store) {
7599
- return drawtoolSelectors.selectDrawToolById(store, drawToolId);
8106
+ return drawingToolSelectors.selectDrawToolById(store, drawToolId);
7600
8107
  });
7601
8108
  var layerFeatureGeoJSON = useSelector(function (store) {
7602
8109
  return layerSelectors.getFeatureLayerGeoJSON(store, drawTool == null ? void 0 : drawTool.geoJSONLayerId);
@@ -7614,7 +8121,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7614
8121
  return uiSelectors.getDialogError(store, drawToolId);
7615
8122
  });
7616
8123
  var onSubmitForm = React.useCallback(function (formValues) {
7617
- dispatch(drawActions.submitDrawValues({
8124
+ dispatch(warningsDrawingsActions.submitDrawValues({
7618
8125
  geoJSON: formValues.geoJSON,
7619
8126
  objectName: formValues.objectName,
7620
8127
  scope: 'user',
@@ -7648,7 +8155,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7648
8155
  }
7649
8156
  }, [dispatch, drawTool == null ? void 0 : drawTool.activeDrawModeId, drawTool == null ? void 0 : drawTool.geoJSONLayerId, drawToolId]);
7650
8157
  var onChangeName = React.useCallback(function (newName) {
7651
- dispatch(drawActions.setDrawValues({
8158
+ dispatch(warningsDrawingsActions.setDrawValues({
7652
8159
  objectName: newName,
7653
8160
  id: (drawing == null ? void 0 : drawing.id) || '',
7654
8161
  drawingInstanceId: drawingDialogType,
@@ -7656,7 +8163,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7656
8163
  }));
7657
8164
  }, [dispatch, drawing == null ? void 0 : drawing.id, drawing == null ? void 0 : drawing.isFormDirty]);
7658
8165
  var onChangeFormDirty = React.useCallback(function (isFormDirty) {
7659
- dispatch(drawActions.setFormDirty({
8166
+ dispatch(warningsDrawingsActions.setFormDirty({
7660
8167
  drawingInstanceId: drawingDialogType,
7661
8168
  isFormDirty: isFormDirty
7662
8169
  }));
@@ -7936,7 +8443,7 @@ var PublicWarningsFormDialog = function PublicWarningsFormDialog(_ref) {
7936
8443
  }));
7937
8444
  };
7938
8445
 
7939
- var _excluded$7 = ["children", "value", "index"];
8446
+ var _excluded$8 = ["children", "value", "index"];
7940
8447
  function a11yProps(index) {
7941
8448
  return {
7942
8449
  id: "tab-" + index,
@@ -7957,7 +8464,7 @@ var CustomTabPanel = function CustomTabPanel(props) {
7957
8464
  var children = props.children,
7958
8465
  value = props.value,
7959
8466
  index = props.index,
7960
- other = _objectWithoutPropertiesLoose(props, _excluded$7);
8467
+ other = _objectWithoutPropertiesLoose(props, _excluded$8);
7961
8468
  return jsx("div", Object.assign({
7962
8469
  role: "tabpanel",
7963
8470
  hidden: value !== index,
@@ -8205,23 +8712,6 @@ var AreaField = function AreaField(_ref) {
8205
8712
  };
8206
8713
 
8207
8714
  var _defaultLevelFilter, _defaultEmptyFilter;
8208
- /* *
8209
- * Licensed under the Apache License, Version 2.0 (the "License");
8210
- * you may not use this file except in compliance with the License.
8211
- * You may obtain a copy of the License at
8212
- *
8213
- * http://www.apache.org/licenses/LICENSE-2.0
8214
- *
8215
- * Unless required by applicable law or agreed to in writing, software
8216
- * distributed under the License is distributed on an "AS IS" BASIS,
8217
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8218
- * See the License for the specific language governing permissions and
8219
- * limitations under the License.
8220
- *
8221
- * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
8222
- * Copyright 2024 - Finnish Meteorological Institute (FMI)
8223
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
8224
- * */
8225
8715
  var Domain;
8226
8716
  (function (Domain) {
8227
8717
  Domain["aviation"] = "aviation";
@@ -8267,7 +8757,16 @@ var makeFilterFromList = function makeFilterFromList(options) {
8267
8757
  return p ? Object.assign({}, acc, (_Object$assign = {}, _Object$assign[p] = true, _Object$assign)) : acc;
8268
8758
  }, (_options$reduce = {}, _options$reduce[emptyFilterId] = true, _options$reduce));
8269
8759
  };
8270
- var defaultPhenomenonFilter = makeFilterFromList(Object.values(Phenomenon$1));
8760
+ var AllPhenomena = Object.assign({}, AirmetPhenomena, SigmetPhenomena, Phenomenon$1);
8761
+ var AllPhenomenaKeys = Object.fromEntries(Object.keys(AllPhenomena).map(function (key) {
8762
+ return [key, key];
8763
+ }));
8764
+ var domainPhenomena = {
8765
+ aviation: [].concat(Object.keys(SigmetPhenomena), Object.keys(AirmetPhenomena)),
8766
+ maritime: [],
8767
+ "public": [].concat(Object.keys(Phenomenon$1))
8768
+ };
8769
+ var defaultPhenomenonFilter = makeFilterFromList(Object.keys(AllPhenomenaKeys));
8271
8770
  var initialFilters = {
8272
8771
  incident: defaultEmptyFilter,
8273
8772
  source: defaultEmptyFilter,
@@ -8474,6 +8973,10 @@ var warningPhenomena = [{
8474
8973
  translationKey: 'aviation-phenomenon-obscured-thunderstorm-with-hail',
8475
8974
  key: 'OBSC_TSGR',
8476
8975
  isAviation: true
8976
+ }, {
8977
+ translationKey: 'aviation-phenomenon-obscured-thunderstorm',
8978
+ key: 'OBSC_TS',
8979
+ isAviation: true
8477
8980
  }, {
8478
8981
  translationKey: 'aviation-phenomenon-squall-thunderstorm-with-hail',
8479
8982
  key: 'SQL_TSGR',
@@ -8828,39 +9331,13 @@ var ValidUntil = function ValidUntil(_ref) {
8828
9331
  });
8829
9332
  };
8830
9333
 
8831
- var zoomToFeature = function zoomToFeature(mapId, geojsonFeature) {
8832
- var webmapjs = getWMJSMapById(mapId);
8833
- if (!webmapjs || !geojsonFeature) {
8834
- return;
8835
- }
8836
- var bboxGeoJSON = getFeatureExtent(geojsonFeature);
8837
- var projectedCoordinateBoxBottomLeft = getGeoCoordFromLatLong(webmapjs, {
8838
- x: bboxGeoJSON.left,
8839
- y: bboxGeoJSON.bottom
8840
- });
8841
- var projectedCoordinateBoxTopRight = getGeoCoordFromLatLong(webmapjs, {
8842
- x: bboxGeoJSON.right,
8843
- y: bboxGeoJSON.top
8844
- });
8845
- if (projectedCoordinateBoxBottomLeft && projectedCoordinateBoxTopRight) {
8846
- var transformedExtent = new WMBBOX({
8847
- left: projectedCoordinateBoxBottomLeft.x,
8848
- bottom: projectedCoordinateBoxBottomLeft.y,
8849
- right: projectedCoordinateBoxTopRight.x,
8850
- top: projectedCoordinateBoxTopRight.y
8851
- });
8852
- webmapjs.zoomTo(transformedExtent);
8853
- webmapjs.zoomOut(2);
8854
- webmapjs.draw();
8855
- }
8856
- };
8857
9334
  var WarningsMapView = function WarningsMapView(_ref) {
8858
9335
  var _defaultMapPreset$lay, _defaultMapPreset$lay2;
8859
9336
  var geojsonFeature = _ref.geojsonFeature,
8860
9337
  defaultMapPreset = _ref.defaultMapPreset,
8861
9338
  _ref$isSnapshot = _ref.isSnapshot,
8862
9339
  isSnapshot = _ref$isSnapshot === void 0 ? false : _ref$isSnapshot;
8863
- var defaultBbox = defaultMapPreset == null ? void 0 : defaultMapPreset.proj;
9340
+ // const defaultBbox = defaultMapPreset?.proj;
8864
9341
  var defaultBaseLayer = (defaultMapPreset == null || (_defaultMapPreset$lay = defaultMapPreset.layers) == null ? void 0 : _defaultMapPreset$lay.find(function (layer) {
8865
9342
  return layer.layerType === LayerType.baseLayer;
8866
9343
  })) || defaultLayers.baseLayerGrey;
@@ -8873,35 +9350,46 @@ var WarningsMapView = function WarningsMapView(_ref) {
8873
9350
  geojson: geojsonFeature,
8874
9351
  layerType: LayerType.featureLayer
8875
9352
  };
8876
- if (!defaultBbox) {
8877
- // Zoom to the geojson when the geojsonFeature is updated in an already mounted map component
8878
- zoomToFeature(mapId, geojsonFeature);
8879
- }
9353
+ var view = new View({
9354
+ center: [685500, 6800000],
9355
+ zoom: 5.5,
9356
+ projection: 'EPSG:3857'
9357
+ });
9358
+ var bboxGeoJSON = geojsonFeature && getFeatureExtent(geojsonFeature);
9359
+ var coordMin = fromLonLat([bboxGeoJSON == null ? void 0 : bboxGeoJSON.left, bboxGeoJSON == null ? void 0 : bboxGeoJSON.bottom], 'EPSG:3857');
9360
+ var coordMax = fromLonLat([bboxGeoJSON == null ? void 0 : bboxGeoJSON.right, bboxGeoJSON == null ? void 0 : bboxGeoJSON.top], 'EPSG:3857');
9361
+ var center = [(coordMin[0] + coordMax[0]) / 2, (coordMin[1] + coordMax[1]) / 2];
9362
+ view.setCenter(center);
8880
9363
  return jsx("div", {
8881
9364
  style: {
8882
9365
  height: '200px',
8883
9366
  width: '100%'
8884
9367
  },
8885
- children: jsxs(MapView, {
8886
- bbox: defaultBbox == null ? void 0 : defaultBbox.bbox,
8887
- srs: defaultBbox == null ? void 0 : defaultBbox.srs,
8888
- mapId: mapId,
8889
- showScaleBar: false,
8890
- onWMJSMount: function onWMJSMount(mapId) {
8891
- var webmapjs = getWMJSMapById(mapId);
8892
- if (!webmapjs) {
8893
- return;
8894
- }
8895
- webmapjs.hideMouseCursorProperties();
8896
- if (!defaultBbox) {
8897
- // Zoom to the geojson when the map is ready
8898
- zoomToFeature(mapId, geojsonFeature);
8899
- }
8900
- },
9368
+ children: jsxs(OpenLayersMapView, {
9369
+ view: view,
9370
+ // bbox={defaultBbox?.bbox}
9371
+ // srs={defaultBbox?.srs}
9372
+ // mapId={mapId}
9373
+ // showScaleBar={false}
9374
+ // onWMJSMount={(mapId) => {
9375
+ // const webmapjs = getWMJSMapById(mapId);
9376
+ // if (!webmapjs) {
9377
+ // return;
9378
+ // }
9379
+ // webmapjs.hideMouseCursorProperties();
9380
+ // if (!defaultBbox) {
9381
+ // // Zoom to the geojson when the map is ready
9382
+ // zoomToFeature(mapId, geojsonFeature);
9383
+ // }
9384
+ // }}
8901
9385
  holdShiftToScroll: true,
8902
- children: [!isSnapshot && jsx(MapViewLayer, Object.assign({}, defaultBaseLayer, {
9386
+ children: [!isSnapshot && jsx(OpenLayersLayer, Object.assign({}, defaultBaseLayer, {
8903
9387
  id: mapId + "_baseLayer"
8904
- })), warningLayer.geojson && jsx(MapViewLayer, Object.assign({}, warningLayer)), !isSnapshot && jsx(MapViewLayer, Object.assign({}, defaultOverLayer, {
9388
+ })), warningLayer.geojson && jsx(GeoJSONLayer, {
9389
+ featureCollection: warningLayer.geojson,
9390
+ style: genericOpenlayersFeatureStyle,
9391
+ zIndex: 1000
9392
+ }), !isSnapshot && jsx(OpenLayersLayer, Object.assign({}, defaultOverLayer, {
8905
9393
  id: mapId + "_overlayer"
8906
9394
  }))]
8907
9395
  })
@@ -8955,23 +9443,19 @@ var ProbabilityField = function ProbabilityField(_ref) {
8955
9443
  });
8956
9444
  };
8957
9445
 
8958
- var config = getConfig();
8959
- var airmetBaseUrl = config.GW_AIRMET_BASE_URL;
8960
- var sigmetBaseUrl = config.GW_SIGMET_BASE_URL;
9446
+ var config$1 = getConfig();
9447
+ var airmetBaseUrl = config$1.GW_AIRMET_BASE_URL || '';
9448
+ var sigmetBaseUrl = config$1.GW_SIGMET_BASE_URL || '';
8961
9449
  // API
8962
9450
  var getAirmetList = function getAirmetList(auth) {
8963
9451
  return fetch(airmetBaseUrl + "/airmetlist", {
8964
9452
  headers: getHeaders(auth)
8965
- }).then(function (r) {
8966
- return r.json();
8967
- });
9453
+ }).then(handleResponse);
8968
9454
  };
8969
9455
  var getSigmetList = function getSigmetList(auth) {
8970
9456
  return fetch(sigmetBaseUrl + "/sigmetlist", {
8971
9457
  headers: getHeaders(auth)
8972
- }).then(function (r) {
8973
- return r.json();
8974
- });
9458
+ }).then(handleResponse);
8975
9459
  };
8976
9460
  var getAirmetConfig = function getAirmetConfig(auth) {
8977
9461
  return fetch(airmetBaseUrl + "/airmet-config", {
@@ -9121,7 +9605,7 @@ var useTACApi = function useTACApi() {
9121
9605
  };
9122
9606
  };
9123
9607
 
9124
- var _excluded$6 = ["IS_DRAFT", "object", "translation-select"];
9608
+ var _excluded$7 = ["IS_DRAFT", "object", "translation-select"];
9125
9609
  var useScrollTopOnError = function useScrollTopOnError(error) {
9126
9610
  var ref = React.useRef(null);
9127
9611
  React.useEffect(function () {
@@ -9218,7 +9702,7 @@ var prepareFormValues = function prepareFormValues(data) {
9218
9702
  data.IS_DRAFT;
9219
9703
  data.object;
9220
9704
  data['translation-select'];
9221
- var productToPost = _objectWithoutPropertiesLoose(data, _excluded$6);
9705
+ var productToPost = _objectWithoutPropertiesLoose(data, _excluded$7);
9222
9706
  // remove empty fields
9223
9707
  return Object.keys(productToPost).reduce(function (warningDetail, fieldName) {
9224
9708
  var key = fieldName;
@@ -9312,7 +9796,7 @@ isAviationWarning) {
9312
9796
  });
9313
9797
  }
9314
9798
  var Form = function Form(_ref5) {
9315
- var _publicWarningDetails;
9799
+ var _publicWarningDetails, _publicWarningDetails2;
9316
9800
  var defaultMapPreset = _ref5.defaultMapPreset,
9317
9801
  _ref5$onSaveForm = _ref5.onSaveForm,
9318
9802
  onSaveForm = _ref5$onSaveForm === void 0 ? function () {} : _ref5$onSaveForm,
@@ -9344,7 +9828,7 @@ var Form = function Form(_ref5) {
9344
9828
  var _useTACApi = useTACApi(),
9345
9829
  fetchSigmetTAC = _useTACApi.fetchSigmetTAC,
9346
9830
  fetchAirmetTAC = _useTACApi.fetchAirmetTAC;
9347
- var initialPublicWarningArea = publicWarningDetails && (publicWarningDetails == null ? void 0 : publicWarningDetails.areas) && (publicWarningDetails == null ? void 0 : publicWarningDetails.areas.length) && (publicWarningDetails == null || (_publicWarningDetails = publicWarningDetails.areas[0]) == null ? void 0 : _publicWarningDetails.geoJSON);
9831
+ var initialPublicWarningArea = (publicWarningDetails == null || (_publicWarningDetails = publicWarningDetails.areas) == null ? void 0 : _publicWarningDetails.length) && (publicWarningDetails == null || (_publicWarningDetails2 = publicWarningDetails.areas[0]) == null ? void 0 : _publicWarningDetails2.geoJSON);
9348
9832
  var _React$useState = React.useState(initialPublicWarningArea),
9349
9833
  warningGeoJSONFeature = _React$useState[0],
9350
9834
  setWarningGeoJSONFeature = _React$useState[1];
@@ -9726,29 +10210,25 @@ var getPublicWarningStore = function getPublicWarningStore(store) {
9726
10210
  if (store && store.publicWarningForm) {
9727
10211
  return store.publicWarningForm;
9728
10212
  }
9729
- return null;
10213
+ return {};
9730
10214
  };
9731
10215
  var getPublicWarningObject = createSelector(getPublicWarningStore, function (publicWarningStore) {
9732
10216
  return publicWarningStore.object;
9733
10217
  });
9734
10218
  var getPublicWarning = createSelector(getPublicWarningStore, function (publicWarningStore) {
9735
- return publicWarningStore.publicWarning;
10219
+ return publicWarningStore == null ? void 0 : publicWarningStore.warning;
9736
10220
  });
9737
10221
  var getPublicWarningStatus = createSelector(getPublicWarningStore, function (publicWarningStore) {
9738
- var _publicWarningStore$p;
9739
- return publicWarningStore == null || (_publicWarningStore$p = publicWarningStore.publicWarning) == null ? void 0 : _publicWarningStore$p.status;
9740
- });
9741
- var getPublicWarningEditor = createSelector(getPublicWarningStore, function (publicWarningStore) {
9742
- var _publicWarningStore$p2;
9743
- return publicWarningStore == null || (_publicWarningStore$p2 = publicWarningStore.publicWarning) == null ? void 0 : _publicWarningStore$p2.editor;
10222
+ var _publicWarningStore$w;
10223
+ return publicWarningStore == null || (_publicWarningStore$w = publicWarningStore.warning) == null ? void 0 : _publicWarningStore$w.status;
9744
10224
  });
9745
10225
  var getPublicWarningId = createSelector(getPublicWarningStore, function (publicWarningStore) {
9746
- var _publicWarningStore$p3;
9747
- return publicWarningStore == null || (_publicWarningStore$p3 = publicWarningStore.publicWarning) == null ? void 0 : _publicWarningStore$p3.warningDetail.id;
10226
+ var _publicWarningStore$w2;
10227
+ return publicWarningStore == null || (_publicWarningStore$w2 = publicWarningStore.warning) == null ? void 0 : _publicWarningStore$w2.warningDetail.id;
9748
10228
  });
9749
10229
  var getPublicWarningAreas = createSelector(getPublicWarningStore, function (publicWarningStore) {
9750
- var _publicWarningStore$p4;
9751
- return (publicWarningStore == null || (_publicWarningStore$p4 = publicWarningStore.publicWarning) == null ? void 0 : _publicWarningStore$p4.warningDetail.areas) || [];
10230
+ var _publicWarningStore$w3;
10231
+ return (publicWarningStore == null || (_publicWarningStore$w3 = publicWarningStore.warning) == null ? void 0 : _publicWarningStore$w3.warningDetail.areas) || [];
9752
10232
  });
9753
10233
  var getPublicWarningFormState = createSelector(getPublicWarningStore, function (publicWarningStore) {
9754
10234
  return (publicWarningStore == null ? void 0 : publicWarningStore.formState) || '';
@@ -9756,8 +10236,8 @@ var getPublicWarningFormState = createSelector(getPublicWarningStore, function (
9756
10236
  var getPublicWarningFormError = createSelector(getPublicWarningStore, function (publicWarningStore) {
9757
10237
  return publicWarningStore == null ? void 0 : publicWarningStore.error;
9758
10238
  });
9759
- var getSelectedPublicWarningId = createSelector(getPublicWarningStore, function (publicWarningStore) {
9760
- return (publicWarningStore == null ? void 0 : publicWarningStore.selectedPublicWarningId) || '';
10239
+ var getSelectedWarningId = createSelector(getPublicWarningStore, function (publicWarningStore) {
10240
+ return (publicWarningStore == null ? void 0 : publicWarningStore.selectedWarningId) || '';
9761
10241
  });
9762
10242
  var getSelectedPublicIsFormDirty = createSelector(getPublicWarningStore, function (publicWarningStore) {
9763
10243
  return (publicWarningStore == null ? void 0 : publicWarningStore.isFormDirty) || false;
@@ -9795,50 +10275,49 @@ var PublicWarningStatus;
9795
10275
  })(PublicWarningStatus || (PublicWarningStatus = {}));
9796
10276
 
9797
10277
  var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
9798
- var defaultMapPreset = _ref.defaultMapPreset,
10278
+ var editor = _ref.editor,
10279
+ defaultMapPreset = _ref.defaultMapPreset,
9799
10280
  selectedAviationProduct = _ref.selectedAviationProduct,
9800
10281
  _ref$warningType = _ref.warningType,
9801
10282
  warningType = _ref$warningType === void 0 ? 'public' : _ref$warningType,
9802
- mode = _ref.mode;
9803
- var publicWarning = useSelector(function (store) {
9804
- return getPublicWarning(store);
9805
- });
9806
- var publicWarningObject = useSelector(function (store) {
9807
- return getPublicWarningObject(store);
9808
- });
9809
- var publicWarningFormAction = useSelector(function (store) {
9810
- return getPublicWarningFormState(store);
9811
- });
9812
- var publicWarningFormError = useSelector(function (store) {
9813
- return getPublicWarningFormError(store);
9814
- });
9815
- var publicWarningEditor = useSelector(function (store) {
9816
- return getPublicWarningEditor(store);
9817
- });
10283
+ mode = _ref.mode,
10284
+ onFormSubmit = _ref.onFormSubmit;
10285
+ var publicWarning = useSelector(getPublicWarning);
10286
+ var publicWarningObject = useSelector(getPublicWarningObject);
10287
+ var publicWarningFormAction = useSelector(getPublicWarningFormState);
10288
+ var publicWarningFormError = useSelector(getPublicWarningFormError);
9818
10289
  var _useAuthenticationCon = useAuthenticationContext$1(),
9819
10290
  auth = _useAuthenticationCon.auth;
9820
- var isEditor = publicWarningEditor === (auth == null ? void 0 : auth.username) || false;
10291
+ var isEditor = editor === (auth == null ? void 0 : auth.username) || false;
9821
10292
  var dispatch = useDispatch();
9822
10293
  var publishForm = function publishForm(newFormValues) {
9823
- dispatch(publicWarningFormActions.publishWarning({
9824
- publicWarning: {
9825
- warningDetail: newFormValues,
9826
- status: PublicWarningStatus.PUBLISHED
9827
- }
9828
- }));
10294
+ if (warningType === 'public') {
10295
+ dispatch(publicWarningFormActions.publishWarning({
10296
+ publicWarning: {
10297
+ warningDetail: newFormValues,
10298
+ status: PublicWarningStatus.PUBLISHED,
10299
+ type: warningType
10300
+ },
10301
+ refetchWarnings: onFormSubmit
10302
+ }));
10303
+ }
9829
10304
  };
9830
10305
  var clearForm = function clearForm() {
9831
10306
  dispatch(publicWarningFormActions.removeAllAreas());
9832
10307
  };
9833
10308
  var saveForm = function saveForm(newFormValues) {
9834
10309
  var status = newFormValues.linked_to_id ? PublicWarningStatus.DRAFT_PUBLISHED : PublicWarningStatus.DRAFT;
9835
- dispatch(publicWarningFormActions.saveWarning({
9836
- publicWarning: {
9837
- warningDetail: newFormValues,
9838
- status: status,
9839
- editor: auth == null ? void 0 : auth.username
9840
- }
9841
- }));
10310
+ if (warningType === 'public') {
10311
+ dispatch(publicWarningFormActions.saveWarning({
10312
+ publicWarning: {
10313
+ warningDetail: newFormValues,
10314
+ status: status,
10315
+ editor: auth == null ? void 0 : auth.username,
10316
+ type: warningType
10317
+ },
10318
+ refetchWarnings: onFormSubmit
10319
+ }));
10320
+ }
9842
10321
  };
9843
10322
  var onFormDirty = function onFormDirty(isFormDirty) {
9844
10323
  dispatch(publicWarningFormActions.setFormDirty({
@@ -9861,12 +10340,16 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
9861
10340
  if ((selectedAviationProduct == null ? void 0 : selectedAviationProduct.status) === 'DRAFT') {
9862
10341
  return false;
9863
10342
  }
10343
+ if (publicWarningFormAction === 'edit') {
10344
+ return false;
10345
+ }
9864
10346
  if (mode === 'new') {
9865
10347
  return false;
9866
10348
  }
9867
10349
  return true;
9868
10350
  };
9869
10351
  var isReadOnly = getIsReadOnly();
10352
+ var formMode = publicWarningFormAction === 'edit' ? 'edit' : mode;
9870
10353
  var onAddObject = function onAddObject() {
9871
10354
  dispatch(uiActions.setToggleOpenDialog({
9872
10355
  type: uiTypes.DialogTypes.AreaObjectLoader,
@@ -9887,7 +10370,7 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
9887
10370
  onAddObject: onAddObject,
9888
10371
  selectedAviationProduct: selectedAviationProduct,
9889
10372
  warningType: warningType,
9890
- mode: mode
10373
+ mode: formMode
9891
10374
  });
9892
10375
  };
9893
10376
 
@@ -10511,26 +10994,23 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
10511
10994
  });
10512
10995
  };
10513
10996
 
10514
- /* *
10515
- * Licensed under the Apache License, Version 2.0 (the "License");
10516
- * you may not use this file except in compliance with the License.
10517
- * You may obtain a copy of the License at
10518
- *
10519
- * http://www.apache.org/licenses/LICENSE-2.0
10520
- *
10521
- * Unless required by applicable law or agreed to in writing, software
10522
- * distributed under the License is distributed on an "AS IS" BASIS,
10523
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10524
- * See the License for the specific language governing permissions and
10525
- * limitations under the License.
10526
- *
10527
- * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
10528
- * Copyright 2024 - Finnish Meteorological Institute (FMI)
10529
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
10530
- * */
10997
+ var _excluded$6 = ["sigmetAirmetDetails"];
10998
+ function isCancelAirmet(warningDetail) {
10999
+ return warningDetail.cancelsAirmetSequenceId !== undefined;
11000
+ }
11001
+ function isCancelSigmet(warningDetail) {
11002
+ return warningDetail.cancelsSigmetSequenceId !== undefined;
11003
+ }
11004
+ var flattenPublicWarning = function flattenPublicWarning(publicWarning) {
11005
+ if (publicWarning.type === 'public') {
11006
+ return {};
11007
+ }
11008
+ var sigmetAirmetDetails = publicWarning.sigmetAirmetDetails,
11009
+ rest = _objectWithoutPropertiesLoose(publicWarning, _excluded$6);
11010
+ return Object.assign({}, rest, sigmetAirmetDetails);
11011
+ };
10531
11012
  var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(apiAirmet) {
10532
11013
  var airmet = apiAirmet.airmet;
10533
- var cancelAirmet = apiAirmet == null ? void 0 : apiAirmet.airmet;
10534
11014
  var areas = [];
10535
11015
  if (airmet.startGeometry) {
10536
11016
  areas.push({
@@ -10551,23 +11031,23 @@ var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(api
10551
11031
  lastUpdatedTime: apiAirmet.lastUpdateDate,
10552
11032
  productStatus: airmet.status,
10553
11033
  warningDetail: {
10554
- descriptionOriginal: '',
10555
- descriptionTranslation: '',
10556
- areas: areas,
11034
+ id: airmet.uuid,
10557
11035
  phenomenon: airmet.phenomenon,
11036
+ areas: areas,
10558
11037
  validFrom: airmet.validDateStart,
10559
11038
  validUntil: airmet.validDateEnd,
11039
+ incident: airmet.sequence,
10560
11040
  level: 'AIR',
10561
11041
  probability: 0,
10562
- incident: airmet.sequence,
10563
- firName: airmet.firName,
10564
- cancelId: isInstanceOfCancelAirmet(airmet) ? cancelAirmet.cancelsAirmetSequenceId : undefined
10565
- }
11042
+ descriptionOriginal: '',
11043
+ descriptionTranslation: ''
11044
+ },
11045
+ sigmetAirmetDetails: Object.assign({}, airmet),
11046
+ type: 'airmet'
10566
11047
  };
10567
11048
  };
10568
11049
  var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(apiSigmet) {
10569
11050
  var sigmet = apiSigmet.sigmet;
10570
- var cancelSigmet = apiSigmet == null ? void 0 : apiSigmet.sigmet;
10571
11051
  var areas = [];
10572
11052
  if (sigmet.startGeometry) {
10573
11053
  areas.push({
@@ -10604,18 +11084,19 @@ var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(api
10604
11084
  lastUpdatedTime: apiSigmet.lastUpdateDate,
10605
11085
  productStatus: sigmet.status,
10606
11086
  warningDetail: {
10607
- descriptionOriginal: '',
10608
- descriptionTranslation: '',
10609
- areas: areas,
11087
+ id: sigmet.uuid,
10610
11088
  phenomenon: sigmet.phenomenon,
11089
+ areas: areas,
10611
11090
  validFrom: sigmet.validDateStart,
10612
11091
  validUntil: sigmet.validDateEnd,
11092
+ incident: sigmet.sequence,
10613
11093
  level: 'SIG',
10614
11094
  probability: 0,
10615
- incident: sigmet.sequence,
10616
- firName: sigmet.firName,
10617
- cancelId: isInstanceOfCancelSigmet(sigmet) ? cancelSigmet.cancelsSigmetSequenceId : undefined
10618
- }
11095
+ descriptionOriginal: '',
11096
+ descriptionTranslation: ''
11097
+ },
11098
+ sigmetAirmetDetails: Object.assign({}, sigmet),
11099
+ type: 'sigmet'
10619
11100
  };
10620
11101
  };
10621
11102
  var mapProductStatusToWarningStatus = function mapProductStatusToWarningStatus(productStatus) {
@@ -10631,15 +11112,9 @@ var mapProductStatusToWarningStatus = function mapProductStatusToWarningStatus(p
10631
11112
  return PublicWarningStatus.EXPIRED;
10632
11113
  }
10633
11114
  };
10634
- var transformSigmetToProductFormat = function transformSigmetToProductFormat(warning, config) {
10635
- var _warning$sigmet;
10636
- var fir = (warning == null || (_warning$sigmet = warning.sigmet) == null ? void 0 : _warning$sigmet.locationIndicatorATSR) || config.active_firs[0];
10637
- var firConfig = config.fir_areas[fir];
11115
+ var transformSigmetToProductFormat = function transformSigmetToProductFormat(warning) {
10638
11116
  var sigmet = warning == null ? void 0 : warning.sigmet;
10639
11117
  var cancelSigmet = warning == null ? void 0 : warning.sigmet;
10640
- if (!firConfig) {
10641
- throw new Error("FIR " + fir + " not found in configuration");
10642
- }
10643
11118
  return Object.assign({
10644
11119
  uuid: (sigmet == null ? void 0 : sigmet.uuid) || 'default',
10645
11120
  // Use a fallback UUID or handle undefined
@@ -10680,15 +11155,9 @@ var transformSigmetToProductFormat = function transformSigmetToProductFormat(war
10680
11155
  validDateEndOfSigmetToCancel: cancelSigmet.validDateEndOfSigmetToCancel
10681
11156
  });
10682
11157
  };
10683
- var transformAirmetToProductFormat = function transformAirmetToProductFormat(warning, config) {
10684
- var _warning$airmet;
10685
- var fir = (warning == null || (_warning$airmet = warning.airmet) == null ? void 0 : _warning$airmet.locationIndicatorATSR) || config.active_firs[0];
10686
- var firConfig = config.fir_areas[fir];
11158
+ var transformAirmetToProductFormat = function transformAirmetToProductFormat(warning) {
10687
11159
  var airmet = warning == null ? void 0 : warning.airmet;
10688
11160
  var cancelAirmet = warning == null ? void 0 : warning.airmet;
10689
- if (!firConfig) {
10690
- throw new Error("FIR " + fir + " not found in configuration");
10691
- }
10692
11161
  return Object.assign({
10693
11162
  uuid: (airmet == null ? void 0 : airmet.uuid) || 'default',
10694
11163
  // Use a fallback UUID or handle undefined
@@ -10801,6 +11270,179 @@ var getEmptyAirmetWarning = function getEmptyAirmetWarning() {
10801
11270
  }
10802
11271
  };
10803
11272
  };
11273
+ var renewAviationProduct = function renewAviationProduct(aviationWarning, productConfig) {
11274
+ var warningDetail = aviationWarning.sigmetAirmetDetails;
11275
+ var newValidUntil = 'phenomenon' in warningDetail ? getDefaultValidUntilValue(productConfig, warningDetail.phenomenon, warningDetail.locationIndicatorATSR, warningDetail.validDateEnd) : warningDetail.validDateEnd;
11276
+ var renewedWarningDetail = Object.assign({}, warningDetail, {
11277
+ validDateStart: warningDetail.validDateEnd,
11278
+ validDateEnd: newValidUntil,
11279
+ status: ProductStatus.DRAFT,
11280
+ uuid: undefined,
11281
+ sequence: '-1'
11282
+ });
11283
+ return Object.assign({}, aviationWarning, {
11284
+ sigmetAirmetDetails: renewedWarningDetail
11285
+ });
11286
+ };
11287
+ var duplicateAviationProduct = function duplicateAviationProduct(aviationWarning) {
11288
+ var duplicatedWarningDetail = Object.assign({}, aviationWarning.sigmetAirmetDetails, {
11289
+ status: ProductStatus.DRAFT,
11290
+ uuid: undefined,
11291
+ sequence: '-1'
11292
+ });
11293
+ return Object.assign({}, aviationWarning, {
11294
+ sigmetAirmetDetails: duplicatedWarningDetail
11295
+ });
11296
+ };
11297
+
11298
+ /* *
11299
+ * Licensed under the Apache License, Version 2.0 (the "License");
11300
+ * you may not use this file except in compliance with the License.
11301
+ * You may obtain a copy of the License at
11302
+ *
11303
+ * http://www.apache.org/licenses/LICENSE-2.0
11304
+ *
11305
+ * Unless required by applicable law or agreed to in writing, software
11306
+ * distributed under the License is distributed on an "AS IS" BASIS,
11307
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11308
+ * See the License for the specific language governing permissions and
11309
+ * limitations under the License.
11310
+ *
11311
+ * Copyright 2024 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
11312
+ * Copyright 2024 - Finnish Meteorological Institute (FMI)
11313
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
11314
+ * */
11315
+ var config = getConfig();
11316
+ var publicWarningBaseUrl = config.GW_DRAWINGS_BASE_URL || '';
11317
+ // API
11318
+ var getPublicWarningList = function getPublicWarningList(auth) {
11319
+ return fetch(publicWarningBaseUrl + "/warnings", {
11320
+ headers: getHeaders(auth)
11321
+ }).then(handleResponse).then(function (warnings) {
11322
+ return warnings.map(function (warning) {
11323
+ return Object.assign({}, warning, {
11324
+ type: 'public'
11325
+ });
11326
+ });
11327
+ });
11328
+ };
11329
+ var updatePublicWarningEditor = function updatePublicWarningEditor(warningId, isEditor, auth) {
11330
+ return fetch(publicWarningBaseUrl + "/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false') + "&force=true", {
11331
+ headers: getHeaders(auth),
11332
+ method: 'POST'
11333
+ }).then(handleResponse);
11334
+ };
11335
+
11336
+ /**
11337
+ * @param disabled - Disables fetching, but still returns cached values.
11338
+ * https://tanstack.com/query/v4/docs/framework/react/guides/disabling-queries
11339
+ */
11340
+ var usePublicWarnings = function usePublicWarnings(disabled) {
11341
+ if (disabled === void 0) {
11342
+ disabled = false;
11343
+ }
11344
+ return useAuthQuery(['public-warning-list'], getPublicWarningList, disabled, 1000 * 60 * 5);
11345
+ };
11346
+ var useMutatePublicWarningEditor = function useMutatePublicWarningEditor() {
11347
+ var queryClient = useQueryClient();
11348
+ var _useAuthenticationCon = useAuthenticationContext(),
11349
+ auth = _useAuthenticationCon.auth;
11350
+ var dispatch = useDispatch();
11351
+ return useMutation(Object.assign({
11352
+ mutationFn: function mutationFn(_ref) {
11353
+ var id = _ref.id,
11354
+ isEditor = _ref.isEditor;
11355
+ if (!auth) {
11356
+ throw new Error('Authentication context not found');
11357
+ }
11358
+ return updatePublicWarningEditor(id, isEditor, auth);
11359
+ }
11360
+ }, optimisticUpdate(['public-warning-list'], queryClient, function (w, _ref2) {
11361
+ var isEditor = _ref2.isEditor;
11362
+ return Object.assign({}, w, {
11363
+ editor: isEditor ? auth.username : undefined
11364
+ });
11365
+ }, function (error) {
11366
+ dispatch(publicWarningFormActions.setFormError({
11367
+ message: error.message
11368
+ }));
11369
+ }), {
11370
+ onSettled: function () {
11371
+ var _onSettled = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data, e, _ref3) {
11372
+ var isEditor;
11373
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
11374
+ while (1) switch (_context.prev = _context.next) {
11375
+ case 0:
11376
+ isEditor = _ref3.isEditor;
11377
+ dispatch(snackbarActions.openSnackbar({
11378
+ type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
11379
+ key: isEditor ? 'warning-editor-add-editor' : 'warning-editor-remove-editor'
11380
+ }));
11381
+ case 2:
11382
+ case "end":
11383
+ return _context.stop();
11384
+ }
11385
+ }, _callee);
11386
+ }));
11387
+ function onSettled(_x, _x2, _x3) {
11388
+ return _onSettled.apply(this, arguments);
11389
+ }
11390
+ return onSettled;
11391
+ }()
11392
+ }));
11393
+ };
11394
+
11395
+ /* *
11396
+ * Licensed under the Apache License, Version 2.0 (the "License");
11397
+ * you may not use this file except in compliance with the License.
11398
+ * You may obtain a copy of the License at
11399
+ *
11400
+ * http://www.apache.org/licenses/LICENSE-2.0
11401
+ *
11402
+ * Unless required by applicable law or agreed to in writing, software
11403
+ * distributed under the License is distributed on an "AS IS" BASIS,
11404
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11405
+ * See the License for the specific language governing permissions and
11406
+ * limitations under the License.
11407
+ *
11408
+ * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
11409
+ * Copyright 2025 - Finnish Meteorological Institute (FMI)
11410
+ * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
11411
+ * */
11412
+ var useWarnings = function useWarnings(disabled) {
11413
+ var _usePublicWarnings = usePublicWarnings(disabled),
11414
+ publicWarnings = _usePublicWarnings.data,
11415
+ refetchPublicWarnings = _usePublicWarnings.refetch,
11416
+ isFetchingPublicWarnings = _usePublicWarnings.isFetching,
11417
+ publicWarningsError = _usePublicWarnings.error,
11418
+ dataUpdatedAt = _usePublicWarnings.dataUpdatedAt;
11419
+ var _useAirmetList = useAirmetList(disabled),
11420
+ airmetWarnings = _useAirmetList.data,
11421
+ refetchAirmet = _useAirmetList.refetch,
11422
+ isFetchingAirmet = _useAirmetList.isFetching;
11423
+ var _useSigmetList = useSigmetList(disabled),
11424
+ sigmetWarnings = _useSigmetList.data,
11425
+ refetchSigmet = _useSigmetList.refetch,
11426
+ isFetchingSigmet = _useSigmetList.isFetching;
11427
+ var combinedWarnings = useMemo(function () {
11428
+ var transformedSigmets = (sigmetWarnings == null ? void 0 : sigmetWarnings.map(transformSigmetToWarningFormat)) || [];
11429
+ var transformedAirmets = (airmetWarnings == null ? void 0 : airmetWarnings.map(transformAirmetToWarningFormat)) || [];
11430
+ return concat(publicWarnings || [], transformedSigmets, transformedAirmets);
11431
+ }, [publicWarnings, sigmetWarnings, airmetWarnings]);
11432
+ var refetchWarnings = function refetchWarnings() {
11433
+ void refetchPublicWarnings();
11434
+ void refetchAirmet();
11435
+ void refetchSigmet();
11436
+ };
11437
+ var isFetching = isFetchingPublicWarnings || isFetchingAirmet || isFetchingSigmet;
11438
+ return {
11439
+ combinedWarnings: combinedWarnings,
11440
+ refetchWarnings: refetchWarnings,
11441
+ isFetching: isFetching,
11442
+ error: publicWarningsError || undefined,
11443
+ dataUpdatedAt: dataUpdatedAt
11444
+ };
11445
+ };
10804
11446
 
10805
11447
  var warningFormConfirmationOptions = function warningFormConfirmationOptions(t) {
10806
11448
  return {
@@ -10820,7 +11462,6 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
10820
11462
  source = _ref$source === void 0 ? 'app' : _ref$source,
10821
11463
  startPosition = _ref.startPosition,
10822
11464
  defaultMapPreset = _ref.defaultMapPreset;
10823
- var warningsApi = getWarningsApi();
10824
11465
  var _useSetupDialog = useSetupDialog(publicWarningDialogType, source),
10825
11466
  dialogOrder = _useSetupDialog.dialogOrder,
10826
11467
  setDialogOrder = _useSetupDialog.setDialogOrder,
@@ -10838,66 +11479,98 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
10838
11479
  var isFormDirty = useSelector(function (store) {
10839
11480
  return getSelectedPublicIsFormDirty(store);
10840
11481
  });
10841
- var publicWarningStatus = useSelector(function (store) {
10842
- return getPublicWarningStatus(store);
10843
- });
10844
- var selectedWarningId = useSelector(function (store) {
10845
- return getSelectedPublicWarningId(store);
10846
- });
10847
- var publicWarningEditor = useSelector(function (store) {
10848
- return getPublicWarningEditor(store);
10849
- });
11482
+ var publicWarningState = useSelector(getPublicWarning);
11483
+ var _ref2 = publicWarningState || {},
11484
+ status = _ref2.status,
11485
+ editor = _ref2.editor;
11486
+ var _useWarnings = useWarnings(true),
11487
+ combinedWarnings = _useWarnings.combinedWarnings,
11488
+ refetchWarnings = _useWarnings.refetchWarnings,
11489
+ isFetching = _useWarnings.isFetching;
11490
+ var _React$useState = React__default.useState(isFetching),
11491
+ hasFetched = _React$useState[0],
11492
+ setHasFetched = _React$useState[1];
11493
+ React__default.useEffect(function () {
11494
+ if (isFetching) {
11495
+ setHasFetched(true);
11496
+ }
11497
+ }, [isFetching]);
11498
+ var selectedWarningId = useSelector(getSelectedWarningId);
11499
+ var selectedWarningObject = useSelector(getPublicWarning);
10850
11500
  var warningType = useSelector(getWarningType);
11501
+ var selectedWarning = combinedWarnings == null ? void 0 : combinedWarnings.find(function (w) {
11502
+ return w.id === selectedWarningId;
11503
+ });
10851
11504
  var _useAuthenticationCon = useAuthenticationContext$1(),
10852
11505
  auth = _useAuthenticationCon.auth;
10853
- var isEditor = publicWarningEditor === (auth == null ? void 0 : auth.username) || false;
10854
- var getLatestEditor = /*#__PURE__*/function () {
10855
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
10856
- var latestWarnings, latestWarning;
11506
+ var isEditor = (selectedWarning == null ? void 0 : selectedWarning.editor) === (auth == null ? void 0 : auth.username) || false;
11507
+ var shouldGiveEditorWarning = React__default.useCallback(function (newEditor, oldEditor) {
11508
+ var oldEditorIsYou = oldEditor && oldEditor === (auth == null ? void 0 : auth.username);
11509
+ if (oldEditorIsYou && newEditor !== oldEditor) {
11510
+ dispatch(publicWarningFormActions.setFormError({
11511
+ severity: 'warning',
11512
+ message: TAKEOVER_MESSAGE
11513
+ }));
11514
+ }
11515
+ }, [dispatch, auth == null ? void 0 : auth.username]);
11516
+ var previousSelectedWarning = usePrevious(selectedWarning);
11517
+ var refetchCurrentEditor = /*#__PURE__*/function () {
11518
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
11519
+ var newWarnings, newSelectedWarning;
10857
11520
  return _regeneratorRuntime().wrap(function _callee$(_context) {
10858
11521
  while (1) switch (_context.prev = _context.next) {
10859
11522
  case 0:
10860
11523
  _context.next = 2;
10861
- return warningsApi.getWarnings();
11524
+ return getPublicWarningList(auth);
10862
11525
  case 2:
10863
- latestWarnings = _context.sent;
10864
- latestWarning = latestWarnings.data.find(function (warning) {
10865
- return warning.id === selectedWarningId;
11526
+ newWarnings = _context.sent;
11527
+ newSelectedWarning = newWarnings == null ? void 0 : newWarnings.find(function (w) {
11528
+ return w.id === selectedWarningId;
10866
11529
  });
10867
- return _context.abrupt("return", (latestWarning == null ? void 0 : latestWarning.editor) || '');
11530
+ return _context.abrupt("return", (newSelectedWarning == null ? void 0 : newSelectedWarning.editor) || '');
10868
11531
  case 5:
10869
11532
  case "end":
10870
11533
  return _context.stop();
10871
11534
  }
10872
11535
  }, _callee);
10873
11536
  }));
10874
- return function getLatestEditor() {
10875
- return _ref2.apply(this, arguments);
11537
+ return function refetchCurrentEditor() {
11538
+ return _ref3.apply(this, arguments);
10876
11539
  };
10877
11540
  }();
11541
+ React__default.useEffect(function () {
11542
+ if (editor !== (selectedWarning == null ? void 0 : selectedWarning.editor) && status !== 'TODO') {
11543
+ void setIsEditor(editor !== (auth == null ? void 0 : auth.username));
11544
+ }
11545
+ // eslint-disable-next-line react-hooks/exhaustive-deps
11546
+ }, [editor]);
11547
+ React__default.useEffect(function () {
11548
+ if ((selectedWarning == null ? void 0 : selectedWarning.id) !== (previousSelectedWarning == null ? void 0 : previousSelectedWarning.id)) {
11549
+ dispatch(publicWarningFormActions.removeFormError());
11550
+ }
11551
+ }, [selectedWarning == null ? void 0 : selectedWarning.id, previousSelectedWarning == null ? void 0 : previousSelectedWarning.id, dispatch]);
11552
+ React__default.useEffect(function () {
11553
+ // Only give editor warning when the change in selectedWarning is from a refetch
11554
+ if (hasFetched) {
11555
+ setHasFetched(false);
11556
+ shouldGiveEditorWarning(selectedWarning == null ? void 0 : selectedWarning.editor, previousSelectedWarning == null ? void 0 : previousSelectedWarning.editor);
11557
+ }
11558
+ // eslint-disable-next-line react-hooks/exhaustive-deps
11559
+ }, [selectedWarning == null ? void 0 : selectedWarning.editor]);
11560
+ var updatePublicWarningEditor = useMutatePublicWarningEditor();
10878
11561
  var setIsEditor = /*#__PURE__*/function () {
10879
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(isReadOnly) {
11562
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(isReadOnly) {
10880
11563
  var username, latestEditor;
10881
11564
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
10882
11565
  while (1) switch (_context2.prev = _context2.next) {
10883
11566
  case 0:
10884
11567
  username = (auth == null ? void 0 : auth.username) || ''; // make sure to get the latest changes if you are editing an existing warning
10885
- if (!selectedWarningId) {
10886
- _context2.next = 7;
10887
- break;
10888
- }
10889
- _context2.next = 4;
10890
- return getLatestEditor();
10891
- case 4:
10892
- _context2.t0 = _context2.sent;
10893
- _context2.next = 8;
10894
- break;
10895
- case 7:
10896
- _context2.t0 = '';
10897
- case 8:
10898
- latestEditor = _context2.t0;
11568
+ _context2.next = 3;
11569
+ return refetchCurrentEditor();
11570
+ case 3:
11571
+ latestEditor = _context2.sent;
10899
11572
  if (!(!selectedWarningId || !isReadOnly && username === latestEditor || isReadOnly && latestEditor !== username)) {
10900
- _context2.next = 12;
11573
+ _context2.next = 8;
10901
11574
  break;
10902
11575
  }
10903
11576
  // currently editing a new warning or
@@ -10907,34 +11580,40 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
10907
11580
  dispatch(publicWarningFormActions.setFormValues({
10908
11581
  formState: isReadOnly ? 'readonly' : ''
10909
11582
  }));
11583
+ // If the editor was changed in a different window, refetch the warnings
11584
+ if (latestEditor !== (selectedWarning == null ? void 0 : selectedWarning.editor)) {
11585
+ void refetchWarnings();
11586
+ }
10910
11587
  return _context2.abrupt("return", true);
10911
- case 12:
11588
+ case 8:
10912
11589
  if (!(!isReadOnly && isAlreadyEdited(latestEditor, username))) {
10913
- _context2.next = 15;
11590
+ _context2.next = 11;
10914
11591
  break;
10915
11592
  }
10916
- _context2.next = 15;
11593
+ _context2.next = 11;
10917
11594
  return confirmDialog({
10918
11595
  title: t('warning-edit-mode-title'),
10919
11596
  description: t('warning-edit-mode-description'),
10920
11597
  confirmLabel: t('warning-edit-mode-confirm'),
10921
11598
  cancelLabel: t('warning-dialog-cancel')
10922
11599
  });
10923
- case 15:
10924
- dispatch(publicWarningFormActions.toggleEditorWarning({
10925
- warningId: selectedWarningId,
10926
- isEditor: !isReadOnly,
10927
- username: username
11600
+ case 11:
11601
+ dispatch(publicWarningFormActions.setFormValues({
11602
+ formState: isReadOnly ? 'readonly' : ''
10928
11603
  }));
11604
+ updatePublicWarningEditor.mutate({
11605
+ id: selectedWarningId,
11606
+ isEditor: !isReadOnly
11607
+ });
10929
11608
  return _context2.abrupt("return", true);
10930
- case 17:
11609
+ case 14:
10931
11610
  case "end":
10932
11611
  return _context2.stop();
10933
11612
  }
10934
11613
  }, _callee2);
10935
11614
  }));
10936
11615
  return function setIsEditor(_x) {
10937
- return _ref3.apply(this, arguments);
11616
+ return _ref4.apply(this, arguments);
10938
11617
  };
10939
11618
  }();
10940
11619
  var onChangeFormMode = function onChangeFormMode(isReadOnly) {
@@ -10961,7 +11640,7 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
10961
11640
  }
10962
11641
  };
10963
11642
  var closeDialog = /*#__PURE__*/function () {
10964
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
11643
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
10965
11644
  var mayProceed;
10966
11645
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
10967
11646
  while (1) switch (_context4.prev = _context4.next) {
@@ -10992,7 +11671,7 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
10992
11671
  }, _callee4);
10993
11672
  }));
10994
11673
  return function closeDialog() {
10995
- return _ref5.apply(this, arguments);
11674
+ return _ref6.apply(this, arguments);
10996
11675
  };
10997
11676
  }();
10998
11677
  var _useAirmetList = useAirmetList(true),
@@ -11008,15 +11687,26 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11008
11687
  var updatedWarningType = selectedSigmet ? 'sigmet' : selectedAirmet && 'airmet' || warningType;
11009
11688
  var _useProductConfig = useProductConfig(updatedWarningType, !isDialogOpen),
11010
11689
  aviationConfig = _useProductConfig.data;
11011
- var selectedSigmetProduct = selectedSigmet && aviationConfig ? transformSigmetToProductFormat(selectedSigmet, aviationConfig) : getEmptySigmetWarning();
11012
- var selectedAirmetProduct = selectedAirmet && aviationConfig ? transformAirmetToProductFormat(selectedAirmet, aviationConfig) : getEmptyAirmetWarning();
11013
- var selectedAviationProduct = updatedWarningType === 'sigmet' ? selectedSigmetProduct : updatedWarningType === 'airmet' && selectedAirmetProduct || undefined;
11690
+ var selectedSigmetProduct = selectedSigmet && aviationConfig ? transformSigmetToProductFormat(selectedSigmet) : getEmptySigmetWarning();
11691
+ var selectedAirmetProduct = selectedAirmet && aviationConfig ? transformAirmetToProductFormat(selectedAirmet) : getEmptyAirmetWarning();
11692
+ var selectedAviationProduct = React__default.useMemo(function () {
11693
+ if (['sigmet', 'airmet'].includes((selectedWarningObject == null ? void 0 : selectedWarningObject.type) || '') && aviationConfig) {
11694
+ return flattenPublicWarning(selectedWarningObject);
11695
+ }
11696
+ if (updatedWarningType === 'sigmet') {
11697
+ return selectedSigmetProduct;
11698
+ }
11699
+ if (updatedWarningType === 'airmet') {
11700
+ return selectedAirmetProduct;
11701
+ }
11702
+ return undefined;
11703
+ }, [selectedWarningObject, updatedWarningType, selectedSigmetProduct, selectedAirmetProduct, aviationConfig]);
11014
11704
  var productCanBe = updatedWarningType === 'public' ? ['DRAFTED', 'DISCARDED', 'PUBLISHED'] : (selectedSigmet == null ? void 0 : selectedSigmet.canbe) || (selectedAirmet == null ? void 0 : selectedAirmet.canbe);
11015
11705
  var mode = getProductFormMode(productCanBe, !selectedWarningId ? null : selectedAviationProduct);
11016
11706
  // Readonly also in case you are not creating a new warning and you are not set as the editor
11017
- var isReadOnly = formAction === 'readonly' || !isEditor && publicWarningStatus !== undefined;
11707
+ var isReadOnly = formAction === 'readonly' || !isEditor && status !== undefined;
11018
11708
  // Only show toggle if in draft status
11019
- var shouldHideFormToggleMode = publicWarningStatus !== 'DRAFT' && publicWarningStatus !== 'DRAFT_PUBLISHED';
11709
+ var shouldHideFormToggleMode = status !== 'DRAFT' && status !== 'DRAFT_PUBLISHED';
11020
11710
  return jsxs(Fragment, {
11021
11711
  children: [jsx(PublicWarningsFormDialog, {
11022
11712
  isOpen: isDialogOpen,
@@ -11030,14 +11720,18 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11030
11720
  isReadOnly: isReadOnly,
11031
11721
  onChangeFormMode: onChangeFormMode,
11032
11722
  shouldHideFormMode: shouldHideFormToggleMode,
11033
- publicWarningEditor: publicWarningEditor,
11723
+ publicWarningEditor: (selectedWarning == null ? void 0 : selectedWarning.editor) || undefined,
11034
11724
  selectedAviationProduct: selectedAviationProduct,
11035
11725
  warningType: updatedWarningType,
11036
11726
  children: jsx(PublicWarningsFormConnect, {
11727
+ editor: (selectedWarning == null ? void 0 : selectedWarning.editor) || undefined,
11037
11728
  defaultMapPreset: defaultMapPreset,
11038
11729
  selectedAviationProduct: selectedAviationProduct,
11039
11730
  warningType: updatedWarningType,
11040
- mode: mode
11731
+ mode: mode,
11732
+ onFormSubmit: function onFormSubmit() {
11733
+ return refetchWarnings();
11734
+ }
11041
11735
  })
11042
11736
  }), jsx(AreaObjectLoaderConnect, {})]
11043
11737
  });
@@ -11081,6 +11775,7 @@ var getSortedStatus = function getSortedStatus(status) {
11081
11775
  }
11082
11776
  };
11083
11777
  var getWarningWithoutIdStatusEditor = function getWarningWithoutIdStatusEditor(warning) {
11778
+ var _warningDetail$areas;
11084
11779
  warning.id;
11085
11780
  var warningDetail = warning.warningDetail;
11086
11781
  warning.status;
@@ -11091,7 +11786,7 @@ var getWarningWithoutIdStatusEditor = function getWarningWithoutIdStatusEditor(w
11091
11786
  warningDetail.proposal_id;
11092
11787
  warningDetail.warning_handle_uuid;
11093
11788
  var cleanWarningDetail = _objectWithoutPropertiesLoose(warningDetail, _excluded2);
11094
- var areas = warningDetail.areas.map(function (_ref) {
11789
+ var areas = (_warningDetail$areas = warningDetail.areas) == null ? void 0 : _warningDetail$areas.map(function (_ref) {
11095
11790
  _ref.published_warning_uuid;
11096
11791
  var area = _objectWithoutPropertiesLoose(_ref, _excluded3);
11097
11792
  return area;
@@ -11205,7 +11900,6 @@ var ExpandableFilterChip = function ExpandableFilterChip(_ref) {
11205
11900
  })
11206
11901
  })
11207
11902
  }), jsxs(Menu, {
11208
- title: t("filter-" + id),
11209
11903
  open: Boolean(anchorEl),
11210
11904
  onClose: function onClose() {
11211
11905
  return setAnchorEl(null);
@@ -11279,17 +11973,12 @@ var ExpandableFilterChip = function ExpandableFilterChip(_ref) {
11279
11973
  return updateFilter(id, emptyFilterId, checked, only);
11280
11974
  },
11281
11975
  labelStyle: {
11282
- width: 'fit-content',
11283
- fontSize: '16px',
11284
- display: 'flex',
11285
- alignItems: 'center',
11286
- gap: 1
11976
+ fontSize: '16px'
11287
11977
  },
11288
11978
  label: jsx(Fragment, {
11289
11979
  children: t(getTranslationKey(emptyFilterId, id))
11290
11980
  })
11291
- }, id + "-" + emptyFilterId), Object.keys(options).map(function (_optionId) {
11292
- var optionId = _optionId;
11981
+ }, id + "-" + emptyFilterId), Object.keys(options).map(function (optionId) {
11293
11982
  if (optionId === emptyFilterId) {
11294
11983
  return null;
11295
11984
  }
@@ -11301,14 +11990,29 @@ var ExpandableFilterChip = function ExpandableFilterChip(_ref) {
11301
11990
  return updateFilter(id, optionId, checked, only);
11302
11991
  },
11303
11992
  labelStyle: Object.assign({}, getLevelStyle(warningColor), {
11304
- width: 'fit-content',
11305
- fontSize: '16px',
11306
- display: 'flex',
11307
- alignItems: 'center',
11308
- gap: 1
11993
+ width: LevelColors[optionId] ? 'fit-content' : '100%',
11994
+ fontSize: '16px'
11309
11995
  }),
11310
- label: jsxs(Fragment, {
11311
- children: [getWarningPhenomenaIcon(optionId), ' ', t(getTranslationKey(optionId, id))]
11996
+ label: jsx(CustomTooltip, {
11997
+ title: t(getTranslationKey(optionId, id)),
11998
+ placement: "bottom",
11999
+ children: jsxs(Box, {
12000
+ "data-testid": "wrapper-" + optionId,
12001
+ sx: {
12002
+ display: 'flex',
12003
+ alignItems: 'center',
12004
+ gap: 1,
12005
+ maxWidth: 200
12006
+ },
12007
+ children: [getPhenomenaIcon(optionId), jsx(Typography, {
12008
+ noWrap: true,
12009
+ variant: "body2",
12010
+ sx: {
12011
+ fontSize: '16px'
12012
+ },
12013
+ children: t(getTranslationKey(optionId, id))
12014
+ })]
12015
+ })
11312
12016
  })
11313
12017
  }, id + "-" + optionId);
11314
12018
  })]
@@ -11465,6 +12169,8 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11465
12169
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
11466
12170
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
11467
12171
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
12172
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12173
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
11468
12174
  t = _ref.t;
11469
12175
  var duplicate = {
11470
12176
  text: t('warning-list-button-duplicate'),
@@ -11473,6 +12179,13 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11473
12179
  },
11474
12180
  icon: jsx(Copy, {})
11475
12181
  };
12182
+ var aviationDuplicate = {
12183
+ text: t('warning-list-button-duplicate'),
12184
+ action: function action() {
12185
+ return onActionAviationWarning(warning, ProductAction.DUPLICATE);
12186
+ },
12187
+ icon: jsx(Copy, {})
12188
+ };
11476
12189
  // disable Expire option if warning is not active
11477
12190
  var shouldDisableExpire = !dateUtils.isBetween(dateUtils.getNowUtc(), dateUtils.createDate(warning.warningDetail.validFrom), dateUtils.createDate(warning.warningDetail.validUntil), '[]');
11478
12191
  switch (warning.status) {
@@ -11531,11 +12244,44 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11531
12244
  icon: jsx(Delete, {})
11532
12245
  }];
11533
12246
  default:
11534
- return [];
12247
+ switch (warning.productStatus) {
12248
+ case ProductStatus.DRAFT:
12249
+ return [aviationDuplicate];
12250
+ case ProductStatus.PUBLISHED:
12251
+ if (warning.type !== 'public' && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetails) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetails))) {
12252
+ return [];
12253
+ }
12254
+ return [{
12255
+ text: t('warning-list-button-renew'),
12256
+ action: function action() {
12257
+ if (warning) {
12258
+ onActionAviationWarning(warning);
12259
+ }
12260
+ },
12261
+ icon: jsx(Update, {})
12262
+ }, aviationDuplicate];
12263
+ case ProductStatus.CANCELLED:
12264
+ return [];
12265
+ case ProductStatus.EXPIRED:
12266
+ if (warning.type !== 'public' && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetails) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetails))) {
12267
+ return [];
12268
+ }
12269
+ return [{
12270
+ text: t('warning-list-button-renew'),
12271
+ action: function action() {
12272
+ if (warning) {
12273
+ onActionAviationWarning(warning, ProductAction.RENEW);
12274
+ }
12275
+ },
12276
+ icon: jsx(Update, {})
12277
+ }, aviationDuplicate];
12278
+ default:
12279
+ return [];
12280
+ }
11535
12281
  }
11536
12282
  };
11537
12283
 
11538
- var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning"];
12284
+ var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning", "onActionAviationWarning"];
11539
12285
  var renderLevelText = function renderLevelText(levelString) {
11540
12286
  if (!levelString) {
11541
12287
  return null;
@@ -11572,10 +12318,10 @@ var renderStatusIcon = function renderStatusIcon(warning, status) {
11572
12318
  icon: icon
11573
12319
  });
11574
12320
  };
11575
- if (warning.productStatus === ProductStatus.PUBLISHED && warning.warningDetail.cancelId) {
11576
- return getStatusTag("Cnls " + warning.warningDetail.cancelId, 'red');
12321
+ if (warning.productStatus === ProductStatus.PUBLISHED && warning.type !== 'public' && (isCancelAirmet(warning.sigmetAirmetDetails) || isCancelSigmet(warning.sigmetAirmetDetails))) {
12322
+ return getStatusTag("Cnls " + (isCancelAirmet(warning.sigmetAirmetDetails) ? warning.sigmetAirmetDetails.cancelsAirmetSequenceId : warning.sigmetAirmetDetails.cancelsSigmetSequenceId), 'red');
11577
12323
  }
11578
- if (warning.productStatus === ProductStatus.CANCELLED && warning.warningDetail.cancelId === undefined) {
12324
+ if (warning.productStatus === ProductStatus.CANCELLED && warning.type !== 'public') {
11579
12325
  return getStatusTag('Cnld', 'red');
11580
12326
  }
11581
12327
  switch (status) {
@@ -11630,12 +12376,14 @@ var WarningListItem = function WarningListItem(_ref) {
11630
12376
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
11631
12377
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
11632
12378
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
12379
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12380
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
11633
12381
  props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
11634
12382
  var _useWarningsTranslati = useWarningsTranslation(),
11635
12383
  t = _useWarningsTranslati.t;
11636
12384
  var phenomenonDetails = allPhenomenaDict[warning.warningDetail.phenomenon];
11637
12385
  var objectNameText = ((_warning$warningDetai = warning.warningDetail.areas) == null || (_warning$warningDetai = _warning$warningDetai[0]) == null ? void 0 : _warning$warningDetai.objectName) || '-';
11638
- var objectHoverText = warning.warningDetail.firName ? warning.warningDetail.firName : objectNameText;
12386
+ var objectHoverText = warning.type !== 'public' ? warning.sigmetAirmetDetails.firName : objectNameText;
11639
12387
  var _useOverflowCheck = useOverflowCheck(objectNameText),
11640
12388
  objectNameRef = _useOverflowCheck.ref;
11641
12389
  var phenomenonText = phenomenonDetails != null && phenomenonDetails.translationKey ? t(phenomenonDetails.translationKey) : '-';
@@ -11683,7 +12431,8 @@ var WarningListItem = function WarningListItem(_ref) {
11683
12431
  onDeleteReviewWarning: onDeleteReviewWarning,
11684
12432
  onDeleteWarning: onDeleteWarning,
11685
12433
  onExpireWarning: onExpireWarning,
11686
- onWithdrawWarning: onWithdrawWarning
12434
+ onWithdrawWarning: onWithdrawWarning,
12435
+ onActionAviationWarning: onActionAviationWarning
11687
12436
  }),
11688
12437
  buttonIcon: jsx(Options, {})
11689
12438
  }),
@@ -12065,8 +12814,8 @@ var PublicWarningList = function PublicWarningList(_ref) {
12065
12814
  _ref$isLoading = _ref.isLoading,
12066
12815
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
12067
12816
  error = _ref.error,
12068
- _ref$selectedPublicWa = _ref.selectedPublicWarningId,
12069
- selectedPublicWarningId = _ref$selectedPublicWa === void 0 ? '' : _ref$selectedPublicWa,
12817
+ _ref$selectedWarningI = _ref.selectedWarningId,
12818
+ selectedWarningId = _ref$selectedWarningI === void 0 ? '' : _ref$selectedWarningI,
12070
12819
  lastUpdatedTime = _ref.lastUpdatedTime,
12071
12820
  _ref$onSelectWarning = _ref.onSelectWarning,
12072
12821
  onSelectWarning = _ref$onSelectWarning === void 0 ? function () {} : _ref$onSelectWarning,
@@ -12084,11 +12833,14 @@ var PublicWarningList = function PublicWarningList(_ref) {
12084
12833
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
12085
12834
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
12086
12835
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
12836
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12837
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
12087
12838
  hoveredFeatureId = _ref.hoveredFeatureId,
12088
12839
  expandedSections = _ref.expandedSections,
12089
12840
  setExpandedSections = _ref.setExpandedSections;
12090
12841
  var updateFilter = filterHookState.updateFilter,
12091
- allSelected = filterHookState.allSelected;
12842
+ allSelected = filterHookState.allSelected,
12843
+ filterState = filterHookState.filterState;
12092
12844
  var _useWarningsTranslati = useWarningsTranslation(),
12093
12845
  t = _useWarningsTranslati.t;
12094
12846
  var _React$useState = React__default.useState({
@@ -12220,7 +12972,7 @@ var PublicWarningList = function PublicWarningList(_ref) {
12220
12972
  children: jsx(FilterList, {
12221
12973
  isAllSelected: allSelected,
12222
12974
  onClickAll: onClickAll,
12223
- filterState: filterHookState.filterState,
12975
+ filterState: filterState,
12224
12976
  updateFilter: updateFilter
12225
12977
  })
12226
12978
  }), jsxs(Grid2, {
@@ -12370,9 +13122,10 @@ var PublicWarningList = function PublicWarningList(_ref) {
12370
13122
  onEditWarning: onEditWarning,
12371
13123
  onDeleteWarning: onDeleteWarning,
12372
13124
  onDeleteReviewWarning: onDeleteReviewWarning,
12373
- activeWarningId: selectedPublicWarningId,
13125
+ activeWarningId: selectedWarningId,
12374
13126
  onExpireWarning: onExpireWarning,
12375
- onWithdrawWarning: onWithdrawWarning
13127
+ onWithdrawWarning: onWithdrawWarning,
13128
+ onActionAviationWarning: onActionAviationWarning
12376
13129
  }, key);
12377
13130
  }
12378
13131
  });
@@ -12383,6 +13136,51 @@ var PublicWarningList = function PublicWarningList(_ref) {
12383
13136
  });
12384
13137
  };
12385
13138
 
13139
+ /* *
13140
+ * Licensed under the Apache License, Version 2.0 (the "License");
13141
+ * you may not use this file except in compliance with the License.
13142
+ * You may obtain a copy of the License at
13143
+ *
13144
+ * http://www.apache.org/licenses/LICENSE-2.0
13145
+ *
13146
+ * Unless required by applicable law or agreed to in writing, software
13147
+ * distributed under the License is distributed on an "AS IS" BASIS,
13148
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13149
+ * See the License for the specific language governing permissions and
13150
+ * limitations under the License.
13151
+ *
13152
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13153
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
13154
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13155
+ * */
13156
+ var publicWarningsAdapter = createEntityAdapter({
13157
+ selectId: function selectId(warning) {
13158
+ return warning.id;
13159
+ }
13160
+ });
13161
+ var initialState = {
13162
+ warnings: publicWarningsAdapter.getInitialState(),
13163
+ isLoading: true,
13164
+ lastUpdatedTime: '',
13165
+ filterState: {}
13166
+ };
13167
+ var slice = createSlice({
13168
+ initialState: initialState,
13169
+ name: 'publicWarnings',
13170
+ reducers: {
13171
+ setWarningFilters: function setWarningFilters(draft, action) {
13172
+ var _action$payload = action.payload,
13173
+ filterState = _action$payload.filterState,
13174
+ panelId = _action$payload.panelId;
13175
+ if (panelId) {
13176
+ draft.filterState[panelId] = filterState;
13177
+ }
13178
+ }
13179
+ }
13180
+ });
13181
+ var publicWarningsReducer = slice.reducer,
13182
+ publicWarningActions = slice.actions;
13183
+
12386
13184
  /* *
12387
13185
  * Licensed under the Apache License, Version 2.0 (the "License");
12388
13186
  * you may not use this file except in compliance with the License.
@@ -12555,6 +13353,11 @@ var getLevelsForDomainFilter = function getLevelsForDomainFilter(domainFilter) {
12555
13353
  return domainFilter[domain] ? domainLevels[domain] : [];
12556
13354
  });
12557
13355
  };
13356
+ var getPhenomenaForDomainFilter = function getPhenomenaForDomainFilter(domainFilter) {
13357
+ return Object.keys(domainFilter).flatMap(function (domain) {
13358
+ return domainFilter[domain] ? domainPhenomena[domain] : [];
13359
+ });
13360
+ };
12558
13361
  var getFilterOptions = function getFilterOptions(defaultFilter, allOptions, savedFilter) {
12559
13362
  var pickedFilterOptions = pick(defaultFilter, [emptyFilterId].concat(allOptions));
12560
13363
  // keep options state from savedFilter if it still exists
@@ -12577,20 +13380,18 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
12577
13380
  updatedPickedLevels = _getFilterOptions[0],
12578
13381
  allLevelsSelected = _getFilterOptions[1];
12579
13382
  // phenomenon
13383
+ var domainPhenomena = useMemo(function () {
13384
+ return getPhenomenaForDomainFilter(pickedDomainFilter);
13385
+ }, [pickedDomainFilter]);
12580
13386
  var warningsPhenomena = useMemo(function () {
12581
13387
  return getFiltersFromWarnings(warnings, 'phenomenon');
12582
13388
  }, [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);
12587
- });
13389
+ var relevantPhenomena = useMemo(function () {
13390
+ return domainPhenomena.filter(function (phenomenon) {
13391
+ return warningsPhenomena.includes(phenomenon);
13392
+ });
13393
+ }, [warningsPhenomena, domainPhenomena]);
12588
13394
  relevantPhenomena.push(emptyFilterId);
12589
- var defaultPhenomenonFilter = useMemo(function () {
12590
- return Object.fromEntries(relevantPhenomena.map(function (key) {
12591
- return [key, true];
12592
- }));
12593
- }, [relevantPhenomena]);
12594
13395
  var _getFilterOptions2 = getFilterOptions(defaultPhenomenonFilter, relevantPhenomena, pickedPhenomenonFilter),
12595
13396
  updatedPickedPhenomena = _getFilterOptions2[0],
12596
13397
  allPhenomenaSelected = _getFilterOptions2[1];
@@ -12621,7 +13422,14 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
12621
13422
  useEffect(function () {
12622
13423
  // when the preset changes, update the filters
12623
13424
  if (presetFilterState) {
12624
- onUpdateFilters(assign({}, initialFilters, presetFilterState), 'system');
13425
+ var initialFiltersWithPresets = {
13426
+ incident: Object.assign({}, makeFilterFromList(relevantIncidents), presetFilterState.incident),
13427
+ source: Object.assign({}, makeFilterFromList(relevantSources), presetFilterState.source),
13428
+ domain: Object.assign({}, initialFilters.domain, presetFilterState.domain),
13429
+ phenomenon: Object.assign({}, initialFilters.phenomenon, presetFilterState.phenomenon),
13430
+ level: Object.assign({}, initialFilters.level, presetFilterState.level)
13431
+ };
13432
+ onUpdateFilters(initialFiltersWithPresets, 'system');
12625
13433
  } else {
12626
13434
  // for a preset without filters saved use the initial filters
12627
13435
  onUpdateFilters(Object.assign({}, initialFilters, {
@@ -12688,7 +13496,7 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
12688
13496
  if (!pickedLevelFilter[level]) {
12689
13497
  return false;
12690
13498
  }
12691
- var phenomenon = getValue(Phenomenon$1, warning.warningDetail.phenomenon);
13499
+ var phenomenon = getValue(AllPhenomenaKeys, warning.warningDetail.phenomenon);
12692
13500
  if (!pickedPhenomenonFilter[phenomenon]) {
12693
13501
  return false;
12694
13502
  }
@@ -12723,35 +13531,31 @@ var useWarningFilters = function useWarningFilters(warnings, onUpdateFilters, sa
12723
13531
  var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12724
13532
  var panelId = _ref.panelId,
12725
13533
  presetFilterState = _ref.presetFilterState;
13534
+ var updatePublicWarningEditor = useMutatePublicWarningEditor();
12726
13535
  var _useWarningsTranslati = useWarningsTranslation(),
12727
13536
  t = _useWarningsTranslati.t;
12728
13537
  var dispatch = useDispatch();
12729
13538
  var confirmDialog = useConfirmationDialog();
12730
13539
  var _useAuthenticationCon = useAuthenticationContext$1(),
12731
13540
  auth = _useAuthenticationCon.auth;
12732
- var _useAirmetList = useAirmetList(),
12733
- airmetList = _useAirmetList.data,
12734
- refetchAirmetList = _useAirmetList.refetch,
12735
- isFetchingAirmet = _useAirmetList.isFetching;
12736
- var _useSigmetList = useSigmetList(),
12737
- sigmetList = _useSigmetList.data,
12738
- refetchSigmetList = _useSigmetList.refetch,
12739
- isFetchingSigmet = _useSigmetList.isFetching;
13541
+ var _useWarnings = useWarnings(),
13542
+ combinedWarnings = _useWarnings.combinedWarnings,
13543
+ refetchWarnings = _useWarnings.refetchWarnings,
13544
+ isFetching = _useWarnings.isFetching,
13545
+ error = _useWarnings.error,
13546
+ dataUpdatedAt = _useWarnings.dataUpdatedAt;
13547
+ var lastUpdateTime = dateUtils.dateToString(new Date(dataUpdatedAt), dateUtils.DATE_FORMAT_HOURS);
12740
13548
  var _React$useState = React__default.useState(undefined),
12741
13549
  confirmDialogOptions = _React$useState[0],
12742
13550
  setConfirmDialogOptions = _React$useState[1];
12743
- var publicWarnings = useSelector(selectAllPublicWarnings);
12744
- var selectedPublicWarningId = useSelector(getSelectedPublicWarningId);
12745
- var isLoading = useSelector(isPublicWarningsLoading) || isFetchingAirmet || isFetchingSigmet;
12746
- var error = useSelector(getPublicWarningsError);
12747
- var isFormDirty = useSelector(getSelectedPublicIsFormDirty);
12748
- var lastUpdatedTime = useSelector(getPublicWarningsLastUpdatedTime);
13551
+ var selectedWarningId = useSelector(getSelectedWarningId);
12749
13552
  var savedFilterState = useSelector(function (store) {
12750
13553
  return getWarningsFilterById(store, panelId);
12751
13554
  });
13555
+ var isFormDirty = useSelector(getSelectedPublicIsFormDirty);
12752
13556
  var warningsApi = getWarningsApi();
12753
13557
  var openPublicWarningDialog = /*#__PURE__*/function () {
12754
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(formAction, publicWarning, warningType) {
13558
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(formAction, warning, warningType) {
12755
13559
  var mayProceed;
12756
13560
  return _regeneratorRuntime().wrap(function _callee$(_context) {
12757
13561
  while (1) switch (_context.prev = _context.next) {
@@ -12774,8 +13578,8 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12774
13578
  }
12775
13579
  return _context.abrupt("return");
12776
13580
  case 6:
12777
- dispatch(publicWarningFormActions.openPublicWarningFormDialog(Object.assign({}, publicWarning && {
12778
- publicWarning: publicWarning
13581
+ dispatch(publicWarningFormActions.openPublicWarningFormDialog(Object.assign({}, warning && {
13582
+ warning: warning
12779
13583
  }, {
12780
13584
  formState: formAction,
12781
13585
  warningType: warningType,
@@ -12803,24 +13607,24 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12803
13607
  while (1) switch (_context2.prev = _context2.next) {
12804
13608
  case 0:
12805
13609
  if (!(publicWarning.id && auth != null && auth.username && !publicWarning.editor)) {
12806
- _context2.next = 6;
13610
+ _context2.next = 7;
12807
13611
  break;
12808
13612
  }
12809
- dispatch(publicWarningFormActions.toggleEditorWarning({
12810
- warningId: publicWarning.id,
12811
- isEditor: true,
12812
- username: auth == null ? void 0 : auth.username
12813
- }));
12814
- _context2.next = 4;
13613
+ refetchWarnings();
13614
+ updatePublicWarningEditor.mutate({
13615
+ id: publicWarning.id,
13616
+ isEditor: true
13617
+ });
13618
+ _context2.next = 5;
12815
13619
  return openPublicWarningDialog('', Object.assign({}, publicWarning, {
12816
13620
  editor: auth == null ? void 0 : auth.username
12817
13621
  }));
12818
- case 4:
12819
- _context2.next = 7;
13622
+ case 5:
13623
+ _context2.next = 8;
12820
13624
  break;
12821
- case 6:
12822
- void openPublicWarningDialog('', publicWarning);
12823
13625
  case 7:
13626
+ void openPublicWarningDialog('', publicWarning);
13627
+ case 8:
12824
13628
  case "end":
12825
13629
  return _context2.stop();
12826
13630
  }
@@ -12890,6 +13694,25 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12890
13694
  return _ref5.apply(this, arguments);
12891
13695
  };
12892
13696
  }();
13697
+ var warningType = useSelector(getWarningType);
13698
+ var _useProductConfig = useProductConfig(warningType, false),
13699
+ aviationConfig = _useProductConfig.data;
13700
+ var handleAviationProductClick = function handleAviationProductClick(warning, actionType) {
13701
+ if (!warning) {
13702
+ return;
13703
+ }
13704
+ var type = warning.warningDetail.level === 'SIG' ? 'sigmet' : 'airmet';
13705
+ var updatedWarning;
13706
+ switch (actionType) {
13707
+ case 'RENEW':
13708
+ updatedWarning = renewAviationProduct(warning, aviationConfig);
13709
+ break;
13710
+ case 'DUPLICATE':
13711
+ updatedWarning = duplicateAviationProduct(warning);
13712
+ break;
13713
+ }
13714
+ void openPublicWarningDialog('edit', updatedWarning, type);
13715
+ };
12893
13716
  var openSnackbar = function openSnackbar(message) {
12894
13717
  dispatch(snackbarActions.openSnackbar({
12895
13718
  type: snackbarTypes.SnackbarMessageType.VERBATIM_MESSAGE,
@@ -12931,29 +13754,15 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12931
13754
  // close confirm dialog
12932
13755
  setConfirmDialogOptions(undefined);
12933
13756
  // Close warning dialog if needed
12934
- if (selectedPublicWarningId === warningId) {
13757
+ if (selectedWarningId === warningId) {
12935
13758
  dispatch(uiActions.setToggleOpenDialog({
12936
13759
  setOpen: false,
12937
13760
  type: publicWarningDialogType
12938
13761
  }));
12939
13762
  }
12940
13763
  openSnackbar(snackbarMessage);
12941
- fetchWarnings();
13764
+ refetchWarnings();
12942
13765
  };
12943
- var fetchWarnings = React__default.useCallback(function () {
12944
- void refetchAirmetList();
12945
- void refetchSigmetList();
12946
- dispatch(publicWarningActions.fetchWarnings());
12947
- }, [dispatch, refetchAirmetList, refetchSigmetList]);
12948
- React__default.useEffect(function () {
12949
- // fetch warnings on mount
12950
- fetchWarnings();
12951
- }, [fetchWarnings]);
12952
- var combinedWarnings = React__default.useMemo(function () {
12953
- var transformedSigmets = (sigmetList == null ? void 0 : sigmetList.map(transformSigmetToWarningFormat)) || [];
12954
- var transformedAirmets = (airmetList == null ? void 0 : airmetList.map(transformAirmetToWarningFormat)) || [];
12955
- return publicWarnings.concat(transformedSigmets).concat(transformedAirmets);
12956
- }, [publicWarnings, sigmetList, airmetList]);
12957
13766
  var onUpdateFilters = React__default.useCallback(function (filterState, origin) {
12958
13767
  dispatch(publicWarningActions.setWarningFilters({
12959
13768
  filterState: filterState,
@@ -12980,8 +13789,7 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12980
13789
  }, [filteredWarnings, expandedSections]);
12981
13790
  var allFeatures = React__default.useMemo(function () {
12982
13791
  return filteredWarningsByExpandedSections.flatMap(function (warning) {
12983
- var _warning$warningDetai;
12984
- return (warning == null ? void 0 : warning.id) && (warning == null || (_warning$warningDetai = warning.warningDetail) == null || (_warning$warningDetai = _warning$warningDetai.areas) == null ? void 0 : _warning$warningDetai.filter(function (area) {
13792
+ return (warning == null ? void 0 : warning.id) && (warning != null && warning.warningDetail && warning.warningDetail.areas ? warning.warningDetail.areas.filter(function (area) {
12985
13793
  return area.geoJSON;
12986
13794
  }).map(function (area) {
12987
13795
  var isAviationWarning = warning.warningDetail.level === 'SIG' || warning.warningDetail.level === 'AIR';
@@ -12991,7 +13799,7 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
12991
13799
  originalId: warning.id,
12992
13800
  geoJSON: styledGeoJSON
12993
13801
  };
12994
- })) || [];
13802
+ }) : []) || [];
12995
13803
  }).filter(function (feature) {
12996
13804
  return feature.id;
12997
13805
  });
@@ -13005,8 +13813,8 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13005
13813
  warnings: filteredWarnings,
13006
13814
  expandedSections: expandedSections,
13007
13815
  setExpandedSections: setExpandedSections,
13008
- isLoading: isLoading,
13009
- error: error,
13816
+ isLoading: isFetching,
13817
+ error: error || undefined,
13010
13818
  onSelectWarning: selectWarning,
13011
13819
  onCreateWarning: createWarning,
13012
13820
  onEditWarning: editWarning,
@@ -13014,11 +13822,12 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13014
13822
  onDeleteReviewWarning: deleteReviewWarning,
13015
13823
  onExpireWarning: expireWarning,
13016
13824
  onWithdrawWarning: withdrawWarning,
13017
- selectedPublicWarningId: selectedPublicWarningId,
13018
- lastUpdatedTime: lastUpdatedTime,
13019
- onRefetchWarnings: fetchWarnings,
13825
+ selectedWarningId: selectedWarningId,
13826
+ lastUpdatedTime: lastUpdateTime,
13827
+ onRefetchWarnings: refetchWarnings,
13020
13828
  filterHookState: filterHookState,
13021
- hoveredFeatureId: hoveredFeatureId
13829
+ hoveredFeatureId: hoveredFeatureId,
13830
+ onActionAviationWarning: handleAviationProductClick
13022
13831
  }), confirmDialogOptions && jsx(ConfirmDeleteWarningDialog, {
13023
13832
  onClose: function onClose() {
13024
13833
  return setConfirmDialogOptions(undefined);
@@ -13089,48 +13898,49 @@ var componentsLookUp = function componentsLookUp(payload, apiProps) {
13089
13898
  var getErrorMessage = function getErrorMessage(error) {
13090
13899
  return isAxiosError(error) ? getAxiosErrorMessage(error) : error.message;
13091
13900
  };
13092
- var getToggleEditorSuccessMessage = function getToggleEditorSuccessMessage(isEditor) {
13093
- return isEditor ? 'warning-editor-add-editor' : 'warning-editor-remove-editor';
13094
- };
13095
13901
  var publicWarningFormListener = createListenerMiddleware();
13096
13902
  publicWarningFormListener.startListening({
13097
- actionCreator: publicWarningFormActions.toggleEditorWarning,
13903
+ actionCreator: publicWarningFormActions.publishWarning,
13098
13904
  effect: function () {
13099
13905
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
13100
- var payload, warningId, isEditor, username, warningsApi, isDialogOpen;
13906
+ var payload, publicWarning, refetchWarnings, publishedWarning, isDialogOpen;
13101
13907
  return _regeneratorRuntime().wrap(function _callee$(_context) {
13102
13908
  while (1) switch (_context.prev = _context.next) {
13103
13909
  case 0:
13104
13910
  payload = _ref.payload;
13105
13911
  listenerApi.cancelActiveListeners();
13106
13912
  _context.prev = 2;
13107
- warningId = payload.warningId, isEditor = payload.isEditor, username = payload.username;
13108
- warningsApi = getWarningsApi();
13109
- _context.next = 7;
13110
- return warningsApi.toggleEditorWarning(warningId, isEditor);
13111
- case 7:
13112
- // update list to show correct avatar
13113
- listenerApi.dispatch(publicWarningActions.fetchWarnings());
13114
- listenerApi.dispatch(publicWarningFormActions.toggleEditorWarningSuccess({
13115
- isEditor: isEditor,
13116
- username: username,
13913
+ publicWarning = payload.publicWarning, refetchWarnings = payload.refetchWarnings;
13914
+ _context.next = 6;
13915
+ return saveOrUpdateWarning(publicWarning);
13916
+ case 6:
13917
+ publishedWarning = _context.sent;
13918
+ if (refetchWarnings) {
13919
+ refetchWarnings();
13920
+ }
13921
+ listenerApi.dispatch(publicWarningFormActions.publishWarningSuccess({
13922
+ publicWarning: publishedWarning,
13117
13923
  message: {
13118
13924
  type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
13119
- key: getToggleEditorSuccessMessage(isEditor)
13925
+ key: 'warning-publish-succes'
13120
13926
  }
13121
13927
  }));
13122
- _context.next = 15;
13928
+ listenerApi.dispatch(uiActions.setToggleOpenDialog({
13929
+ type: publicWarningDialogType,
13930
+ setOpen: false
13931
+ }));
13932
+ _context.next = 16;
13123
13933
  break;
13124
- case 11:
13125
- _context.prev = 11;
13934
+ case 12:
13935
+ _context.prev = 12;
13126
13936
  _context.t0 = _context["catch"](2);
13127
13937
  isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
13128
13938
  errorEffect(listenerApi.dispatch, getErrorMessage(_context.t0), isDialogOpen);
13129
- case 15:
13939
+ case 16:
13130
13940
  case "end":
13131
13941
  return _context.stop();
13132
13942
  }
13133
- }, _callee, null, [[2, 11]]);
13943
+ }, _callee, null, [[2, 12]]);
13134
13944
  }));
13135
13945
  function effect(_x, _x2) {
13136
13946
  return _effect.apply(this, arguments);
@@ -13139,32 +13949,31 @@ publicWarningFormListener.startListening({
13139
13949
  }()
13140
13950
  });
13141
13951
  publicWarningFormListener.startListening({
13142
- actionCreator: publicWarningFormActions.publishWarning,
13952
+ actionCreator: publicWarningFormActions.saveWarning,
13143
13953
  effect: function () {
13144
13954
  var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref2, listenerApi) {
13145
- var payload, publicWarning, publishedWarning, isDialogOpen;
13955
+ var payload, publicWarning, refetchWarnings, savedWarning, isDialogOpen;
13146
13956
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
13147
13957
  while (1) switch (_context2.prev = _context2.next) {
13148
13958
  case 0:
13149
13959
  payload = _ref2.payload;
13150
13960
  listenerApi.cancelActiveListeners();
13151
13961
  _context2.prev = 2;
13152
- publicWarning = payload.publicWarning;
13962
+ publicWarning = payload.publicWarning, refetchWarnings = payload.refetchWarnings;
13153
13963
  _context2.next = 6;
13154
13964
  return saveOrUpdateWarning(publicWarning);
13155
13965
  case 6:
13156
- publishedWarning = _context2.sent;
13157
- listenerApi.dispatch(publicWarningFormActions.publishWarningSuccess({
13158
- publicWarning: publishedWarning,
13966
+ savedWarning = _context2.sent;
13967
+ if (refetchWarnings) {
13968
+ refetchWarnings();
13969
+ }
13970
+ listenerApi.dispatch(publicWarningFormActions.saveWarningSuccess({
13971
+ publicWarning: savedWarning,
13159
13972
  message: {
13160
13973
  type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
13161
- key: 'warning-publish-succes'
13974
+ key: 'warning-save-succes'
13162
13975
  }
13163
13976
  }));
13164
- listenerApi.dispatch(uiActions.setToggleOpenDialog({
13165
- type: publicWarningDialogType,
13166
- setOpen: false
13167
- }));
13168
13977
  _context2.next = 15;
13169
13978
  break;
13170
13979
  case 11:
@@ -13184,41 +13993,26 @@ publicWarningFormListener.startListening({
13184
13993
  return effect;
13185
13994
  }()
13186
13995
  });
13996
+ // Side effects/snackbar listeners
13187
13997
  publicWarningFormListener.startListening({
13188
- actionCreator: publicWarningFormActions.saveWarning,
13998
+ matcher: isAnyOf(publicWarningFormActions.publishWarningSuccess, publicWarningFormActions.saveWarningSuccess),
13189
13999
  effect: function () {
13190
14000
  var _effect3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref3, listenerApi) {
13191
- var payload, publicWarning, savedWarning, isDialogOpen;
14001
+ var payload, message, isDialogOpen;
13192
14002
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
13193
14003
  while (1) switch (_context3.prev = _context3.next) {
13194
14004
  case 0:
13195
14005
  payload = _ref3.payload;
13196
14006
  listenerApi.cancelActiveListeners();
13197
- _context3.prev = 2;
13198
- publicWarning = payload.publicWarning;
13199
- _context3.next = 6;
13200
- return saveOrUpdateWarning(publicWarning);
13201
- case 6:
13202
- savedWarning = _context3.sent;
13203
- listenerApi.dispatch(publicWarningFormActions.saveWarningSuccess({
13204
- publicWarning: savedWarning,
13205
- message: {
13206
- type: snackbarTypes.SnackbarMessageType.TRANSLATABLE_MESSAGE,
13207
- key: 'warning-save-succes'
13208
- }
13209
- }));
13210
- _context3.next = 14;
13211
- break;
13212
- case 10:
13213
- _context3.prev = 10;
13214
- _context3.t0 = _context3["catch"](2);
14007
+ message = payload.message;
14008
+ listenerApi.dispatch(snackbarActions.openSnackbar(message));
13215
14009
  isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
13216
- errorEffect(listenerApi.dispatch, getErrorMessage(_context3.t0), isDialogOpen);
13217
- case 14:
14010
+ toggleDialogLoadingEffect(listenerApi.dispatch, isDialogOpen, false);
14011
+ case 6:
13218
14012
  case "end":
13219
14013
  return _context3.stop();
13220
14014
  }
13221
- }, _callee3, null, [[2, 10]]);
14015
+ }, _callee3);
13222
14016
  }));
13223
14017
  function effect(_x5, _x6) {
13224
14018
  return _effect3.apply(this, arguments);
@@ -13226,22 +14020,18 @@ publicWarningFormListener.startListening({
13226
14020
  return effect;
13227
14021
  }()
13228
14022
  });
13229
- // Side effects/snackbar listeners
13230
14023
  publicWarningFormListener.startListening({
13231
- matcher: isAnyOf(publicWarningFormActions.publishWarningSuccess, publicWarningFormActions.saveWarningSuccess, publicWarningFormActions.toggleEditorWarningSuccess),
14024
+ matcher: isAnyOf(publicWarningFormActions.publishWarning, publicWarningFormActions.saveWarning),
13232
14025
  effect: function () {
13233
- var _effect4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref4, listenerApi) {
13234
- var payload, message, isDialogOpen;
14026
+ var _effect4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_, listenerApi) {
14027
+ var isDialogOpen;
13235
14028
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
13236
14029
  while (1) switch (_context4.prev = _context4.next) {
13237
14030
  case 0:
13238
- payload = _ref4.payload;
13239
14031
  listenerApi.cancelActiveListeners();
13240
- message = payload.message;
13241
- listenerApi.dispatch(snackbarActions.openSnackbar(message));
13242
14032
  isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
13243
- toggleDialogLoadingEffect(listenerApi.dispatch, isDialogOpen, false);
13244
- case 6:
14033
+ toggleDialogLoadingEffect(listenerApi.dispatch, isDialogOpen, true);
14034
+ case 3:
13245
14035
  case "end":
13246
14036
  return _context4.stop();
13247
14037
  }
@@ -13253,38 +14043,15 @@ publicWarningFormListener.startListening({
13253
14043
  return effect;
13254
14044
  }()
13255
14045
  });
13256
- publicWarningFormListener.startListening({
13257
- matcher: isAnyOf(publicWarningFormActions.publishWarning, publicWarningFormActions.saveWarning),
13258
- effect: function () {
13259
- var _effect5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_, listenerApi) {
13260
- var isDialogOpen;
13261
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
13262
- while (1) switch (_context5.prev = _context5.next) {
13263
- case 0:
13264
- listenerApi.cancelActiveListeners();
13265
- isDialogOpen = uiSelectors.getisDialogOpen(listenerApi.getState(), publicWarningDialogType);
13266
- toggleDialogLoadingEffect(listenerApi.dispatch, isDialogOpen, true);
13267
- case 3:
13268
- case "end":
13269
- return _context5.stop();
13270
- }
13271
- }, _callee5);
13272
- }));
13273
- function effect(_x9, _x10) {
13274
- return _effect5.apply(this, arguments);
13275
- }
13276
- return effect;
13277
- }()
13278
- });
13279
14046
  publicWarningFormListener.startListening({
13280
14047
  actionCreator: publicWarningFormActions.openPublicWarningFormDialog,
13281
14048
  effect: function () {
13282
- var _effect6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(_ref5, listenerApi) {
14049
+ var _effect5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref4, listenerApi) {
13283
14050
  var payload, panelId;
13284
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
13285
- while (1) switch (_context6.prev = _context6.next) {
14051
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
14052
+ while (1) switch (_context5.prev = _context5.next) {
13286
14053
  case 0:
13287
- payload = _ref5.payload;
14054
+ payload = _ref4.payload;
13288
14055
  listenerApi.cancelActiveListeners();
13289
14056
  panelId = payload.panelId;
13290
14057
  listenerApi.dispatch(uiActions.setToggleOpenDialog({
@@ -13294,35 +14061,35 @@ publicWarningFormListener.startListening({
13294
14061
  }));
13295
14062
  case 4:
13296
14063
  case "end":
13297
- return _context6.stop();
14064
+ return _context5.stop();
13298
14065
  }
13299
- }, _callee6);
14066
+ }, _callee5);
13300
14067
  }));
13301
- function effect(_x11, _x12) {
13302
- return _effect6.apply(this, arguments);
14068
+ function effect(_x9, _x10) {
14069
+ return _effect5.apply(this, arguments);
13303
14070
  }
13304
14071
  return effect;
13305
14072
  }()
13306
14073
  });
13307
14074
  var saveOrUpdateWarning = /*#__PURE__*/function () {
13308
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(publicWarning) {
14075
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(publicWarning) {
13309
14076
  var warningsApi, warningDetail, status, warning, newWarningId;
13310
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
13311
- while (1) switch (_context7.prev = _context7.next) {
14077
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
14078
+ while (1) switch (_context6.prev = _context6.next) {
13312
14079
  case 0:
13313
14080
  warningsApi = getWarningsApi();
13314
14081
  warningDetail = publicWarning.warningDetail, status = publicWarning.status;
13315
14082
  if (!warningDetail.id) {
13316
- _context7.next = 6;
14083
+ _context6.next = 6;
13317
14084
  break;
13318
14085
  }
13319
- _context7.next = 5;
14086
+ _context6.next = 5;
13320
14087
  return warningsApi.updateWarning(warningDetail.id, publicWarning);
13321
14088
  case 5:
13322
- return _context7.abrupt("return", publicWarning);
14089
+ return _context6.abrupt("return", publicWarning);
13323
14090
  case 6:
13324
14091
  if (!(status === 'PUBLISHED' && warningDetail.linked_to_id)) {
13325
- _context7.next = 11;
14092
+ _context6.next = 11;
13326
14093
  break;
13327
14094
  }
13328
14095
  warning = Object.assign({}, publicWarning, {
@@ -13330,28 +14097,28 @@ var saveOrUpdateWarning = /*#__PURE__*/function () {
13330
14097
  id: warningDetail.linked_to_id
13331
14098
  })
13332
14099
  });
13333
- _context7.next = 10;
14100
+ _context6.next = 10;
13334
14101
  return warningsApi.updateWarning(warningDetail.linked_to_id, warning);
13335
14102
  case 10:
13336
- return _context7.abrupt("return", warning);
14103
+ return _context6.abrupt("return", warning);
13337
14104
  case 11:
13338
- _context7.next = 13;
14105
+ _context6.next = 13;
13339
14106
  return warningsApi.saveWarningAs(publicWarning);
13340
14107
  case 13:
13341
- newWarningId = _context7.sent;
13342
- return _context7.abrupt("return", Object.assign({}, publicWarning, {
14108
+ newWarningId = _context6.sent;
14109
+ return _context6.abrupt("return", Object.assign({}, publicWarning, {
13343
14110
  warningDetail: Object.assign({}, warningDetail, {
13344
14111
  id: newWarningId
13345
14112
  })
13346
14113
  }));
13347
14114
  case 15:
13348
14115
  case "end":
13349
- return _context7.stop();
14116
+ return _context6.stop();
13350
14117
  }
13351
- }, _callee7);
14118
+ }, _callee6);
13352
14119
  }));
13353
- return function saveOrUpdateWarning(_x13) {
13354
- return _ref6.apply(this, arguments);
14120
+ return function saveOrUpdateWarning(_x11) {
14121
+ return _ref5.apply(this, arguments);
13355
14122
  };
13356
14123
  }();
13357
14124
  var toggleDialogLoadingEffect = function toggleDialogLoadingEffect(dispatch, isDialogOpen, isLoading) {
@@ -13371,12 +14138,12 @@ var errorEffect = function errorEffect(dispatch, message, isDialogOpen) {
13371
14138
  publicWarningFormListener.startListening({
13372
14139
  actionCreator: uiActions.setToggleOpenDialog,
13373
14140
  effect: function () {
13374
- var _effect7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(_ref7, listenerApi) {
14141
+ var _effect6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(_ref6, listenerApi) {
13375
14142
  var payload;
13376
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
13377
- while (1) switch (_context8.prev = _context8.next) {
14143
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
14144
+ while (1) switch (_context7.prev = _context7.next) {
13378
14145
  case 0:
13379
- payload = _ref7.payload;
14146
+ payload = _ref6.payload;
13380
14147
  if (!payload.setOpen && payload.type === publicWarningDialogType) {
13381
14148
  listenerApi.dispatch(uiActions.setToggleOpenDialog({
13382
14149
  setOpen: false,
@@ -13385,89 +14152,12 @@ publicWarningFormListener.startListening({
13385
14152
  }
13386
14153
  case 2:
13387
14154
  case "end":
13388
- return _context8.stop();
13389
- }
13390
- }, _callee8);
13391
- }));
13392
- function effect(_x14, _x15) {
13393
- return _effect7.apply(this, arguments);
13394
- }
13395
- return effect;
13396
- }()
13397
- });
13398
-
13399
- var getLastUpdatedTimeFormatted = function getLastUpdatedTimeFormatted() {
13400
- return dateUtils.dateToString(dateUtils.utc(), dateUtils.DATE_FORMAT_HOURS);
13401
- };
13402
- var publicWarningsListener = createListenerMiddleware();
13403
- publicWarningsListener.startListening({
13404
- actionCreator: publicWarningActions.fetchWarnings,
13405
- effect: function () {
13406
- var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_, listenerApi) {
13407
- var warningsApi, _yield$warningsApi$ge, warnings, lastUpdatedTime, taskError;
13408
- return _regeneratorRuntime().wrap(function _callee$(_context) {
13409
- while (1) switch (_context.prev = _context.next) {
13410
- case 0:
13411
- listenerApi.cancelActiveListeners();
13412
- _context.prev = 1;
13413
- warningsApi = getWarningsApi();
13414
- _context.next = 5;
13415
- return warningsApi.getWarnings();
13416
- case 5:
13417
- _yield$warningsApi$ge = _context.sent;
13418
- warnings = _yield$warningsApi$ge.data;
13419
- lastUpdatedTime = getLastUpdatedTimeFormatted();
13420
- listenerApi.dispatch(publicWarningActions.fetchWarningsSuccess({
13421
- warnings: warnings,
13422
- lastUpdatedTime: lastUpdatedTime
13423
- }));
13424
- _context.next = 11;
13425
- return listenerApi.delay(pollingIntervalTimeout);
13426
- case 11:
13427
- listenerApi.dispatch(publicWarningActions.fetchWarnings());
13428
- _context.next = 18;
13429
- break;
13430
- case 14:
13431
- _context.prev = 14;
13432
- _context.t0 = _context["catch"](1);
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') {
13435
- listenerApi.dispatch(publicWarningActions.fetchWarningsError({
13436
- error: {
13437
- name: taskError.name,
13438
- message: taskError.message
13439
- }
13440
- }));
13441
- }
13442
- case 18:
13443
- case "end":
13444
- return _context.stop();
13445
- }
13446
- }, _callee, null, [[1, 14]]);
13447
- }));
13448
- function effect(_x, _x2) {
13449
- return _effect.apply(this, arguments);
13450
- }
13451
- return effect;
13452
- }()
13453
- });
13454
- publicWarningsListener.startListening({
13455
- matcher: isAnyOf(publicWarningFormActions.publishWarningSuccess, publicWarningFormActions.saveWarningSuccess),
13456
- effect: function () {
13457
- var _effect2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_, listenerApi) {
13458
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
13459
- while (1) switch (_context2.prev = _context2.next) {
13460
- case 0:
13461
- listenerApi.cancelActiveListeners();
13462
- listenerApi.dispatch(publicWarningActions.fetchWarnings());
13463
- case 2:
13464
- case "end":
13465
- return _context2.stop();
14155
+ return _context7.stop();
13466
14156
  }
13467
- }, _callee2);
14157
+ }, _callee7);
13468
14158
  }));
13469
- function effect(_x3, _x4) {
13470
- return _effect2.apply(this, arguments);
14159
+ function effect(_x12, _x13) {
14160
+ return _effect6.apply(this, arguments);
13471
14161
  }
13472
14162
  return effect;
13473
14163
  }()
@@ -13483,9 +14173,9 @@ var getSnackbarMessage = function getSnackbarMessage(objectName, id) {
13483
14173
  }
13484
14174
  };
13485
14175
  };
13486
- var drawingsListener = createListenerMiddleware();
13487
- drawingsListener.startListening({
13488
- actionCreator: drawActions.submitDrawValues,
14176
+ var warningsDrawingsListener = createListenerMiddleware();
14177
+ warningsDrawingsListener.startListening({
14178
+ actionCreator: warningsDrawingsActions.submitDrawValues,
13489
14179
  effect: function () {
13490
14180
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
13491
14181
  var payload, id, formValues, warningsApi, newID, taskError, errorMessage;
@@ -13509,7 +14199,7 @@ drawingsListener.startListening({
13509
14199
  return warningsApi.saveDrawingAs(formValues);
13510
14200
  case 9:
13511
14201
  newID = _context.sent;
13512
- listenerApi.dispatch(drawActions.setDrawValues({
14202
+ listenerApi.dispatch(warningsDrawingsActions.setDrawValues({
13513
14203
  drawingInstanceId: drawingDialogType,
13514
14204
  id: newID,
13515
14205
  objectName: formValues.objectName
@@ -13577,13 +14267,46 @@ drawingsListener.startListening({
13577
14267
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
13578
14268
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13579
14269
  * */
13580
- var drawingModuleConfig = {
13581
- reducersMap: {
13582
- drawings: reducer$2,
13583
- publicWarningForm: reducer,
13584
- publicWarnings: reducer$1
13585
- },
13586
- middlewares: [drawingsListener.middleware, publicWarningsListener.middleware, publicWarningFormListener.middleware]
14270
+ var publicWarningsListener = createListenerMiddleware();
14271
+
14272
+ /* *
14273
+ * Licensed under the Apache License, Version 2.0 (the "License");
14274
+ * you may not use this file except in compliance with the License.
14275
+ * You may obtain a copy of the License at
14276
+ *
14277
+ * http://www.apache.org/licenses/LICENSE-2.0
14278
+ *
14279
+ * Unless required by applicable law or agreed to in writing, software
14280
+ * distributed under the License is distributed on an "AS IS" BASIS,
14281
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14282
+ * See the License for the specific language governing permissions and
14283
+ * limitations under the License.
14284
+ *
14285
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
14286
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
14287
+ * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
14288
+ * */
14289
+ var warningsReducersMap = {
14290
+ layers: layerReducer,
14291
+ ui: uiReducer,
14292
+ drawingtools: drawingToolReducer,
14293
+ drawings: warningsDrawingsReducer,
14294
+ publicWarningForm: publicWarningFormReducer,
14295
+ publicWarnings: publicWarningsReducer,
14296
+ snackbar: snackbarReducer
14297
+ };
14298
+ var warningsMiddlewares = [layersListener.middleware, drawingToolListener.middleware, warningsDrawingsListener.middleware, publicWarningsListener.middleware, publicWarningFormListener.middleware, snackbarListener.middleware];
14299
+ var warningsRootReducer = combineReducers(warningsReducersMap);
14300
+ var createMockStore = function createMockStore(mockState) {
14301
+ return configureStore({
14302
+ reducer: warningsRootReducer,
14303
+ preloadedState: mockState,
14304
+ middleware: warningsMiddlewares
14305
+ });
13587
14306
  };
14307
+ /* _____ NOTE --> We should use the middlwares like this down below, but as it will be more strict, it exposes errors from the code itself, which won´t be fixed in this MR ______
14308
+ middleware: (getDefaultMiddleware) =>
14309
+ getDefaultMiddleware().concat(warningsMiddlewares),
14310
+ */
13588
14311
 
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 };
14312
+ export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningApiWrapper, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningsModuleProvider, componentsLookUp, createMockStore, isAlreadyEdited, publicWarningActions, publicWarningFormActions, publicWarningFormListener, publicWarningFormReducer, publicWarningsListener, publicWarningsReducer, selectors as publicWarningsSelectors, useObjectDrawDialogAction, warningFormConfirmationOptions, warningsDrawingsActions, warningsDrawingsListener, warningsDrawingsReducer, warningsMiddlewares, warningsReducersMap, warningsTranslations };