@opengeoweb/warnings 10.2.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 (39) hide show
  1. package/index.esm.js +497 -194
  2. package/package.json +3 -2
  3. package/src/index.d.ts +0 -2
  4. package/src/lib/api/warning-api/api.d.ts +2 -2
  5. package/src/lib/api/warning-api/hooks.d.ts +3 -3
  6. package/src/lib/components/AreaObjectLoader/AreaObjectLoader.d.ts +1 -1
  7. package/src/lib/components/AreaObjectLoader/AreasObjects.d.ts +1 -1
  8. package/src/lib/components/ObjectManager/ObjectManager.d.ts +1 -1
  9. package/src/lib/components/ObjectManager/Objects.d.ts +1 -1
  10. package/src/lib/components/PublicWarningList/PublicWarningList.d.ts +1 -1
  11. package/src/lib/components/PublicWarningList/WarningListItemMenu.d.ts +4 -3
  12. package/src/lib/components/PublicWarningsForm/PublicWarningsForm.d.ts +1 -1
  13. package/src/lib/components/WarningsMapView/WarningsMapView.d.ts +0 -1
  14. package/src/lib/store/index.d.ts +2 -1
  15. package/src/lib/store/publicWarningForm/index.d.ts +1 -1
  16. package/src/lib/store/publicWarningForm/reducer.d.ts +6 -7
  17. package/src/lib/store/publicWarningForm/selectors.d.ts +1 -1
  18. package/src/lib/store/publicWarningForm/types.d.ts +16 -4
  19. package/src/lib/store/publicWarnings/index.d.ts +1 -1
  20. package/src/lib/store/publicWarnings/reducer.d.ts +1 -2
  21. package/src/lib/store/store.d.ts +15 -0
  22. package/src/lib/store/types.d.ts +1 -1
  23. package/src/lib/store/warningsDrawings/index.d.ts +2 -0
  24. package/src/lib/store/warningsDrawings/listener.d.ts +2 -0
  25. package/src/lib/store/{drawings → warningsDrawings}/reducer.d.ts +1 -2
  26. package/src/lib/storybookUtils/testUtils.d.ts +2 -0
  27. package/src/lib/utils/api.d.ts +1 -1
  28. package/src/lib/utils/fakeApi/index.d.ts +7 -6
  29. package/src/lib/utils/fakeApi.d.ts +1 -1
  30. package/src/lib/utils/sig-airmet-util.d.ts +7 -4
  31. package/src/lib/store/config.d.ts +0 -9
  32. package/src/lib/store/drawings/index.d.ts +0 -2
  33. package/src/lib/store/drawings/listener.d.ts +0 -2
  34. package/src/lib/utils/testUtils.d.ts +0 -4
  35. /package/src/lib/store/{drawings → warningsDrawings}/reducer.spec.d.ts +0 -0
  36. /package/src/lib/store/{drawings → warningsDrawings}/selectors.d.ts +0 -0
  37. /package/src/lib/store/{drawings → warningsDrawings}/selectors.spec.d.ts +0 -0
  38. /package/src/lib/store/{drawings → warningsDrawings}/types.d.ts +0 -0
  39. /package/src/lib/store/{drawings → warningsDrawings}/utils.d.ts +0 -0
package/index.esm.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useDispatch, useSelector } from 'react-redux';
3
3
  import { Polygons, Share, ExitDomain, Edit, Delete, DrawPolygon, Visibility, Add, CoastalEvent, TemperatureLow, TemperatureHigh, Rain, Snow, Lightning, Fog, Wind, Thunderstorm, VulcanicEruption, Haze, FreezingPrecipitation, ModerateAircraftIcing, SevereAircraftIcing, ModerateTurbulence, SevereTurbulence, SandStorm, RadioactiveMaterials, breakpoints, Options, Close, ChevronDown, ChevronUp, Copy, Update, 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';
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
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 } from '@reduxjs/toolkit';
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 { airmetConfig, sigmetConfig, SigmetForm, isInstanceOfCancelSigmet, AirmetForm, isInstanceOfCancelAirmet, getDefaultValidUntilValue, 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';
@@ -19,9 +19,11 @@ import { VariableSizeList } from 'react-window';
19
19
  import AutoSizer from 'react-virtualized-auto-sizer';
20
20
  import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider, AirmetPhenomena, SigmetPhenomena, getHeaders, handleResponse, useAuthQuery, useAuthenticationContext, ProductStatus, optimisticUpdate } from '@opengeoweb/api';
21
21
  import { rest } from 'msw';
22
+ import { concat, isEqual, cloneDeep, clamp, groupBy, pick, assign } from 'lodash';
22
23
  import { useFormContext } from 'react-hook-form';
23
- import { isEqual, cloneDeep, clamp, groupBy, pick, assign } from 'lodash';
24
24
  import { getConfig, useAuthenticationContext as useAuthenticationContext$1 } from '@opengeoweb/authentication';
25
+ import { View } from 'ol';
26
+ import { fromLonLat } from 'ol/proj';
25
27
  import { useQueryClient, useMutation } from '@tanstack/react-query';
26
28
  import { isAxiosError } from 'axios';
27
29
 
@@ -1072,8 +1074,8 @@ var slice$2 = createSlice({
1072
1074
  });
1073
1075
  }
1074
1076
  });
1075
- var reducer$2 = slice$2.reducer;
1076
- var drawActions = slice$2.actions;
1077
+ var warningsDrawingsReducer = slice$2.reducer,
1078
+ warningsDrawingsActions = slice$2.actions;
1077
1079
 
1078
1080
  /* *
1079
1081
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -1144,7 +1146,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1144
1146
  var dispatch = useDispatch();
1145
1147
  var drawLayerId = getSingularDrawtoolDrawLayerId(mapId);
1146
1148
  var drawDialogActiveDrawModeId = useSelector(function (store) {
1147
- return drawtoolSelectors.getActiveDrawModeId(store, drawingDialogType);
1149
+ return drawingToolSelectors.getActiveDrawModeId(store, drawingDialogType);
1148
1150
  });
1149
1151
  var featureLayerContainsGeoJSON = useSelector(function (store) {
1150
1152
  return layerSelectors.getHasFeatureLayerGeoJSON(store, drawLayerId);
@@ -1204,7 +1206,7 @@ var useCloseDrawDialog = function useCloseDrawDialog(_ref) {
1204
1206
  source: source
1205
1207
  }));
1206
1208
  // reset all drawings fields
1207
- dispatch(drawActions.setDrawValues({
1209
+ dispatch(warningsDrawingsActions.setDrawValues({
1208
1210
  drawingInstanceId: drawingDialogType,
1209
1211
  objectName: '',
1210
1212
  id: ''
@@ -1251,7 +1253,7 @@ var useCloseObjectDialog = function useCloseObjectDialog(_ref3) {
1251
1253
  }
1252
1254
  // reset active object
1253
1255
  if (shouldReset) {
1254
- dispatch(drawActions.setDrawValues({
1256
+ dispatch(warningsDrawingsActions.setDrawValues({
1255
1257
  drawingInstanceId: drawingDialogType,
1256
1258
  objectName: '',
1257
1259
  id: ''
@@ -1310,7 +1312,7 @@ var useObjectDrawDialogAction = function useObjectDrawDialogAction(_ref5) {
1310
1312
  drawDialogLayerHasGeoJSON = _useDialogOptions.hasGeoJSON,
1311
1313
  drawDialogLayerId = _useDialogOptions.dialogLayerId;
1312
1314
  var drawDialogActiveDrawModeId = useSelector(function (store) {
1313
- return drawtoolSelectors.getActiveDrawModeId(store, drawingDialogType);
1315
+ return drawingToolSelectors.getActiveDrawModeId(store, drawingDialogType);
1314
1316
  });
1315
1317
  var isFormDirty = useSelector(function (store) {
1316
1318
  return getWarningFormDirty(store, drawingDialogType);
@@ -2138,7 +2140,8 @@ var slice$1 = createSlice({
2138
2140
  removeArea: function removeArea(draft, action) {
2139
2141
  var area = action.payload.area;
2140
2142
  if (draft.warning) {
2141
- var removeAreas = draft.warning.warningDetail.areas.filter(function (existingArea) {
2143
+ var _draft$warning$warnin2;
2144
+ var removeAreas = (_draft$warning$warnin2 = draft.warning.warningDetail.areas) == null ? void 0 : _draft$warning$warnin2.filter(function (existingArea) {
2142
2145
  return existingArea.objectName !== area.objectName;
2143
2146
  });
2144
2147
  draft.warning.warningDetail.areas = removeAreas;
@@ -2162,7 +2165,7 @@ var slice$1 = createSlice({
2162
2165
  draft.warning = warning;
2163
2166
  draft.selectedWarningId = warning == null ? void 0 : warning.id;
2164
2167
  draft.formState = formState;
2165
- draft.warningType = warningType;
2168
+ draft.warningType = (warning == null ? void 0 : warning.type) || warningType;
2166
2169
  draft.panelId = panelId;
2167
2170
  },
2168
2171
  // publish warning
@@ -2236,8 +2239,8 @@ var slice$1 = createSlice({
2236
2239
  });
2237
2240
  }
2238
2241
  });
2239
- var reducer$1 = slice$1.reducer;
2240
- var publicWarningFormActions = slice$1.actions;
2242
+ var publicWarningFormReducer = slice$1.reducer,
2243
+ publicWarningFormActions = slice$1.actions;
2241
2244
 
2242
2245
  var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2243
2246
  var bounds = _ref.bounds,
@@ -2337,7 +2340,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2337
2340
  while (1) switch (_context.prev = _context.next) {
2338
2341
  case 0:
2339
2342
  isActive = drawing.id === (currrentDrawing == null ? void 0 : currrentDrawing.id);
2340
- dispatch(drawActions.setDrawValues({
2343
+ dispatch(warningsDrawingsActions.setDrawValues({
2341
2344
  objectName: drawing.objectName,
2342
2345
  drawingInstanceId: drawingDialogType,
2343
2346
  id: !isActive ? drawing.id : ''
@@ -2383,7 +2386,7 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2383
2386
  _yield$warningsApi$ge = _context2.sent;
2384
2387
  data = _yield$warningsApi$ge.data;
2385
2388
  // update draw tool values
2386
- dispatch(drawActions.setDrawValues({
2389
+ dispatch(warningsDrawingsActions.setDrawValues({
2387
2390
  objectName: data.objectName,
2388
2391
  id: drawingId,
2389
2392
  drawingInstanceId: drawingDialogType
@@ -2427,7 +2430,8 @@ var ObjectManagerConnect = function ObjectManagerConnect(_ref) {
2427
2430
  geoJSON: object.geoJSON,
2428
2431
  objectName: object.objectName
2429
2432
  }]
2430
- }
2433
+ },
2434
+ type: 'public'
2431
2435
  }
2432
2436
  }));
2433
2437
  };
@@ -6863,6 +6867,271 @@ var warningListJSON = [
6863
6867
  }
6864
6868
  ];
6865
6869
 
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
+ ];
7035
+
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
+
6866
7135
  var airmetListJSON = [
6867
7136
  {
6868
7137
  uuid: "02d3727a-b190-11ef-ba31-067f7750936d",
@@ -7167,14 +7436,14 @@ var sigmetListJSON = [
7167
7436
  * Copyright 2024 - Finnish Meteorological Institute (FMI)
7168
7437
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
7169
7438
  * */
7170
- var airmetList = airmetListJSON;
7171
- var sigmetList = sigmetListJSON;
7439
+ var airmetList$1 = airmetListJSON;
7440
+ var sigmetList$1 = sigmetListJSON;
7172
7441
  var fakeSigmetTAC = 'EHAA SIGMET 1 VALID 121249/121449 EHDB- EHAA AMSTERDAM FIR FRQ TS OBS ENTIRE FIR FL010 STNR WKN';
7173
7442
  var fakeAirmetTAC = 'EHAA AIRMET -1 VALID 310700/311100 EHDB- EHAA AMSTERDAM FIR ISOL CB OBS ENTIRE FIR FL020 STNR NC';
7174
7443
  [rest.get(/^.*\/airmetlist$/, function (_, res, ctx) {
7175
- return res(ctx.status(200), ctx.json(airmetList));
7444
+ return res(ctx.status(200), ctx.json(airmetList$1));
7176
7445
  }), rest.get(/^.*\/sigmetlist$/, function (_, res, ctx) {
7177
- return res(ctx.status(200), ctx.json(sigmetList));
7446
+ return res(ctx.status(200), ctx.json(sigmetList$1));
7178
7447
  }), rest.get(/^.*\/airmet-config$/, function (_, res, ctx) {
7179
7448
  return res(ctx.status(200), ctx.json(airmetConfig));
7180
7449
  }), rest.get(/^.*\/sigmet-config$/, function (_, res, ctx) {
@@ -7206,10 +7475,25 @@ var fakeAirmetTAC = 'EHAA AIRMET -1 VALID 310700/311100 EHDB- EHAA AMSTERDAM FIR
7206
7475
  * */
7207
7476
  var drawingList = drawingListJSON;
7208
7477
  var drawingsListFullContent = drawingsListFullContentJSON;
7209
- var warningList = warningListJSON;
7478
+ var warningList = warningListJSON.map(function (pw) {
7479
+ return Object.assign({}, pw, {
7480
+ type: 'public'
7481
+ });
7482
+ });
7210
7483
  warningList.filter(function (warning) {
7211
7484
  return warning.status !== 'EXPIRED' && warning.status !== 'WITHDRAWN';
7212
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);
7213
7497
  var areaKeywordList = ['North Sea districts', 'Coastal Districts', 'KNMI Specific', 'Objects', 'Baltic areas', 'NL', 'FI', 'METNorway Specific', 'Provinces', 'FIR', 'Countries'];
7214
7498
  [rest.get(/^.*\/warnings$/, function (req, res, ctx) {
7215
7499
  // respond using a mocked JSON body
@@ -7819,7 +8103,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7819
8103
  });
7820
8104
  var drawToolId = drawingDialogType;
7821
8105
  var drawTool = useSelector(function (store) {
7822
- return drawtoolSelectors.selectDrawToolById(store, drawToolId);
8106
+ return drawingToolSelectors.selectDrawToolById(store, drawToolId);
7823
8107
  });
7824
8108
  var layerFeatureGeoJSON = useSelector(function (store) {
7825
8109
  return layerSelectors.getFeatureLayerGeoJSON(store, drawTool == null ? void 0 : drawTool.geoJSONLayerId);
@@ -7837,7 +8121,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7837
8121
  return uiSelectors.getDialogError(store, drawToolId);
7838
8122
  });
7839
8123
  var onSubmitForm = React.useCallback(function (formValues) {
7840
- dispatch(drawActions.submitDrawValues({
8124
+ dispatch(warningsDrawingsActions.submitDrawValues({
7841
8125
  geoJSON: formValues.geoJSON,
7842
8126
  objectName: formValues.objectName,
7843
8127
  scope: 'user',
@@ -7871,7 +8155,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7871
8155
  }
7872
8156
  }, [dispatch, drawTool == null ? void 0 : drawTool.activeDrawModeId, drawTool == null ? void 0 : drawTool.geoJSONLayerId, drawToolId]);
7873
8157
  var onChangeName = React.useCallback(function (newName) {
7874
- dispatch(drawActions.setDrawValues({
8158
+ dispatch(warningsDrawingsActions.setDrawValues({
7875
8159
  objectName: newName,
7876
8160
  id: (drawing == null ? void 0 : drawing.id) || '',
7877
8161
  drawingInstanceId: drawingDialogType,
@@ -7879,7 +8163,7 @@ var DrawingToolFormConnect = function DrawingToolFormConnect() {
7879
8163
  }));
7880
8164
  }, [dispatch, drawing == null ? void 0 : drawing.id, drawing == null ? void 0 : drawing.isFormDirty]);
7881
8165
  var onChangeFormDirty = React.useCallback(function (isFormDirty) {
7882
- dispatch(drawActions.setFormDirty({
8166
+ dispatch(warningsDrawingsActions.setFormDirty({
7883
8167
  drawingInstanceId: drawingDialogType,
7884
8168
  isFormDirty: isFormDirty
7885
8169
  }));
@@ -9047,39 +9331,13 @@ var ValidUntil = function ValidUntil(_ref) {
9047
9331
  });
9048
9332
  };
9049
9333
 
9050
- var zoomToFeature = function zoomToFeature(mapId, geojsonFeature) {
9051
- var webmapjs = getWMJSMapById(mapId);
9052
- if (!webmapjs || !geojsonFeature) {
9053
- return;
9054
- }
9055
- var bboxGeoJSON = getFeatureExtent(geojsonFeature);
9056
- var projectedCoordinateBoxBottomLeft = getGeoCoordFromLatLong(webmapjs, {
9057
- x: bboxGeoJSON.left,
9058
- y: bboxGeoJSON.bottom
9059
- });
9060
- var projectedCoordinateBoxTopRight = getGeoCoordFromLatLong(webmapjs, {
9061
- x: bboxGeoJSON.right,
9062
- y: bboxGeoJSON.top
9063
- });
9064
- if (projectedCoordinateBoxBottomLeft && projectedCoordinateBoxTopRight) {
9065
- var transformedExtent = new WMBBOX({
9066
- left: projectedCoordinateBoxBottomLeft.x,
9067
- bottom: projectedCoordinateBoxBottomLeft.y,
9068
- right: projectedCoordinateBoxTopRight.x,
9069
- top: projectedCoordinateBoxTopRight.y
9070
- });
9071
- webmapjs.zoomTo(transformedExtent);
9072
- webmapjs.zoomOut(2);
9073
- webmapjs.draw();
9074
- }
9075
- };
9076
9334
  var WarningsMapView = function WarningsMapView(_ref) {
9077
9335
  var _defaultMapPreset$lay, _defaultMapPreset$lay2;
9078
9336
  var geojsonFeature = _ref.geojsonFeature,
9079
9337
  defaultMapPreset = _ref.defaultMapPreset,
9080
9338
  _ref$isSnapshot = _ref.isSnapshot,
9081
9339
  isSnapshot = _ref$isSnapshot === void 0 ? false : _ref$isSnapshot;
9082
- var defaultBbox = defaultMapPreset == null ? void 0 : defaultMapPreset.proj;
9340
+ // const defaultBbox = defaultMapPreset?.proj;
9083
9341
  var defaultBaseLayer = (defaultMapPreset == null || (_defaultMapPreset$lay = defaultMapPreset.layers) == null ? void 0 : _defaultMapPreset$lay.find(function (layer) {
9084
9342
  return layer.layerType === LayerType.baseLayer;
9085
9343
  })) || defaultLayers.baseLayerGrey;
@@ -9092,35 +9350,46 @@ var WarningsMapView = function WarningsMapView(_ref) {
9092
9350
  geojson: geojsonFeature,
9093
9351
  layerType: LayerType.featureLayer
9094
9352
  };
9095
- if (!defaultBbox) {
9096
- // Zoom to the geojson when the geojsonFeature is updated in an already mounted map component
9097
- zoomToFeature(mapId, geojsonFeature);
9098
- }
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);
9099
9363
  return jsx("div", {
9100
9364
  style: {
9101
9365
  height: '200px',
9102
9366
  width: '100%'
9103
9367
  },
9104
- children: jsxs(MapView, {
9105
- bbox: defaultBbox == null ? void 0 : defaultBbox.bbox,
9106
- srs: defaultBbox == null ? void 0 : defaultBbox.srs,
9107
- mapId: mapId,
9108
- showScaleBar: false,
9109
- onWMJSMount: function onWMJSMount(mapId) {
9110
- var webmapjs = getWMJSMapById(mapId);
9111
- if (!webmapjs) {
9112
- return;
9113
- }
9114
- webmapjs.hideMouseCursorProperties();
9115
- if (!defaultBbox) {
9116
- // Zoom to the geojson when the map is ready
9117
- zoomToFeature(mapId, geojsonFeature);
9118
- }
9119
- },
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
+ // }}
9120
9385
  holdShiftToScroll: true,
9121
- children: [!isSnapshot && jsx(MapViewLayer, Object.assign({}, defaultBaseLayer, {
9386
+ children: [!isSnapshot && jsx(OpenLayersLayer, Object.assign({}, defaultBaseLayer, {
9122
9387
  id: mapId + "_baseLayer"
9123
- })), 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, {
9124
9393
  id: mapId + "_overlayer"
9125
9394
  }))]
9126
9395
  })
@@ -9527,7 +9796,7 @@ isAviationWarning) {
9527
9796
  });
9528
9797
  }
9529
9798
  var Form = function Form(_ref5) {
9530
- var _publicWarningDetails;
9799
+ var _publicWarningDetails, _publicWarningDetails2;
9531
9800
  var defaultMapPreset = _ref5.defaultMapPreset,
9532
9801
  _ref5$onSaveForm = _ref5.onSaveForm,
9533
9802
  onSaveForm = _ref5$onSaveForm === void 0 ? function () {} : _ref5$onSaveForm,
@@ -9559,7 +9828,7 @@ var Form = function Form(_ref5) {
9559
9828
  var _useTACApi = useTACApi(),
9560
9829
  fetchSigmetTAC = _useTACApi.fetchSigmetTAC,
9561
9830
  fetchAirmetTAC = _useTACApi.fetchAirmetTAC;
9562
- 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);
9563
9832
  var _React$useState = React.useState(initialPublicWarningArea),
9564
9833
  warningGeoJSONFeature = _React$useState[0],
9565
9834
  setWarningGeoJSONFeature = _React$useState[1];
@@ -10013,44 +10282,42 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
10013
10282
  warningType = _ref$warningType === void 0 ? 'public' : _ref$warningType,
10014
10283
  mode = _ref.mode,
10015
10284
  onFormSubmit = _ref.onFormSubmit;
10016
- var publicWarning = useSelector(function (store) {
10017
- return getPublicWarning(store);
10018
- });
10019
- var publicWarningObject = useSelector(function (store) {
10020
- return getPublicWarningObject(store);
10021
- });
10022
- var publicWarningFormAction = useSelector(function (store) {
10023
- return getPublicWarningFormState(store);
10024
- });
10025
- var publicWarningFormError = useSelector(function (store) {
10026
- return getPublicWarningFormError(store);
10027
- });
10285
+ var publicWarning = useSelector(getPublicWarning);
10286
+ var publicWarningObject = useSelector(getPublicWarningObject);
10287
+ var publicWarningFormAction = useSelector(getPublicWarningFormState);
10288
+ var publicWarningFormError = useSelector(getPublicWarningFormError);
10028
10289
  var _useAuthenticationCon = useAuthenticationContext$1(),
10029
10290
  auth = _useAuthenticationCon.auth;
10030
10291
  var isEditor = editor === (auth == null ? void 0 : auth.username) || false;
10031
10292
  var dispatch = useDispatch();
10032
10293
  var publishForm = function publishForm(newFormValues) {
10033
- dispatch(publicWarningFormActions.publishWarning({
10034
- publicWarning: {
10035
- warningDetail: newFormValues,
10036
- status: PublicWarningStatus.PUBLISHED
10037
- },
10038
- refetchWarnings: onFormSubmit
10039
- }));
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
+ }
10040
10304
  };
10041
10305
  var clearForm = function clearForm() {
10042
10306
  dispatch(publicWarningFormActions.removeAllAreas());
10043
10307
  };
10044
10308
  var saveForm = function saveForm(newFormValues) {
10045
10309
  var status = newFormValues.linked_to_id ? PublicWarningStatus.DRAFT_PUBLISHED : PublicWarningStatus.DRAFT;
10046
- dispatch(publicWarningFormActions.saveWarning({
10047
- publicWarning: {
10048
- warningDetail: newFormValues,
10049
- status: status,
10050
- editor: auth == null ? void 0 : auth.username
10051
- },
10052
- refetchWarnings: onFormSubmit
10053
- }));
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
+ }
10054
10321
  };
10055
10322
  var onFormDirty = function onFormDirty(isFormDirty) {
10056
10323
  dispatch(publicWarningFormActions.setFormDirty({
@@ -10727,7 +10994,7 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
10727
10994
  });
10728
10995
  };
10729
10996
 
10730
- var _excluded$6 = ["sigmetAirmetDetail"];
10997
+ var _excluded$6 = ["sigmetAirmetDetails"];
10731
10998
  function isCancelAirmet(warningDetail) {
10732
10999
  return warningDetail.cancelsAirmetSequenceId !== undefined;
10733
11000
  }
@@ -10735,14 +11002,12 @@ function isCancelSigmet(warningDetail) {
10735
11002
  return warningDetail.cancelsSigmetSequenceId !== undefined;
10736
11003
  }
10737
11004
  var flattenPublicWarning = function flattenPublicWarning(publicWarning) {
10738
- if (!publicWarning) {
11005
+ if (publicWarning.type === 'public') {
10739
11006
  return {};
10740
11007
  }
10741
- var sigmetAirmetDetail = publicWarning.sigmetAirmetDetail,
11008
+ var sigmetAirmetDetails = publicWarning.sigmetAirmetDetails,
10742
11009
  rest = _objectWithoutPropertiesLoose(publicWarning, _excluded$6);
10743
- return Object.assign({}, rest, sigmetAirmetDetail || {}, {
10744
- status: sigmetAirmetDetail == null ? void 0 : sigmetAirmetDetail.status
10745
- });
11010
+ return Object.assign({}, rest, sigmetAirmetDetails);
10746
11011
  };
10747
11012
  var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(apiAirmet) {
10748
11013
  var airmet = apiAirmet.airmet;
@@ -10777,7 +11042,8 @@ var transformAirmetToWarningFormat = function transformAirmetToWarningFormat(api
10777
11042
  descriptionOriginal: '',
10778
11043
  descriptionTranslation: ''
10779
11044
  },
10780
- sigmetAirmetDetail: Object.assign({}, airmet)
11045
+ sigmetAirmetDetails: Object.assign({}, airmet),
11046
+ type: 'airmet'
10781
11047
  };
10782
11048
  };
10783
11049
  var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(apiSigmet) {
@@ -10829,7 +11095,8 @@ var transformSigmetToWarningFormat = function transformSigmetToWarningFormat(api
10829
11095
  descriptionOriginal: '',
10830
11096
  descriptionTranslation: ''
10831
11097
  },
10832
- sigmetAirmetDetail: Object.assign({}, sigmet)
11098
+ sigmetAirmetDetails: Object.assign({}, sigmet),
11099
+ type: 'sigmet'
10833
11100
  };
10834
11101
  };
10835
11102
  var mapProductStatusToWarningStatus = function mapProductStatusToWarningStatus(productStatus) {
@@ -11003,17 +11270,8 @@ var getEmptyAirmetWarning = function getEmptyAirmetWarning() {
11003
11270
  }
11004
11271
  };
11005
11272
  };
11006
- var renewWarning = function renewWarning(warning, productConfig) {
11007
- if (!warning.sigmetAirmetDetail) {
11008
- return warning;
11009
- }
11010
- return renewAviationProduct(warning, productConfig);
11011
- };
11012
- var renewAviationProduct = function renewAviationProduct(oldWarning, productConfig) {
11013
- var warningDetail = oldWarning.sigmetAirmetDetail;
11014
- if (!warningDetail) {
11015
- return oldWarning;
11016
- }
11273
+ var renewAviationProduct = function renewAviationProduct(aviationWarning, productConfig) {
11274
+ var warningDetail = aviationWarning.sigmetAirmetDetails;
11017
11275
  var newValidUntil = 'phenomenon' in warningDetail ? getDefaultValidUntilValue(productConfig, warningDetail.phenomenon, warningDetail.locationIndicatorATSR, warningDetail.validDateEnd) : warningDetail.validDateEnd;
11018
11276
  var renewedWarningDetail = Object.assign({}, warningDetail, {
11019
11277
  validDateStart: warningDetail.validDateEnd,
@@ -11022,8 +11280,18 @@ var renewAviationProduct = function renewAviationProduct(oldWarning, productConf
11022
11280
  uuid: undefined,
11023
11281
  sequence: '-1'
11024
11282
  });
11025
- return Object.assign({}, oldWarning, {
11026
- sigmetAirmetDetail: renewedWarningDetail
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
11027
11295
  });
11028
11296
  };
11029
11297
 
@@ -11050,10 +11318,16 @@ var publicWarningBaseUrl = config.GW_DRAWINGS_BASE_URL || '';
11050
11318
  var getPublicWarningList = function getPublicWarningList(auth) {
11051
11319
  return fetch(publicWarningBaseUrl + "/warnings", {
11052
11320
  headers: getHeaders(auth)
11053
- }).then(handleResponse);
11321
+ }).then(handleResponse).then(function (warnings) {
11322
+ return warnings.map(function (warning) {
11323
+ return Object.assign({}, warning, {
11324
+ type: 'public'
11325
+ });
11326
+ });
11327
+ });
11054
11328
  };
11055
11329
  var updatePublicWarningEditor = function updatePublicWarningEditor(warningId, isEditor, auth) {
11056
- return fetch(publicWarningBaseUrl + "/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false'), {
11330
+ return fetch(publicWarningBaseUrl + "/warnings/" + warningId + "?editor=" + (isEditor ? 'true' : 'false') + "&force=true", {
11057
11331
  headers: getHeaders(auth),
11058
11332
  method: 'POST'
11059
11333
  }).then(handleResponse);
@@ -11153,7 +11427,7 @@ var useWarnings = function useWarnings(disabled) {
11153
11427
  var combinedWarnings = useMemo(function () {
11154
11428
  var transformedSigmets = (sigmetWarnings == null ? void 0 : sigmetWarnings.map(transformSigmetToWarningFormat)) || [];
11155
11429
  var transformedAirmets = (airmetWarnings == null ? void 0 : airmetWarnings.map(transformAirmetToWarningFormat)) || [];
11156
- return (publicWarnings || []).concat(transformedSigmets).concat(transformedAirmets);
11430
+ return concat(publicWarnings || [], transformedSigmets, transformedAirmets);
11157
11431
  }, [publicWarnings, sigmetWarnings, airmetWarnings]);
11158
11432
  var refetchWarnings = function refetchWarnings() {
11159
11433
  void refetchPublicWarnings();
@@ -11221,9 +11495,7 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11221
11495
  setHasFetched(true);
11222
11496
  }
11223
11497
  }, [isFetching]);
11224
- var selectedWarningId = useSelector(function (store) {
11225
- return getSelectedWarningId(store);
11226
- });
11498
+ var selectedWarningId = useSelector(getSelectedWarningId);
11227
11499
  var selectedWarningObject = useSelector(getPublicWarning);
11228
11500
  var warningType = useSelector(getWarningType);
11229
11501
  var selectedWarning = combinedWarnings == null ? void 0 : combinedWarnings.find(function (w) {
@@ -11418,7 +11690,7 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
11418
11690
  var selectedSigmetProduct = selectedSigmet && aviationConfig ? transformSigmetToProductFormat(selectedSigmet) : getEmptySigmetWarning();
11419
11691
  var selectedAirmetProduct = selectedAirmet && aviationConfig ? transformAirmetToProductFormat(selectedAirmet) : getEmptyAirmetWarning();
11420
11692
  var selectedAviationProduct = React__default.useMemo(function () {
11421
- if (selectedWarningObject && selectedWarningObject.sigmetAirmetDetail && aviationConfig) {
11693
+ if (['sigmet', 'airmet'].includes((selectedWarningObject == null ? void 0 : selectedWarningObject.type) || '') && aviationConfig) {
11422
11694
  return flattenPublicWarning(selectedWarningObject);
11423
11695
  }
11424
11696
  if (updatedWarningType === 'sigmet') {
@@ -11897,8 +12169,8 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11897
12169
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
11898
12170
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
11899
12171
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
11900
- _ref$onRenewWarning = _ref.onRenewWarning,
11901
- onRenewWarning = _ref$onRenewWarning === void 0 ? function () {} : _ref$onRenewWarning,
12172
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12173
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
11902
12174
  t = _ref.t;
11903
12175
  var duplicate = {
11904
12176
  text: t('warning-list-button-duplicate'),
@@ -11907,6 +12179,13 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11907
12179
  },
11908
12180
  icon: jsx(Copy, {})
11909
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
+ };
11910
12189
  // disable Expire option if warning is not active
11911
12190
  var shouldDisableExpire = !dateUtils.isBetween(dateUtils.getNowUtc(), dateUtils.createDate(warning.warningDetail.validFrom), dateUtils.createDate(warning.warningDetail.validUntil), '[]');
11912
12191
  switch (warning.status) {
@@ -11966,41 +12245,43 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
11966
12245
  }];
11967
12246
  default:
11968
12247
  switch (warning.productStatus) {
12248
+ case ProductStatus.DRAFT:
12249
+ return [aviationDuplicate];
11969
12250
  case ProductStatus.PUBLISHED:
11970
- if (warning.sigmetAirmetDetail && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetail) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetail))) {
12251
+ if (warning.type !== 'public' && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetails) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetails))) {
11971
12252
  return [];
11972
12253
  }
11973
12254
  return [{
11974
12255
  text: t('warning-list-button-renew'),
11975
12256
  action: function action() {
11976
12257
  if (warning) {
11977
- onRenewWarning(warning);
12258
+ onActionAviationWarning(warning);
11978
12259
  }
11979
12260
  },
11980
12261
  icon: jsx(Update, {})
11981
- }];
12262
+ }, aviationDuplicate];
11982
12263
  case ProductStatus.CANCELLED:
11983
12264
  return [];
11984
12265
  case ProductStatus.EXPIRED:
11985
- if (warning.sigmetAirmetDetail && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetail) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetail))) {
12266
+ if (warning.type !== 'public' && (isInstanceOfCancelSigmet(warning.sigmetAirmetDetails) || isInstanceOfCancelAirmet(warning.sigmetAirmetDetails))) {
11986
12267
  return [];
11987
12268
  }
11988
12269
  return [{
11989
12270
  text: t('warning-list-button-renew'),
11990
12271
  action: function action() {
11991
12272
  if (warning) {
11992
- onRenewWarning(warning);
12273
+ onActionAviationWarning(warning, ProductAction.RENEW);
11993
12274
  }
11994
12275
  },
11995
12276
  icon: jsx(Update, {})
11996
- }];
12277
+ }, aviationDuplicate];
11997
12278
  default:
11998
12279
  return [];
11999
12280
  }
12000
12281
  }
12001
12282
  };
12002
12283
 
12003
- var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning", "onRenewWarning"];
12284
+ var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning", "onActionAviationWarning"];
12004
12285
  var renderLevelText = function renderLevelText(levelString) {
12005
12286
  if (!levelString) {
12006
12287
  return null;
@@ -12037,10 +12318,10 @@ var renderStatusIcon = function renderStatusIcon(warning, status) {
12037
12318
  icon: icon
12038
12319
  });
12039
12320
  };
12040
- if (warning.productStatus === ProductStatus.PUBLISHED && warning.sigmetAirmetDetail && (isCancelAirmet(warning.sigmetAirmetDetail) || isCancelSigmet(warning.sigmetAirmetDetail))) {
12041
- return getStatusTag("Cnls " + (isCancelAirmet(warning.sigmetAirmetDetail) ? warning.sigmetAirmetDetail.cancelsAirmetSequenceId : warning.sigmetAirmetDetail.cancelsSigmetSequenceId), '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');
12042
12323
  }
12043
- if (warning.productStatus === ProductStatus.CANCELLED && warning.sigmetAirmetDetail) {
12324
+ if (warning.productStatus === ProductStatus.CANCELLED && warning.type !== 'public') {
12044
12325
  return getStatusTag('Cnld', 'red');
12045
12326
  }
12046
12327
  switch (status) {
@@ -12079,7 +12360,7 @@ var renderStatusIcon = function renderStatusIcon(warning, status) {
12079
12360
  }
12080
12361
  };
12081
12362
  var WarningListItem = function WarningListItem(_ref) {
12082
- var _warning$warningDetai, _warning$sigmetAirmet, _sx, _sx2, _Object$assign;
12363
+ var _warning$warningDetai, _sx, _sx2, _Object$assign;
12083
12364
  var warning = _ref.warning,
12084
12365
  activeWarningId = _ref.activeWarningId,
12085
12366
  highlightedItem = _ref.highlightedItem,
@@ -12095,14 +12376,14 @@ var WarningListItem = function WarningListItem(_ref) {
12095
12376
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
12096
12377
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
12097
12378
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
12098
- _ref$onRenewWarning = _ref.onRenewWarning,
12099
- onRenewWarning = _ref$onRenewWarning === void 0 ? function () {} : _ref$onRenewWarning,
12379
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12380
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
12100
12381
  props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
12101
12382
  var _useWarningsTranslati = useWarningsTranslation(),
12102
12383
  t = _useWarningsTranslati.t;
12103
12384
  var phenomenonDetails = allPhenomenaDict[warning.warningDetail.phenomenon];
12104
12385
  var objectNameText = ((_warning$warningDetai = warning.warningDetail.areas) == null || (_warning$warningDetai = _warning$warningDetai[0]) == null ? void 0 : _warning$warningDetai.objectName) || '-';
12105
- var objectHoverText = (_warning$sigmetAirmet = warning.sigmetAirmetDetail) != null && _warning$sigmetAirmet.firName ? warning.sigmetAirmetDetail.firName : objectNameText;
12386
+ var objectHoverText = warning.type !== 'public' ? warning.sigmetAirmetDetails.firName : objectNameText;
12106
12387
  var _useOverflowCheck = useOverflowCheck(objectNameText),
12107
12388
  objectNameRef = _useOverflowCheck.ref;
12108
12389
  var phenomenonText = phenomenonDetails != null && phenomenonDetails.translationKey ? t(phenomenonDetails.translationKey) : '-';
@@ -12151,7 +12432,7 @@ var WarningListItem = function WarningListItem(_ref) {
12151
12432
  onDeleteWarning: onDeleteWarning,
12152
12433
  onExpireWarning: onExpireWarning,
12153
12434
  onWithdrawWarning: onWithdrawWarning,
12154
- onRenewWarning: onRenewWarning
12435
+ onActionAviationWarning: onActionAviationWarning
12155
12436
  }),
12156
12437
  buttonIcon: jsx(Options, {})
12157
12438
  }),
@@ -12552,8 +12833,8 @@ var PublicWarningList = function PublicWarningList(_ref) {
12552
12833
  onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
12553
12834
  _ref$onWithdrawWarnin = _ref.onWithdrawWarning,
12554
12835
  onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
12555
- _ref$onRenewWarning = _ref.onRenewWarning,
12556
- onRenewWarning = _ref$onRenewWarning === void 0 ? function () {} : _ref$onRenewWarning,
12836
+ _ref$onActionAviation = _ref.onActionAviationWarning,
12837
+ onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
12557
12838
  hoveredFeatureId = _ref.hoveredFeatureId,
12558
12839
  expandedSections = _ref.expandedSections,
12559
12840
  setExpandedSections = _ref.setExpandedSections;
@@ -12844,7 +13125,7 @@ var PublicWarningList = function PublicWarningList(_ref) {
12844
13125
  activeWarningId: selectedWarningId,
12845
13126
  onExpireWarning: onExpireWarning,
12846
13127
  onWithdrawWarning: onWithdrawWarning,
12847
- onRenewWarning: onRenewWarning
13128
+ onActionAviationWarning: onActionAviationWarning
12848
13129
  }, key);
12849
13130
  }
12850
13131
  });
@@ -12897,8 +13178,8 @@ var slice = createSlice({
12897
13178
  }
12898
13179
  }
12899
13180
  });
12900
- var reducer = slice.reducer;
12901
- var publicWarningActions = slice.actions;
13181
+ var publicWarningsReducer = slice.reducer,
13182
+ publicWarningActions = slice.actions;
12902
13183
 
12903
13184
  /* *
12904
13185
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -13416,13 +13697,21 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13416
13697
  var warningType = useSelector(getWarningType);
13417
13698
  var _useProductConfig = useProductConfig(warningType, false),
13418
13699
  aviationConfig = _useProductConfig.data;
13419
- var handleRenewProductClick = function handleRenewProductClick(warning, warningType) {
13700
+ var handleAviationProductClick = function handleAviationProductClick(warning, actionType) {
13420
13701
  if (!warning) {
13421
13702
  return;
13422
13703
  }
13423
- var type = warningType || (warning.warningDetail.level === 'SIG' ? 'sigmet' : 'airmet');
13424
- var renewedWarning = renewWarning(warning, aviationConfig);
13425
- void openPublicWarningDialog('edit', renewedWarning, type);
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);
13426
13715
  };
13427
13716
  var openSnackbar = function openSnackbar(message) {
13428
13717
  dispatch(snackbarActions.openSnackbar({
@@ -13500,7 +13789,7 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13500
13789
  }, [filteredWarnings, expandedSections]);
13501
13790
  var allFeatures = React__default.useMemo(function () {
13502
13791
  return filteredWarningsByExpandedSections.flatMap(function (warning) {
13503
- return (warning == null ? void 0 : warning.id) && (warning != null && warning.warningDetail && 'areas' in warning.warningDetail ? warning.warningDetail.areas.filter(function (area) {
13792
+ return (warning == null ? void 0 : warning.id) && (warning != null && warning.warningDetail && warning.warningDetail.areas ? warning.warningDetail.areas.filter(function (area) {
13504
13793
  return area.geoJSON;
13505
13794
  }).map(function (area) {
13506
13795
  var isAviationWarning = warning.warningDetail.level === 'SIG' || warning.warningDetail.level === 'AIR';
@@ -13538,7 +13827,7 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
13538
13827
  onRefetchWarnings: refetchWarnings,
13539
13828
  filterHookState: filterHookState,
13540
13829
  hoveredFeatureId: hoveredFeatureId,
13541
- onRenewWarning: handleRenewProductClick
13830
+ onActionAviationWarning: handleAviationProductClick
13542
13831
  }), confirmDialogOptions && jsx(ConfirmDeleteWarningDialog, {
13543
13832
  onClose: function onClose() {
13544
13833
  return setConfirmDialogOptions(undefined);
@@ -13874,25 +14163,6 @@ publicWarningFormListener.startListening({
13874
14163
  }()
13875
14164
  });
13876
14165
 
13877
- /* *
13878
- * Licensed under the Apache License, Version 2.0 (the "License");
13879
- * you may not use this file except in compliance with the License.
13880
- * You may obtain a copy of the License at
13881
- *
13882
- * http://www.apache.org/licenses/LICENSE-2.0
13883
- *
13884
- * Unless required by applicable law or agreed to in writing, software
13885
- * distributed under the License is distributed on an "AS IS" BASIS,
13886
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13887
- * See the License for the specific language governing permissions and
13888
- * limitations under the License.
13889
- *
13890
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
13891
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
13892
- * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13893
- * */
13894
- var publicWarningsListener = createListenerMiddleware();
13895
-
13896
14166
  var _excluded = ["id"];
13897
14167
  var getSnackbarMessage = function getSnackbarMessage(objectName, id) {
13898
14168
  return {
@@ -13903,9 +14173,9 @@ var getSnackbarMessage = function getSnackbarMessage(objectName, id) {
13903
14173
  }
13904
14174
  };
13905
14175
  };
13906
- var drawingsListener = createListenerMiddleware();
13907
- drawingsListener.startListening({
13908
- actionCreator: drawActions.submitDrawValues,
14176
+ var warningsDrawingsListener = createListenerMiddleware();
14177
+ warningsDrawingsListener.startListening({
14178
+ actionCreator: warningsDrawingsActions.submitDrawValues,
13909
14179
  effect: function () {
13910
14180
  var _effect = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref, listenerApi) {
13911
14181
  var payload, id, formValues, warningsApi, newID, taskError, errorMessage;
@@ -13929,7 +14199,7 @@ drawingsListener.startListening({
13929
14199
  return warningsApi.saveDrawingAs(formValues);
13930
14200
  case 9:
13931
14201
  newID = _context.sent;
13932
- listenerApi.dispatch(drawActions.setDrawValues({
14202
+ listenerApi.dispatch(warningsDrawingsActions.setDrawValues({
13933
14203
  drawingInstanceId: drawingDialogType,
13934
14204
  id: newID,
13935
14205
  objectName: formValues.objectName
@@ -13997,13 +14267,46 @@ drawingsListener.startListening({
13997
14267
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
13998
14268
  * Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
13999
14269
  * */
14000
- var drawingModuleConfig = {
14001
- reducersMap: {
14002
- drawings: reducer$2,
14003
- publicWarningForm: reducer$1,
14004
- publicWarnings: reducer
14005
- },
14006
- 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
+ });
14007
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
+ */
14008
14311
 
14009
- export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningApiWrapper, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningsModuleProvider, componentsLookUp, drawingModuleConfig, initialState, isAlreadyEdited, publicWarningActions, publicWarningFormListener, reducer$1 as publicWarningFormReducer, publicWarningsAdapter, publicWarningsListener, reducer as publicWarningsReducer, selectors as publicWarningsSelectors, 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 };