@opengeoweb/warnings 19.1.1 → 19.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +3000 -993
- package/dist/src/index.d.ts +2 -0
- package/dist/src/lib/api/warning-api/api.d.ts +6 -1
- package/dist/src/lib/components/PublicWarningList/ConfirmWarningDialog.d.ts +1 -1
- package/dist/src/lib/components/PublicWarningList/PublicWarningList.d.ts +5 -0
- package/dist/src/lib/components/PublicWarningList/PublicWarningListConnect.d.ts +0 -1
- package/dist/src/lib/components/PublicWarningList/SelectAllButton/SelectAllButton.d.ts +9 -0
- package/dist/src/lib/components/PublicWarningList/SelectAllButton/index.d.ts +2 -0
- package/dist/src/lib/components/PublicWarningList/SelectAllButton/selectAllButtonUtils.d.ts +7 -0
- package/dist/src/lib/components/PublicWarningList/WarningListItem.d.ts +2 -0
- package/dist/src/lib/components/PublicWarningList/useWarningListFeatureSync.d.ts +15 -0
- package/dist/src/lib/components/PublicWarningList/warningListFeatureSyncUtils.d.ts +15 -0
- package/dist/src/lib/components/WarningEvents/WarningEventDialog/WarningEventDialog.d.ts +16 -0
- package/dist/src/lib/components/WarningEvents/WarningEventDialog/WarningEventDialogConnect.d.ts +11 -0
- package/dist/src/lib/components/WarningEvents/WarningEventDialog/index.d.ts +4 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/WarningEventFormContent.d.ts +11 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/WarningEventItem.d.ts +9 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/WarningEventTimeline/WarningEventTimeline.d.ts +16 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/WarningEventTimeline/WarningEventTimelineBlock.d.ts +12 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/WarningEventTimeline/WarningEventTimelineContext.d.ts +7 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/WarningEventTimeline/getTimelineRange.d.ts +5 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/WarningEventTimeline/index.d.ts +3 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/index.d.ts +2 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/types.d.ts +11 -0
- package/dist/src/lib/components/WarningEvents/WarningEventForm/warningEventStoryData.d.ts +14 -0
- package/dist/src/lib/components/WarningEvents/WarningEventSummaryDialog/WarningEventSummaryDialog.d.ts +15 -0
- package/dist/src/lib/components/WarningEvents/WarningEventSummaryDialog/WarningEventSummaryForm.d.ts +12 -0
- package/dist/src/lib/components/WarningEvents/WarningEventSummaryDialog/index.d.ts +1 -0
- package/dist/src/lib/store/warningsForm/types.d.ts +28 -1
- package/dist/src/lib/store/warningsForm/utils.d.ts +1 -0
- package/dist/src/lib/utils/fakeApi/index.d.ts +1 -0
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { useDispatch, useSelector, useStore, shallowEqual } from 'react-redux';
|
|
3
|
-
import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawingToolSelectors, layerSelectors, uiSelectors, layerActions, drawingToolActions, mapListener, layersListener, drawingToolListener, syncGroupsListener, openlayersListener, syncGroupsReducer, drawingToolReducer, uiReducer, layerReducer, mapReducer, useSetupDialog, layerUtils, genericSelectors, useUpdateFeatureSyncLayers, genericActions, selectorMemoizationOptions, useRegisterFeatureSyncSource, syncGroupsSelector } from '@opengeoweb/store';
|
|
4
|
-
import { Polygons, CoastalEvent, TemperatureLow, TemperatureHigh, Rain, Snow, Lightning, Fog, Wind, Thunderstorm, SevereMountainWaves, VulcanicEruption, Haze, FreezingPrecipitation, ModerateAircraftIcing, SevereAircraftIcing, ModerateTurbulence, SevereTurbulence, SandStorm, RadioactiveMaterials, ExitDomain, Share, Edit, Delete, DrawPolygon, Remove, Options, ChevronDown, Visibility, Add, breakpoints, DragHandle, Info, ArrowUpCompact, ArrowDownCompact, Extend24h, Copy, Update, Cancel, Success, Expire, VisibilityOff, ChevronUp, Close, Clock } from '@opengeoweb/theme';
|
|
3
|
+
import { uiTypes, uiActions, getSingularDrawtoolDrawLayerId, drawingToolSelectors, layerSelectors, uiSelectors, layerActions, drawingToolActions, mapListener, layersListener, drawingToolListener, syncGroupsListener, openlayersListener, syncGroupsReducer, drawingToolReducer, uiReducer, layerReducer, mapReducer, useSetupDialog, layerUtils, PUBLIC_WARNING_DRAW_TOOL_ID, genericSelectors, useUpdateFeatureSyncLayers, genericActions, selectorMemoizationOptions, useRegisterFeatureSyncSource, syncGroupsSelector } from '@opengeoweb/store';
|
|
4
|
+
import { Polygons, CoastalEvent, TemperatureLow, TemperatureHigh, Rain, Snow, Lightning, Fog, Wind, Thunderstorm, SevereMountainWaves, VulcanicEruption, Haze, FreezingPrecipitation, ModerateAircraftIcing, SevereAircraftIcing, ModerateTurbulence, SevereTurbulence, SandStorm, RadioactiveMaterials, ExitDomain, Share, Edit, Delete, DrawPolygon, Remove, Options, ChevronDown, Visibility, Add, breakpoints, DragHandle, Info, ArrowUpCompact, ArrowDownCompact, Notifications, AlertBadge, ArrowDropDownDown, Extend24h, Copy, Update, Cancel, Success, Expire, VisibilityOff, ChevronUp, Close, Clock } from '@opengeoweb/theme';
|
|
5
5
|
import { WEBMAP_REACT_NAMESPACE, defaultPolygon, emptyGeoJSON, MapControlButton, defaultSmoothLine, defaultLineString, defaultFreehandLine, defaultOval, defaultCircle, defaultRotatableBox, defaultSquare, defaultLocation, defaultPoint, defaultSplit, defaultDelete, getDrawModeIdFromSelectionType, getIcon, rewindGeometry, getGeoJSONPropertyValue, DRAWMODE, currentlySupportedDrawModes, defaultLayers, viewUtils, OpenLayersMapView, MapControls, OpenLayersZoomControl, OpenLayersLayer, OpenLayersFeatureLayer, genericOpenLayersFeatureStyle, DEFAULT_GEOJSON_STYLE_FILL_OPACITY, FEATURE_DRAW_FILL_COLOR, FEATURE_DRAW_SECONDARY_FILL_COLOR, FEATURE_DRAW_STROKE_COLOR } from '@opengeoweb/webmap-react';
|
|
6
6
|
import { SHARED_NAMESPACE, useConfirmationDialog, sessionStorageProvider, dateUtils, ConfirmationDialog, AlertBanner, ToggleMenu, calculateStartSize, ToolContainerDraggable, CustomIconButton, usePrevious, usePreventBrowserClose, CustomTooltip, Avatar, getInitials, SwitchButton, Filter, CustomToggleButton, FilterChip, TooltipSelect, LastUpdateTime, StatusTag, FilterOption, getAxiosErrorMessage, CustomDialog, ConfirmationButtons, ErrorBoundary } from '@opengeoweb/shared';
|
|
7
7
|
import { createEntityAdapter, createSlice, createSelector, createListenerMiddleware, combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
@@ -13,13 +13,13 @@ import { SA_NAMESPACE, isInstanceOfCancelSigmet, getDefaultValidFromValue, isIns
|
|
|
13
13
|
import { LayerType, generateMapId, webmapUtils } from '@opengeoweb/webmap';
|
|
14
14
|
import React, { useRef, useState, useEffect, useCallback, useMemo } from 'react';
|
|
15
15
|
import { useAuthenticationContext as useAuthenticationContext$1 } from '@opengeoweb/authentication';
|
|
16
|
-
import { MenuItem, Grid, Box, Typography, styled, ListItem, Paper, ListItemButton, Stack, useTheme, Accordion, AccordionSummary, AccordionDetails, LinearProgress, Tabs, Tab, Button, FormHelperText, Card, CardContent, FormControl, CircularProgress, Menu, ListItemText, IconButton, DialogTitle, DialogContent, Switch, RadioGroup, FormControlLabel, Radio, InputAdornment, Collapse
|
|
16
|
+
import { MenuItem, Grid, Box, Typography, styled, ListItem, Paper, ListItemButton, Stack, useTheme, Accordion, AccordionSummary, AccordionDetails, LinearProgress, Tabs, Tab, Button, FormHelperText, Card, CardContent, FormControl, CircularProgress, Menu, ListSubheader, ListItemText, ListItemIcon, Chip, Tooltip, IconButton, Checkbox, DialogTitle, DialogContent, Switch, RadioGroup, FormControlLabel, Radio, InputAdornment, Collapse } from '@mui/material';
|
|
17
17
|
import { useQueryClient, useMutation, queryOptions, QueryClient, useQuery } from '@tanstack/react-query';
|
|
18
18
|
import { getHeaders, handleResponse, AirmetPhenomena, SigmetPhenomena, useAuthenticationContext, useAuthQuery, optimisticUpdate, ProductStatus } from '@opengeoweb/api';
|
|
19
19
|
import { snackbarListener, snackbarReducer, snackbarActions, snackbarTypes } from '@opengeoweb/snackbar';
|
|
20
20
|
import { List, useListRef } from 'react-window';
|
|
21
|
-
import { isEqual, cloneDeep, clamp, concat, groupBy, pick } from 'lodash';
|
|
22
|
-
import { useFormContext, useForm, FormProvider } from 'react-hook-form';
|
|
21
|
+
import { isEqual, cloneDeep, clamp as clamp$1, concat, groupBy, pick } from 'lodash';
|
|
22
|
+
import { useFormContext, useForm, FormProvider, useWatch, useFieldArray } from 'react-hook-form';
|
|
23
23
|
import { isEmpty, createEmpty, extend } from 'ol/extent';
|
|
24
24
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
25
25
|
import { ReactSortable } from 'react-sortablejs';
|
|
@@ -70,6 +70,20 @@ var en = {
|
|
|
70
70
|
"area-manager-share-menu-edit": "Edit",
|
|
71
71
|
"area-manager-share-menu-clear": "Clear this selection",
|
|
72
72
|
"public-warning-title": "Public Warning",
|
|
73
|
+
"public-warning-event-title": "Public Warning Event",
|
|
74
|
+
"public-warning-event-incident": "Incident",
|
|
75
|
+
"public-warning-event-warning-type": "Warning type",
|
|
76
|
+
"public-warning-event-type-early-warning": "Early Warning",
|
|
77
|
+
"public-warning-event-type-warning": "Warning",
|
|
78
|
+
"public-warning-event-summary": "Summary",
|
|
79
|
+
"public-warning-event-translation": "Translation",
|
|
80
|
+
"public-warning-event-button-cancel": "Cancel",
|
|
81
|
+
"public-warning-event-button-delete": "Delete",
|
|
82
|
+
"public-warning-event-button-save-draft": "Save as draft",
|
|
83
|
+
"public-warning-event-button-publish": "Publish",
|
|
84
|
+
"public-warning-event-stop": "Stop",
|
|
85
|
+
"public-warning-event-delete": "Delete",
|
|
86
|
+
"public-warning-event-add-warning": "Add a warning",
|
|
73
87
|
"maritime-warning-coastal-title": "Coastal Waters",
|
|
74
88
|
"maritime-warning-northsea-title": "North Sea Districts",
|
|
75
89
|
"close-warning-dialog-title": "Close warning",
|
|
@@ -129,7 +143,13 @@ var en = {
|
|
|
129
143
|
"warning-dialog-delete-title": "Delete warning",
|
|
130
144
|
"warning-dialog-delete-confirm": "Delete",
|
|
131
145
|
"warning-dialog-delete-description": "Are you sure you want to delete this warning?",
|
|
132
|
-
"warning-dialog-delete-islocked": "
|
|
146
|
+
"warning-dialog-delete-islocked": "Warning is in edit mode by another user.",
|
|
147
|
+
"warning-dialog-delete-all-succes": "All warnings have been deleted",
|
|
148
|
+
"warning-dialog-delete-all-title": "Delete warnings",
|
|
149
|
+
"warning-dialog-delete-all-confirm": "Delete",
|
|
150
|
+
"warning-dialog-delete-all-description": "Are you sure you want to delete {{NUMBER}} warnings?",
|
|
151
|
+
"warning-dialog-delete-all-button": "Batch delete all selected warnings",
|
|
152
|
+
"warning-dialog-delete-all-failed": "Batch delete failed for {{NUMBER}} warnings. Please check the list and retry.",
|
|
133
153
|
"warning-save-succes": "Public warning has succesfully been saved!",
|
|
134
154
|
"warning-publish-succes": "Public warning has succesfully been published!",
|
|
135
155
|
"warning-editor-user-viewer": "Viewer",
|
|
@@ -163,6 +183,7 @@ var en = {
|
|
|
163
183
|
"warning-list-header-levels": "Levels",
|
|
164
184
|
"warning-list-header-status": "Status",
|
|
165
185
|
"warning-list-header-draft": "DRAFT",
|
|
186
|
+
"warning-list-batch-delete-checkbox": "Select for batch delete",
|
|
166
187
|
"area-object-loader-title": "Areas & Objects",
|
|
167
188
|
"add-button": "Add",
|
|
168
189
|
"replace-button": "Replace",
|
|
@@ -171,9 +192,12 @@ var en = {
|
|
|
171
192
|
"area-object-loader-no-areas-objects": "No areas or objects found",
|
|
172
193
|
objects: "Objects",
|
|
173
194
|
areas: "Areas",
|
|
195
|
+
"filter-select": "Select",
|
|
174
196
|
"filter-select-all": "Select all",
|
|
197
|
+
"filter-deselect-all": "Deselect all",
|
|
175
198
|
"filter-no-results": "No results",
|
|
176
199
|
"filter-all": "All",
|
|
200
|
+
"filter-none": "None",
|
|
177
201
|
"filter-options": "Filter options",
|
|
178
202
|
"filter-show-all": "Show all",
|
|
179
203
|
"filter-hide-all": "Hide all",
|
|
@@ -317,7 +341,21 @@ var en = {
|
|
|
317
341
|
"maritime-wind-change-warning": "The entered wind change exceeds 180°. Please check if veering / backing is correct.",
|
|
318
342
|
"maritime-wind-change-error": "A wind change less than 45° is not allowed.",
|
|
319
343
|
"maritime-button-extend": "Extend +24h",
|
|
320
|
-
"maritime-button-extending": "Extending"
|
|
344
|
+
"maritime-button-extending": "Extending",
|
|
345
|
+
"warning-event-summary-dialog-title": "Summary",
|
|
346
|
+
"warning-event-summary-dialog-clear-button": "Clear",
|
|
347
|
+
"warning-event-summary-dialog-clear-button-title": "Clear summary",
|
|
348
|
+
"warning-event-summary-dialog-OK-button": "Add",
|
|
349
|
+
"warning-event-summary-dialog-OK-button-title": "Add summary to the form",
|
|
350
|
+
"warning-event-summary-language-original": "Original: Dutch",
|
|
351
|
+
"warning-event-summary-language-translation": "Translation: English",
|
|
352
|
+
"warning-event-summary-headline-original": "Header",
|
|
353
|
+
"warning-event-summary-headline-translation": "Header",
|
|
354
|
+
"warning-event-summary-concise-summary-original": "Concise summary",
|
|
355
|
+
"warning-event-summary-concise-summary-translation": "Concise summary",
|
|
356
|
+
"warning-event-summary-description-original": "Detailed description",
|
|
357
|
+
"warning-event-summary-description-translation": "Detailed description",
|
|
358
|
+
"warning-event-summary-max-chars": "characters"
|
|
321
359
|
};
|
|
322
360
|
var nl = {
|
|
323
361
|
"drawing-tool-form-tools": "Gereedschap",
|
|
@@ -360,6 +398,20 @@ var nl = {
|
|
|
360
398
|
"area-manager-share-menu-edit": "Bewerken",
|
|
361
399
|
"area-manager-share-menu-clear": "Verwijder gemaakte selectie",
|
|
362
400
|
"public-warning-title": "Publieke Waarschuwing",
|
|
401
|
+
"public-warning-event-title": "Publieke Waarschuwing Gebeurtenis",
|
|
402
|
+
"public-warning-event-incident": "Incident",
|
|
403
|
+
"public-warning-event-warning-type": "Waarschuwingstype",
|
|
404
|
+
"public-warning-event-type-early-warning": "Vroegtijdige waarschuwing",
|
|
405
|
+
"public-warning-event-type-warning": "Waarschuwing",
|
|
406
|
+
"public-warning-event-summary": "Samenvatting",
|
|
407
|
+
"public-warning-event-translation": "Vertaling",
|
|
408
|
+
"public-warning-event-button-cancel": "Annuleren",
|
|
409
|
+
"public-warning-event-button-delete": "Verwijderen",
|
|
410
|
+
"public-warning-event-button-save-draft": "Opslaan als concept",
|
|
411
|
+
"public-warning-event-button-publish": "Publiceren",
|
|
412
|
+
"public-warning-event-stop": "Stoppen",
|
|
413
|
+
"public-warning-event-delete": "Verwijderen",
|
|
414
|
+
"public-warning-event-add-warning": "Waarschuwing toevoegen",
|
|
363
415
|
"maritime-warning-coastal-title": "Kustgebieden",
|
|
364
416
|
"maritime-warning-northsea-title": "Noordzee Districten",
|
|
365
417
|
"close-warning-dialog-title": "Waarschuwing sluiten",
|
|
@@ -415,7 +467,13 @@ var nl = {
|
|
|
415
467
|
"warning-dialog-delete-title": "Waarschuwing verwijderen",
|
|
416
468
|
"warning-dialog-delete-confirm": "Verwijderen",
|
|
417
469
|
"warning-dialog-delete-description": "Weet je zeker dat je deze waarschuwing wilt verwijderen?",
|
|
418
|
-
"warning-dialog-delete-islocked": "
|
|
470
|
+
"warning-dialog-delete-islocked": "Waarschuwing wordt bewerkt door een andere gebruiker.",
|
|
471
|
+
"warning-dialog-delete-all-succes": "Waarschuwingen zijn verwijderd",
|
|
472
|
+
"warning-dialog-delete-all-title": "Waarschuwingen verwijderen",
|
|
473
|
+
"warning-dialog-delete-all-confirm": "Verwijderen",
|
|
474
|
+
"warning-dialog-delete-all-description": "Weet je zeker dat je {{NUMBER}} waarschuwingen wilt verwijderen?",
|
|
475
|
+
"warning-dialog-delete-all-button": "Verwijder geselecteerde waarschuwingen",
|
|
476
|
+
"warning-dialog-delete-all-failed": "Bulk verwijderen mislukt voor {{NUMBER}} waarschuwingen. Check de lijst en probeer opnieuw.",
|
|
419
477
|
"warning-save-succes": "Publieke waarschuwing is succesvol opgeslagen!",
|
|
420
478
|
"warning-publish-succes": "Publieke waarschuwing is succesvol gepubliceerd!",
|
|
421
479
|
"warning-editor-add-editor": "Je bent nu de editor van deze waarschuwing",
|
|
@@ -454,6 +512,7 @@ var nl = {
|
|
|
454
512
|
"warning-list-too-many-info": "niet vertaald",
|
|
455
513
|
"warning-list-show-anyway": "niet vertaald",
|
|
456
514
|
"warning-list-adjust-filter": "niet vertaald",
|
|
515
|
+
"warning-list-batch-delete-checkbox": "Selecteer voor bulk verwijderen",
|
|
457
516
|
"area-object-loader-title": "Gebieden & Objecten",
|
|
458
517
|
"add-button": "Toevoegen",
|
|
459
518
|
"replace-button": "Vervangen",
|
|
@@ -462,9 +521,12 @@ var nl = {
|
|
|
462
521
|
"area-object-loader-no-areas-objects": "Geen gebieden of objecten gevonden",
|
|
463
522
|
objects: "Objecten",
|
|
464
523
|
areas: "Gebieden",
|
|
524
|
+
"filter-select": "Selecteer",
|
|
465
525
|
"filter-select-all": "Selecteer alles",
|
|
526
|
+
"filter-deselect-all": "Deselecteer alles",
|
|
466
527
|
"filter-no-results": "Geen resultaten",
|
|
467
528
|
"filter-all": "Alle",
|
|
529
|
+
"filter-none": "Geen",
|
|
468
530
|
"filter-options": "Filter opties",
|
|
469
531
|
"filter-show-all": "Alles tonen",
|
|
470
532
|
"filter-hide-all": "Alles verbergen",
|
|
@@ -562,7 +624,21 @@ var nl = {
|
|
|
562
624
|
"maritime-wind-change-warning": "De ingevulde wind wijziging overschrijdt 180°. Controleer of ruimend / krimpend klopt.",
|
|
563
625
|
"maritime-wind-change-error": "Een wind wijziging van minder dan 45° is niet toegestaan.",
|
|
564
626
|
"maritime-button-extend": "Verlengen +24h",
|
|
565
|
-
"maritime-button-extending": "Verlengen"
|
|
627
|
+
"maritime-button-extending": "Verlengen",
|
|
628
|
+
"warning-event-summary-dialog-title": "Samenvatting",
|
|
629
|
+
"warning-event-summary-dialog-clear-button": "Verwijder",
|
|
630
|
+
"warning-event-summary-dialog-clear-button-title": "Verwijder samenvatting",
|
|
631
|
+
"warning-event-summary-dialog-OK-button": "Voeg to",
|
|
632
|
+
"warning-event-summary-dialog-OK-button-title": "Voeg samenvatting toe aan het formulier",
|
|
633
|
+
"warning-event-summary-language-original": "Origineel: Nederlands",
|
|
634
|
+
"warning-event-summary-language-translation": "Vertaling: Engels",
|
|
635
|
+
"warning-event-summary-headline-original": "Koptekst",
|
|
636
|
+
"warning-event-summary-headline-translation": "Koptekst",
|
|
637
|
+
"warning-event-summary-concise-summary-original": "Beknopte samenvatting",
|
|
638
|
+
"warning-event-summary-concise-summary-translation": "Beknopte samenvatting",
|
|
639
|
+
"warning-event-summary-description-original": "Gedetailleerde omschrijving",
|
|
640
|
+
"warning-event-summary-description-translation": "Gedetailleerde omschrijving",
|
|
641
|
+
"warning-event-summary-max-chars": "tekens"
|
|
566
642
|
};
|
|
567
643
|
var fi = {
|
|
568
644
|
"drawing-tool-form-tools": "Työkalut",
|
|
@@ -605,6 +681,20 @@ var fi = {
|
|
|
605
681
|
"area-manager-share-menu-edit": "Muokkaa",
|
|
606
682
|
"area-manager-share-menu-clear": "Tyhjennä valinnat",
|
|
607
683
|
"public-warning-title": "Julkiset varoitukset",
|
|
684
|
+
"public-warning-event-title": "Julkinen varoitustapahtuma",
|
|
685
|
+
"public-warning-event-incident": "Tapaus",
|
|
686
|
+
"public-warning-event-warning-type": "Varoitustyyppi",
|
|
687
|
+
"public-warning-event-type-early-warning": "Ennakkovaroitus",
|
|
688
|
+
"public-warning-event-type-warning": "Varoitus",
|
|
689
|
+
"public-warning-event-summary": "Yhteenveto",
|
|
690
|
+
"public-warning-event-translation": "Käännös",
|
|
691
|
+
"public-warning-event-button-cancel": "Peruuta",
|
|
692
|
+
"public-warning-event-button-delete": "Poista",
|
|
693
|
+
"public-warning-event-button-save-draft": "Tallenna luonnoksena",
|
|
694
|
+
"public-warning-event-button-publish": "Julkaise",
|
|
695
|
+
"public-warning-event-stop": "Pysäytä",
|
|
696
|
+
"public-warning-event-delete": "Poista",
|
|
697
|
+
"public-warning-event-add-warning": "Lisää varoitus",
|
|
608
698
|
"maritime-warning-coastal-title": "ei käännetty",
|
|
609
699
|
"maritime-warning-northsea-title": "ei käännetty",
|
|
610
700
|
"close-warning-dialog-title": "Sulje varoitukset",
|
|
@@ -661,6 +751,12 @@ var fi = {
|
|
|
661
751
|
"warning-dialog-delete-confirm": "Poista",
|
|
662
752
|
"warning-dialog-delete-description": "Oletko varma, että haluat poistaa varoituksen?",
|
|
663
753
|
"warning-dialog-delete-islocked": "Tämä varoitus on editointitilassa toisen käyttäjän toimesta",
|
|
754
|
+
"warning-dialog-delete-all-succes": "ei käännetty",
|
|
755
|
+
"warning-dialog-delete-all-title": "ei käännetty",
|
|
756
|
+
"warning-dialog-delete-all-confirm": "ei käännetty",
|
|
757
|
+
"warning-dialog-delete-all-description": "ei käännetty",
|
|
758
|
+
"warning-dialog-delete-all-button": "ei käännetty",
|
|
759
|
+
"warning-dialog-delete-all-failed": "ei käännetty",
|
|
664
760
|
"warning-save-succes": "Julkinen varoitus tallannettu onnistuneesti",
|
|
665
761
|
"warning-publish-succes": "Julkinen varoitus tallennettu onnistuneesti",
|
|
666
762
|
"warning-editor-user-viewer": "Katselu",
|
|
@@ -699,6 +795,7 @@ var fi = {
|
|
|
699
795
|
"warning-list-too-many-info": "ei käännetty",
|
|
700
796
|
"warning-list-show-anyway": "ei käännetty",
|
|
701
797
|
"warning-list-adjust-filter": "ei käännetty",
|
|
798
|
+
"warning-list-batch-delete-checkbox": "ei käännetty",
|
|
702
799
|
"area-object-loader-title": "ei käännetty",
|
|
703
800
|
"add-button": "ei käännetty",
|
|
704
801
|
"replace-button": "ei käännetty",
|
|
@@ -707,9 +804,12 @@ var fi = {
|
|
|
707
804
|
"area-object-loader-no-areas-objects": "ei käännetty",
|
|
708
805
|
objects: "ei käännetty",
|
|
709
806
|
areas: "ei käännetty",
|
|
807
|
+
"filter-select": "Valitse",
|
|
710
808
|
"filter-select-all": "ei käännetty",
|
|
809
|
+
"filter-deselect-all": "Poista kaikki valinnat",
|
|
711
810
|
"filter-no-results": "ei käännetty",
|
|
712
811
|
"filter-all": "Kaikki",
|
|
812
|
+
"filter-none": "Ei mitään",
|
|
713
813
|
"filter-options": "ei käännetty",
|
|
714
814
|
"filter-show-all": "ei käännetty",
|
|
715
815
|
"filter-hide-all": "ei käännetty",
|
|
@@ -759,7 +859,21 @@ var fi = {
|
|
|
759
859
|
cancelling: "Peruuttaminen",
|
|
760
860
|
loading: "Ladataan...",
|
|
761
861
|
"maritime-editor-off": "Et ole enää {{domain}} -merivaroitusten muokkaaja",
|
|
762
|
-
"maritime-warning-post-success": "Varoitus julkaistu onnistuneesti"
|
|
862
|
+
"maritime-warning-post-success": "Varoitus julkaistu onnistuneesti",
|
|
863
|
+
"warning-event-summary-dialog-title": "ei käännetty",
|
|
864
|
+
"warning-event-summary-dialog-clear-button": "ei käännetty",
|
|
865
|
+
"warning-event-summary-dialog-clear-button-title": "ei käännetty",
|
|
866
|
+
"warning-event-summary-dialog-OK-button": "ei käännetty",
|
|
867
|
+
"warning-event-summary-dialog-OK-button-title": "ei käännetty",
|
|
868
|
+
"warning-event-summary-language-original": "ei käännetty",
|
|
869
|
+
"warning-event-summary-language-translation": "ei käännetty",
|
|
870
|
+
"warning-event-summary-headline-original": "ei käännetty",
|
|
871
|
+
"warning-event-summary-headline-translation": "ei käännetty",
|
|
872
|
+
"warning-event-summary-concise-summary-original": "ei käännetty",
|
|
873
|
+
"warning-event-summary-concise-summary-translation": "ei käännetty",
|
|
874
|
+
"warning-event-summary-description-original": "ei käännetty",
|
|
875
|
+
"warning-event-summary-description-translation": "ei käännetty",
|
|
876
|
+
"warning-event-summary-max-chars": "ei käännetty"
|
|
763
877
|
};
|
|
764
878
|
var no = {
|
|
765
879
|
"drawing-tool-form-tools": "Verktøy",
|
|
@@ -802,6 +916,20 @@ var no = {
|
|
|
802
916
|
"area-manager-share-menu-edit": "ikke oversatt",
|
|
803
917
|
"area-manager-share-menu-clear": "ikke oversatt",
|
|
804
918
|
"public-warning-title": "Farevarsel",
|
|
919
|
+
"public-warning-event-title": "Offentlig varselhendelse",
|
|
920
|
+
"public-warning-event-incident": "Hendelse",
|
|
921
|
+
"public-warning-event-warning-type": "Varseltype",
|
|
922
|
+
"public-warning-event-type-early-warning": "Tidlig varsel",
|
|
923
|
+
"public-warning-event-type-warning": "Varsel",
|
|
924
|
+
"public-warning-event-summary": "Sammendrag",
|
|
925
|
+
"public-warning-event-translation": "Oversettelse",
|
|
926
|
+
"public-warning-event-button-cancel": "Avbryt",
|
|
927
|
+
"public-warning-event-button-delete": "Slett",
|
|
928
|
+
"public-warning-event-button-save-draft": "Lagre som utkast",
|
|
929
|
+
"public-warning-event-button-publish": "Publiser",
|
|
930
|
+
"public-warning-event-stop": "Stopp",
|
|
931
|
+
"public-warning-event-delete": "Slett",
|
|
932
|
+
"public-warning-event-add-warning": "Legg til et varsel",
|
|
805
933
|
"maritime-warning-coastal-title": "ikke oversatt",
|
|
806
934
|
"maritime-warning-northsea-title": "ikke oversatt",
|
|
807
935
|
"close-warning-dialog-title": "Lukk farevarsel",
|
|
@@ -857,7 +985,13 @@ var no = {
|
|
|
857
985
|
"warning-dialog-delete-title": "Slett varsel",
|
|
858
986
|
"warning-dialog-delete-confirm": "Slett",
|
|
859
987
|
"warning-dialog-delete-description": "Er du sikker på at du vil slette varselet?",
|
|
860
|
-
"warning-dialog-delete-islocked": "
|
|
988
|
+
"warning-dialog-delete-islocked": "Varsel er i endringsmodus av en annen bruker.",
|
|
989
|
+
"warning-dialog-delete-all-succes": "ikke oversatt",
|
|
990
|
+
"warning-dialog-delete-all-title": "ikke oversatt",
|
|
991
|
+
"warning-dialog-delete-all-confirm": "ikke oversatt",
|
|
992
|
+
"warning-dialog-delete-all-description": "ikke oversatt",
|
|
993
|
+
"warning-dialog-delete-all-button": "ikke oversatt",
|
|
994
|
+
"warning-dialog-delete-all-failed": "ikke oversatt",
|
|
861
995
|
"warning-save-succes": "Farevarselet er lagret!",
|
|
862
996
|
"warning-publish-succes": "Farevarselet er publisert!",
|
|
863
997
|
"warning-editor-user-viewer": "Visningsmodus",
|
|
@@ -896,6 +1030,7 @@ var no = {
|
|
|
896
1030
|
"warning-list-header-levels": "Grad",
|
|
897
1031
|
"warning-list-header-status": "Status",
|
|
898
1032
|
"warning-list-header-draft": "UTKAST",
|
|
1033
|
+
"warning-list-batch-delete-checkbox": "ikke oversatt",
|
|
899
1034
|
"area-object-loader-title": "Områder og objekter",
|
|
900
1035
|
"add-button": "Legg til",
|
|
901
1036
|
"replace-button": "Bytt ut",
|
|
@@ -904,9 +1039,12 @@ var no = {
|
|
|
904
1039
|
"area-object-loader-no-areas-objects": "Ingen områder eller objekter funnet",
|
|
905
1040
|
objects: "Objekter",
|
|
906
1041
|
areas: "Områder",
|
|
1042
|
+
"filter-select": "Velg",
|
|
907
1043
|
"filter-select-all": "Velg alle",
|
|
1044
|
+
"filter-deselect-all": "Avmarker alle",
|
|
908
1045
|
"filter-no-results": "Ingen resultat",
|
|
909
1046
|
"filter-all": "Alle",
|
|
1047
|
+
"filter-none": "Ingen",
|
|
910
1048
|
"filter-options": "Filtervalg",
|
|
911
1049
|
"filter-show-all": "Vis alle",
|
|
912
1050
|
"filter-hide-all": "Skjel alle",
|
|
@@ -954,7 +1092,21 @@ var no = {
|
|
|
954
1092
|
"error-auth-login": "Denne delen er passordbeskyttet. Vennligst logg inn.",
|
|
955
1093
|
"cancel-warningType": "Cancel {{warningType}}",
|
|
956
1094
|
cancelling: "Cancelling",
|
|
957
|
-
loading: "Laster..."
|
|
1095
|
+
loading: "Laster...",
|
|
1096
|
+
"warning-event-summary-dialog-title": "Sammendrag",
|
|
1097
|
+
"warning-event-summary-dialog-clear-button": "Fjern",
|
|
1098
|
+
"warning-event-summary-dialog-clear-button-title": "Fjern sammendrag",
|
|
1099
|
+
"warning-event-summary-language-original": "ikke oversatt",
|
|
1100
|
+
"warning-event-summary-language-translation": "ikke oversatt",
|
|
1101
|
+
"warning-event-summary-dialog-OK-button": "Legge til",
|
|
1102
|
+
"warning-event-summary-dialog-OK-button-title": "Legg til sammendrag i skjemaet",
|
|
1103
|
+
"warning-event-summary-headline-original": "Overskrift",
|
|
1104
|
+
"warning-event-summary-headline-translation": "Overskrift",
|
|
1105
|
+
"warning-event-summary-concise-summary-original": "Kortfattet sammendrag",
|
|
1106
|
+
"warning-event-summary-concise-summary-translation": "Kortfattet sammendrag",
|
|
1107
|
+
"warning-event-summary-description-original": "Detaljert beskrivelse",
|
|
1108
|
+
"warning-event-summary-description-translation": "Detaljert beskrivelse",
|
|
1109
|
+
"warning-event-summary-max-chars": "karakterer"
|
|
958
1110
|
};
|
|
959
1111
|
var warningsTranslations = {
|
|
960
1112
|
en: en,
|
|
@@ -2189,6 +2341,7 @@ var initialFilters = {
|
|
|
2189
2341
|
* Copyright 2024 - The Norwegian Meteorological Institute (MET Norway)
|
|
2190
2342
|
* */
|
|
2191
2343
|
var publicWarningDialogType = uiTypes.DialogTypes.PublicWarnings;
|
|
2344
|
+
var warningEventDialogType = uiTypes.DialogTypes.WarningsEvent;
|
|
2192
2345
|
|
|
2193
2346
|
/* *
|
|
2194
2347
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -2523,6 +2676,11 @@ var MaritimeWarningAction;
|
|
|
2523
2676
|
MaritimeWarningAction["UPDATE"] = "UPDATE";
|
|
2524
2677
|
MaritimeWarningAction["EXTEND"] = "EXTEND";
|
|
2525
2678
|
})(MaritimeWarningAction || (MaritimeWarningAction = {}));
|
|
2679
|
+
var WarningEventType;
|
|
2680
|
+
(function (WarningEventType) {
|
|
2681
|
+
WarningEventType["WARNING"] = "WARNING";
|
|
2682
|
+
WarningEventType["EARLY_WARNING"] = "EARLY_WARNING";
|
|
2683
|
+
})(WarningEventType || (WarningEventType = {}));
|
|
2526
2684
|
|
|
2527
2685
|
var getWarningPhenomenaIcon = function getWarningPhenomenaIcon(key) {
|
|
2528
2686
|
switch (key) {
|
|
@@ -5102,7 +5260,7 @@ var DrawingToolForm = function DrawingToolForm(_ref) {
|
|
|
5102
5260
|
var additionalStrokeOpacity = 0.8;
|
|
5103
5261
|
onChangeProperties({
|
|
5104
5262
|
'fill-opacity': newOpacity,
|
|
5105
|
-
'stroke-opacity': clamp(newOpacity + additionalStrokeOpacity, 0.01, 1)
|
|
5263
|
+
'stroke-opacity': clamp$1(newOpacity + additionalStrokeOpacity, 0.01, 1)
|
|
5106
5264
|
});
|
|
5107
5265
|
}, [onChangeProperties]);
|
|
5108
5266
|
var onBlurName = React.useCallback(function (event) {
|
|
@@ -7592,12 +7750,12 @@ var DescriptionField = function DescriptionField(_ref) {
|
|
|
7592
7750
|
children: [jsxs(Tabs, {
|
|
7593
7751
|
"aria-label": "description tabs",
|
|
7594
7752
|
onChange: handleChange,
|
|
7595
|
-
value: activeTab,
|
|
7596
7753
|
sx: isDisabled ? {
|
|
7597
7754
|
'& .MuiTabs-indicator': {
|
|
7598
7755
|
display: 'none'
|
|
7599
7756
|
}
|
|
7600
7757
|
} : undefined,
|
|
7758
|
+
value: activeTab,
|
|
7601
7759
|
children: [jsx(Tab, Object.assign({
|
|
7602
7760
|
disabled: isDisabled,
|
|
7603
7761
|
label: t('warning-description-original'),
|
|
@@ -9083,7 +9241,9 @@ var WarningListHeaderContent = function WarningListHeaderContent(_ref) {
|
|
|
9083
9241
|
},
|
|
9084
9242
|
sx: Object.assign({}, Array.isArray(props.sx) ? Object.assign.apply(Object, [{}].concat(props.sx)) : props.sx, {
|
|
9085
9243
|
width: width,
|
|
9086
|
-
cursor: _onClick ? 'pointer' : 'default'
|
|
9244
|
+
cursor: _onClick ? 'pointer' : 'default',
|
|
9245
|
+
display: 'flex',
|
|
9246
|
+
justifyContent: 'flex-end'
|
|
9087
9247
|
}),
|
|
9088
9248
|
children: jsxs(Box, {
|
|
9089
9249
|
sx: {
|
|
@@ -11002,7 +11162,6 @@ var PublicWarningsForm = function PublicWarningsForm(props) {
|
|
|
11002
11162
|
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
11003
11163
|
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
11004
11164
|
* */
|
|
11005
|
-
var PUBLIC_WARNING_DRAW_TOOL_ID = 'publicWarningGeometry';
|
|
11006
11165
|
var getDrawLayerId = function getDrawLayerId(mapId) {
|
|
11007
11166
|
return "drawLayer-" + PUBLIC_WARNING_DRAW_TOOL_ID + "-" + mapId;
|
|
11008
11167
|
};
|
|
@@ -11019,14 +11178,33 @@ var usePublicWarningMapDraw = function usePublicWarningMapDraw(_ref) {
|
|
|
11019
11178
|
var prevActiveDrawModeRef = React.useRef('');
|
|
11020
11179
|
var linkedMapIdsRef = React.useRef(linkedMapIds);
|
|
11021
11180
|
React.useEffect(function () {
|
|
11181
|
+
var prevMapIds = linkedMapIdsRef.current;
|
|
11182
|
+
var removedMapIds = prevMapIds.filter(function (id) {
|
|
11183
|
+
return !linkedMapIds.includes(id);
|
|
11184
|
+
});
|
|
11185
|
+
removedMapIds.forEach(function (mapId) {
|
|
11186
|
+
dispatch(layerActions.layerDelete({
|
|
11187
|
+
mapId: mapId,
|
|
11188
|
+
layerId: getDrawLayerId(mapId)
|
|
11189
|
+
}));
|
|
11190
|
+
});
|
|
11022
11191
|
linkedMapIdsRef.current = linkedMapIds;
|
|
11023
|
-
}, [linkedMapIds]);
|
|
11192
|
+
}, [linkedMapIds, dispatch]);
|
|
11024
11193
|
var activeMapId = linkedMapIds[0];
|
|
11025
11194
|
var activeDrawLayerId = activeMapId ? getDrawLayerId(activeMapId) : '';
|
|
11026
11195
|
var activeDrawModeId = useSelector(function (store) {
|
|
11027
11196
|
var _store$drawingtools;
|
|
11028
11197
|
return ((_store$drawingtools = store.drawingtools) == null || (_store$drawingtools = _store$drawingtools.entities[PUBLIC_WARNING_DRAW_TOOL_ID]) == null ? void 0 : _store$drawingtools.activeDrawModeId) || '';
|
|
11029
11198
|
});
|
|
11199
|
+
React.useEffect(function () {
|
|
11200
|
+
if (linkedMapIds.length > 0 || activeDrawModeId === '') {
|
|
11201
|
+
return;
|
|
11202
|
+
}
|
|
11203
|
+
dispatch(drawingToolActions.changeDrawToolMode({
|
|
11204
|
+
drawToolId: PUBLIC_WARNING_DRAW_TOOL_ID,
|
|
11205
|
+
drawModeId: ''
|
|
11206
|
+
}));
|
|
11207
|
+
}, [activeDrawModeId, dispatch, linkedMapIds]);
|
|
11030
11208
|
var activeDrawLayerGeoJSON = useSelector(function (store) {
|
|
11031
11209
|
var _store$layers;
|
|
11032
11210
|
return activeDrawLayerId ? (_store$layers = store.layers) == null || (_store$layers = _store$layers.byId[activeDrawLayerId]) == null ? void 0 : _store$layers.geojson : undefined;
|
|
@@ -11156,6 +11334,16 @@ var usePublicWarningMapDraw = function usePublicWarningMapDraw(_ref) {
|
|
|
11156
11334
|
};
|
|
11157
11335
|
};
|
|
11158
11336
|
|
|
11337
|
+
var getStoredDrawLayerGeoJSON = function getStoredDrawLayerGeoJSON(layersById, linkedMapIds, drawToolId) {
|
|
11338
|
+
var _layersById;
|
|
11339
|
+
var linkedMapIdWithLayer = [].concat(linkedMapIds).reverse().find(function (mapId) {
|
|
11340
|
+
return layersById == null ? void 0 : layersById["drawLayer-" + drawToolId + "-" + mapId];
|
|
11341
|
+
});
|
|
11342
|
+
if (!linkedMapIdWithLayer) {
|
|
11343
|
+
return undefined;
|
|
11344
|
+
}
|
|
11345
|
+
return layersById == null || (_layersById = layersById["drawLayer-" + drawToolId + "-" + linkedMapIdWithLayer]) == null ? void 0 : _layersById.geojson;
|
|
11346
|
+
};
|
|
11159
11347
|
var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
|
|
11160
11348
|
var _warning$warningDetai;
|
|
11161
11349
|
var editor = _ref.editor,
|
|
@@ -11341,13 +11529,11 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect(_ref) {
|
|
|
11341
11529
|
});
|
|
11342
11530
|
var storedStartGeoJSON = useSelector(function (state) {
|
|
11343
11531
|
var _state$layers;
|
|
11344
|
-
|
|
11345
|
-
return layer ? layer.geojson : undefined;
|
|
11532
|
+
return getStoredDrawLayerGeoJSON((_state$layers = state.layers) == null ? void 0 : _state$layers.byId, selectedMapIds, 'sigmetStartGeometry');
|
|
11346
11533
|
});
|
|
11347
11534
|
var storedEndGeoJSON = useSelector(function (state) {
|
|
11348
11535
|
var _state$layers2;
|
|
11349
|
-
|
|
11350
|
-
return layer ? layer.geojson : undefined;
|
|
11536
|
+
return getStoredDrawLayerGeoJSON((_state$layers2 = state.layers) == null ? void 0 : _state$layers2.byId, selectedMapIds, 'sigmetEndGeometry');
|
|
11351
11537
|
});
|
|
11352
11538
|
var onGeometryChange = React.useCallback(function (geoJSON) {
|
|
11353
11539
|
dispatch(warningsFormActions.addArea({
|
|
@@ -11415,6 +11601,9 @@ var getFilterParams = function getFilterParams(areas, searchQuery) {
|
|
|
11415
11601
|
});
|
|
11416
11602
|
};
|
|
11417
11603
|
var WARNING_DIALOG_DRAFT_LAYER_ID = 'warning-dialog-draft-area';
|
|
11604
|
+
var createWarningDialogAreaLayerId = function createWarningDialogAreaLayerId(areaId, index) {
|
|
11605
|
+
return areaId != null ? areaId : WARNING_DIALOG_DRAFT_LAYER_ID + "-" + index;
|
|
11606
|
+
};
|
|
11418
11607
|
var useAreaRequest = function useAreaRequest(isDialogOpen) {
|
|
11419
11608
|
var _useState = useState([]),
|
|
11420
11609
|
areas = _useState[0],
|
|
@@ -11457,7 +11646,7 @@ var useAreaRequest = function useAreaRequest(isDialogOpen) {
|
|
|
11457
11646
|
};
|
|
11458
11647
|
};
|
|
11459
11648
|
var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
|
|
11460
|
-
var _selectedWarning$warn, _selectedWarning$warn2,
|
|
11649
|
+
var _selectedWarning$warn, _selectedWarning$warn2, _selectedWarning$id, _selectedWarning$warn3;
|
|
11461
11650
|
var bounds = _ref.bounds,
|
|
11462
11651
|
_ref$source = _ref.source,
|
|
11463
11652
|
source = _ref$source === void 0 ? 'app' : _ref$source;
|
|
@@ -11502,27 +11691,49 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
|
|
|
11502
11691
|
var isWarningDialogOpen = useSelector(function (store) {
|
|
11503
11692
|
return uiSelectors.getisDialogOpen(store, publicWarningDialogType);
|
|
11504
11693
|
});
|
|
11505
|
-
var
|
|
11506
|
-
|
|
11507
|
-
|
|
11508
|
-
|
|
11509
|
-
styledGeoJSON.features.forEach(function (feature) {
|
|
11510
|
-
// eslint-disable-next-line no-param-reassign
|
|
11511
|
-
feature.properties = Object.assign({}, feature.properties, {
|
|
11512
|
-
warningLevel: selectedWarning == null ? void 0 : selectedWarning.warningDetail.level,
|
|
11513
|
-
hover: true
|
|
11514
|
-
});
|
|
11694
|
+
var hasPublicWarningDrawLayer = useSelector(function (store) {
|
|
11695
|
+
var _store$layers$allIds, _store$layers;
|
|
11696
|
+
return ((_store$layers$allIds = (_store$layers = store.layers) == null ? void 0 : _store$layers.allIds) != null ? _store$layers$allIds : []).some(function (layerId) {
|
|
11697
|
+
return layerId.startsWith("drawLayer-" + PUBLIC_WARNING_DRAW_TOOL_ID + "-");
|
|
11515
11698
|
});
|
|
11516
|
-
}
|
|
11517
|
-
var
|
|
11518
|
-
var
|
|
11699
|
+
});
|
|
11700
|
+
var isAviationWarning = (selectedWarning == null || (_selectedWarning$warn = selectedWarning.warningDetail) == null ? void 0 : _selectedWarning$warn.level) === 'SIG' || (selectedWarning == null || (_selectedWarning$warn2 = selectedWarning.warningDetail) == null ? void 0 : _selectedWarning$warn2.level) === 'AIR';
|
|
11701
|
+
var warningDialogOriginalId = (_selectedWarning$id = selectedWarning == null ? void 0 : selectedWarning.id) != null ? _selectedWarning$id : selectedWarning == null || (_selectedWarning$warn3 = selectedWarning.warningDetail) == null ? void 0 : _selectedWarning$warn3.id;
|
|
11519
11702
|
var warningDialogFeatureLayersById = React.useMemo(function () {
|
|
11520
|
-
var
|
|
11521
|
-
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
|
|
11525
|
-
|
|
11703
|
+
var _selectedWarning$warn4, _selectedWarning$warn5;
|
|
11704
|
+
// Aviation warnings render their active geometry via draw layers/form state.
|
|
11705
|
+
// Publishing warning-dialog feature-sync layers for them creates a stale
|
|
11706
|
+
// mirror from persisted warningDetail.areas while editing.
|
|
11707
|
+
if (!isWarningDialogOpen || isAviationWarning || hasPublicWarningDrawLayer) {
|
|
11708
|
+
return {};
|
|
11709
|
+
}
|
|
11710
|
+
return ((_selectedWarning$warn4 = selectedWarning == null || (_selectedWarning$warn5 = selectedWarning.warningDetail) == null ? void 0 : _selectedWarning$warn5.areas) != null ? _selectedWarning$warn4 : []).reduce(function (layersById, area, index) {
|
|
11711
|
+
var _selectedWarning$warn6, _ref3, _Object$assign;
|
|
11712
|
+
var styledGeoJSON = warningLevelFeatureColors(selectedWarning == null || (_selectedWarning$warn6 = selectedWarning.warningDetail) == null ? void 0 : _selectedWarning$warn6.level, area.geoJSON, isAviationWarning);
|
|
11713
|
+
if (!styledGeoJSON.features.length) {
|
|
11714
|
+
return layersById;
|
|
11715
|
+
}
|
|
11716
|
+
var layerId = createWarningDialogAreaLayerId(area.areaId, index);
|
|
11717
|
+
var geojson = Object.assign({}, styledGeoJSON, {
|
|
11718
|
+
features: styledGeoJSON.features.map(function (feature) {
|
|
11719
|
+
var _ref2;
|
|
11720
|
+
return Object.assign({}, feature, {
|
|
11721
|
+
properties: Object.assign({}, feature.properties, {
|
|
11722
|
+
originalId: (_ref2 = warningDialogOriginalId != null ? warningDialogOriginalId : area.areaId) != null ? _ref2 : area.published_warning_uuid,
|
|
11723
|
+
warningLevel: selectedWarning == null ? void 0 : selectedWarning.warningDetail.level,
|
|
11724
|
+
hover: true
|
|
11725
|
+
})
|
|
11726
|
+
});
|
|
11727
|
+
})
|
|
11728
|
+
});
|
|
11729
|
+
return Object.assign({}, layersById, (_Object$assign = {}, _Object$assign[layerId] = {
|
|
11730
|
+
id: layerId,
|
|
11731
|
+
geojson: geojson,
|
|
11732
|
+
originalId: (_ref3 = warningDialogOriginalId != null ? warningDialogOriginalId : area.areaId) != null ? _ref3 : area.published_warning_uuid
|
|
11733
|
+
}, _Object$assign));
|
|
11734
|
+
}, {});
|
|
11735
|
+
}, [isAviationWarning, hasPublicWarningDrawLayer, isWarningDialogOpen, selectedWarning, warningDialogOriginalId]);
|
|
11736
|
+
var shouldPublishWarningDialogLayer = Object.keys(warningDialogFeatureLayersById).length > 0;
|
|
11526
11737
|
useUpdateFeatureSyncLayers(warningDialogFeatureLayersById, shouldPublishWarningDialogLayer ? 'warning-dialog' : undefined);
|
|
11527
11738
|
var filterParams = React.useMemo(function () {
|
|
11528
11739
|
return getFilterParams(areas, searchQuery);
|
|
@@ -11580,9 +11791,9 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
|
|
|
11580
11791
|
var onSearch = function onSearch(queryString) {
|
|
11581
11792
|
return setSearchQuery(queryString);
|
|
11582
11793
|
};
|
|
11583
|
-
var onAddArea = function onAddArea(
|
|
11584
|
-
var geoJSON =
|
|
11585
|
-
objectName =
|
|
11794
|
+
var onAddArea = function onAddArea(_ref4) {
|
|
11795
|
+
var geoJSON = _ref4.geoJSON,
|
|
11796
|
+
objectName = _ref4.objectName;
|
|
11586
11797
|
dispatch(warningsFormActions.addArea({
|
|
11587
11798
|
area: {
|
|
11588
11799
|
geoJSON: geoJSON,
|
|
@@ -11590,9 +11801,9 @@ var AreaObjectLoaderConnect = function AreaObjectLoaderConnect(_ref) {
|
|
|
11590
11801
|
}
|
|
11591
11802
|
}));
|
|
11592
11803
|
};
|
|
11593
|
-
var onRemoveArea = function onRemoveArea(
|
|
11594
|
-
var geoJSON =
|
|
11595
|
-
objectName =
|
|
11804
|
+
var onRemoveArea = function onRemoveArea(_ref5) {
|
|
11805
|
+
var geoJSON = _ref5.geoJSON,
|
|
11806
|
+
objectName = _ref5.objectName;
|
|
11596
11807
|
dispatch(warningsFormActions.removeArea({
|
|
11597
11808
|
area: {
|
|
11598
11809
|
geoJSON: geoJSON,
|
|
@@ -11964,209 +12175,1912 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
|
|
|
11964
12175
|
});
|
|
11965
12176
|
};
|
|
11966
12177
|
|
|
11967
|
-
|
|
11968
|
-
|
|
11969
|
-
|
|
11970
|
-
|
|
11971
|
-
|
|
11972
|
-
|
|
11973
|
-
|
|
11974
|
-
|
|
11975
|
-
|
|
11976
|
-
|
|
11977
|
-
|
|
11978
|
-
|
|
11979
|
-
|
|
11980
|
-
|
|
11981
|
-
|
|
11982
|
-
|
|
11983
|
-
|
|
11984
|
-
|
|
11985
|
-
|
|
11986
|
-
|
|
11987
|
-
|
|
11988
|
-
|
|
11989
|
-
|
|
11990
|
-
|
|
11991
|
-
|
|
11992
|
-
|
|
11993
|
-
|
|
11994
|
-
|
|
11995
|
-
|
|
11996
|
-
|
|
11997
|
-
|
|
11998
|
-
|
|
11999
|
-
|
|
12000
|
-
event.stopPropagation();
|
|
12001
|
-
setAnchorEl(null);
|
|
12002
|
-
};
|
|
12003
|
-
var onCreateNewWarning = function onCreateNewWarning(warningType, event) {
|
|
12004
|
-
onCreateWarning(warningType);
|
|
12005
|
-
handleClose(event);
|
|
12006
|
-
};
|
|
12007
|
-
return jsxs(Fragment, {
|
|
12008
|
-
children: [jsxs(CustomToggleButton, {
|
|
12009
|
-
id: buttonId,
|
|
12010
|
-
onClick: handleClick,
|
|
12011
|
-
sx: Object.assign({
|
|
12012
|
-
textTransform: 'initial!important',
|
|
12013
|
-
marginBottom: '8px',
|
|
12014
|
-
fontSize: '12px',
|
|
12015
|
-
height: '32px!important',
|
|
12016
|
-
whiteSpace: 'nowrap',
|
|
12017
|
-
minWidth: 'auto',
|
|
12018
|
-
paddingRight: '12px!important'
|
|
12019
|
-
}, isOpen ? {
|
|
12020
|
-
'&.MuiToggleButton-root.primary': {
|
|
12021
|
-
backgroundColor: 'geowebColors.buttons.primary.mouseOver.fill'
|
|
12022
|
-
}
|
|
12023
|
-
} : {}),
|
|
12024
|
-
children: [jsx(Add, {}), t('warning-list-button_create')]
|
|
12025
|
-
}), jsxs(Menu, {
|
|
12026
|
-
anchorEl: anchorEl,
|
|
12027
|
-
anchorOrigin: {
|
|
12028
|
-
vertical: 'bottom',
|
|
12029
|
-
horizontal: 'center'
|
|
12030
|
-
},
|
|
12031
|
-
onClose: function onClose(event, reason) {
|
|
12032
|
-
if (reason === 'tabKeyDown') {
|
|
12033
|
-
return;
|
|
12034
|
-
}
|
|
12035
|
-
handleClose(event);
|
|
12036
|
-
},
|
|
12037
|
-
open: isOpen,
|
|
12038
|
-
slotProps: {
|
|
12039
|
-
root: {
|
|
12040
|
-
slotProps: {
|
|
12041
|
-
backdrop: {
|
|
12042
|
-
style: {
|
|
12043
|
-
opacity: 0,
|
|
12044
|
-
transition: 'none'
|
|
12045
|
-
}
|
|
12046
|
-
}
|
|
12047
|
-
}
|
|
12048
|
-
},
|
|
12049
|
-
list: {
|
|
12050
|
-
style: {
|
|
12051
|
-
padding: '0px',
|
|
12052
|
-
minWidth: menuMinWidth || undefined
|
|
12053
|
-
}
|
|
12054
|
-
}
|
|
12055
|
-
},
|
|
12056
|
-
transformOrigin: {
|
|
12057
|
-
vertical: 'top',
|
|
12058
|
-
horizontal: 'center'
|
|
12059
|
-
},
|
|
12060
|
-
children: [showPublicWarningOption ? jsx(MenuItem, {
|
|
12061
|
-
onClick: function onClick(event) {
|
|
12062
|
-
onCreateNewWarning('public', event);
|
|
12063
|
-
},
|
|
12064
|
-
children: jsx(ListItemText, {
|
|
12065
|
-
children: t('public-warning-title').toUpperCase()
|
|
12066
|
-
})
|
|
12067
|
-
}, "Public") : null, showAirMetOption ? jsx(MenuItem, {
|
|
12068
|
-
onClick: function onClick(event) {
|
|
12069
|
-
onCreateNewWarning('airmet', event);
|
|
12070
|
-
},
|
|
12071
|
-
children: jsx(ListItemText, {
|
|
12072
|
-
children: BUTTON_AIRMET
|
|
12073
|
-
})
|
|
12074
|
-
}, "Airmet") : null, showSigmetOption ? jsx(MenuItem, {
|
|
12075
|
-
onClick: function onClick(event) {
|
|
12076
|
-
onCreateNewWarning('sigmet', event);
|
|
12077
|
-
},
|
|
12078
|
-
children: jsx(ListItemText, {
|
|
12079
|
-
children: BUTTON_SIGMET
|
|
12080
|
-
})
|
|
12081
|
-
}, "Sigmet") : null, showMartimeWarningOption ? jsxs(Box, {
|
|
12082
|
-
children: [jsx(MenuItem, {
|
|
12083
|
-
onClick: function onClick(event) {
|
|
12084
|
-
onCreateNewWarning('maritimeWarningCoastal', event);
|
|
12085
|
-
},
|
|
12086
|
-
children: jsx(ListItemText, {
|
|
12087
|
-
children: t('maritime-warning-coastal-title').toUpperCase()
|
|
12088
|
-
})
|
|
12089
|
-
}, "MaritimeWarningCoastal"), jsx(MenuItem, {
|
|
12090
|
-
onClick: function onClick(event) {
|
|
12091
|
-
onCreateNewWarning('maritimeWarningNorthSea', event);
|
|
12092
|
-
},
|
|
12093
|
-
children: jsx(ListItemText, {
|
|
12094
|
-
children: t('maritime-warning-northsea-title').toUpperCase()
|
|
12095
|
-
})
|
|
12096
|
-
}, "MaritimeWarningNorthSea")]
|
|
12097
|
-
}) : null]
|
|
12098
|
-
})]
|
|
12099
|
-
});
|
|
12178
|
+
/* *
|
|
12179
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12180
|
+
* you may not use this file except in compliance with the License.
|
|
12181
|
+
* You may obtain a copy of the License at
|
|
12182
|
+
*
|
|
12183
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12184
|
+
*
|
|
12185
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12186
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12187
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12188
|
+
* See the License for the specific language governing permissions and
|
|
12189
|
+
* limitations under the License.
|
|
12190
|
+
*
|
|
12191
|
+
* Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
12192
|
+
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
12193
|
+
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
12194
|
+
* */
|
|
12195
|
+
var warningEventTypes = [{
|
|
12196
|
+
translationKey: 'public-warning-event-type-early-warning',
|
|
12197
|
+
key: WarningEventType.EARLY_WARNING,
|
|
12198
|
+
defaultDayRange: [2, 7],
|
|
12199
|
+
minSelectableDay: 2
|
|
12200
|
+
}, {
|
|
12201
|
+
translationKey: 'public-warning-event-type-warning',
|
|
12202
|
+
key: WarningEventType.WARNING,
|
|
12203
|
+
defaultDayRange: [0, 1],
|
|
12204
|
+
minSelectableDay: 0
|
|
12205
|
+
}];
|
|
12206
|
+
var getDefaultDayRangeForType = function getDefaultDayRangeForType(type) {
|
|
12207
|
+
var _warningEventTypes$fi, _warningEventTypes$fi2;
|
|
12208
|
+
return (_warningEventTypes$fi = (_warningEventTypes$fi2 = warningEventTypes.find(function (warningType) {
|
|
12209
|
+
return warningType.key === type;
|
|
12210
|
+
})) == null ? void 0 : _warningEventTypes$fi2.defaultDayRange) != null ? _warningEventTypes$fi : [0, 1];
|
|
12100
12211
|
};
|
|
12101
|
-
|
|
12102
|
-
var
|
|
12103
|
-
|
|
12104
|
-
|
|
12105
|
-
|
|
12106
|
-
|
|
12107
|
-
|
|
12108
|
-
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12118
|
-
|
|
12119
|
-
|
|
12120
|
-
|
|
12121
|
-
|
|
12122
|
-
height: 12,
|
|
12123
|
-
color: status === PublicWarningStatus.EXPIRED || status === PublicWarningStatus.WITHDRAWN ? 'geowebColors.typographyAndIcons.inactiveText' : 'geowebColors.captions.captionStatus.rgba',
|
|
12124
|
-
display: 'block'
|
|
12125
|
-
}, _sx["@container publicWarningList (min-width: " + breakpoints.desktop + "px)"] = {
|
|
12126
|
-
display: 'none'
|
|
12127
|
-
}, _sx),
|
|
12128
|
-
children: title
|
|
12129
|
-
}), jsx(Box, {
|
|
12130
|
-
sx: {
|
|
12131
|
-
overflow: 'visible',
|
|
12132
|
-
fontSize: 12,
|
|
12133
|
-
lineHeight: 1.2,
|
|
12134
|
-
color: status === PublicWarningStatus.EXPIRED || status === PublicWarningStatus.WITHDRAWN ? 'geowebColors.typographyAndIcons.inactiveText' : 'geowebColors.typographyAndIcons.text'
|
|
12135
|
-
},
|
|
12136
|
-
children: children || '-'
|
|
12137
|
-
})]
|
|
12138
|
-
});
|
|
12212
|
+
var getMinSelectableDayForType = function getMinSelectableDayForType(type) {
|
|
12213
|
+
var _warningEventTypes$fi3, _warningEventTypes$fi4;
|
|
12214
|
+
return (_warningEventTypes$fi3 = (_warningEventTypes$fi4 = warningEventTypes.find(function (warningType) {
|
|
12215
|
+
return warningType.key === type;
|
|
12216
|
+
})) == null ? void 0 : _warningEventTypes$fi4.minSelectableDay) != null ? _warningEventTypes$fi3 : 0;
|
|
12217
|
+
};
|
|
12218
|
+
var defaultValues = {
|
|
12219
|
+
incident: '',
|
|
12220
|
+
phenomenon: '',
|
|
12221
|
+
validFrom: '',
|
|
12222
|
+
validUntil: '',
|
|
12223
|
+
warningEventType: WarningEventType.EARLY_WARNING,
|
|
12224
|
+
warnings: [],
|
|
12225
|
+
texts: {
|
|
12226
|
+
headlineOriginal: '',
|
|
12227
|
+
headlineTranslation: '',
|
|
12228
|
+
conciseSummaryOriginal: '',
|
|
12229
|
+
conciseSummaryTranslation: '',
|
|
12230
|
+
descriptionOriginal: '',
|
|
12231
|
+
descriptionTranslation: ''
|
|
12232
|
+
}
|
|
12139
12233
|
};
|
|
12140
12234
|
|
|
12141
|
-
|
|
12142
|
-
|
|
12143
|
-
|
|
12144
|
-
|
|
12145
|
-
|
|
12146
|
-
|
|
12147
|
-
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
|
|
12161
|
-
|
|
12162
|
-
|
|
12163
|
-
|
|
12164
|
-
|
|
12165
|
-
|
|
12166
|
-
|
|
12167
|
-
|
|
12168
|
-
|
|
12169
|
-
|
|
12235
|
+
/* *
|
|
12236
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12237
|
+
* you may not use this file except in compliance with the License.
|
|
12238
|
+
* You may obtain a copy of the License at
|
|
12239
|
+
*
|
|
12240
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12241
|
+
*
|
|
12242
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12243
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12244
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12245
|
+
* See the License for the specific language governing permissions and
|
|
12246
|
+
* limitations under the License.
|
|
12247
|
+
*
|
|
12248
|
+
* Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
12249
|
+
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
12250
|
+
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
12251
|
+
* */
|
|
12252
|
+
var draftStripes = function draftStripes(stripeColor, bgColor) {
|
|
12253
|
+
return "repeating-linear-gradient(\n -45deg,\n transparent,\n transparent 8px,\n " + stripeColor + " 8px,\n " + stripeColor + " 9px\n ), " + bgColor;
|
|
12254
|
+
};
|
|
12255
|
+
var TimelineColors = {
|
|
12256
|
+
// Public warnings - Extreme (Red)
|
|
12257
|
+
extreme: {
|
|
12258
|
+
published: {
|
|
12259
|
+
background: LevelColors.extreme.color,
|
|
12260
|
+
border: LevelColors.extreme.borderColor,
|
|
12261
|
+
iconColor: LevelColors.extreme.textColor,
|
|
12262
|
+
letterColor: LevelColors.extreme.textColor
|
|
12263
|
+
},
|
|
12264
|
+
draft: {
|
|
12265
|
+
background: '#F1D0D0',
|
|
12266
|
+
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
12267
|
+
border: LevelColors.extreme.borderColor,
|
|
12268
|
+
iconColor: LevelColors.extreme.color,
|
|
12269
|
+
letterColor: LevelColors.extreme.color
|
|
12270
|
+
},
|
|
12271
|
+
expired: {
|
|
12272
|
+
background: '#EFEFEF',
|
|
12273
|
+
border: LevelColors.extreme.borderColor,
|
|
12274
|
+
iconColor: LevelColors.extreme.color,
|
|
12275
|
+
letterColor: LevelColors.extreme.color
|
|
12276
|
+
}
|
|
12277
|
+
},
|
|
12278
|
+
// Public warnings - Severe (Orange)
|
|
12279
|
+
severe: {
|
|
12280
|
+
published: {
|
|
12281
|
+
background: LevelColors.severe.color,
|
|
12282
|
+
border: LevelColors.severe.borderColor,
|
|
12283
|
+
iconColor: 'white',
|
|
12284
|
+
letterColor: 'white'
|
|
12285
|
+
},
|
|
12286
|
+
draft: {
|
|
12287
|
+
background: '#FADDC2',
|
|
12288
|
+
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
12289
|
+
border: '#E27000',
|
|
12290
|
+
iconColor: '#9C4D00',
|
|
12291
|
+
letterColor: '#9C4D00'
|
|
12292
|
+
},
|
|
12293
|
+
expired: {
|
|
12294
|
+
background: '#EFEFEF',
|
|
12295
|
+
border: '#E27000',
|
|
12296
|
+
iconColor: '#9C4D00',
|
|
12297
|
+
letterColor: '#9C4D00'
|
|
12298
|
+
}
|
|
12299
|
+
},
|
|
12300
|
+
// Public warnings - Moderate (Yellow)
|
|
12301
|
+
moderate: {
|
|
12302
|
+
published: {
|
|
12303
|
+
background: LevelColors.moderate.color,
|
|
12304
|
+
border: LevelColors.moderate.borderColor,
|
|
12305
|
+
iconColor: '#3A3400',
|
|
12306
|
+
letterColor: '#3A3400'
|
|
12307
|
+
},
|
|
12308
|
+
draft: {
|
|
12309
|
+
background: '#FFFACE',
|
|
12310
|
+
stripeColor: 'rgba(250, 226, 28, 0.5)',
|
|
12311
|
+
// Yellow stripes
|
|
12312
|
+
border: LevelColors.moderate.borderColor,
|
|
12313
|
+
iconColor: '#3A3400',
|
|
12314
|
+
letterColor: '#3A3400'
|
|
12315
|
+
},
|
|
12316
|
+
expired: {
|
|
12317
|
+
background: '#EFEFEF',
|
|
12318
|
+
border: LevelColors.moderate.borderColor,
|
|
12319
|
+
iconColor: '#3A3400',
|
|
12320
|
+
letterColor: '#3A3400'
|
|
12321
|
+
}
|
|
12322
|
+
},
|
|
12323
|
+
// Aviation (SIGMET/AIRMET) - Blue
|
|
12324
|
+
aviation: {
|
|
12325
|
+
published: {
|
|
12326
|
+
background: '#186DFF',
|
|
12327
|
+
border: '#0800B9',
|
|
12328
|
+
iconColor: '#FFFFFF',
|
|
12329
|
+
letterColor: '#FFFFFF'
|
|
12330
|
+
},
|
|
12331
|
+
draft: {
|
|
12332
|
+
background: '#E3EDFF',
|
|
12333
|
+
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
12334
|
+
border: '#0800B9',
|
|
12335
|
+
iconColor: '#0800B9',
|
|
12336
|
+
letterColor: '#0800B9'
|
|
12337
|
+
},
|
|
12338
|
+
expired: {
|
|
12339
|
+
background: '#EFEFEF',
|
|
12340
|
+
border: '#0800B9',
|
|
12341
|
+
iconColor: '#186DFF',
|
|
12342
|
+
letterColor: '#186DFF'
|
|
12343
|
+
}
|
|
12344
|
+
},
|
|
12345
|
+
// Default/fallback
|
|
12346
|
+
"default": {
|
|
12347
|
+
published: {
|
|
12348
|
+
background: '#FFFFFF',
|
|
12349
|
+
border: '#AAAAAA',
|
|
12350
|
+
iconColor: '#333333',
|
|
12351
|
+
letterColor: '#333333'
|
|
12352
|
+
},
|
|
12353
|
+
draft: {
|
|
12354
|
+
background: '#FFFFFF',
|
|
12355
|
+
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
12356
|
+
border: '#AAAAAA',
|
|
12357
|
+
iconColor: '#333333',
|
|
12358
|
+
letterColor: '#333333'
|
|
12359
|
+
},
|
|
12360
|
+
expired: {
|
|
12361
|
+
background: '#EFEFEF',
|
|
12362
|
+
border: '#AAAAAA',
|
|
12363
|
+
iconColor: '#333333',
|
|
12364
|
+
letterColor: '#333333'
|
|
12365
|
+
}
|
|
12366
|
+
}
|
|
12367
|
+
};
|
|
12368
|
+
var getThemeForLevel = function getThemeForLevel(level, isAviation) {
|
|
12369
|
+
if (isAviation) {
|
|
12370
|
+
return TimelineColors.aviation;
|
|
12371
|
+
}
|
|
12372
|
+
switch (level) {
|
|
12373
|
+
case WarningLevel.extreme:
|
|
12374
|
+
return TimelineColors.extreme;
|
|
12375
|
+
case WarningLevel.severe:
|
|
12376
|
+
return TimelineColors.severe;
|
|
12377
|
+
case WarningLevel.moderate:
|
|
12378
|
+
return TimelineColors.moderate;
|
|
12379
|
+
default:
|
|
12380
|
+
return TimelineColors["default"];
|
|
12381
|
+
}
|
|
12382
|
+
};
|
|
12383
|
+
var getBlockStyle = function getBlockStyle(level, status, isAviation) {
|
|
12384
|
+
var theme = getThemeForLevel(level, isAviation);
|
|
12385
|
+
if (status === PublicWarningStatus.DRAFT || status === PublicWarningStatus.DRAFT_PUBLISHED) {
|
|
12386
|
+
var _theme$draft = theme.draft,
|
|
12387
|
+
stripeColor = _theme$draft.stripeColor,
|
|
12388
|
+
background = _theme$draft.background,
|
|
12389
|
+
border = _theme$draft.border,
|
|
12390
|
+
iconColor = _theme$draft.iconColor,
|
|
12391
|
+
letterColor = _theme$draft.letterColor;
|
|
12392
|
+
return {
|
|
12393
|
+
background: draftStripes(stripeColor, background),
|
|
12394
|
+
border: "1px solid " + border,
|
|
12395
|
+
borderColor: border,
|
|
12396
|
+
iconColor: iconColor,
|
|
12397
|
+
letterColor: letterColor
|
|
12398
|
+
};
|
|
12399
|
+
}
|
|
12400
|
+
if (status === PublicWarningStatus.EXPIRED) {
|
|
12401
|
+
return {
|
|
12402
|
+
background: theme.expired.background,
|
|
12403
|
+
border: "1px solid " + theme.expired.border,
|
|
12404
|
+
borderColor: theme.expired.border,
|
|
12405
|
+
iconColor: theme.expired.iconColor,
|
|
12406
|
+
letterColor: theme.expired.letterColor
|
|
12407
|
+
};
|
|
12408
|
+
}
|
|
12409
|
+
// Published (default)
|
|
12410
|
+
return {
|
|
12411
|
+
background: theme.published.background,
|
|
12412
|
+
border: "1px solid " + theme.published.border,
|
|
12413
|
+
borderColor: theme.published.border,
|
|
12414
|
+
iconColor: theme.published.iconColor,
|
|
12415
|
+
letterColor: theme.published.letterColor
|
|
12416
|
+
};
|
|
12417
|
+
};
|
|
12418
|
+
|
|
12419
|
+
var _STATUS_SORT_ORDER;
|
|
12420
|
+
var EDGE_PADDING = 24;
|
|
12421
|
+
var getEffectiveStatus = function getEffectiveStatus(warning) {
|
|
12422
|
+
var _warning$status;
|
|
12423
|
+
return (_warning$status = warning.status) != null ? _warning$status : mapProductStatusToWarningStatus(warning.productStatus);
|
|
12424
|
+
};
|
|
12425
|
+
var STATUS_SORT_ORDER = (_STATUS_SORT_ORDER = {}, _STATUS_SORT_ORDER[PublicWarningStatus.PUBLISHED] = 0, _STATUS_SORT_ORDER[PublicWarningStatus.DRAFT_PUBLISHED] = 0, _STATUS_SORT_ORDER[PublicWarningStatus.EXPIRED] = 1, _STATUS_SORT_ORDER[PublicWarningStatus.WITHDRAWN] = 1, _STATUS_SORT_ORDER[PublicWarningStatus.IGNORED] = 1, _STATUS_SORT_ORDER[PublicWarningStatus.DRAFT] = 2, _STATUS_SORT_ORDER[PublicWarningStatus.TODO] = 3, _STATUS_SORT_ORDER);
|
|
12426
|
+
var compareWarningsByStatus = function compareWarningsByStatus(warningA, warningB) {
|
|
12427
|
+
return STATUS_SORT_ORDER[getEffectiveStatus(warningA)] - STATUS_SORT_ORDER[getEffectiveStatus(warningB)];
|
|
12428
|
+
};
|
|
12429
|
+
var SIZE_THRESHOLDS = {
|
|
12430
|
+
xxs: 24,
|
|
12431
|
+
xs: 50,
|
|
12432
|
+
sm: 100
|
|
12433
|
+
};
|
|
12434
|
+
var getTimelineX = function getTimelineX(targetTime, timelineStart, timelineEnd, drawableWidth) {
|
|
12435
|
+
var totalTimelineDuration = timelineEnd.getTime() - timelineStart.getTime();
|
|
12436
|
+
if (totalTimelineDuration <= 0) {
|
|
12437
|
+
return 0;
|
|
12438
|
+
}
|
|
12439
|
+
var elapsedMs = targetTime.getTime() - timelineStart.getTime();
|
|
12440
|
+
return EDGE_PADDING + elapsedMs / totalTimelineDuration * drawableWidth;
|
|
12441
|
+
};
|
|
12442
|
+
var getTimeFromX = function getTimeFromX(x, timelineStart, timelineEnd, drawableWidth) {
|
|
12443
|
+
var totalTimelineDuration = timelineEnd.getTime() - timelineStart.getTime();
|
|
12444
|
+
if (drawableWidth <= 0) {
|
|
12445
|
+
return new Date(timelineStart);
|
|
12446
|
+
}
|
|
12447
|
+
var adjustedX = x - EDGE_PADDING;
|
|
12448
|
+
var ratio = adjustedX / drawableWidth;
|
|
12449
|
+
var timeMs = timelineStart.getTime() + ratio * totalTimelineDuration;
|
|
12450
|
+
return new Date(timeMs);
|
|
12451
|
+
};
|
|
12452
|
+
var generateTicks = function generateTicks(timelineStart, timelineEnd) {
|
|
12453
|
+
var ticks = [];
|
|
12454
|
+
var hourInterval = 3;
|
|
12455
|
+
var current = new Date(timelineStart);
|
|
12456
|
+
current.setUTCMinutes(0, 0, 0);
|
|
12457
|
+
if (current < timelineStart) {
|
|
12458
|
+
current.setUTCHours(current.getUTCHours() + 1);
|
|
12459
|
+
}
|
|
12460
|
+
while (current <= timelineEnd) {
|
|
12461
|
+
var hour = current.getUTCHours();
|
|
12462
|
+
if (hour === 0) {
|
|
12463
|
+
ticks.push({
|
|
12464
|
+
time: new Date(current),
|
|
12465
|
+
type: 'day'
|
|
12466
|
+
});
|
|
12467
|
+
} else if (hour % hourInterval === 0) {
|
|
12468
|
+
ticks.push({
|
|
12469
|
+
time: new Date(current),
|
|
12470
|
+
type: 'major'
|
|
12471
|
+
});
|
|
12472
|
+
} else {
|
|
12473
|
+
ticks.push({
|
|
12474
|
+
time: new Date(current),
|
|
12475
|
+
type: 'dashed'
|
|
12476
|
+
});
|
|
12477
|
+
}
|
|
12478
|
+
current.setUTCHours(current.getUTCHours() + 1);
|
|
12479
|
+
}
|
|
12480
|
+
return ticks;
|
|
12481
|
+
};
|
|
12482
|
+
var getTickLineStyle = function getTickLineStyle(tickType) {
|
|
12483
|
+
if (tickType === 'day') {
|
|
12484
|
+
return {
|
|
12485
|
+
width: '2px',
|
|
12486
|
+
borderLeft: '2px solid #ABC3FF'
|
|
12487
|
+
};
|
|
12488
|
+
}
|
|
12489
|
+
if (tickType === 'dashed') {
|
|
12490
|
+
return {
|
|
12491
|
+
width: '1px',
|
|
12492
|
+
borderLeft: '1px dashed #E7ECFA'
|
|
12493
|
+
};
|
|
12494
|
+
}
|
|
12495
|
+
return {
|
|
12496
|
+
width: '1px',
|
|
12497
|
+
borderLeft: '1px solid #90caf9'
|
|
12498
|
+
};
|
|
12499
|
+
};
|
|
12500
|
+
var getBlockSize = function getBlockSize(width) {
|
|
12501
|
+
if (width < SIZE_THRESHOLDS.xxs) {
|
|
12502
|
+
return 'xxs';
|
|
12503
|
+
}
|
|
12504
|
+
if (width < SIZE_THRESHOLDS.xs) {
|
|
12505
|
+
return 'xs';
|
|
12506
|
+
}
|
|
12507
|
+
if (width < SIZE_THRESHOLDS.sm) {
|
|
12508
|
+
return 's';
|
|
12509
|
+
}
|
|
12510
|
+
return 'l';
|
|
12511
|
+
};
|
|
12512
|
+
|
|
12513
|
+
var clamp = function clamp(value, min, max) {
|
|
12514
|
+
return Math.min(Math.max(value, min), max);
|
|
12515
|
+
};
|
|
12516
|
+
var formatTime = function formatTime(date) {
|
|
12517
|
+
return date.toLocaleTimeString('en-GB', {
|
|
12518
|
+
hour: '2-digit',
|
|
12519
|
+
minute: '2-digit',
|
|
12520
|
+
hour12: false,
|
|
12521
|
+
timeZone: 'UTC'
|
|
12522
|
+
});
|
|
12523
|
+
};
|
|
12524
|
+
var WarningEventTimelineBlock = /*#__PURE__*/React.memo(function (_ref) {
|
|
12525
|
+
var start = _ref.start,
|
|
12526
|
+
end = _ref.end,
|
|
12527
|
+
now = _ref.now,
|
|
12528
|
+
drawableWidth = _ref.drawableWidth,
|
|
12529
|
+
validFrom = _ref.validFrom,
|
|
12530
|
+
validUntil = _ref.validUntil,
|
|
12531
|
+
level = _ref.level;
|
|
12532
|
+
var from = dateUtils.isoStringToDate(validFrom, false);
|
|
12533
|
+
var until = dateUtils.isoStringToDate(validUntil, false);
|
|
12534
|
+
if (!from || !until) {
|
|
12535
|
+
return null;
|
|
12536
|
+
}
|
|
12537
|
+
var minX = EDGE_PADDING;
|
|
12538
|
+
var maxX = EDGE_PADDING + drawableWidth;
|
|
12539
|
+
var left = clamp(getTimelineX(from, start, end, drawableWidth), minX, maxX);
|
|
12540
|
+
var right = clamp(getTimelineX(until, start, end, drawableWidth), minX, maxX);
|
|
12541
|
+
var width = right - left;
|
|
12542
|
+
if (width <= 0) {
|
|
12543
|
+
return null;
|
|
12544
|
+
}
|
|
12545
|
+
var _getBlockStyle = getBlockStyle(level || null, undefined, false),
|
|
12546
|
+
background = _getBlockStyle.background,
|
|
12547
|
+
border = _getBlockStyle.border;
|
|
12548
|
+
// The part of the block before "now" is rendered grey;
|
|
12549
|
+
var nowX = clamp(getTimelineX(now, start, end, drawableWidth), left, right);
|
|
12550
|
+
var pastPercentage = (nowX - left) / width * 100;
|
|
12551
|
+
return jsxs(Fragment, {
|
|
12552
|
+
children: [jsxs(Box, {
|
|
12553
|
+
"data-testid": "warning-event-block-labels",
|
|
12554
|
+
style: {
|
|
12555
|
+
left: left,
|
|
12556
|
+
width: width
|
|
12557
|
+
},
|
|
12558
|
+
sx: {
|
|
12559
|
+
position: 'absolute',
|
|
12560
|
+
top: 4,
|
|
12561
|
+
display: 'flex',
|
|
12562
|
+
justifyContent: 'space-between',
|
|
12563
|
+
fontSize: 11,
|
|
12564
|
+
color: 'geowebColors.typographyAndIcons.text',
|
|
12565
|
+
pointerEvents: 'none',
|
|
12566
|
+
zIndex: 3
|
|
12567
|
+
},
|
|
12568
|
+
children: [jsx(Box, {
|
|
12569
|
+
component: "span",
|
|
12570
|
+
children: formatTime(from)
|
|
12571
|
+
}), jsx(Box, {
|
|
12572
|
+
component: "span",
|
|
12573
|
+
children: formatTime(until)
|
|
12574
|
+
})]
|
|
12575
|
+
}), jsxs(Box, {
|
|
12576
|
+
"data-testid": "warning-event-block",
|
|
12577
|
+
style: {
|
|
12578
|
+
left: left,
|
|
12579
|
+
width: width
|
|
12580
|
+
},
|
|
12581
|
+
sx: {
|
|
12582
|
+
position: 'absolute',
|
|
12583
|
+
top: 24,
|
|
12584
|
+
height: 40,
|
|
12585
|
+
border: border,
|
|
12586
|
+
overflow: 'hidden'
|
|
12587
|
+
},
|
|
12588
|
+
children: [jsx(Box, {
|
|
12589
|
+
"data-testid": "warning-event-block-past",
|
|
12590
|
+
style: {
|
|
12591
|
+
width: pastPercentage + "%"
|
|
12592
|
+
},
|
|
12593
|
+
sx: {
|
|
12594
|
+
position: 'absolute',
|
|
12595
|
+
left: 0,
|
|
12596
|
+
top: 0,
|
|
12597
|
+
bottom: 0,
|
|
12598
|
+
backgroundColor: 'geowebColors.greys.accessibleLight'
|
|
12599
|
+
}
|
|
12600
|
+
}), jsx(Box, {
|
|
12601
|
+
"data-testid": "warning-event-block-future",
|
|
12602
|
+
style: {
|
|
12603
|
+
width: 100 - pastPercentage + "%"
|
|
12604
|
+
},
|
|
12605
|
+
sx: {
|
|
12606
|
+
position: 'absolute',
|
|
12607
|
+
right: 0,
|
|
12608
|
+
top: 0,
|
|
12609
|
+
bottom: 0,
|
|
12610
|
+
background: background
|
|
12611
|
+
}
|
|
12612
|
+
})]
|
|
12613
|
+
})]
|
|
12614
|
+
});
|
|
12615
|
+
});
|
|
12616
|
+
|
|
12617
|
+
var HEADER_HEIGHT = 32;
|
|
12618
|
+
var AXIS_HEIGHT = 24;
|
|
12619
|
+
var AXIS_TICK_HEIGHT = 7;
|
|
12620
|
+
var MS_PER_DAY$1 = 24 * 60 * 60 * 1000;
|
|
12621
|
+
var NOW_LINE_YELLOW = '#FAE21E';
|
|
12622
|
+
var getAxisIntervals = function getAxisIntervals(rangeDays) {
|
|
12623
|
+
if (rangeDays <= 1) {
|
|
12624
|
+
return {
|
|
12625
|
+
tickHours: 1,
|
|
12626
|
+
labelHours: 3
|
|
12627
|
+
};
|
|
12628
|
+
}
|
|
12629
|
+
if (rangeDays <= 2) {
|
|
12630
|
+
return {
|
|
12631
|
+
tickHours: 3,
|
|
12632
|
+
labelHours: 6
|
|
12633
|
+
};
|
|
12634
|
+
}
|
|
12635
|
+
return {
|
|
12636
|
+
tickHours: 6,
|
|
12637
|
+
labelHours: 12
|
|
12638
|
+
};
|
|
12639
|
+
};
|
|
12640
|
+
var formatDayHeader = function formatDayHeader(date) {
|
|
12641
|
+
return date.toLocaleDateString('en-GB', {
|
|
12642
|
+
weekday: 'short',
|
|
12643
|
+
day: 'numeric',
|
|
12644
|
+
month: 'short',
|
|
12645
|
+
timeZone: 'UTC'
|
|
12646
|
+
});
|
|
12647
|
+
};
|
|
12648
|
+
var WarningEventTimeline = function WarningEventTimeline(_ref) {
|
|
12649
|
+
var start = _ref.start,
|
|
12650
|
+
end = _ref.end,
|
|
12651
|
+
validFrom = _ref.validFrom,
|
|
12652
|
+
validUntil = _ref.validUntil,
|
|
12653
|
+
level = _ref.level,
|
|
12654
|
+
nowProp = _ref.now;
|
|
12655
|
+
var containerRef = React.useRef(null);
|
|
12656
|
+
var _React$useState = React.useState(0),
|
|
12657
|
+
width = _React$useState[0],
|
|
12658
|
+
setWidth = _React$useState[1];
|
|
12659
|
+
// Re-read on every render (not memoized) so the current-time marker and the
|
|
12660
|
+
// past/future split stay current for the lifetime of the form.
|
|
12661
|
+
var now = nowProp != null ? nowProp : new Date();
|
|
12662
|
+
React.useEffect(function () {
|
|
12663
|
+
var node = containerRef.current;
|
|
12664
|
+
if (!node) {
|
|
12665
|
+
return undefined;
|
|
12666
|
+
}
|
|
12667
|
+
var resizeObserver = new ResizeObserver(function (entries) {
|
|
12668
|
+
var _loop = function _loop() {
|
|
12669
|
+
var entry = _step.value;
|
|
12670
|
+
var next = Math.round(entry.contentRect.width);
|
|
12671
|
+
setWidth(function (current) {
|
|
12672
|
+
return current === next ? current : next;
|
|
12673
|
+
});
|
|
12674
|
+
};
|
|
12675
|
+
for (var _iterator = _createForOfIteratorHelperLoose(entries), _step; !(_step = _iterator()).done;) {
|
|
12676
|
+
_loop();
|
|
12677
|
+
}
|
|
12678
|
+
});
|
|
12679
|
+
resizeObserver.observe(node);
|
|
12680
|
+
return function () {
|
|
12681
|
+
return resizeObserver.disconnect();
|
|
12682
|
+
};
|
|
12683
|
+
}, []);
|
|
12684
|
+
var drawableWidth = Math.max(1, width - 2 * EDGE_PADDING);
|
|
12685
|
+
var ticks = React.useMemo(function () {
|
|
12686
|
+
return generateTicks(start, end);
|
|
12687
|
+
}, [start, end]);
|
|
12688
|
+
var dayTicks = ticks.filter(function (tick) {
|
|
12689
|
+
return tick.type === 'day';
|
|
12690
|
+
});
|
|
12691
|
+
var rangeDays = Math.round((end.getTime() - start.getTime()) / MS_PER_DAY$1);
|
|
12692
|
+
var _getAxisIntervals = getAxisIntervals(rangeDays),
|
|
12693
|
+
tickHours = _getAxisIntervals.tickHours,
|
|
12694
|
+
labelHours = _getAxisIntervals.labelHours;
|
|
12695
|
+
var showNow = now.getTime() >= start.getTime() && now.getTime() <= end.getTime();
|
|
12696
|
+
var nowX = getTimelineX(now, start, end, drawableWidth);
|
|
12697
|
+
// Day headers ("Today / +N") are labelled relative to the actual current day,
|
|
12698
|
+
// so a range that starts later than today (e.g. an early warning) still reads
|
|
12699
|
+
// "+2" on its first day rather than "Today".
|
|
12700
|
+
var dayZero = dateUtils.startOfDayUTC(now);
|
|
12701
|
+
return jsxs(Box, {
|
|
12702
|
+
ref: containerRef,
|
|
12703
|
+
sx: {
|
|
12704
|
+
position: 'relative',
|
|
12705
|
+
width: '100%',
|
|
12706
|
+
height: '100%',
|
|
12707
|
+
backgroundColor: 'geowebColors.background.surface',
|
|
12708
|
+
overflow: 'hidden'
|
|
12709
|
+
},
|
|
12710
|
+
children: [dayTicks.map(function (tick) {
|
|
12711
|
+
return jsx(Box, {
|
|
12712
|
+
"data-testid": "timeline-day-line",
|
|
12713
|
+
sx: {
|
|
12714
|
+
position: 'absolute',
|
|
12715
|
+
left: getTimelineX(tick.time, start, end, drawableWidth),
|
|
12716
|
+
top: 0,
|
|
12717
|
+
bottom: 0,
|
|
12718
|
+
borderLeft: '1px solid',
|
|
12719
|
+
borderColor: 'geowebColors.cards.cardContainerBorder'
|
|
12720
|
+
}
|
|
12721
|
+
}, "line-" + tick.time.toISOString());
|
|
12722
|
+
}), showNow ? jsx(Box, {
|
|
12723
|
+
"data-testid": "timeline-now-line",
|
|
12724
|
+
sx: {
|
|
12725
|
+
position: 'absolute',
|
|
12726
|
+
left: nowX,
|
|
12727
|
+
top: 0,
|
|
12728
|
+
bottom: AXIS_HEIGHT - AXIS_TICK_HEIGHT,
|
|
12729
|
+
width: '3px',
|
|
12730
|
+
background: function background(theme) {
|
|
12731
|
+
return "linear-gradient(to right, " + NOW_LINE_YELLOW + " 0 33.333%, " + theme.palette.geowebColors.functional.error + " 33.333% 66.667%, " + NOW_LINE_YELLOW + " 66.667% 100%)";
|
|
12732
|
+
},
|
|
12733
|
+
zIndex: 2
|
|
12734
|
+
}
|
|
12735
|
+
}) : null, dayTicks.filter(function (tick) {
|
|
12736
|
+
return tick.time.getTime() < end.getTime();
|
|
12737
|
+
}).map(function (tick) {
|
|
12738
|
+
var dayOffset = Math.round((tick.time.getTime() - dayZero.getTime()) / MS_PER_DAY$1);
|
|
12739
|
+
var offsetLabel = 'Today';
|
|
12740
|
+
if (dayOffset > 0) {
|
|
12741
|
+
offsetLabel = "+" + dayOffset;
|
|
12742
|
+
} else if (dayOffset < 0) {
|
|
12743
|
+
offsetLabel = "" + dayOffset;
|
|
12744
|
+
}
|
|
12745
|
+
return jsxs(Box, {
|
|
12746
|
+
"data-testid": "timeline-day-header",
|
|
12747
|
+
sx: {
|
|
12748
|
+
position: 'absolute',
|
|
12749
|
+
left: getTimelineX(tick.time, start, end, drawableWidth),
|
|
12750
|
+
top: 2,
|
|
12751
|
+
paddingLeft: 0.5,
|
|
12752
|
+
lineHeight: 1.15,
|
|
12753
|
+
whiteSpace: 'nowrap'
|
|
12754
|
+
},
|
|
12755
|
+
children: [jsx(Box, {
|
|
12756
|
+
sx: {
|
|
12757
|
+
fontSize: 12,
|
|
12758
|
+
fontWeight: 'bold',
|
|
12759
|
+
color: 'geowebColors.typographyAndIcons.text'
|
|
12760
|
+
},
|
|
12761
|
+
children: offsetLabel
|
|
12762
|
+
}), jsx(Box, {
|
|
12763
|
+
sx: {
|
|
12764
|
+
fontSize: 11,
|
|
12765
|
+
color: 'geowebColors.typographyAndIcons.text'
|
|
12766
|
+
},
|
|
12767
|
+
children: formatDayHeader(tick.time)
|
|
12768
|
+
})]
|
|
12769
|
+
}, "header-" + tick.time.toISOString());
|
|
12770
|
+
}), jsx(Box, {
|
|
12771
|
+
sx: {
|
|
12772
|
+
position: 'absolute',
|
|
12773
|
+
left: 0,
|
|
12774
|
+
right: 0,
|
|
12775
|
+
top: HEADER_HEIGHT,
|
|
12776
|
+
bottom: AXIS_HEIGHT
|
|
12777
|
+
},
|
|
12778
|
+
children: jsx(WarningEventTimelineBlock, {
|
|
12779
|
+
drawableWidth: drawableWidth,
|
|
12780
|
+
end: end,
|
|
12781
|
+
level: level,
|
|
12782
|
+
now: now,
|
|
12783
|
+
start: start,
|
|
12784
|
+
validFrom: validFrom,
|
|
12785
|
+
validUntil: validUntil
|
|
12786
|
+
})
|
|
12787
|
+
}), jsx(Box, {
|
|
12788
|
+
sx: {
|
|
12789
|
+
position: 'absolute',
|
|
12790
|
+
left: 0,
|
|
12791
|
+
right: 0,
|
|
12792
|
+
bottom: 0,
|
|
12793
|
+
height: AXIS_HEIGHT
|
|
12794
|
+
},
|
|
12795
|
+
children: ticks.map(function (tick) {
|
|
12796
|
+
var hour = tick.time.getUTCHours();
|
|
12797
|
+
var showTick = tick.type !== 'day' && hour % tickHours === 0;
|
|
12798
|
+
var showLabel = hour % labelHours === 0;
|
|
12799
|
+
if (!showTick && !showLabel) {
|
|
12800
|
+
return null;
|
|
12801
|
+
}
|
|
12802
|
+
var x = getTimelineX(tick.time, start, end, drawableWidth);
|
|
12803
|
+
return jsxs(React.Fragment, {
|
|
12804
|
+
children: [showTick ? jsx(Box, {
|
|
12805
|
+
"data-testid": "timeline-hour-tick",
|
|
12806
|
+
sx: {
|
|
12807
|
+
position: 'absolute',
|
|
12808
|
+
left: x,
|
|
12809
|
+
top: 0,
|
|
12810
|
+
height: showLabel ? AXIS_TICK_HEIGHT : 4,
|
|
12811
|
+
borderLeft: '1px solid',
|
|
12812
|
+
borderColor: 'geowebColors.typographyAndIcons.inactiveText'
|
|
12813
|
+
}
|
|
12814
|
+
}) : null, showLabel ? jsx(Box, {
|
|
12815
|
+
"data-testid": "timeline-axis-label",
|
|
12816
|
+
sx: {
|
|
12817
|
+
position: 'absolute',
|
|
12818
|
+
left: x,
|
|
12819
|
+
top: 9,
|
|
12820
|
+
transform: 'translateX(-50%)',
|
|
12821
|
+
fontSize: 11,
|
|
12822
|
+
color: 'geowebColors.typographyAndIcons.inactiveText'
|
|
12823
|
+
},
|
|
12824
|
+
children: String(tick.time.getUTCHours()).padStart(2, '0') + ":00"
|
|
12825
|
+
}) : null]
|
|
12826
|
+
}, "tick-" + tick.time.toISOString());
|
|
12827
|
+
})
|
|
12828
|
+
})]
|
|
12829
|
+
});
|
|
12830
|
+
};
|
|
12831
|
+
|
|
12832
|
+
var WarningEventTimelineRangeContext = /*#__PURE__*/React.createContext(null);
|
|
12833
|
+
var WarningEventTimelineRangeProvider = function WarningEventTimelineRangeProvider(_ref) {
|
|
12834
|
+
var range = _ref.range,
|
|
12835
|
+
children = _ref.children;
|
|
12836
|
+
return jsx(WarningEventTimelineRangeContext.Provider, {
|
|
12837
|
+
value: range,
|
|
12838
|
+
children: children
|
|
12839
|
+
});
|
|
12840
|
+
};
|
|
12841
|
+
var useTimelineRange = function useTimelineRange() {
|
|
12842
|
+
var range = React.useContext(WarningEventTimelineRangeContext);
|
|
12843
|
+
if (!range) {
|
|
12844
|
+
throw new Error('useTimelineRange must be used within a WarningEventTimelineRangeProvider');
|
|
12845
|
+
}
|
|
12846
|
+
return range;
|
|
12847
|
+
};
|
|
12848
|
+
|
|
12849
|
+
/* *
|
|
12850
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12851
|
+
* you may not use this file except in compliance with the License.
|
|
12852
|
+
* You may obtain a copy of the License at
|
|
12853
|
+
*
|
|
12854
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12855
|
+
*
|
|
12856
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12857
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12858
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12859
|
+
* See the License for the specific language governing permissions and
|
|
12860
|
+
* limitations under the License.
|
|
12861
|
+
*
|
|
12862
|
+
* Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
12863
|
+
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
12864
|
+
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
12865
|
+
* */
|
|
12866
|
+
var getTimelineRange = function getTimelineRange(selectedDays, now) {
|
|
12867
|
+
if (now === void 0) {
|
|
12868
|
+
now = dateUtils.getNowUtc();
|
|
12869
|
+
}
|
|
12870
|
+
var dayZero = dateUtils.startOfDayUTC(now);
|
|
12871
|
+
var minDay = selectedDays.length ? Math.min.apply(Math, selectedDays) : 0;
|
|
12872
|
+
var maxDay = selectedDays.length ? Math.max.apply(Math, selectedDays) : 1;
|
|
12873
|
+
// The window starts at the earliest selected day (so a later-starting type
|
|
12874
|
+
// shifts the whole range) and ends at the end of the latest selected day.
|
|
12875
|
+
var start = dateUtils.add(dayZero, {
|
|
12876
|
+
days: minDay
|
|
12877
|
+
});
|
|
12878
|
+
var end = dateUtils.add(dayZero, {
|
|
12879
|
+
days: maxDay + 1
|
|
12880
|
+
});
|
|
12881
|
+
return {
|
|
12882
|
+
start: start,
|
|
12883
|
+
end: end
|
|
12884
|
+
};
|
|
12885
|
+
};
|
|
12886
|
+
|
|
12887
|
+
var warningEventItemDefaultValues = {
|
|
12888
|
+
incident: '',
|
|
12889
|
+
validFrom: '',
|
|
12890
|
+
validUntil: '',
|
|
12891
|
+
level: '',
|
|
12892
|
+
probability: undefined,
|
|
12893
|
+
domain: '',
|
|
12894
|
+
warningProposalSource: '',
|
|
12895
|
+
authority: '',
|
|
12896
|
+
phenomenon: '',
|
|
12897
|
+
type: 0,
|
|
12898
|
+
warning_handle_uuid: ''
|
|
12899
|
+
};
|
|
12900
|
+
var WarningEventItem = function WarningEventItem(_ref) {
|
|
12901
|
+
var index = _ref.index,
|
|
12902
|
+
isReadOnly = _ref.isReadOnly,
|
|
12903
|
+
onDeleteWarning = _ref.onDeleteWarning;
|
|
12904
|
+
var _React$useState = React.useState(null),
|
|
12905
|
+
menuAnchorEl = _React$useState[0],
|
|
12906
|
+
setMenuAnchorEl = _React$useState[1];
|
|
12907
|
+
var _useWarningsTranslati = useWarningsTranslation(),
|
|
12908
|
+
t = _useWarningsTranslati.t;
|
|
12909
|
+
var incident = useWatch({
|
|
12910
|
+
name: 'incident'
|
|
12911
|
+
});
|
|
12912
|
+
var timelineRange = useTimelineRange();
|
|
12913
|
+
var validFrom = useWatch({
|
|
12914
|
+
name: "warnings." + index + ".validFrom"
|
|
12915
|
+
});
|
|
12916
|
+
var validUntil = useWatch({
|
|
12917
|
+
name: "warnings." + index + ".validUntil"
|
|
12918
|
+
});
|
|
12919
|
+
var level = useWatch({
|
|
12920
|
+
name: "warnings." + index + ".level"
|
|
12921
|
+
});
|
|
12922
|
+
return jsxs(Box, {
|
|
12923
|
+
sx: {
|
|
12924
|
+
backgroundColor: 'geowebColors.background.surface',
|
|
12925
|
+
borderRadius: 1,
|
|
12926
|
+
padding: 1,
|
|
12927
|
+
marginBottom: 0.25
|
|
12928
|
+
},
|
|
12929
|
+
children: [jsxs(Box, {
|
|
12930
|
+
sx: {
|
|
12931
|
+
display: 'grid',
|
|
12932
|
+
gridTemplateColumns: '1fr 150px 1fr',
|
|
12933
|
+
alignItems: 'center',
|
|
12934
|
+
gap: 1,
|
|
12935
|
+
mb: 1
|
|
12936
|
+
},
|
|
12937
|
+
children: [jsxs(Box, {
|
|
12938
|
+
sx: {
|
|
12939
|
+
display: 'flex',
|
|
12940
|
+
alignItems: 'center',
|
|
12941
|
+
gap: 1,
|
|
12942
|
+
minWidth: 0
|
|
12943
|
+
},
|
|
12944
|
+
children: [jsx(CustomIconButton, {
|
|
12945
|
+
className: "handle",
|
|
12946
|
+
disabled: isReadOnly,
|
|
12947
|
+
sx: {
|
|
12948
|
+
cursor: 'grab',
|
|
12949
|
+
flexShrink: 0
|
|
12950
|
+
},
|
|
12951
|
+
variant: "flat",
|
|
12952
|
+
children: jsx(DragHandle, {})
|
|
12953
|
+
}), jsx(Box, {
|
|
12954
|
+
sx: {
|
|
12955
|
+
flex: 1,
|
|
12956
|
+
minWidth: 0,
|
|
12957
|
+
maxWidth: 260
|
|
12958
|
+
},
|
|
12959
|
+
children: jsx(Typography, {
|
|
12960
|
+
sx: {
|
|
12961
|
+
fontSize: 14
|
|
12962
|
+
},
|
|
12963
|
+
children: t('public-warning-event-type-warning') + " " + (index + 1)
|
|
12964
|
+
})
|
|
12965
|
+
})]
|
|
12966
|
+
}), jsx(Box, {
|
|
12967
|
+
sx: {
|
|
12968
|
+
display: 'flex',
|
|
12969
|
+
justifyContent: 'center',
|
|
12970
|
+
'& .MuiFormControl-root': {
|
|
12971
|
+
width: '100%'
|
|
12972
|
+
}
|
|
12973
|
+
},
|
|
12974
|
+
children: jsx(ReactHookFormSelect, {
|
|
12975
|
+
disabled: isReadOnly,
|
|
12976
|
+
label: t('warning-probability'),
|
|
12977
|
+
name: "warnings." + index + ".probability",
|
|
12978
|
+
children: probablityOptions.map(function (probability) {
|
|
12979
|
+
return jsxs(MenuItem, {
|
|
12980
|
+
value: probability,
|
|
12981
|
+
children: [probability, " %"]
|
|
12982
|
+
}, probability);
|
|
12983
|
+
})
|
|
12984
|
+
})
|
|
12985
|
+
}), jsxs(Box, {
|
|
12986
|
+
sx: {
|
|
12987
|
+
display: 'flex',
|
|
12988
|
+
alignItems: 'center',
|
|
12989
|
+
gap: 0.5,
|
|
12990
|
+
justifySelf: 'end'
|
|
12991
|
+
},
|
|
12992
|
+
children: [jsx(CustomIconButton, {
|
|
12993
|
+
disabled: isReadOnly,
|
|
12994
|
+
onClick: function onClick(e) {
|
|
12995
|
+
return setMenuAnchorEl(e.currentTarget);
|
|
12996
|
+
},
|
|
12997
|
+
variant: "tool",
|
|
12998
|
+
children: jsx(Options, {})
|
|
12999
|
+
}), jsx(CustomIconButton, {
|
|
13000
|
+
disabled: isReadOnly,
|
|
13001
|
+
variant: "tool",
|
|
13002
|
+
children: jsx(ChevronDown, {})
|
|
13003
|
+
}), jsxs(Menu, {
|
|
13004
|
+
anchorEl: menuAnchorEl,
|
|
13005
|
+
anchorOrigin: {
|
|
13006
|
+
vertical: 'bottom',
|
|
13007
|
+
horizontal: 'right'
|
|
13008
|
+
},
|
|
13009
|
+
onClose: function onClose() {
|
|
13010
|
+
return setMenuAnchorEl(null);
|
|
13011
|
+
},
|
|
13012
|
+
open: Boolean(menuAnchorEl),
|
|
13013
|
+
transformOrigin: {
|
|
13014
|
+
vertical: 'top',
|
|
13015
|
+
horizontal: 'right'
|
|
13016
|
+
},
|
|
13017
|
+
children: [jsx(ListSubheader, {
|
|
13018
|
+
sx: {
|
|
13019
|
+
fontSize: 12,
|
|
13020
|
+
lineHeight: '1.5'
|
|
13021
|
+
},
|
|
13022
|
+
children: t('area-manager-share-menu-options')
|
|
13023
|
+
}), jsxs(MenuItem, {
|
|
13024
|
+
onClick: function onClick() {
|
|
13025
|
+
setMenuAnchorEl(null);
|
|
13026
|
+
},
|
|
13027
|
+
children: [jsx(ListItemText, {
|
|
13028
|
+
children: t('public-warning-event-stop')
|
|
13029
|
+
}), jsx(ListItemIcon, {
|
|
13030
|
+
sx: {
|
|
13031
|
+
justifyContent: 'flex-end'
|
|
13032
|
+
},
|
|
13033
|
+
children: jsx(Notifications, {})
|
|
13034
|
+
})]
|
|
13035
|
+
}), jsxs(MenuItem, {
|
|
13036
|
+
onClick: function onClick() {
|
|
13037
|
+
setMenuAnchorEl(null);
|
|
13038
|
+
onDeleteWarning(index);
|
|
13039
|
+
},
|
|
13040
|
+
children: [jsx(ListItemText, {
|
|
13041
|
+
children: t('public-warning-event-delete')
|
|
13042
|
+
}), jsx(ListItemIcon, {
|
|
13043
|
+
sx: {
|
|
13044
|
+
justifyContent: 'flex-end'
|
|
13045
|
+
},
|
|
13046
|
+
children: jsx(Delete, {})
|
|
13047
|
+
})]
|
|
13048
|
+
})]
|
|
13049
|
+
})]
|
|
13050
|
+
})]
|
|
13051
|
+
}), jsxs(Grid, {
|
|
13052
|
+
container: true,
|
|
13053
|
+
spacing: 1,
|
|
13054
|
+
children: [jsxs(Grid, {
|
|
13055
|
+
size: 4,
|
|
13056
|
+
children: [jsx(Box, {
|
|
13057
|
+
sx: {
|
|
13058
|
+
height: 155,
|
|
13059
|
+
backgroundColor: 'geowebColors.background.surfaceApp',
|
|
13060
|
+
mb: 1
|
|
13061
|
+
}
|
|
13062
|
+
}), jsx(Box, {
|
|
13063
|
+
sx: {
|
|
13064
|
+
border: '1px solid',
|
|
13065
|
+
borderColor: 'geowebColors.typographyAndIcons.iconLinkDisabled'
|
|
13066
|
+
},
|
|
13067
|
+
children: jsxs(Grid, {
|
|
13068
|
+
container: true,
|
|
13069
|
+
children: [jsxs(Grid, {
|
|
13070
|
+
size: 9,
|
|
13071
|
+
sx: {
|
|
13072
|
+
display: 'flex',
|
|
13073
|
+
alignItems: 'center'
|
|
13074
|
+
},
|
|
13075
|
+
children: [jsx(CustomIconButton, {
|
|
13076
|
+
disabled: true,
|
|
13077
|
+
variant: "flat",
|
|
13078
|
+
children: jsx(DragHandle, {})
|
|
13079
|
+
}), jsx(Typography, {
|
|
13080
|
+
sx: {
|
|
13081
|
+
fontSize: 12,
|
|
13082
|
+
fontWeight: 500
|
|
13083
|
+
},
|
|
13084
|
+
children: incident
|
|
13085
|
+
})]
|
|
13086
|
+
}), jsx(Grid, {
|
|
13087
|
+
size: 3
|
|
13088
|
+
})]
|
|
13089
|
+
})
|
|
13090
|
+
})]
|
|
13091
|
+
}), jsx(Grid, {
|
|
13092
|
+
size: 8,
|
|
13093
|
+
children: jsx(Box, {
|
|
13094
|
+
sx: {
|
|
13095
|
+
height: '100%'
|
|
13096
|
+
},
|
|
13097
|
+
children: jsx(WarningEventTimeline, {
|
|
13098
|
+
end: timelineRange.end,
|
|
13099
|
+
level: level != null ? level : '',
|
|
13100
|
+
start: timelineRange.start,
|
|
13101
|
+
validFrom: validFrom != null ? validFrom : '',
|
|
13102
|
+
validUntil: validUntil != null ? validUntil : ''
|
|
13103
|
+
})
|
|
13104
|
+
})
|
|
13105
|
+
})]
|
|
13106
|
+
})]
|
|
13107
|
+
});
|
|
13108
|
+
};
|
|
13109
|
+
|
|
13110
|
+
// Design default for a freshly added warning: a 6-hour Moderate block starting
|
|
13111
|
+
// at Zulu +3.
|
|
13112
|
+
var DEFAULT_WARNING_START_OFFSET_HOURS = 3;
|
|
13113
|
+
var DEFAULT_WARNING_DURATION_HOURS = 6;
|
|
13114
|
+
// Single source of truth for the fields each warning row inherits from the parent event
|
|
13115
|
+
var getInheritedEventFields = function getInheritedEventFields(values) {
|
|
13116
|
+
return {
|
|
13117
|
+
incident: values.incident,
|
|
13118
|
+
phenomenon: values.phenomenon
|
|
13119
|
+
};
|
|
13120
|
+
};
|
|
13121
|
+
var dayOptions = [{
|
|
13122
|
+
label: 'Today',
|
|
13123
|
+
value: 0
|
|
13124
|
+
}, {
|
|
13125
|
+
label: '+1',
|
|
13126
|
+
value: 1
|
|
13127
|
+
}, {
|
|
13128
|
+
label: '+2',
|
|
13129
|
+
value: 2
|
|
13130
|
+
}, {
|
|
13131
|
+
label: '+3',
|
|
13132
|
+
value: 3
|
|
13133
|
+
}, {
|
|
13134
|
+
label: '+4',
|
|
13135
|
+
value: 4
|
|
13136
|
+
}, {
|
|
13137
|
+
label: '+5',
|
|
13138
|
+
value: 5
|
|
13139
|
+
}, {
|
|
13140
|
+
label: '+6',
|
|
13141
|
+
value: 6
|
|
13142
|
+
}, {
|
|
13143
|
+
label: '+7',
|
|
13144
|
+
value: 7
|
|
13145
|
+
}];
|
|
13146
|
+
var DaySelector = function DaySelector(_ref) {
|
|
13147
|
+
var selectedDays = _ref.selectedDays,
|
|
13148
|
+
onToggleDay = _ref.onToggleDay,
|
|
13149
|
+
_ref$isDisabled = _ref.isDisabled,
|
|
13150
|
+
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
13151
|
+
_ref$minSelectableDay = _ref.minSelectableDay,
|
|
13152
|
+
minSelectableDay = _ref$minSelectableDay === void 0 ? 0 : _ref$minSelectableDay;
|
|
13153
|
+
var chipSize = 32;
|
|
13154
|
+
return jsx(Box, {
|
|
13155
|
+
sx: {
|
|
13156
|
+
display: 'flex',
|
|
13157
|
+
width: chipSize * dayOptions.length
|
|
13158
|
+
},
|
|
13159
|
+
children: dayOptions.map(function (day) {
|
|
13160
|
+
var isSelected = selectedDays.length === 2 && day.value >= Math.min.apply(Math, selectedDays) && day.value <= Math.max.apply(Math, selectedDays);
|
|
13161
|
+
var isDayDisabled = isDisabled || day.value < minSelectableDay;
|
|
13162
|
+
return jsx(Chip, {
|
|
13163
|
+
clickable: !isDayDisabled,
|
|
13164
|
+
color: isSelected ? 'primary' : 'default',
|
|
13165
|
+
"data-testid": "warning-day-chip-" + day.value,
|
|
13166
|
+
disabled: isDayDisabled,
|
|
13167
|
+
label: day.label,
|
|
13168
|
+
onClick: function onClick() {
|
|
13169
|
+
return onToggleDay(day.value);
|
|
13170
|
+
},
|
|
13171
|
+
size: "small",
|
|
13172
|
+
sx: Object.assign({
|
|
13173
|
+
borderRadius: 1,
|
|
13174
|
+
height: chipSize,
|
|
13175
|
+
width: chipSize,
|
|
13176
|
+
borderColor: 'transparent',
|
|
13177
|
+
mr: 0
|
|
13178
|
+
}, day.value === 0 && {
|
|
13179
|
+
fontSize: 8,
|
|
13180
|
+
'.MuiChip-label': {
|
|
13181
|
+
paddingX: 0
|
|
13182
|
+
}
|
|
13183
|
+
}),
|
|
13184
|
+
variant: isSelected ? 'filled' : 'outlined'
|
|
13185
|
+
}, day.value);
|
|
13186
|
+
})
|
|
13187
|
+
});
|
|
13188
|
+
};
|
|
13189
|
+
var WarningEventFormContent = function WarningEventFormContent(_ref2) {
|
|
13190
|
+
var _ref2$isReadOnly = _ref2.isReadOnly,
|
|
13191
|
+
isReadOnly = _ref2$isReadOnly === void 0 ? false : _ref2$isReadOnly,
|
|
13192
|
+
_ref2$onCancel = _ref2.onCancel,
|
|
13193
|
+
onCancel = _ref2$onCancel === void 0 ? function () {} : _ref2$onCancel,
|
|
13194
|
+
_ref2$onDelete = _ref2.onDelete,
|
|
13195
|
+
onDelete = _ref2$onDelete === void 0 ? function () {} : _ref2$onDelete,
|
|
13196
|
+
_ref2$onOpenWarningSu = _ref2.onOpenWarningSummary,
|
|
13197
|
+
onOpenWarningSummary = _ref2$onOpenWarningSu === void 0 ? function () {} : _ref2$onOpenWarningSu,
|
|
13198
|
+
_ref2$onSaveAsDraft = _ref2.onSaveAsDraft,
|
|
13199
|
+
onSaveAsDraft = _ref2$onSaveAsDraft === void 0 ? function (formValues) {} : _ref2$onSaveAsDraft,
|
|
13200
|
+
_ref2$onPublish = _ref2.onPublish,
|
|
13201
|
+
onPublish = _ref2$onPublish === void 0 ? function (formValues) {} : _ref2$onPublish;
|
|
13202
|
+
var _useWarningsTranslati = useWarningsTranslation(),
|
|
13203
|
+
t = _useWarningsTranslati.t;
|
|
13204
|
+
var _useFormContext = useFormContext(),
|
|
13205
|
+
control = _useFormContext.control,
|
|
13206
|
+
getValues = _useFormContext.getValues,
|
|
13207
|
+
handleSubmit = _useFormContext.handleSubmit;
|
|
13208
|
+
var _useFieldArray = useFieldArray({
|
|
13209
|
+
control: control,
|
|
13210
|
+
name: 'warnings'
|
|
13211
|
+
}),
|
|
13212
|
+
fields = _useFieldArray.fields,
|
|
13213
|
+
append = _useFieldArray.append,
|
|
13214
|
+
remove = _useFieldArray.remove,
|
|
13215
|
+
move = _useFieldArray.move;
|
|
13216
|
+
var warningEventType = useWatch({
|
|
13217
|
+
control: control,
|
|
13218
|
+
name: 'warningEventType'
|
|
13219
|
+
});
|
|
13220
|
+
var _React$useState = React.useState(function () {
|
|
13221
|
+
return getDefaultDayRangeForType(getValues('warningEventType'));
|
|
13222
|
+
}),
|
|
13223
|
+
selectedDays = _React$useState[0],
|
|
13224
|
+
setSelectedDays = _React$useState[1];
|
|
13225
|
+
React.useEffect(function () {
|
|
13226
|
+
setSelectedDays(getDefaultDayRangeForType(warningEventType));
|
|
13227
|
+
}, [warningEventType]);
|
|
13228
|
+
var _React$useState2 = React.useState(null),
|
|
13229
|
+
menuAnchorEl = _React$useState2[0],
|
|
13230
|
+
setMenuAnchorEl = _React$useState2[1];
|
|
13231
|
+
var handleToggleDay = function handleToggleDay(day) {
|
|
13232
|
+
setSelectedDays(function (prev) {
|
|
13233
|
+
if (prev.length === 0) {
|
|
13234
|
+
return [day, day];
|
|
13235
|
+
}
|
|
13236
|
+
if (prev.length === 2 && prev[0] === day && prev[1] === day) {
|
|
13237
|
+
return [];
|
|
13238
|
+
}
|
|
13239
|
+
return [prev[0], day];
|
|
13240
|
+
});
|
|
13241
|
+
};
|
|
13242
|
+
var timelineRange = React.useMemo(function () {
|
|
13243
|
+
return getTimelineRange(selectedDays);
|
|
13244
|
+
}, [selectedDays]);
|
|
13245
|
+
var onAddWarning = function onAddWarning() {
|
|
13246
|
+
var validFrom = dateUtils.add(dateUtils.getNowUtc(), {
|
|
13247
|
+
hours: DEFAULT_WARNING_START_OFFSET_HOURS
|
|
13248
|
+
});
|
|
13249
|
+
var validUntil = dateUtils.add(validFrom, {
|
|
13250
|
+
hours: DEFAULT_WARNING_DURATION_HOURS
|
|
13251
|
+
});
|
|
13252
|
+
append(Object.assign({}, warningEventItemDefaultValues, {
|
|
13253
|
+
level: WarningLevel.moderate,
|
|
13254
|
+
validFrom: validFrom.toISOString(),
|
|
13255
|
+
validUntil: validUntil.toISOString()
|
|
13256
|
+
}, getInheritedEventFields(getValues())));
|
|
13257
|
+
};
|
|
13258
|
+
var onDeleteWarning = function onDeleteWarning(index) {
|
|
13259
|
+
remove(index);
|
|
13260
|
+
};
|
|
13261
|
+
var buildSubmitValues = function buildSubmitValues(values) {
|
|
13262
|
+
var inherited = getInheritedEventFields(values);
|
|
13263
|
+
return Object.assign({}, values, {
|
|
13264
|
+
warnings: values.warnings.map(function (warning) {
|
|
13265
|
+
return Object.assign({}, warning, inherited);
|
|
13266
|
+
})
|
|
13267
|
+
});
|
|
13268
|
+
};
|
|
13269
|
+
var handleSaveAsDraft = handleSubmit(function (values) {
|
|
13270
|
+
onSaveAsDraft(buildSubmitValues(values));
|
|
13271
|
+
});
|
|
13272
|
+
var handlePublish = handleSubmit(function (values) {
|
|
13273
|
+
onPublish(buildSubmitValues(values));
|
|
13274
|
+
});
|
|
13275
|
+
return jsxs(Box, {
|
|
13276
|
+
sx: {
|
|
13277
|
+
display: 'flex',
|
|
13278
|
+
flexDirection: 'column',
|
|
13279
|
+
height: '100%',
|
|
13280
|
+
backgroundColor: 'geowebColors.background.surfaceApp'
|
|
13281
|
+
},
|
|
13282
|
+
children: [jsxs(Box, {
|
|
13283
|
+
sx: {
|
|
13284
|
+
flex: 1,
|
|
13285
|
+
overflowY: 'auto',
|
|
13286
|
+
overflowX: 'hidden',
|
|
13287
|
+
paddingX: 2,
|
|
13288
|
+
paddingY: 1,
|
|
13289
|
+
display: 'flex',
|
|
13290
|
+
flexDirection: 'column',
|
|
13291
|
+
gap: 0.25
|
|
13292
|
+
},
|
|
13293
|
+
children: [jsxs(Box, {
|
|
13294
|
+
sx: {
|
|
13295
|
+
backgroundColor: 'geowebColors.background.surface',
|
|
13296
|
+
borderRadius: 1,
|
|
13297
|
+
padding: 1
|
|
13298
|
+
},
|
|
13299
|
+
children: [jsxs(Box, {
|
|
13300
|
+
sx: {
|
|
13301
|
+
display: 'flex',
|
|
13302
|
+
alignItems: 'center',
|
|
13303
|
+
gap: 1
|
|
13304
|
+
},
|
|
13305
|
+
children: [jsx(Box, {
|
|
13306
|
+
sx: {
|
|
13307
|
+
flex: '1 1 0',
|
|
13308
|
+
minWidth: 0,
|
|
13309
|
+
position: 'relative'
|
|
13310
|
+
},
|
|
13311
|
+
children: jsx(ReactHookFormTextField, {
|
|
13312
|
+
disabled: isReadOnly,
|
|
13313
|
+
label: t('public-warning-event-incident'),
|
|
13314
|
+
name: "incident"
|
|
13315
|
+
})
|
|
13316
|
+
}), jsx(Box, {
|
|
13317
|
+
sx: {
|
|
13318
|
+
flex: '1.3 1 0',
|
|
13319
|
+
minWidth: 0,
|
|
13320
|
+
'& .MuiSelect-select .MuiGrid-container': {
|
|
13321
|
+
flexWrap: 'nowrap',
|
|
13322
|
+
alignItems: 'center',
|
|
13323
|
+
flexDirection: 'row-reverse',
|
|
13324
|
+
justifyContent: 'flex-end !important',
|
|
13325
|
+
gap: 1
|
|
13326
|
+
},
|
|
13327
|
+
'& .MuiSelect-select .MuiGrid-container > .MuiGrid-root:last-child': {
|
|
13328
|
+
minWidth: 'auto'
|
|
13329
|
+
},
|
|
13330
|
+
'& .MuiSelect-select .MuiSvgIcon-root': {
|
|
13331
|
+
fontSize: '1.2rem'
|
|
13332
|
+
}
|
|
13333
|
+
},
|
|
13334
|
+
children: jsx(Phenomenon, {
|
|
13335
|
+
isDisabled: isReadOnly,
|
|
13336
|
+
isReadOnly: isReadOnly
|
|
13337
|
+
})
|
|
13338
|
+
}), jsx(Box, {
|
|
13339
|
+
sx: {
|
|
13340
|
+
flex: '1.3 1 0',
|
|
13341
|
+
minWidth: 0
|
|
13342
|
+
},
|
|
13343
|
+
children: jsx(ReactHookFormSelect, {
|
|
13344
|
+
disabled: isReadOnly,
|
|
13345
|
+
label: t('public-warning-event-warning-type'),
|
|
13346
|
+
name: "warningEventType",
|
|
13347
|
+
children: warningEventTypes.map(function (type) {
|
|
13348
|
+
return jsx(MenuItem, {
|
|
13349
|
+
value: type.key,
|
|
13350
|
+
children: t(type.translationKey)
|
|
13351
|
+
}, type.key);
|
|
13352
|
+
})
|
|
13353
|
+
})
|
|
13354
|
+
}), jsxs(Box, {
|
|
13355
|
+
sx: {
|
|
13356
|
+
display: 'flex',
|
|
13357
|
+
alignItems: 'center',
|
|
13358
|
+
gap: 0.5,
|
|
13359
|
+
flexShrink: 0
|
|
13360
|
+
},
|
|
13361
|
+
children: [jsx(DaySelector, {
|
|
13362
|
+
isDisabled: isReadOnly,
|
|
13363
|
+
minSelectableDay: getMinSelectableDayForType(warningEventType),
|
|
13364
|
+
onToggleDay: handleToggleDay,
|
|
13365
|
+
selectedDays: selectedDays
|
|
13366
|
+
}), jsx(CustomIconButton, {
|
|
13367
|
+
disabled: isReadOnly,
|
|
13368
|
+
variant: "tool",
|
|
13369
|
+
children: jsx(AlertBadge, {})
|
|
13370
|
+
}), jsx(CustomIconButton, {
|
|
13371
|
+
disabled: isReadOnly,
|
|
13372
|
+
onClick: function onClick(e) {
|
|
13373
|
+
return setMenuAnchorEl(e.currentTarget);
|
|
13374
|
+
},
|
|
13375
|
+
variant: "tool",
|
|
13376
|
+
children: jsx(Options, {})
|
|
13377
|
+
}), jsxs(Menu, {
|
|
13378
|
+
anchorEl: menuAnchorEl,
|
|
13379
|
+
onClose: function onClose() {
|
|
13380
|
+
return setMenuAnchorEl(null);
|
|
13381
|
+
},
|
|
13382
|
+
open: Boolean(menuAnchorEl),
|
|
13383
|
+
children: [jsx(ListSubheader, {
|
|
13384
|
+
sx: {
|
|
13385
|
+
fontSize: 12,
|
|
13386
|
+
lineHeight: '1.5'
|
|
13387
|
+
},
|
|
13388
|
+
children: t('area-manager-share-menu-options')
|
|
13389
|
+
}), jsxs(MenuItem, {
|
|
13390
|
+
onClick: function onClick() {
|
|
13391
|
+
setMenuAnchorEl(null);
|
|
13392
|
+
},
|
|
13393
|
+
children: [jsx(ListItemText, {
|
|
13394
|
+
children: t('public-warning-event-stop')
|
|
13395
|
+
}), jsx(ListItemIcon, {
|
|
13396
|
+
sx: {
|
|
13397
|
+
justifyContent: 'flex-end'
|
|
13398
|
+
},
|
|
13399
|
+
children: jsx(Notifications, {})
|
|
13400
|
+
})]
|
|
13401
|
+
}), jsxs(MenuItem, {
|
|
13402
|
+
onClick: function onClick() {
|
|
13403
|
+
setMenuAnchorEl(null);
|
|
13404
|
+
onDelete();
|
|
13405
|
+
},
|
|
13406
|
+
children: [jsx(ListItemText, {
|
|
13407
|
+
children: t('public-warning-event-delete')
|
|
13408
|
+
}), jsx(ListItemIcon, {
|
|
13409
|
+
sx: {
|
|
13410
|
+
justifyContent: 'flex-end'
|
|
13411
|
+
},
|
|
13412
|
+
children: jsx(Delete, {})
|
|
13413
|
+
})]
|
|
13414
|
+
})]
|
|
13415
|
+
}), jsx(CustomIconButton, {
|
|
13416
|
+
disabled: isReadOnly,
|
|
13417
|
+
variant: "tool",
|
|
13418
|
+
children: jsx(ChevronDown, {})
|
|
13419
|
+
})]
|
|
13420
|
+
})]
|
|
13421
|
+
}), jsxs(Grid, {
|
|
13422
|
+
columnSpacing: 2,
|
|
13423
|
+
container: true,
|
|
13424
|
+
rowSpacing: 2,
|
|
13425
|
+
sx: {
|
|
13426
|
+
marginTop: 0.5
|
|
13427
|
+
},
|
|
13428
|
+
children: [jsx(Grid, {
|
|
13429
|
+
size: {
|
|
13430
|
+
xs: 12,
|
|
13431
|
+
sm: 6
|
|
13432
|
+
},
|
|
13433
|
+
children: jsxs(Box, {
|
|
13434
|
+
sx: {
|
|
13435
|
+
position: 'relative'
|
|
13436
|
+
},
|
|
13437
|
+
children: [jsx(ReactHookFormTextField, {
|
|
13438
|
+
disabled: isReadOnly,
|
|
13439
|
+
label: t('public-warning-event-summary'),
|
|
13440
|
+
minRows: 3,
|
|
13441
|
+
multiline: true,
|
|
13442
|
+
name: "texts.headlineOriginal"
|
|
13443
|
+
}), jsx(CustomIconButton, {
|
|
13444
|
+
disabled: isReadOnly,
|
|
13445
|
+
onClick: onOpenWarningSummary,
|
|
13446
|
+
sx: {
|
|
13447
|
+
position: 'absolute',
|
|
13448
|
+
right: 0,
|
|
13449
|
+
bottom: 8,
|
|
13450
|
+
zIndex: 1
|
|
13451
|
+
},
|
|
13452
|
+
variant: "tool",
|
|
13453
|
+
children: jsx(Edit, {})
|
|
13454
|
+
})]
|
|
13455
|
+
})
|
|
13456
|
+
}), jsx(Grid, {
|
|
13457
|
+
size: {
|
|
13458
|
+
xs: 12,
|
|
13459
|
+
sm: 6
|
|
13460
|
+
},
|
|
13461
|
+
children: jsx(ReactHookFormTextField, {
|
|
13462
|
+
disabled: isReadOnly,
|
|
13463
|
+
label: t('public-warning-event-translation'),
|
|
13464
|
+
minRows: 3,
|
|
13465
|
+
multiline: true,
|
|
13466
|
+
name: "texts.headlineTranslation"
|
|
13467
|
+
})
|
|
13468
|
+
})]
|
|
13469
|
+
})]
|
|
13470
|
+
}), jsx(WarningEventTimelineRangeProvider, {
|
|
13471
|
+
range: timelineRange,
|
|
13472
|
+
children: jsx(ReactSortable, {
|
|
13473
|
+
animation: 200,
|
|
13474
|
+
direction: "vertical",
|
|
13475
|
+
handle: ".handle",
|
|
13476
|
+
list: fields,
|
|
13477
|
+
onSort: function onSort(_ref3) {
|
|
13478
|
+
var oldIndex = _ref3.oldIndex,
|
|
13479
|
+
newIndex = _ref3.newIndex;
|
|
13480
|
+
if (oldIndex === undefined || newIndex === undefined) {
|
|
13481
|
+
return;
|
|
13482
|
+
}
|
|
13483
|
+
move(oldIndex, newIndex);
|
|
13484
|
+
},
|
|
13485
|
+
setList: function setList() {},
|
|
13486
|
+
tag: "div",
|
|
13487
|
+
children: fields.map(function (field, index) {
|
|
13488
|
+
return jsx(WarningEventItem, {
|
|
13489
|
+
index: index,
|
|
13490
|
+
isReadOnly: isReadOnly,
|
|
13491
|
+
onDeleteWarning: onDeleteWarning
|
|
13492
|
+
}, field.id);
|
|
13493
|
+
})
|
|
13494
|
+
})
|
|
13495
|
+
}), !isReadOnly && jsx(Box, {
|
|
13496
|
+
sx: {
|
|
13497
|
+
display: 'flex',
|
|
13498
|
+
justifyContent: 'center'
|
|
13499
|
+
},
|
|
13500
|
+
children: jsx(Button, {
|
|
13501
|
+
onClick: onAddWarning,
|
|
13502
|
+
startIcon: jsx(Add, {}),
|
|
13503
|
+
variant: "tertiary",
|
|
13504
|
+
children: t('public-warning-event-add-warning')
|
|
13505
|
+
})
|
|
13506
|
+
})]
|
|
13507
|
+
}), !isReadOnly && jsx(Box, {
|
|
13508
|
+
sx: {
|
|
13509
|
+
display: 'flex',
|
|
13510
|
+
justifyContent: 'center',
|
|
13511
|
+
alignItems: 'center',
|
|
13512
|
+
padding: 2,
|
|
13513
|
+
borderTop: 1,
|
|
13514
|
+
borderColor: 'divider'
|
|
13515
|
+
},
|
|
13516
|
+
children: jsxs(Box, {
|
|
13517
|
+
sx: {
|
|
13518
|
+
display: 'flex',
|
|
13519
|
+
gap: 1,
|
|
13520
|
+
alignItems: 'center',
|
|
13521
|
+
'& button:not(:last-child)': {
|
|
13522
|
+
mr: 3
|
|
13523
|
+
}
|
|
13524
|
+
},
|
|
13525
|
+
children: [jsx(Button, {
|
|
13526
|
+
onClick: onCancel,
|
|
13527
|
+
variant: "tertiary",
|
|
13528
|
+
children: t('public-warning-event-button-cancel')
|
|
13529
|
+
}), jsx(Button, {
|
|
13530
|
+
color: "error",
|
|
13531
|
+
onClick: onDelete,
|
|
13532
|
+
variant: "tertiary",
|
|
13533
|
+
children: t('public-warning-event-button-delete')
|
|
13534
|
+
}), jsx(Button, {
|
|
13535
|
+
onClick: handleSaveAsDraft,
|
|
13536
|
+
variant: "tertiary",
|
|
13537
|
+
children: t('public-warning-event-button-save-draft')
|
|
13538
|
+
}), jsx(Button, {
|
|
13539
|
+
onClick: handlePublish,
|
|
13540
|
+
variant: "primary",
|
|
13541
|
+
children: t('public-warning-event-button-publish')
|
|
13542
|
+
})]
|
|
13543
|
+
})
|
|
13544
|
+
})]
|
|
13545
|
+
});
|
|
13546
|
+
};
|
|
13547
|
+
|
|
13548
|
+
var DEFAULT_SIZE = {
|
|
13549
|
+
width: 1024,
|
|
13550
|
+
height: 600
|
|
13551
|
+
};
|
|
13552
|
+
var DEFAULT_POSITION = {
|
|
13553
|
+
top: 8,
|
|
13554
|
+
left: 60
|
|
13555
|
+
};
|
|
13556
|
+
var DEFAULT_MIN_SIZE = {
|
|
13557
|
+
width: 600,
|
|
13558
|
+
height: 400
|
|
13559
|
+
};
|
|
13560
|
+
var WarningEventDialog = function WarningEventDialog(_ref) {
|
|
13561
|
+
var bounds = _ref.bounds,
|
|
13562
|
+
isOpen = _ref.isOpen,
|
|
13563
|
+
onClose = _ref.onClose,
|
|
13564
|
+
_ref$onMouseDown = _ref.onMouseDown,
|
|
13565
|
+
onMouseDown = _ref$onMouseDown === void 0 ? function () {} : _ref$onMouseDown,
|
|
13566
|
+
_ref$order = _ref.order,
|
|
13567
|
+
order = _ref$order === void 0 ? 0 : _ref$order,
|
|
13568
|
+
_ref$source = _ref.source,
|
|
13569
|
+
source = _ref$source === void 0 ? 'app' : _ref$source,
|
|
13570
|
+
_ref$size = _ref.size,
|
|
13571
|
+
size = _ref$size === void 0 ? DEFAULT_SIZE : _ref$size,
|
|
13572
|
+
_ref$startPosition = _ref.startPosition,
|
|
13573
|
+
startPosition = _ref$startPosition === void 0 ? DEFAULT_POSITION : _ref$startPosition,
|
|
13574
|
+
_ref$headerSize = _ref.headerSize,
|
|
13575
|
+
headerSize = _ref$headerSize === void 0 ? 'xs' : _ref$headerSize,
|
|
13576
|
+
children = _ref.children;
|
|
13577
|
+
var _useWarningsTranslati = useWarningsTranslation(),
|
|
13578
|
+
t = _useWarningsTranslati.t;
|
|
13579
|
+
var startSizeCalc = calculateStartSize(DEFAULT_MIN_SIZE, size, startPosition);
|
|
13580
|
+
var _React$useState = React.useState(startSizeCalc),
|
|
13581
|
+
sizeInState = _React$useState[0],
|
|
13582
|
+
setSizeInState = _React$useState[1];
|
|
13583
|
+
return jsx(ToolContainerDraggable, {
|
|
13584
|
+
bounds: bounds,
|
|
13585
|
+
dragHandleIcon: null,
|
|
13586
|
+
headerSize: headerSize,
|
|
13587
|
+
isOpen: isOpen,
|
|
13588
|
+
minHeight: DEFAULT_MIN_SIZE.height,
|
|
13589
|
+
minWidth: DEFAULT_MIN_SIZE.width,
|
|
13590
|
+
onClose: onClose,
|
|
13591
|
+
onDragEnd: function onDragEnd(_position, dragSize) {
|
|
13592
|
+
if (dragSize !== sizeInState) {
|
|
13593
|
+
setSizeInState(dragSize);
|
|
13594
|
+
}
|
|
13595
|
+
},
|
|
13596
|
+
onMouseDown: onMouseDown,
|
|
13597
|
+
onResizeStop: function onResizeStop(_event, _direction, node) {
|
|
13598
|
+
var width = node.offsetWidth,
|
|
13599
|
+
height = node.offsetHeight;
|
|
13600
|
+
setSizeInState({
|
|
13601
|
+
width: width,
|
|
13602
|
+
height: height
|
|
13603
|
+
});
|
|
13604
|
+
},
|
|
13605
|
+
order: order,
|
|
13606
|
+
source: source,
|
|
13607
|
+
startPosition: startPosition,
|
|
13608
|
+
startSize: sizeInState,
|
|
13609
|
+
title: t('public-warning-event-title'),
|
|
13610
|
+
children: children
|
|
13611
|
+
});
|
|
13612
|
+
};
|
|
13613
|
+
|
|
13614
|
+
var WarningEventDialogConnect = function WarningEventDialogConnect(_ref) {
|
|
13615
|
+
var bounds = _ref.bounds,
|
|
13616
|
+
_ref$source = _ref.source,
|
|
13617
|
+
source = _ref$source === void 0 ? 'app' : _ref$source,
|
|
13618
|
+
startPosition = _ref.startPosition,
|
|
13619
|
+
initialValues = _ref.initialValues;
|
|
13620
|
+
var _useSetupDialog = useSetupDialog(warningEventDialogType, source),
|
|
13621
|
+
dialogOrder = _useSetupDialog.dialogOrder,
|
|
13622
|
+
setDialogOrder = _useSetupDialog.setDialogOrder,
|
|
13623
|
+
isDialogOpen = _useSetupDialog.isDialogOpen,
|
|
13624
|
+
uiSource = _useSetupDialog.uiSource,
|
|
13625
|
+
onCloseDialog = _useSetupDialog.onCloseDialog;
|
|
13626
|
+
return jsx(ReactHookFormProvider, {
|
|
13627
|
+
options: Object.assign({}, defaultFormOptions, {
|
|
13628
|
+
mode: 'onSubmit',
|
|
13629
|
+
defaultValues: Object.assign({}, defaultValues, initialValues)
|
|
13630
|
+
}),
|
|
13631
|
+
children: jsx(WarningEventDialog, {
|
|
13632
|
+
bounds: bounds,
|
|
13633
|
+
isOpen: isDialogOpen,
|
|
13634
|
+
onClose: onCloseDialog,
|
|
13635
|
+
onMouseDown: setDialogOrder,
|
|
13636
|
+
order: dialogOrder,
|
|
13637
|
+
source: uiSource,
|
|
13638
|
+
startPosition: startPosition,
|
|
13639
|
+
children: jsx(WarningEventFormContent, {
|
|
13640
|
+
onCancel: onCloseDialog,
|
|
13641
|
+
// TODO: wire up to warnings API once the event endpoints are available
|
|
13642
|
+
onDelete: function onDelete() {},
|
|
13643
|
+
onOpenWarningSummary: function onOpenWarningSummary() {},
|
|
13644
|
+
onPublish: function onPublish() {},
|
|
13645
|
+
onSaveAsDraft: function onSaveAsDraft() {}
|
|
13646
|
+
})
|
|
13647
|
+
})
|
|
13648
|
+
});
|
|
13649
|
+
};
|
|
13650
|
+
|
|
13651
|
+
var BUTTON_AIRMET = 'AIRMET';
|
|
13652
|
+
var BUTTON_SIGMET = 'SIGMET';
|
|
13653
|
+
var NewWarningButton = function NewWarningButton(_ref) {
|
|
13654
|
+
var onCreateWarning = _ref.onCreateWarning,
|
|
13655
|
+
_ref$isDefaultOpen = _ref.isDefaultOpen,
|
|
13656
|
+
isDefaultOpen = _ref$isDefaultOpen === void 0 ? false : _ref$isDefaultOpen;
|
|
13657
|
+
var _useWarningsTranslati = useWarningsTranslation(),
|
|
13658
|
+
t = _useWarningsTranslati.t;
|
|
13659
|
+
var config = sessionStorageProvider.getConfig();
|
|
13660
|
+
var showMartimeWarningOption = !!config.GW_WARNINGS_MARITIME_WARNINGS && !!config.GW_DRAWINGS_BASE_URL;
|
|
13661
|
+
var showAirMetOption = !!config.GW_AIRMET_BASE_URL;
|
|
13662
|
+
var showSigmetOption = !!config.GW_SIGMET_BASE_URL;
|
|
13663
|
+
var showPublicWarningOption = !!config.GW_DRAWINGS_BASE_URL;
|
|
13664
|
+
var showWarningsEventsOption = !!config.GW_FEATURE_WARNINGS_EVENT;
|
|
13665
|
+
var _React$useState = React.useState(null),
|
|
13666
|
+
anchorEl = _React$useState[0],
|
|
13667
|
+
setAnchorEl = _React$useState[1];
|
|
13668
|
+
var isOpen = Boolean(anchorEl);
|
|
13669
|
+
var _React$useState2 = React.useState(0),
|
|
13670
|
+
menuMinWidth = _React$useState2[0],
|
|
13671
|
+
setMenuMinWidth = _React$useState2[1];
|
|
13672
|
+
var buttonId = 'newWarningButton';
|
|
13673
|
+
React.useEffect(function () {
|
|
13674
|
+
if (isDefaultOpen) {
|
|
13675
|
+
setAnchorEl(document.getElementById(buttonId));
|
|
13676
|
+
}
|
|
13677
|
+
}, [isDefaultOpen, buttonId]);
|
|
13678
|
+
var handleClick = function handleClick(event) {
|
|
13679
|
+
event.stopPropagation();
|
|
13680
|
+
setAnchorEl(event.currentTarget);
|
|
13681
|
+
var buttonWidth = event.currentTarget.getBoundingClientRect().width;
|
|
13682
|
+
setMenuMinWidth(buttonWidth);
|
|
13683
|
+
};
|
|
13684
|
+
var handleClose = function handleClose(event) {
|
|
13685
|
+
event.stopPropagation();
|
|
13686
|
+
setAnchorEl(null);
|
|
13687
|
+
};
|
|
13688
|
+
var onCreateNewWarning = function onCreateNewWarning(warningType, event) {
|
|
13689
|
+
onCreateWarning(warningType);
|
|
13690
|
+
handleClose(event);
|
|
13691
|
+
};
|
|
13692
|
+
return jsxs(Fragment, {
|
|
13693
|
+
children: [jsxs(CustomToggleButton, {
|
|
13694
|
+
id: buttonId,
|
|
13695
|
+
onClick: handleClick,
|
|
13696
|
+
sx: Object.assign({
|
|
13697
|
+
textTransform: 'initial!important',
|
|
13698
|
+
marginBottom: '8px',
|
|
13699
|
+
fontSize: '12px',
|
|
13700
|
+
height: '32px!important',
|
|
13701
|
+
whiteSpace: 'nowrap',
|
|
13702
|
+
minWidth: 'auto',
|
|
13703
|
+
paddingRight: '12px!important'
|
|
13704
|
+
}, isOpen ? {
|
|
13705
|
+
'&.MuiToggleButton-root.primary': {
|
|
13706
|
+
backgroundColor: 'geowebColors.buttons.primary.mouseOver.fill'
|
|
13707
|
+
}
|
|
13708
|
+
} : {}),
|
|
13709
|
+
children: [jsx(Add, {}), t('warning-list-button_create')]
|
|
13710
|
+
}), jsxs(Menu, {
|
|
13711
|
+
anchorEl: anchorEl,
|
|
13712
|
+
anchorOrigin: {
|
|
13713
|
+
vertical: 'bottom',
|
|
13714
|
+
horizontal: 'center'
|
|
13715
|
+
},
|
|
13716
|
+
onClose: function onClose(event, reason) {
|
|
13717
|
+
if (reason === 'tabKeyDown') {
|
|
13718
|
+
return;
|
|
13719
|
+
}
|
|
13720
|
+
handleClose(event);
|
|
13721
|
+
},
|
|
13722
|
+
open: isOpen,
|
|
13723
|
+
slotProps: {
|
|
13724
|
+
root: {
|
|
13725
|
+
slotProps: {
|
|
13726
|
+
backdrop: {
|
|
13727
|
+
style: {
|
|
13728
|
+
opacity: 0,
|
|
13729
|
+
transition: 'none'
|
|
13730
|
+
}
|
|
13731
|
+
}
|
|
13732
|
+
}
|
|
13733
|
+
},
|
|
13734
|
+
list: {
|
|
13735
|
+
style: {
|
|
13736
|
+
padding: '0px',
|
|
13737
|
+
minWidth: menuMinWidth || undefined
|
|
13738
|
+
}
|
|
13739
|
+
}
|
|
13740
|
+
},
|
|
13741
|
+
transformOrigin: {
|
|
13742
|
+
vertical: 'top',
|
|
13743
|
+
horizontal: 'center'
|
|
13744
|
+
},
|
|
13745
|
+
children: [showPublicWarningOption ? jsx(MenuItem, {
|
|
13746
|
+
onClick: function onClick(event) {
|
|
13747
|
+
onCreateNewWarning('public', event);
|
|
13748
|
+
},
|
|
13749
|
+
children: jsx(ListItemText, {
|
|
13750
|
+
children: t('public-warning-title').toUpperCase()
|
|
13751
|
+
})
|
|
13752
|
+
}, "Public") : null, !!showWarningsEventsOption && jsx(MenuItem, {
|
|
13753
|
+
onClick: function onClick(event) {
|
|
13754
|
+
onCreateNewWarning('warningEvent', event);
|
|
13755
|
+
},
|
|
13756
|
+
children: jsx(ListItemText, {
|
|
13757
|
+
children: t('public-warning-event-title').toUpperCase()
|
|
13758
|
+
})
|
|
13759
|
+
}, "PublicWarningsEvent"), showAirMetOption ? jsx(MenuItem, {
|
|
13760
|
+
onClick: function onClick(event) {
|
|
13761
|
+
onCreateNewWarning('airmet', event);
|
|
13762
|
+
},
|
|
13763
|
+
children: jsx(ListItemText, {
|
|
13764
|
+
children: BUTTON_AIRMET
|
|
13765
|
+
})
|
|
13766
|
+
}, "Airmet") : null, showSigmetOption ? jsx(MenuItem, {
|
|
13767
|
+
onClick: function onClick(event) {
|
|
13768
|
+
onCreateNewWarning('sigmet', event);
|
|
13769
|
+
},
|
|
13770
|
+
children: jsx(ListItemText, {
|
|
13771
|
+
children: BUTTON_SIGMET
|
|
13772
|
+
})
|
|
13773
|
+
}, "Sigmet") : null, showMartimeWarningOption ? jsxs(Fragment, {
|
|
13774
|
+
children: [jsx(MenuItem, {
|
|
13775
|
+
onClick: function onClick(event) {
|
|
13776
|
+
onCreateNewWarning('maritimeWarningCoastal', event);
|
|
13777
|
+
},
|
|
13778
|
+
children: jsx(ListItemText, {
|
|
13779
|
+
children: t('maritime-warning-coastal-title').toUpperCase()
|
|
13780
|
+
})
|
|
13781
|
+
}, "MaritimeWarningCoastal"), jsx(MenuItem, {
|
|
13782
|
+
onClick: function onClick(event) {
|
|
13783
|
+
onCreateNewWarning('maritimeWarningNorthSea', event);
|
|
13784
|
+
},
|
|
13785
|
+
children: jsx(ListItemText, {
|
|
13786
|
+
children: t('maritime-warning-northsea-title').toUpperCase()
|
|
13787
|
+
})
|
|
13788
|
+
}, "MaritimeWarningNorthSea")]
|
|
13789
|
+
}) : null]
|
|
13790
|
+
})]
|
|
13791
|
+
});
|
|
13792
|
+
};
|
|
13793
|
+
|
|
13794
|
+
var SelectAllButton = function SelectAllButton(_ref) {
|
|
13795
|
+
var selectionState = _ref.selectionState,
|
|
13796
|
+
onSelectAll = _ref.onSelectAll,
|
|
13797
|
+
onSelectNone = _ref.onSelectNone,
|
|
13798
|
+
_ref$disabled = _ref.disabled,
|
|
13799
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
13800
|
+
var _useWarningsTranslati = useWarningsTranslation(),
|
|
13801
|
+
t = _useWarningsTranslati.t;
|
|
13802
|
+
var allLabel = t('filter-all');
|
|
13803
|
+
var menuTooltipTitle = t('filter-select');
|
|
13804
|
+
var noneLabel = t('filter-none');
|
|
13805
|
+
var selectAllLabel = t('filter-select-all');
|
|
13806
|
+
var deselectAllLabel = t('filter-deselect-all');
|
|
13807
|
+
var tooltipTitle = selectionState === 'all' || selectionState === 'some' ? deselectAllLabel : selectAllLabel;
|
|
13808
|
+
var id = React.useId();
|
|
13809
|
+
var menuButtonId = id + "-menu-button";
|
|
13810
|
+
var menuId = id + "-menu";
|
|
13811
|
+
var _React$useState = React.useState(null),
|
|
13812
|
+
menuAnchorEl = _React$useState[0],
|
|
13813
|
+
setMenuAnchorEl = _React$useState[1];
|
|
13814
|
+
var menuOpen = Boolean(menuAnchorEl);
|
|
13815
|
+
var isActive = !disabled && (menuOpen || selectionState !== 'none');
|
|
13816
|
+
var handleOpenMenu = function handleOpenMenu(event) {
|
|
13817
|
+
if (disabled) {
|
|
13818
|
+
return;
|
|
13819
|
+
}
|
|
13820
|
+
setMenuAnchorEl(event.currentTarget);
|
|
13821
|
+
};
|
|
13822
|
+
var handleCloseMenu = function handleCloseMenu() {
|
|
13823
|
+
setMenuAnchorEl(null);
|
|
13824
|
+
};
|
|
13825
|
+
var toggleSelection = function toggleSelection() {
|
|
13826
|
+
if (disabled) {
|
|
13827
|
+
return;
|
|
13828
|
+
}
|
|
13829
|
+
if (selectionState === 'none') {
|
|
13830
|
+
onSelectAll();
|
|
13831
|
+
return;
|
|
13832
|
+
}
|
|
13833
|
+
onSelectNone();
|
|
13834
|
+
};
|
|
13835
|
+
var handleCheckboxClick = function handleCheckboxClick(event) {
|
|
13836
|
+
event.stopPropagation();
|
|
13837
|
+
toggleSelection();
|
|
13838
|
+
};
|
|
13839
|
+
var handleCheckboxKeyDown = function handleCheckboxKeyDown(event) {
|
|
13840
|
+
if (disabled || event.key !== 'Enter' && event.key !== ' ') {
|
|
13841
|
+
return;
|
|
13842
|
+
}
|
|
13843
|
+
event.preventDefault();
|
|
13844
|
+
toggleSelection();
|
|
13845
|
+
};
|
|
13846
|
+
var getSegmentHoverBackground = function getSegmentHoverBackground(theme) {
|
|
13847
|
+
if (disabled) {
|
|
13848
|
+
return 'transparent';
|
|
13849
|
+
}
|
|
13850
|
+
return isActive ? theme.palette.primary.dark : theme.palette.action.hover;
|
|
13851
|
+
};
|
|
13852
|
+
var segmentHoverSx = {
|
|
13853
|
+
borderRadius: 0.5,
|
|
13854
|
+
'&:hover': {
|
|
13855
|
+
backgroundColor: getSegmentHoverBackground
|
|
13856
|
+
}
|
|
13857
|
+
};
|
|
13858
|
+
var iconColor = isActive ? 'common.white' : 'text.primary';
|
|
13859
|
+
var ariaChecked = selectionState === 'some' ? 'mixed' : selectionState === 'all';
|
|
13860
|
+
return jsxs(Box, {
|
|
13861
|
+
sx: {
|
|
13862
|
+
display: 'inline-flex',
|
|
13863
|
+
alignItems: 'center',
|
|
13864
|
+
borderRadius: 0.5,
|
|
13865
|
+
backgroundColor: isActive ? 'primary.main' : 'transparent',
|
|
13866
|
+
opacity: disabled ? 0.5 : 1
|
|
13867
|
+
},
|
|
13868
|
+
children: [jsx(Tooltip, {
|
|
13869
|
+
placement: "bottom",
|
|
13870
|
+
title: menuTooltipTitle,
|
|
13871
|
+
children: jsx("span", {
|
|
13872
|
+
children: jsx(IconButton, {
|
|
13873
|
+
"aria-controls": menuOpen ? menuId : undefined,
|
|
13874
|
+
"aria-expanded": menuOpen,
|
|
13875
|
+
"aria-haspopup": "true",
|
|
13876
|
+
"aria-label": menuTooltipTitle,
|
|
13877
|
+
disabled: disabled,
|
|
13878
|
+
id: menuButtonId,
|
|
13879
|
+
onClick: handleOpenMenu,
|
|
13880
|
+
size: "small",
|
|
13881
|
+
sx: Object.assign({}, segmentHoverSx, {
|
|
13882
|
+
width: 24,
|
|
13883
|
+
height: 24,
|
|
13884
|
+
borderTopRightRadius: 0,
|
|
13885
|
+
borderBottomRightRadius: 0
|
|
13886
|
+
}),
|
|
13887
|
+
children: jsx(ArrowDropDownDown, {
|
|
13888
|
+
fontSize: "small",
|
|
13889
|
+
sx: {
|
|
13890
|
+
color: iconColor,
|
|
13891
|
+
fontSize: 18
|
|
13892
|
+
}
|
|
13893
|
+
})
|
|
13894
|
+
})
|
|
13895
|
+
})
|
|
13896
|
+
}), jsx(Tooltip, {
|
|
13897
|
+
placement: "bottom",
|
|
13898
|
+
title: tooltipTitle,
|
|
13899
|
+
children: jsx(Box, {
|
|
13900
|
+
"aria-checked": ariaChecked,
|
|
13901
|
+
"aria-label": tooltipTitle,
|
|
13902
|
+
component: "span",
|
|
13903
|
+
"data-testid": "select-all-batch-delete-checkbox",
|
|
13904
|
+
onClick: handleCheckboxClick,
|
|
13905
|
+
onKeyDown: handleCheckboxKeyDown,
|
|
13906
|
+
role: "checkbox",
|
|
13907
|
+
sx: Object.assign({}, segmentHoverSx, {
|
|
13908
|
+
display: 'inline-flex',
|
|
13909
|
+
alignItems: 'center',
|
|
13910
|
+
borderTopLeftRadius: 0,
|
|
13911
|
+
borderBottomLeftRadius: 0,
|
|
13912
|
+
cursor: disabled ? 'default' : 'pointer'
|
|
13913
|
+
}),
|
|
13914
|
+
tabIndex: disabled ? -1 : 0,
|
|
13915
|
+
children: jsx(Checkbox, {
|
|
13916
|
+
checked: selectionState === 'all',
|
|
13917
|
+
disableRipple: true,
|
|
13918
|
+
disabled: disabled,
|
|
13919
|
+
indeterminate: selectionState === 'some',
|
|
13920
|
+
size: "small",
|
|
13921
|
+
sx: {
|
|
13922
|
+
pointerEvents: 'none',
|
|
13923
|
+
color: isActive ? 'common.white' : 'primary.main',
|
|
13924
|
+
padding: '2px',
|
|
13925
|
+
'&.Mui-checked, &.MuiCheckbox-indeterminate': {
|
|
13926
|
+
color: 'common.white'
|
|
13927
|
+
}
|
|
13928
|
+
},
|
|
13929
|
+
tabIndex: -1
|
|
13930
|
+
})
|
|
13931
|
+
})
|
|
13932
|
+
}), jsxs(Menu, {
|
|
13933
|
+
anchorEl: menuAnchorEl,
|
|
13934
|
+
anchorOrigin: {
|
|
13935
|
+
horizontal: 'left',
|
|
13936
|
+
vertical: 'bottom'
|
|
13937
|
+
},
|
|
13938
|
+
id: menuId,
|
|
13939
|
+
onClose: handleCloseMenu,
|
|
13940
|
+
open: menuOpen,
|
|
13941
|
+
slotProps: {
|
|
13942
|
+
list: {
|
|
13943
|
+
'aria-labelledby': menuButtonId
|
|
13944
|
+
}
|
|
13945
|
+
},
|
|
13946
|
+
transformOrigin: {
|
|
13947
|
+
horizontal: 'left',
|
|
13948
|
+
vertical: 'top'
|
|
13949
|
+
},
|
|
13950
|
+
children: [jsx(MenuItem, {
|
|
13951
|
+
onClick: function onClick() {
|
|
13952
|
+
onSelectAll();
|
|
13953
|
+
handleCloseMenu();
|
|
13954
|
+
},
|
|
13955
|
+
children: allLabel
|
|
13956
|
+
}), jsx(MenuItem, {
|
|
13957
|
+
onClick: function onClick() {
|
|
13958
|
+
onSelectNone();
|
|
13959
|
+
handleCloseMenu();
|
|
13960
|
+
},
|
|
13961
|
+
children: noneLabel
|
|
13962
|
+
})]
|
|
13963
|
+
})]
|
|
13964
|
+
});
|
|
13965
|
+
};
|
|
13966
|
+
|
|
13967
|
+
/* *
|
|
13968
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13969
|
+
* you may not use this file except in compliance with the License.
|
|
13970
|
+
* You may obtain a copy of the License at
|
|
13971
|
+
*
|
|
13972
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13973
|
+
*
|
|
13974
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13975
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13976
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13977
|
+
* See the License for the specific language governing permissions and
|
|
13978
|
+
* limitations under the License.
|
|
13979
|
+
*
|
|
13980
|
+
* Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
13981
|
+
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
13982
|
+
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
13983
|
+
* */
|
|
13984
|
+
var getWarningStatus = function getWarningStatus(warning) {
|
|
13985
|
+
var _warning$status;
|
|
13986
|
+
return (_warning$status = warning.status) != null ? _warning$status : mapProductStatusToWarningStatus(warning.productStatus);
|
|
13987
|
+
};
|
|
13988
|
+
var isWarningSelectableForBatchDelete = function isWarningSelectableForBatchDelete(warning) {
|
|
13989
|
+
var status = getWarningStatus(warning);
|
|
13990
|
+
return status === PublicWarningStatus.DRAFT || status === PublicWarningStatus.DRAFT_PUBLISHED || status === PublicWarningStatus.TODO;
|
|
13991
|
+
};
|
|
13992
|
+
var getBatchDeletableWarningIds = function getBatchDeletableWarningIds(warnings) {
|
|
13993
|
+
return warnings.filter(isWarningSelectableForBatchDelete).map(function (warning) {
|
|
13994
|
+
return warning.id;
|
|
13995
|
+
}).filter(function (id) {
|
|
13996
|
+
return !!id;
|
|
13997
|
+
});
|
|
13998
|
+
};
|
|
13999
|
+
var getBatchSelectionState = function getBatchSelectionState(selectedIds, deletableIds) {
|
|
14000
|
+
if (deletableIds.length === 0) {
|
|
14001
|
+
return 'none';
|
|
14002
|
+
}
|
|
14003
|
+
var selectedIdSet = new Set(selectedIds);
|
|
14004
|
+
var selectedDeletableCount = deletableIds.filter(function (id) {
|
|
14005
|
+
return selectedIdSet.has(id);
|
|
14006
|
+
}).length;
|
|
14007
|
+
if (selectedDeletableCount === 0) {
|
|
14008
|
+
return 'none';
|
|
14009
|
+
}
|
|
14010
|
+
if (selectedDeletableCount === deletableIds.length) {
|
|
14011
|
+
return 'all';
|
|
14012
|
+
}
|
|
14013
|
+
return 'some';
|
|
14014
|
+
};
|
|
14015
|
+
|
|
14016
|
+
var _excluded$3 = ["title", "status", "children", "width"];
|
|
14017
|
+
var WarningListColumnContent = function WarningListColumnContent(_ref) {
|
|
14018
|
+
var _sx;
|
|
14019
|
+
var title = _ref.title,
|
|
14020
|
+
status = _ref.status,
|
|
14021
|
+
children = _ref.children,
|
|
14022
|
+
_ref$width = _ref.width,
|
|
14023
|
+
width = _ref$width === void 0 ? 76 : _ref$width,
|
|
14024
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
14025
|
+
return jsxs(Grid, {
|
|
14026
|
+
sx: Object.assign({}, Array.isArray(props.sx) ? Object.assign.apply(Object, [{}].concat(props.sx)) : props.sx, {
|
|
14027
|
+
width: width
|
|
14028
|
+
}),
|
|
14029
|
+
children: [!!title && jsx(Box, {
|
|
14030
|
+
sx: (_sx = {
|
|
14031
|
+
overflow: 'hidden',
|
|
14032
|
+
fontWeight: 'normal',
|
|
14033
|
+
textOverflow: 'ellipsis',
|
|
14034
|
+
fontSize: 10,
|
|
14035
|
+
lineHeight: 1.6,
|
|
14036
|
+
height: 12,
|
|
14037
|
+
color: status === PublicWarningStatus.EXPIRED || status === PublicWarningStatus.WITHDRAWN ? 'geowebColors.typographyAndIcons.inactiveText' : 'geowebColors.captions.captionStatus.rgba',
|
|
14038
|
+
display: 'block'
|
|
14039
|
+
}, _sx["@container publicWarningList (min-width: " + breakpoints.desktop + "px)"] = {
|
|
14040
|
+
display: 'none'
|
|
14041
|
+
}, _sx),
|
|
14042
|
+
children: title
|
|
14043
|
+
}), jsx(Box, {
|
|
14044
|
+
sx: {
|
|
14045
|
+
overflow: 'visible',
|
|
14046
|
+
fontSize: 12,
|
|
14047
|
+
lineHeight: 1.2,
|
|
14048
|
+
color: status === PublicWarningStatus.EXPIRED || status === PublicWarningStatus.WITHDRAWN ? 'geowebColors.typographyAndIcons.inactiveText' : 'geowebColors.typographyAndIcons.text'
|
|
14049
|
+
},
|
|
14050
|
+
children: children || '-'
|
|
14051
|
+
})]
|
|
14052
|
+
});
|
|
14053
|
+
};
|
|
14054
|
+
|
|
14055
|
+
var WarningListItemMenu = function WarningListItemMenu(_ref) {
|
|
14056
|
+
var warning = _ref.warning,
|
|
14057
|
+
_ref$onEditWarning = _ref.onEditWarning,
|
|
14058
|
+
onEditWarning = _ref$onEditWarning === void 0 ? function () {} : _ref$onEditWarning,
|
|
14059
|
+
_ref$onDeleteWarning = _ref.onDeleteWarning,
|
|
14060
|
+
onDeleteWarning = _ref$onDeleteWarning === void 0 ? function () {} : _ref$onDeleteWarning,
|
|
14061
|
+
_ref$onDeleteReviewWa = _ref.onDeleteReviewWarning,
|
|
14062
|
+
onDeleteReviewWarning = _ref$onDeleteReviewWa === void 0 ? function () {} : _ref$onDeleteReviewWa,
|
|
14063
|
+
_ref$onExpireWarning = _ref.onExpireWarning,
|
|
14064
|
+
onExpireWarning = _ref$onExpireWarning === void 0 ? function () {} : _ref$onExpireWarning,
|
|
14065
|
+
_ref$onWithdrawWarnin = _ref.onWithdrawWarning,
|
|
14066
|
+
onWithdrawWarning = _ref$onWithdrawWarnin === void 0 ? function () {} : _ref$onWithdrawWarnin,
|
|
14067
|
+
_ref$onActionAviation = _ref.onActionAviationWarning,
|
|
14068
|
+
onActionAviationWarning = _ref$onActionAviation === void 0 ? function () {} : _ref$onActionAviation,
|
|
14069
|
+
_ref$onActionMaritime = _ref.onActionMaritimeWarning,
|
|
14070
|
+
onActionMaritimeWarning = _ref$onActionMaritime === void 0 ? function () {} : _ref$onActionMaritime,
|
|
14071
|
+
t = _ref.t,
|
|
14072
|
+
_ref$shouldDisableAvi = _ref.shouldDisableAviationAmendOption,
|
|
14073
|
+
shouldDisableAviationAmendOption = _ref$shouldDisableAvi === void 0 ? false : _ref$shouldDisableAvi;
|
|
14074
|
+
if (warning.type === 'maritimeWarningCoastal' || warning.type === 'maritimeWarningNorthSea') {
|
|
14075
|
+
return [{
|
|
14076
|
+
text: t('warning-list-button-update'),
|
|
14077
|
+
action: function action() {
|
|
14078
|
+
return onActionMaritimeWarning(warning, MaritimeWarningAction.UPDATE);
|
|
14079
|
+
},
|
|
14080
|
+
icon: jsx(Edit, {})
|
|
14081
|
+
}, {
|
|
14082
|
+
text: t('warning-list-button-extend'),
|
|
14083
|
+
action: function action() {
|
|
12170
14084
|
return onActionMaritimeWarning(warning, MaritimeWarningAction.EXTEND);
|
|
12171
14085
|
},
|
|
12172
14086
|
icon: jsx(Extend24h, {})
|
|
@@ -12304,7 +14218,7 @@ var WarningListItemMenu = function WarningListItemMenu(_ref) {
|
|
|
12304
14218
|
}
|
|
12305
14219
|
};
|
|
12306
14220
|
|
|
12307
|
-
var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onHoverWarning", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning", "onActionAviationWarning", "onActionMaritimeWarning", "shouldDisableAviationAmendOption", "isHidden", "onToggleVisibility"];
|
|
14221
|
+
var _excluded$2 = ["warning", "activeWarningId", "highlightedItem", "onHoverWarning", "onSelectWarning", "onEditWarning", "onDeleteWarning", "onDeleteReviewWarning", "onExpireWarning", "onWithdrawWarning", "onActionAviationWarning", "onActionMaritimeWarning", "shouldDisableAviationAmendOption", "isHidden", "onToggleVisibility", "selectedForBatchDelete", "toggleWarningForBatchDelete"];
|
|
12308
14222
|
var renderLevelText = function renderLevelText(levelString) {
|
|
12309
14223
|
if (!levelString) {
|
|
12310
14224
|
return null;
|
|
@@ -12410,6 +14324,10 @@ var WarningListItem = function WarningListItem(_ref) {
|
|
|
12410
14324
|
_ref$isHidden = _ref.isHidden,
|
|
12411
14325
|
isHidden = _ref$isHidden === void 0 ? false : _ref$isHidden,
|
|
12412
14326
|
onToggleVisibility = _ref.onToggleVisibility,
|
|
14327
|
+
_ref$selectedForBatch = _ref.selectedForBatchDelete,
|
|
14328
|
+
selectedForBatchDelete = _ref$selectedForBatch === void 0 ? [] : _ref$selectedForBatch,
|
|
14329
|
+
_ref$toggleWarningFor = _ref.toggleWarningForBatchDelete,
|
|
14330
|
+
toggleWarningForBatchDelete = _ref$toggleWarningFor === void 0 ? function () {} : _ref$toggleWarningFor,
|
|
12413
14331
|
props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
12414
14332
|
var _useWarningsTranslati = useWarningsTranslation(),
|
|
12415
14333
|
t = _useWarningsTranslati.t;
|
|
@@ -12450,6 +14368,7 @@ var WarningListItem = function WarningListItem(_ref) {
|
|
|
12450
14368
|
}
|
|
12451
14369
|
return t('warning-domain-aviation');
|
|
12452
14370
|
}, [t, warning.warningDetail.domain]);
|
|
14371
|
+
var isChecked = selectedForBatchDelete.includes(warning.id || '');
|
|
12453
14372
|
return jsxs(ListItem, Object.assign({
|
|
12454
14373
|
"data-testid": "warning-" + getSortedStatus(status),
|
|
12455
14374
|
onMouseEnter: function onMouseEnter() {
|
|
@@ -12458,24 +14377,40 @@ var WarningListItem = function WarningListItem(_ref) {
|
|
|
12458
14377
|
onMouseLeave: function onMouseLeave() {
|
|
12459
14378
|
return onHoverWarning(undefined);
|
|
12460
14379
|
},
|
|
12461
|
-
secondaryAction:
|
|
12462
|
-
|
|
12463
|
-
|
|
12464
|
-
|
|
12465
|
-
|
|
12466
|
-
|
|
12467
|
-
|
|
12468
|
-
|
|
12469
|
-
|
|
12470
|
-
|
|
12471
|
-
|
|
12472
|
-
|
|
12473
|
-
|
|
12474
|
-
|
|
12475
|
-
|
|
12476
|
-
|
|
12477
|
-
|
|
12478
|
-
|
|
14380
|
+
secondaryAction: jsxs(Fragment, {
|
|
14381
|
+
children: [jsx(ToggleMenu, {
|
|
14382
|
+
"aria-label": t('warning-list-button-options'),
|
|
14383
|
+
buttonIcon: jsx(Options, {}),
|
|
14384
|
+
menuItems: WarningListItemMenu({
|
|
14385
|
+
warning: warning,
|
|
14386
|
+
t: t,
|
|
14387
|
+
onEditWarning: onEditWarning,
|
|
14388
|
+
onDeleteReviewWarning: onDeleteReviewWarning,
|
|
14389
|
+
onDeleteWarning: onDeleteWarning,
|
|
14390
|
+
onExpireWarning: onExpireWarning,
|
|
14391
|
+
onWithdrawWarning: onWithdrawWarning,
|
|
14392
|
+
onActionAviationWarning: onActionAviationWarning,
|
|
14393
|
+
onActionMaritimeWarning: onActionMaritimeWarning,
|
|
14394
|
+
shouldDisableAviationAmendOption: shouldDisableAviationAmendOption
|
|
14395
|
+
}),
|
|
14396
|
+
menuPosition: "bottom",
|
|
14397
|
+
menuTitle: t('warning-list-button-options'),
|
|
14398
|
+
tooltipTitle: t('warning-list-button-options')
|
|
14399
|
+
}), status === PublicWarningStatus.DRAFT || status === PublicWarningStatus.DRAFT_PUBLISHED || status === PublicWarningStatus.TODO ? jsx(Tooltip, {
|
|
14400
|
+
placement: "left",
|
|
14401
|
+
title: t('warning-list-batch-delete-checkbox'),
|
|
14402
|
+
children: jsx(Checkbox, {
|
|
14403
|
+
checked: isChecked,
|
|
14404
|
+
onChange: function onChange(e) {
|
|
14405
|
+
e.stopPropagation();
|
|
14406
|
+
if (warning.id) {
|
|
14407
|
+
toggleWarningForBatchDelete(warning.id);
|
|
14408
|
+
}
|
|
14409
|
+
},
|
|
14410
|
+
role: "checkbox",
|
|
14411
|
+
size: "small"
|
|
14412
|
+
})
|
|
14413
|
+
}) : null]
|
|
12479
14414
|
}),
|
|
12480
14415
|
sx: {
|
|
12481
14416
|
marginBottom: 0.25,
|
|
@@ -12485,7 +14420,17 @@ var WarningListItem = function WarningListItem(_ref) {
|
|
|
12485
14420
|
borderColor: status === PublicWarningStatus.EXPIRED || status === PublicWarningStatus.WITHDRAWN ? 'geowebColors.cards.cardContainerDisabledBorder' : 'geowebColors.cards.cardContainerBorder',
|
|
12486
14421
|
borderRadius: 1,
|
|
12487
14422
|
borderWidth: activeWarningId === warning.id ? '1px' : '1px',
|
|
12488
|
-
borderStyle: 'solid'
|
|
14423
|
+
borderStyle: 'solid',
|
|
14424
|
+
'& .MuiListItemButton-root': {
|
|
14425
|
+
paddingRight: '60px'
|
|
14426
|
+
},
|
|
14427
|
+
'& .MuiListItemSecondaryAction-root': {
|
|
14428
|
+
width: '50px',
|
|
14429
|
+
right: '8px'
|
|
14430
|
+
},
|
|
14431
|
+
'& .MuiCheckbox-root': {
|
|
14432
|
+
padding: '2px'
|
|
14433
|
+
}
|
|
12489
14434
|
}
|
|
12490
14435
|
}, props, {
|
|
12491
14436
|
children: [jsx(CustomTooltip, {
|
|
@@ -13295,6 +15240,8 @@ var RowComponent = function RowComponent(_ref) {
|
|
|
13295
15240
|
expandedSections = _ref.expandedSections,
|
|
13296
15241
|
hoveredFeatureId = _ref.hoveredFeatureId,
|
|
13297
15242
|
selectedWarningId = _ref.selectedWarningId,
|
|
15243
|
+
selectedForBatchDelete = _ref.selectedForBatchDelete,
|
|
15244
|
+
toggleWarningForBatchDelete = _ref.toggleWarningForBatchDelete,
|
|
13298
15245
|
onHoverWarning = _ref.onHoverWarning,
|
|
13299
15246
|
onSelectWarning = _ref.onSelectWarning,
|
|
13300
15247
|
onEditWarning = _ref.onEditWarning,
|
|
@@ -13341,8 +15288,10 @@ var RowComponent = function RowComponent(_ref) {
|
|
|
13341
15288
|
onSelectWarning: onSelectWarning,
|
|
13342
15289
|
onToggleVisibility: onToggleWarningVisibility,
|
|
13343
15290
|
onWithdrawWarning: onWithdrawWarning,
|
|
15291
|
+
selectedForBatchDelete: selectedForBatchDelete,
|
|
13344
15292
|
shouldDisableAviationAmendOption: shouldDisableAviationAmendOption,
|
|
13345
15293
|
style: style,
|
|
15294
|
+
toggleWarningForBatchDelete: toggleWarningForBatchDelete,
|
|
13346
15295
|
warning: publicWarning
|
|
13347
15296
|
}, key);
|
|
13348
15297
|
};
|
|
@@ -13414,6 +15363,8 @@ var PublicWarningList = function PublicWarningList(_ref2) {
|
|
|
13414
15363
|
onActionAviationWarning = _ref2$onActionAviatio === void 0 ? function () {} : _ref2$onActionAviatio,
|
|
13415
15364
|
_ref2$onActionMaritim = _ref2.onActionMaritimeWarning,
|
|
13416
15365
|
onActionMaritimeWarning = _ref2$onActionMaritim === void 0 ? function () {} : _ref2$onActionMaritim,
|
|
15366
|
+
_ref2$onClickBatchDel = _ref2.onClickBatchDelete,
|
|
15367
|
+
onClickBatchDelete = _ref2$onClickBatchDel === void 0 ? function () {} : _ref2$onClickBatchDel,
|
|
13417
15368
|
hoveredFeatureId = _ref2.hoveredFeatureId,
|
|
13418
15369
|
expandedSections = _ref2.expandedSections,
|
|
13419
15370
|
setExpandedSections = _ref2.setExpandedSections,
|
|
@@ -13423,7 +15374,15 @@ var PublicWarningList = function PublicWarningList(_ref2) {
|
|
|
13423
15374
|
_ref2$shouldDisableAv = _ref2.shouldDisableAviationAmendOption,
|
|
13424
15375
|
shouldDisableAviationAmendOption = _ref2$shouldDisableAv === void 0 ? false : _ref2$shouldDisableAv,
|
|
13425
15376
|
hiddenWarningIds = _ref2.hiddenWarningIds,
|
|
13426
|
-
onToggleWarningVisibility = _ref2.onToggleWarningVisibility
|
|
15377
|
+
onToggleWarningVisibility = _ref2.onToggleWarningVisibility,
|
|
15378
|
+
_ref2$selectedForBatc = _ref2.selectedForBatchDelete,
|
|
15379
|
+
selectedForBatchDelete = _ref2$selectedForBatc === void 0 ? [] : _ref2$selectedForBatc,
|
|
15380
|
+
_ref2$toggleWarningFo = _ref2.toggleWarningForBatchDelete,
|
|
15381
|
+
toggleWarningForBatchDelete = _ref2$toggleWarningFo === void 0 ? function () {} : _ref2$toggleWarningFo,
|
|
15382
|
+
_ref2$onSelectAllForB = _ref2.onSelectAllForBatchDelete,
|
|
15383
|
+
onSelectAllForBatchDelete = _ref2$onSelectAllForB === void 0 ? function () {} : _ref2$onSelectAllForB,
|
|
15384
|
+
_ref2$onClearBatchDel = _ref2.onClearBatchDeleteSelection,
|
|
15385
|
+
onClearBatchDeleteSelection = _ref2$onClearBatchDel === void 0 ? function () {} : _ref2$onClearBatchDel;
|
|
13427
15386
|
var updateFilter = filterHookState.updateFilter,
|
|
13428
15387
|
allSelected = filterHookState.allSelected,
|
|
13429
15388
|
filterState = filterHookState.filterState,
|
|
@@ -13507,6 +15466,24 @@ var PublicWarningList = function PublicWarningList(_ref2) {
|
|
|
13507
15466
|
}
|
|
13508
15467
|
}, [listRef, resetListIndex, warnings]);
|
|
13509
15468
|
var filterHeight = useGetFilterHeight(filterRef);
|
|
15469
|
+
var warningIdSet = React.useMemo(function () {
|
|
15470
|
+
return new Set(warnings.map(function (warning) {
|
|
15471
|
+
return warning.id;
|
|
15472
|
+
}).filter(function (id) {
|
|
15473
|
+
return !!id;
|
|
15474
|
+
}));
|
|
15475
|
+
}, [warnings]);
|
|
15476
|
+
var selectedForBatchDeleteFiltered = React.useMemo(function () {
|
|
15477
|
+
return selectedForBatchDelete.filter(function (id) {
|
|
15478
|
+
return warningIdSet.has(id);
|
|
15479
|
+
});
|
|
15480
|
+
}, [selectedForBatchDelete, warningIdSet]);
|
|
15481
|
+
var batchDeletableWarningIds = React.useMemo(function () {
|
|
15482
|
+
return getBatchDeletableWarningIds(warnings);
|
|
15483
|
+
}, [warnings]);
|
|
15484
|
+
var batchSelectionState = React.useMemo(function () {
|
|
15485
|
+
return getBatchSelectionState(selectedForBatchDeleteFiltered, batchDeletableWarningIds);
|
|
15486
|
+
}, [batchDeletableWarningIds, selectedForBatchDeleteFiltered]);
|
|
13510
15487
|
return jsxs(Fragment, {
|
|
13511
15488
|
children: [isLoading ? jsx(LinearProgress, {
|
|
13512
15489
|
color: "secondary",
|
|
@@ -13574,66 +15551,107 @@ var PublicWarningList = function PublicWarningList(_ref2) {
|
|
|
13574
15551
|
container: true,
|
|
13575
15552
|
rowSpacing: 0,
|
|
13576
15553
|
size: "grow",
|
|
13577
|
-
sx:
|
|
15554
|
+
sx: {
|
|
13578
15555
|
alignItems: 'center',
|
|
13579
|
-
justifyContent: 'space-between',
|
|
13580
15556
|
maxWidth: '100%',
|
|
13581
|
-
display: '
|
|
13582
|
-
marginTop: '4px'
|
|
13583
|
-
|
|
13584
|
-
|
|
13585
|
-
|
|
13586
|
-
children: [jsx(WarningListHeaderContent, {
|
|
15557
|
+
display: 'flex',
|
|
15558
|
+
marginTop: '4px',
|
|
15559
|
+
height: '24px'
|
|
15560
|
+
},
|
|
15561
|
+
children: [jsx(Box, {
|
|
13587
15562
|
sx: {
|
|
13588
|
-
|
|
13589
|
-
|
|
13590
|
-
|
|
13591
|
-
}), jsx(WarningListHeaderContent, {
|
|
13592
|
-
isSorted: sortState.key === 'lastUpdatedTime',
|
|
13593
|
-
onClick: function onClick() {
|
|
13594
|
-
return toggleSortDirection('lastUpdatedTime');
|
|
13595
|
-
},
|
|
13596
|
-
sortDirection: sortState.direction,
|
|
13597
|
-
sortable: true,
|
|
13598
|
-
title: t('warning-list-header-last-update') + " UTC",
|
|
13599
|
-
width: 142
|
|
13600
|
-
}), jsx(WarningListHeaderContent, {
|
|
13601
|
-
isSorted: sortState.key === 'validFrom',
|
|
13602
|
-
onClick: function onClick() {
|
|
13603
|
-
return toggleSortDirection('validFrom');
|
|
13604
|
-
},
|
|
13605
|
-
sortDirection: sortState.direction,
|
|
13606
|
-
sortable: true,
|
|
13607
|
-
title: t('warning-list-header-start-time') + " UTC",
|
|
13608
|
-
width: 142
|
|
13609
|
-
}), jsx(WarningListHeaderContent, {
|
|
13610
|
-
isSorted: sortState.key === 'validUntil',
|
|
13611
|
-
onClick: function onClick() {
|
|
13612
|
-
return toggleSortDirection('validUntil');
|
|
15563
|
+
display: 'flex',
|
|
15564
|
+
flex: 1,
|
|
15565
|
+
minWidth: 0
|
|
13613
15566
|
},
|
|
13614
|
-
|
|
13615
|
-
|
|
13616
|
-
|
|
13617
|
-
|
|
13618
|
-
|
|
13619
|
-
|
|
13620
|
-
|
|
13621
|
-
|
|
13622
|
-
|
|
13623
|
-
|
|
13624
|
-
|
|
13625
|
-
|
|
13626
|
-
|
|
13627
|
-
|
|
13628
|
-
|
|
13629
|
-
|
|
13630
|
-
|
|
13631
|
-
|
|
15567
|
+
children: jsxs(Grid, {
|
|
15568
|
+
container: true,
|
|
15569
|
+
size: "grow",
|
|
15570
|
+
sx: (_sx = {
|
|
15571
|
+
display: 'none',
|
|
15572
|
+
alignItems: 'center',
|
|
15573
|
+
justifyContent: 'space-between',
|
|
15574
|
+
maxWidth: '100%'
|
|
15575
|
+
}, _sx["@container publicWarningList (min-width: " + breakpoints.desktop + "px)"] = {
|
|
15576
|
+
display: 'flex'
|
|
15577
|
+
}, _sx),
|
|
15578
|
+
children: [jsx(WarningListHeaderContent, {
|
|
15579
|
+
sx: {
|
|
15580
|
+
paddingLeft: 2
|
|
15581
|
+
},
|
|
15582
|
+
title: t('warning-list-header-incidents')
|
|
15583
|
+
}), jsx(WarningListHeaderContent, {
|
|
15584
|
+
isSorted: sortState.key === 'lastUpdatedTime',
|
|
15585
|
+
onClick: function onClick() {
|
|
15586
|
+
return toggleSortDirection('lastUpdatedTime');
|
|
15587
|
+
},
|
|
15588
|
+
sortDirection: sortState.direction,
|
|
15589
|
+
sortable: true,
|
|
15590
|
+
title: t('warning-list-header-last-update') + " UTC",
|
|
15591
|
+
width: 142
|
|
15592
|
+
}), jsx(WarningListHeaderContent, {
|
|
15593
|
+
isSorted: sortState.key === 'validFrom',
|
|
15594
|
+
onClick: function onClick() {
|
|
15595
|
+
return toggleSortDirection('validFrom');
|
|
15596
|
+
},
|
|
15597
|
+
sortDirection: sortState.direction,
|
|
15598
|
+
sortable: true,
|
|
15599
|
+
title: t('warning-list-header-start-time') + " UTC",
|
|
15600
|
+
width: 142
|
|
15601
|
+
}), jsx(WarningListHeaderContent, {
|
|
15602
|
+
isSorted: sortState.key === 'validUntil',
|
|
15603
|
+
onClick: function onClick() {
|
|
15604
|
+
return toggleSortDirection('validUntil');
|
|
15605
|
+
},
|
|
15606
|
+
sortDirection: sortState.direction,
|
|
15607
|
+
sortable: true,
|
|
15608
|
+
title: t('warning-list-header-end-time') + " UTC",
|
|
15609
|
+
width: 142
|
|
15610
|
+
}), jsx(WarningListHeaderContent, {
|
|
15611
|
+
title: t('warning-list-header-domains')
|
|
15612
|
+
}), jsx(WarningListHeaderContent, {
|
|
15613
|
+
title: t('warning-list-header-phenomena'),
|
|
15614
|
+
width: 140
|
|
15615
|
+
}), jsx(WarningListHeaderContent, {
|
|
15616
|
+
sx: (_sx2 = {}, _sx2["@container publicWarningList (min-width: " + breakpoints.desktop + "px)"] = {
|
|
15617
|
+
width: 56
|
|
15618
|
+
}, _sx2),
|
|
15619
|
+
title: t('warning-list-header-levels')
|
|
15620
|
+
}), jsx(WarningListHeaderContent, {
|
|
15621
|
+
title: t('areas'),
|
|
15622
|
+
width: 100
|
|
15623
|
+
}), jsx(WarningListHeaderContent, {
|
|
15624
|
+
sx: {
|
|
15625
|
+
marginRight: '48px'
|
|
15626
|
+
},
|
|
15627
|
+
title: t('warning-list-header-status'),
|
|
15628
|
+
width: 76
|
|
15629
|
+
})]
|
|
15630
|
+
})
|
|
15631
|
+
}), jsxs(Box, {
|
|
13632
15632
|
sx: {
|
|
13633
|
-
|
|
15633
|
+
width: '60px',
|
|
15634
|
+
flexShrink: 0,
|
|
15635
|
+
display: 'flex',
|
|
15636
|
+
alignItems: 'flex-end',
|
|
15637
|
+
justifyContent: 'flex-end'
|
|
13634
15638
|
},
|
|
13635
|
-
|
|
13636
|
-
|
|
15639
|
+
children: [selectedForBatchDeleteFiltered.length > 0 && jsx(CustomIconButton, {
|
|
15640
|
+
"data-testid": "batch-delete-button",
|
|
15641
|
+
onClick: function onClick() {
|
|
15642
|
+
onClickBatchDelete(selectedForBatchDelete);
|
|
15643
|
+
},
|
|
15644
|
+
tooltipTitle: t('warning-dialog-delete-all-button'),
|
|
15645
|
+
variant: "tool",
|
|
15646
|
+
children: jsx(Delete, {})
|
|
15647
|
+
}), jsx(SelectAllButton, {
|
|
15648
|
+
disabled: batchDeletableWarningIds.length === 0,
|
|
15649
|
+
onSelectAll: function onSelectAll() {
|
|
15650
|
+
onSelectAllForBatchDelete(batchDeletableWarningIds);
|
|
15651
|
+
},
|
|
15652
|
+
onSelectNone: onClearBatchDeleteSelection,
|
|
15653
|
+
selectionState: batchSelectionState
|
|
15654
|
+
})]
|
|
13637
15655
|
})]
|
|
13638
15656
|
}), sortedWarnings && !error ? jsx(Box, {
|
|
13639
15657
|
"data-testid": "warnings-list",
|
|
@@ -13667,7 +15685,9 @@ var PublicWarningList = function PublicWarningList(_ref2) {
|
|
|
13667
15685
|
onActionMaritimeWarning: onActionMaritimeWarning,
|
|
13668
15686
|
shouldDisableAviationAmendOption: shouldDisableAviationAmendOption,
|
|
13669
15687
|
hiddenWarningIds: hiddenWarningIds,
|
|
13670
|
-
onToggleWarningVisibility: onToggleWarningVisibility
|
|
15688
|
+
onToggleWarningVisibility: onToggleWarningVisibility,
|
|
15689
|
+
selectedForBatchDelete: selectedForBatchDelete,
|
|
15690
|
+
toggleWarningForBatchDelete: toggleWarningForBatchDelete
|
|
13671
15691
|
}
|
|
13672
15692
|
})
|
|
13673
15693
|
}) : null]
|
|
@@ -13695,7 +15715,7 @@ var ConfirmDeleteWarningDialog = function ConfirmDeleteWarningDialog(_ref) {
|
|
|
13695
15715
|
setError = _React$useState2[1];
|
|
13696
15716
|
var onSubmit = /*#__PURE__*/function () {
|
|
13697
15717
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
13698
|
-
var _t;
|
|
15718
|
+
var result, _t;
|
|
13699
15719
|
return _regenerator().w(function (_context) {
|
|
13700
15720
|
while (1) switch (_context.p = _context.n) {
|
|
13701
15721
|
case 0:
|
|
@@ -13704,7 +15724,8 @@ var ConfirmDeleteWarningDialog = function ConfirmDeleteWarningDialog(_ref) {
|
|
|
13704
15724
|
_context.n = 2;
|
|
13705
15725
|
return request();
|
|
13706
15726
|
case 2:
|
|
13707
|
-
|
|
15727
|
+
result = _context.v;
|
|
15728
|
+
callback == null || callback(result);
|
|
13708
15729
|
setIsLoading(false);
|
|
13709
15730
|
_context.n = 4;
|
|
13710
15731
|
break;
|
|
@@ -13750,6 +15771,56 @@ var ConfirmDeleteWarningDialog = function ConfirmDeleteWarningDialog(_ref) {
|
|
|
13750
15771
|
}));
|
|
13751
15772
|
};
|
|
13752
15773
|
|
|
15774
|
+
/* *
|
|
15775
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15776
|
+
* you may not use this file except in compliance with the License.
|
|
15777
|
+
* You may obtain a copy of the License at
|
|
15778
|
+
*
|
|
15779
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15780
|
+
*
|
|
15781
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15782
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15783
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15784
|
+
* See the License for the specific language governing permissions and
|
|
15785
|
+
* limitations under the License.
|
|
15786
|
+
*
|
|
15787
|
+
* Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15788
|
+
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
15789
|
+
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
15790
|
+
* */
|
|
15791
|
+
var getSelectedFormAreaIds = function getSelectedFormAreaIds(selectedFormWarning) {
|
|
15792
|
+
var _selectedFormWarning$, _selectedFormWarning$2;
|
|
15793
|
+
return new Set(((_selectedFormWarning$ = selectedFormWarning == null || (_selectedFormWarning$2 = selectedFormWarning.warningDetail) == null ? void 0 : _selectedFormWarning$2.areas) != null ? _selectedFormWarning$ : []).map(function (area) {
|
|
15794
|
+
return area.areaId;
|
|
15795
|
+
}).filter(function (areaId) {
|
|
15796
|
+
return Boolean(areaId);
|
|
15797
|
+
}));
|
|
15798
|
+
};
|
|
15799
|
+
var shouldExcludeWarningFromFeatureSync = function shouldExcludeWarningFromFeatureSync(_ref) {
|
|
15800
|
+
var hiddenWarningIds = _ref.hiddenWarningIds,
|
|
15801
|
+
hasMatchingAreaId = _ref.hasMatchingAreaId,
|
|
15802
|
+
selectedWarningId = _ref.selectedWarningId,
|
|
15803
|
+
warningIds = _ref.warningIds;
|
|
15804
|
+
return warningIds.includes(selectedWarningId != null ? selectedWarningId : '') || hasMatchingAreaId || warningIds.some(function (warningId) {
|
|
15805
|
+
return hiddenWarningIds.has(warningId);
|
|
15806
|
+
});
|
|
15807
|
+
};
|
|
15808
|
+
var createWarningFeatureCollection = function createWarningFeatureCollection(allFeatures) {
|
|
15809
|
+
return {
|
|
15810
|
+
type: 'FeatureCollection',
|
|
15811
|
+
features: allFeatures.flatMap(function (feature) {
|
|
15812
|
+
return feature.geoJSON.features.map(function (geoFeature) {
|
|
15813
|
+
var _geoFeature$propertie;
|
|
15814
|
+
return Object.assign({}, geoFeature, {
|
|
15815
|
+
properties: Object.assign({}, (_geoFeature$propertie = geoFeature.properties) != null ? _geoFeature$propertie : {}, {
|
|
15816
|
+
originalId: feature.originalId
|
|
15817
|
+
})
|
|
15818
|
+
});
|
|
15819
|
+
});
|
|
15820
|
+
})
|
|
15821
|
+
};
|
|
15822
|
+
};
|
|
15823
|
+
|
|
13753
15824
|
var _excluded = ["expandedSections", "hoveredWarningIds"];
|
|
13754
15825
|
var getWarningsFilters = function getWarningsFilters(store) {
|
|
13755
15826
|
if (store != null && store.warningsFilters) {
|
|
@@ -13787,21 +15858,185 @@ var getWarningsPresetById = createSelector(getWarningsFilterPanelById, function
|
|
|
13787
15858
|
filterState: null,
|
|
13788
15859
|
expandedSections: null
|
|
13789
15860
|
};
|
|
13790
|
-
}
|
|
15861
|
+
}
|
|
15862
|
+
return {
|
|
15863
|
+
filterState: getFilterStateFromPanelState(panelState),
|
|
15864
|
+
expandedSections: panelState.expandedSections
|
|
15865
|
+
};
|
|
15866
|
+
}, selectorMemoizationOptions);
|
|
15867
|
+
|
|
15868
|
+
var selectors = /*#__PURE__*/Object.freeze({
|
|
15869
|
+
__proto__: null,
|
|
15870
|
+
getExpandedSectionsByPanelId: getExpandedSectionsByPanelId,
|
|
15871
|
+
getHoveredWarningIdsByPanelId: getHoveredWarningIdsByPanelId,
|
|
15872
|
+
getWarningsFilterById: getWarningsFilterById,
|
|
15873
|
+
getWarningsFilters: getWarningsFilters,
|
|
15874
|
+
getWarningsPresetById: getWarningsPresetById
|
|
15875
|
+
});
|
|
15876
|
+
|
|
15877
|
+
/* *
|
|
15878
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15879
|
+
* you may not use this file except in compliance with the License.
|
|
15880
|
+
* You may obtain a copy of the License at
|
|
15881
|
+
*
|
|
15882
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15883
|
+
*
|
|
15884
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15885
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15886
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15887
|
+
* See the License for the specific language governing permissions and
|
|
15888
|
+
* limitations under the License.
|
|
15889
|
+
*
|
|
15890
|
+
* Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15891
|
+
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
15892
|
+
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
15893
|
+
* */
|
|
15894
|
+
var WARNING_HOVER_DISPATCH_DELAY = 50;
|
|
15895
|
+
var useWarningListFeatureSync = function useWarningListFeatureSync(_ref) {
|
|
15896
|
+
var _hoveredLinkedFeature;
|
|
15897
|
+
var filteredWarningsByExpandedSections = _ref.filteredWarningsByExpandedSections,
|
|
15898
|
+
hiddenWarningIds = _ref.hiddenWarningIds,
|
|
15899
|
+
panelId = _ref.panelId,
|
|
15900
|
+
selectedFormWarning = _ref.selectedFormWarning,
|
|
15901
|
+
selectedWarningId = _ref.selectedWarningId;
|
|
15902
|
+
var dispatch = useDispatch();
|
|
15903
|
+
var store = useStore();
|
|
15904
|
+
var selectedFormAreaIds = React.useMemo(function () {
|
|
15905
|
+
return getSelectedFormAreaIds(selectedFormWarning);
|
|
15906
|
+
}, [selectedFormWarning]);
|
|
15907
|
+
var allFeatures = React.useMemo(function () {
|
|
15908
|
+
return filteredWarningsByExpandedSections.flatMap(function (warning) {
|
|
15909
|
+
var _warning$warningDetai, _warning$warningDetai2, _warning$warningDetai3, _warning$warningDetai4, _warning$warningDetai5;
|
|
15910
|
+
var id = warning == null ? void 0 : warning.id;
|
|
15911
|
+
if (!id) {
|
|
15912
|
+
return [];
|
|
15913
|
+
}
|
|
15914
|
+
var warningIds = [warning == null ? void 0 : warning.id, warning == null || (_warning$warningDetai = warning.warningDetail) == null ? void 0 : _warning$warningDetai.id].filter(function (warningId) {
|
|
15915
|
+
return Boolean(warningId);
|
|
15916
|
+
});
|
|
15917
|
+
var hasMatchingAreaId = ((_warning$warningDetai2 = warning == null || (_warning$warningDetai3 = warning.warningDetail) == null ? void 0 : _warning$warningDetai3.areas) != null ? _warning$warningDetai2 : []).some(function (area) {
|
|
15918
|
+
return area.areaId !== undefined && selectedFormAreaIds.has(area.areaId);
|
|
15919
|
+
});
|
|
15920
|
+
if (shouldExcludeWarningFromFeatureSync({
|
|
15921
|
+
hiddenWarningIds: hiddenWarningIds,
|
|
15922
|
+
hasMatchingAreaId: hasMatchingAreaId,
|
|
15923
|
+
selectedWarningId: selectedWarningId,
|
|
15924
|
+
warningIds: warningIds
|
|
15925
|
+
})) {
|
|
15926
|
+
return [];
|
|
15927
|
+
}
|
|
15928
|
+
var originalId = id;
|
|
15929
|
+
var areas = (_warning$warningDetai4 = warning == null || (_warning$warningDetai5 = warning.warningDetail) == null ? void 0 : _warning$warningDetai5.areas) != null ? _warning$warningDetai4 : [];
|
|
15930
|
+
return areas.filter(function (area) {
|
|
15931
|
+
return !!area.geoJSON;
|
|
15932
|
+
}).map(function (area) {
|
|
15933
|
+
var _warning$warningDetai6, _area$areaId;
|
|
15934
|
+
var level = warning == null || (_warning$warningDetai6 = warning.warningDetail) == null ? void 0 : _warning$warningDetai6.level;
|
|
15935
|
+
var isAviationWarning = level === 'SIG' || level === 'AIR';
|
|
15936
|
+
var styledGeoJSON = level ? warningLevelFeatureColors(isAviationWarning ? undefined : level, area.geoJSON, isAviationWarning) : area.geoJSON;
|
|
15937
|
+
return {
|
|
15938
|
+
id: originalId + ((_area$areaId = area.areaId) != null ? _area$areaId : ''),
|
|
15939
|
+
originalId: originalId,
|
|
15940
|
+
geoJSON: styledGeoJSON
|
|
15941
|
+
};
|
|
15942
|
+
});
|
|
15943
|
+
}).filter(function (feature) {
|
|
15944
|
+
return !!feature.id;
|
|
15945
|
+
});
|
|
15946
|
+
}, [filteredWarningsByExpandedSections, hiddenWarningIds, selectedFormAreaIds, selectedWarningId]);
|
|
15947
|
+
useRegisterFeatureSyncSource(panelId);
|
|
15948
|
+
var warningFeatureCollection = React.useMemo(function () {
|
|
15949
|
+
return createWarningFeatureCollection(allFeatures);
|
|
15950
|
+
}, [allFeatures]);
|
|
15951
|
+
var warningLayerId = React.useRef(webmapUtils.generateLayerId()).current;
|
|
15952
|
+
var warningFeatureLayersById = React.useMemo(function () {
|
|
15953
|
+
var _ref2;
|
|
15954
|
+
return _ref2 = {}, _ref2[warningLayerId] = {
|
|
15955
|
+
id: warningLayerId,
|
|
15956
|
+
geojson: warningFeatureCollection
|
|
15957
|
+
}, _ref2;
|
|
15958
|
+
}, [warningFeatureCollection, warningLayerId]);
|
|
15959
|
+
useUpdateFeatureSyncLayers(warningFeatureLayersById, panelId);
|
|
15960
|
+
var workspaceViewsById = useSelector(function (state) {
|
|
15961
|
+
return syncGroupsSelector.getWorkspaceViewsById(state);
|
|
15962
|
+
});
|
|
15963
|
+
var ownedFeatureLayerIds = useSelector(function (state) {
|
|
15964
|
+
return genericSelectors.selectFeatureSyncLayerIdsForPanel(state, panelId);
|
|
15965
|
+
}, shallowEqual);
|
|
15966
|
+
var linkedTargetIds = useSelector(function (state) {
|
|
15967
|
+
return genericSelectors.getLinkedTargetIds(state, panelId);
|
|
15968
|
+
}, shallowEqual);
|
|
15969
|
+
var hoveredLinkedFeatureIds = useSelector(function (state) {
|
|
15970
|
+
return genericSelectors.selectHoveredFeatureIdsForPanel(state, panelId);
|
|
15971
|
+
}, shallowEqual);
|
|
15972
|
+
var hoveredLocalWarningIds = useSelector(function (state) {
|
|
15973
|
+
return getHoveredWarningIdsByPanelId(state, panelId);
|
|
15974
|
+
});
|
|
15975
|
+
var hasLinkedTimelineTarget = linkedTargetIds.some(function (targetId) {
|
|
15976
|
+
var _workspaceViewsById$t;
|
|
15977
|
+
return (workspaceViewsById == null || (_workspaceViewsById$t = workspaceViewsById[targetId]) == null ? void 0 : _workspaceViewsById$t.componentType) === 'WarningsTimeline';
|
|
15978
|
+
});
|
|
15979
|
+
var _React$useState = React.useState(undefined),
|
|
15980
|
+
localHoveredWarningId = _React$useState[0],
|
|
15981
|
+
setLocalHoveredWarningId = _React$useState[1];
|
|
15982
|
+
var _React$useState2 = React.useState(false),
|
|
15983
|
+
isUsingLocalHoverOverride = _React$useState2[0],
|
|
15984
|
+
setIsUsingLocalHoverOverride = _React$useState2[1];
|
|
15985
|
+
var hoverDispatchTimeoutRef = React.useRef(undefined);
|
|
15986
|
+
var hoveredFeatureId = isUsingLocalHoverOverride ? localHoveredWarningId : (_hoveredLinkedFeature = hoveredLinkedFeatureIds[0]) != null ? _hoveredLinkedFeature : hoveredLocalWarningIds[0];
|
|
15987
|
+
var handleHoverWarning = React.useCallback(function (warningId) {
|
|
15988
|
+
setLocalHoveredWarningId(warningId);
|
|
15989
|
+
setIsUsingLocalHoverOverride(true);
|
|
15990
|
+
if (hoverDispatchTimeoutRef.current) {
|
|
15991
|
+
window.clearTimeout(hoverDispatchTimeoutRef.current);
|
|
15992
|
+
}
|
|
15993
|
+
hoverDispatchTimeoutRef.current = window.setTimeout(function () {
|
|
15994
|
+
if (!ownedFeatureLayerIds.length && hasLinkedTimelineTarget) {
|
|
15995
|
+
dispatch(warningsFiltersActions.setHoveredWarningIdsForPanel({
|
|
15996
|
+
panelId: panelId,
|
|
15997
|
+
warningIds: warningId ? [warningId] : []
|
|
15998
|
+
}));
|
|
15999
|
+
}
|
|
16000
|
+
ownedFeatureLayerIds.forEach(function (layerId) {
|
|
16001
|
+
dispatch(layerActions.setHoveredFeatures({
|
|
16002
|
+
layerId: layerId,
|
|
16003
|
+
hoveredFeatureIds: warningId ? [warningId] : []
|
|
16004
|
+
}));
|
|
16005
|
+
});
|
|
16006
|
+
setIsUsingLocalHoverOverride(false);
|
|
16007
|
+
}, WARNING_HOVER_DISPATCH_DELAY);
|
|
16008
|
+
}, [dispatch, hasLinkedTimelineTarget, ownedFeatureLayerIds, panelId]);
|
|
16009
|
+
React.useEffect(function () {
|
|
16010
|
+
return function () {
|
|
16011
|
+
if (hoverDispatchTimeoutRef.current) {
|
|
16012
|
+
window.clearTimeout(hoverDispatchTimeoutRef.current);
|
|
16013
|
+
}
|
|
16014
|
+
var ownedLayerIds = genericSelectors.selectFeatureSyncLayerIdsForPanel(store.getState(), panelId);
|
|
16015
|
+
var currentLinkedTargetIds = genericSelectors.getLinkedTargetIds(store.getState(), panelId);
|
|
16016
|
+
var currentWorkspaceViewsById = syncGroupsSelector.getWorkspaceViewsById(store.getState());
|
|
16017
|
+
var hasCurrentLinkedTimelineTarget = currentLinkedTargetIds.some(function (targetId) {
|
|
16018
|
+
var _currentWorkspaceView;
|
|
16019
|
+
return ((_currentWorkspaceView = currentWorkspaceViewsById[targetId]) == null ? void 0 : _currentWorkspaceView.componentType) === 'WarningsTimeline';
|
|
16020
|
+
});
|
|
16021
|
+
if (!ownedLayerIds.length && hasCurrentLinkedTimelineTarget) {
|
|
16022
|
+
dispatch(warningsFiltersActions.setHoveredWarningIdsForPanel({
|
|
16023
|
+
panelId: panelId,
|
|
16024
|
+
warningIds: []
|
|
16025
|
+
}));
|
|
16026
|
+
}
|
|
16027
|
+
ownedLayerIds.forEach(function (layerId) {
|
|
16028
|
+
dispatch(layerActions.setHoveredFeatures({
|
|
16029
|
+
layerId: layerId,
|
|
16030
|
+
hoveredFeatureIds: []
|
|
16031
|
+
}));
|
|
16032
|
+
});
|
|
16033
|
+
};
|
|
16034
|
+
}, [dispatch, panelId, store]);
|
|
13791
16035
|
return {
|
|
13792
|
-
|
|
13793
|
-
|
|
16036
|
+
handleHoverWarning: handleHoverWarning,
|
|
16037
|
+
hoveredFeatureId: hoveredFeatureId
|
|
13794
16038
|
};
|
|
13795
|
-
}
|
|
13796
|
-
|
|
13797
|
-
var selectors = /*#__PURE__*/Object.freeze({
|
|
13798
|
-
__proto__: null,
|
|
13799
|
-
getExpandedSectionsByPanelId: getExpandedSectionsByPanelId,
|
|
13800
|
-
getHoveredWarningIdsByPanelId: getHoveredWarningIdsByPanelId,
|
|
13801
|
-
getWarningsFilterById: getWarningsFilterById,
|
|
13802
|
-
getWarningsFilters: getWarningsFilters,
|
|
13803
|
-
getWarningsPresetById: getWarningsPresetById
|
|
13804
|
-
});
|
|
16039
|
+
};
|
|
13805
16040
|
|
|
13806
16041
|
/* *
|
|
13807
16042
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -14119,10 +16354,10 @@ var CancelAviationDialogContent = function CancelAviationDialogContent(_ref) {
|
|
|
14119
16354
|
maxWidth: 600
|
|
14120
16355
|
},
|
|
14121
16356
|
children: [jsx(Typography, {
|
|
14122
|
-
variant: "inherit",
|
|
14123
16357
|
sx: {
|
|
14124
16358
|
fontWeight: 'medium'
|
|
14125
16359
|
},
|
|
16360
|
+
variant: "inherit",
|
|
14126
16361
|
children: t('cancel-message')
|
|
14127
16362
|
}), jsx("div", {
|
|
14128
16363
|
style: {
|
|
@@ -14137,10 +16372,10 @@ var CancelAviationDialogContent = function CancelAviationDialogContent(_ref) {
|
|
|
14137
16372
|
children: cancelContent
|
|
14138
16373
|
})
|
|
14139
16374
|
}), jsx(Typography, {
|
|
14140
|
-
variant: "inherit",
|
|
14141
16375
|
sx: {
|
|
14142
16376
|
fontWeight: 'medium'
|
|
14143
16377
|
},
|
|
16378
|
+
variant: "inherit",
|
|
14144
16379
|
children: t('will-cancel-message')
|
|
14145
16380
|
}), jsx("div", {
|
|
14146
16381
|
style: {
|
|
@@ -14271,12 +16506,29 @@ var CancelAviationConfirmDialog = function CancelAviationConfirmDialog(_ref) {
|
|
|
14271
16506
|
});
|
|
14272
16507
|
};
|
|
14273
16508
|
|
|
14274
|
-
var WARNING_HOVER_DISPATCH_DELAY = 50;
|
|
14275
16509
|
var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
|
|
14276
|
-
var _hoveredLinkedFeature;
|
|
14277
16510
|
var panelId = _ref.panelId,
|
|
14278
16511
|
presetExpandedSections = _ref.presetExpandedSections,
|
|
14279
16512
|
presetFilterState = _ref.presetFilterState;
|
|
16513
|
+
var _React$useState = React.useState([]),
|
|
16514
|
+
selectedForBatchDelete = _React$useState[0],
|
|
16515
|
+
setSelectedForBatchDelete = _React$useState[1];
|
|
16516
|
+
var toggleWarningForBatchDelete = React.useCallback(function (warningId) {
|
|
16517
|
+
setSelectedForBatchDelete(function (prev) {
|
|
16518
|
+
if (prev.includes(warningId)) {
|
|
16519
|
+
return prev.filter(function (id) {
|
|
16520
|
+
return id !== warningId;
|
|
16521
|
+
});
|
|
16522
|
+
}
|
|
16523
|
+
return [].concat(prev, [warningId]);
|
|
16524
|
+
});
|
|
16525
|
+
}, []);
|
|
16526
|
+
var selectAllForBatchDelete = React.useCallback(function (warningIds) {
|
|
16527
|
+
setSelectedForBatchDelete(Array.from(new Set(warningIds)));
|
|
16528
|
+
}, []);
|
|
16529
|
+
var clearBatchDeleteSelection = React.useCallback(function () {
|
|
16530
|
+
setSelectedForBatchDelete([]);
|
|
16531
|
+
}, []);
|
|
14280
16532
|
var updatePublicWarningEditor = useMutatePublicWarningEditor();
|
|
14281
16533
|
var _useMutateMaritimeWar = useMutateMaritimeWarningsEditor(),
|
|
14282
16534
|
updateMaritimeWarningEditor = _useMutateMaritimeWar.mutateAsync;
|
|
@@ -14304,9 +16556,9 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
|
|
|
14304
16556
|
dataUpdatedAt = _useWarnings.dataUpdatedAt;
|
|
14305
16557
|
useAutoRefetchOnExpiry(combinedWarnings, refetchWarnings);
|
|
14306
16558
|
var lastUpdateTime = dateUtils.dateToString(new Date(dataUpdatedAt), dateUtils.DATE_FORMAT_HOURS);
|
|
14307
|
-
var _React$
|
|
14308
|
-
confirmDialogOptions = _React$
|
|
14309
|
-
setConfirmDialogOptions = _React$
|
|
16559
|
+
var _React$useState2 = React.useState(undefined),
|
|
16560
|
+
confirmDialogOptions = _React$useState2[0],
|
|
16561
|
+
setConfirmDialogOptions = _React$useState2[1];
|
|
14310
16562
|
var selectedWarningId = useSelector(getSelectedWarningId);
|
|
14311
16563
|
var selectedFormWarning = useSelector(getPublicWarning);
|
|
14312
16564
|
var isFormDirty = useSelector(getSelectedPublicIsFormDirty);
|
|
@@ -14358,6 +16610,14 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
|
|
|
14358
16610
|
}
|
|
14359
16611
|
};
|
|
14360
16612
|
var createWarning = function createWarning(warningType) {
|
|
16613
|
+
// TODO: Public warning events use their own Redux-connected dialog (for now, perhaps later we should integrate it here)
|
|
16614
|
+
if (warningType === 'warningEvent') {
|
|
16615
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
16616
|
+
setOpen: true,
|
|
16617
|
+
type: warningEventDialogType
|
|
16618
|
+
}));
|
|
16619
|
+
return;
|
|
16620
|
+
}
|
|
14361
16621
|
void openPublicWarningDialog('', undefined, warningType);
|
|
14362
16622
|
};
|
|
14363
16623
|
var editWarning = /*#__PURE__*/function () {
|
|
@@ -14516,9 +16776,9 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
|
|
|
14516
16776
|
return _ref5.apply(this, arguments);
|
|
14517
16777
|
};
|
|
14518
16778
|
}();
|
|
14519
|
-
var _React$
|
|
14520
|
-
hiddenWarningIds = _React$
|
|
14521
|
-
setHiddenWarningIds = _React$
|
|
16779
|
+
var _React$useState3 = React.useState(new Set()),
|
|
16780
|
+
hiddenWarningIds = _React$useState3[0],
|
|
16781
|
+
setHiddenWarningIds = _React$useState3[1];
|
|
14522
16782
|
var handleToggleWarningVisibility = React.useCallback(function (warningId) {
|
|
14523
16783
|
setHiddenWarningIds(function (prev) {
|
|
14524
16784
|
var next = new Set(prev);
|
|
@@ -14530,12 +16790,12 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
|
|
|
14530
16790
|
return next;
|
|
14531
16791
|
});
|
|
14532
16792
|
}, []);
|
|
14533
|
-
var _React$
|
|
14534
|
-
cancelOpen = _React$
|
|
14535
|
-
setCancelOpen = _React$
|
|
14536
|
-
var _React$
|
|
14537
|
-
cancelCtx = _React$
|
|
14538
|
-
setCancelCtx = _React$
|
|
16793
|
+
var _React$useState4 = React.useState(false),
|
|
16794
|
+
cancelOpen = _React$useState4[0],
|
|
16795
|
+
setCancelOpen = _React$useState4[1];
|
|
16796
|
+
var _React$useState5 = React.useState(null),
|
|
16797
|
+
cancelCtx = _React$useState5[0],
|
|
16798
|
+
setCancelCtx = _React$useState5[1];
|
|
14539
16799
|
var openCancelDialog = function openCancelDialog(warning) {
|
|
14540
16800
|
var type = warning.warningDetail.level === 'SIG' ? 'sigmet' : 'airmet';
|
|
14541
16801
|
var product = warning.sigmetAirmetDetails;
|
|
@@ -14701,658 +16961,404 @@ var PublicWarningListConnect = function PublicWarningListConnect(_ref) {
|
|
|
14701
16961
|
function request() {
|
|
14702
16962
|
return _request4.apply(this, arguments);
|
|
14703
16963
|
}
|
|
14704
|
-
return request;
|
|
14705
|
-
}(),
|
|
14706
|
-
callback: function callback() {
|
|
14707
|
-
return onRemoveSuccess(warningToExtend.id, t('warning-dialog-extend-succes'));
|
|
14708
|
-
}
|
|
14709
|
-
});
|
|
14710
|
-
void refetchWarnings();
|
|
14711
|
-
};
|
|
14712
|
-
var handleMaritimeProductClick = function handleMaritimeProductClick(warning, actionType) {
|
|
14713
|
-
if (!warning) {
|
|
14714
|
-
return;
|
|
14715
|
-
}
|
|
14716
|
-
switch (actionType) {
|
|
14717
|
-
case MaritimeWarningAction.SELECT:
|
|
14718
|
-
void openPublicWarningDialog('', undefined, warning.type);
|
|
14719
|
-
break;
|
|
14720
|
-
case MaritimeWarningAction.UPDATE:
|
|
14721
|
-
void editMaritimeWarning(warning);
|
|
14722
|
-
break;
|
|
14723
|
-
case MaritimeWarningAction.EXTEND:
|
|
14724
|
-
extendMaritimeWarning(warning);
|
|
14725
|
-
break;
|
|
14726
|
-
}
|
|
14727
|
-
};
|
|
14728
|
-
var openSnackbar = function openSnackbar(message) {
|
|
14729
|
-
dispatch(snackbarActions.openSnackbar({
|
|
14730
|
-
type: snackbarTypes.SnackbarMessageType.VERBATIM_MESSAGE,
|
|
14731
|
-
message: message
|
|
14732
|
-
}));
|
|
14733
|
-
};
|
|
14734
|
-
var deleteWarning = function deleteWarning(warningId, warningEditor) {
|
|
14735
|
-
var _auth$username3;
|
|
14736
|
-
var editor = warningEditor != null ? warningEditor : '';
|
|
14737
|
-
var currentUser = (_auth$username3 = auth == null ? void 0 : auth.username) != null ? _auth$username3 : '';
|
|
14738
|
-
var isLocked = editor !== '' && editor !== currentUser;
|
|
14739
|
-
setConfirmDialogOptions({
|
|
14740
|
-
confirmLabel: t('warning-dialog-delete-confirm'),
|
|
14741
|
-
title: t('warning-dialog-delete-title'),
|
|
14742
|
-
description: t('warning-dialog-delete-description'),
|
|
14743
|
-
request: function () {
|
|
14744
|
-
var _request5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {
|
|
14745
|
-
return _regenerator().w(function (_context0) {
|
|
14746
|
-
while (1) switch (_context0.n) {
|
|
14747
|
-
case 0:
|
|
14748
|
-
return _context0.a(2, deletePublicWarning({
|
|
14749
|
-
id: warningId
|
|
14750
|
-
}, {
|
|
14751
|
-
onSuccess: function onSuccess() {
|
|
14752
|
-
return onRemoveSuccessHooks(warningId);
|
|
14753
|
-
}
|
|
14754
|
-
}));
|
|
14755
|
-
}
|
|
14756
|
-
}, _callee0);
|
|
14757
|
-
}));
|
|
14758
|
-
function request() {
|
|
14759
|
-
return _request5.apply(this, arguments);
|
|
14760
|
-
}
|
|
14761
|
-
return request;
|
|
14762
|
-
}(),
|
|
14763
|
-
isLocked: isLocked
|
|
14764
|
-
});
|
|
14765
|
-
};
|
|
14766
|
-
var deleteReviewWarning = function deleteReviewWarning(warning) {
|
|
14767
|
-
var ignoredWarning = Object.assign({}, warning, {
|
|
14768
|
-
status: PublicWarningStatus.IGNORED
|
|
14769
|
-
});
|
|
14770
|
-
setConfirmDialogOptions({
|
|
14771
|
-
confirmLabel: t('warning-dialog-delete-confirm'),
|
|
14772
|
-
title: t('warning-dialog-delete-title'),
|
|
14773
|
-
description: t('warning-dialog-delete-description'),
|
|
14774
|
-
request: function () {
|
|
14775
|
-
var _request6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1() {
|
|
14776
|
-
return _regenerator().w(function (_context1) {
|
|
14777
|
-
while (1) switch (_context1.n) {
|
|
14778
|
-
case 0:
|
|
14779
|
-
return _context1.a(2, saveWarning({
|
|
14780
|
-
id: ignoredWarning.id,
|
|
14781
|
-
data: Object.assign({}, ignoredWarning, {
|
|
14782
|
-
type: 'public'
|
|
14783
|
-
})
|
|
14784
|
-
}));
|
|
14785
|
-
}
|
|
14786
|
-
}, _callee1);
|
|
14787
|
-
}));
|
|
14788
|
-
function request() {
|
|
14789
|
-
return _request6.apply(this, arguments);
|
|
14790
|
-
}
|
|
14791
|
-
return request;
|
|
14792
|
-
}(),
|
|
14793
|
-
callback: function callback() {
|
|
14794
|
-
return onRemoveSuccess(ignoredWarning.id, t('warning-dialog-delete-succes'));
|
|
14795
|
-
}
|
|
14796
|
-
});
|
|
14797
|
-
void refetchWarnings();
|
|
14798
|
-
};
|
|
14799
|
-
var onRemoveSuccessHooks = function onRemoveSuccessHooks(warningId) {
|
|
14800
|
-
setConfirmDialogOptions(undefined);
|
|
14801
|
-
// Close warning dialog if needed
|
|
14802
|
-
if (selectedWarningId === warningId) {
|
|
14803
|
-
dispatch(uiActions.setToggleOpenDialog({
|
|
14804
|
-
setOpen: false,
|
|
14805
|
-
type: publicWarningDialogType
|
|
14806
|
-
}));
|
|
14807
|
-
}
|
|
16964
|
+
return request;
|
|
16965
|
+
}(),
|
|
16966
|
+
callback: function callback() {
|
|
16967
|
+
return onRemoveSuccess(warningToExtend.id, t('warning-dialog-extend-succes'));
|
|
16968
|
+
}
|
|
16969
|
+
});
|
|
16970
|
+
void refetchWarnings();
|
|
14808
16971
|
};
|
|
14809
|
-
|
|
14810
|
-
|
|
14811
|
-
|
|
14812
|
-
setConfirmDialogOptions(undefined);
|
|
14813
|
-
// Close warning dialog if needed
|
|
14814
|
-
if (selectedWarningId === warningId) {
|
|
14815
|
-
dispatch(uiActions.setToggleOpenDialog({
|
|
14816
|
-
setOpen: false,
|
|
14817
|
-
type: publicWarningDialogType
|
|
14818
|
-
}));
|
|
16972
|
+
var handleMaritimeProductClick = function handleMaritimeProductClick(warning, actionType) {
|
|
16973
|
+
if (!warning) {
|
|
16974
|
+
return;
|
|
14819
16975
|
}
|
|
14820
|
-
|
|
14821
|
-
|
|
16976
|
+
switch (actionType) {
|
|
16977
|
+
case MaritimeWarningAction.SELECT:
|
|
16978
|
+
void openPublicWarningDialog('', undefined, warning.type);
|
|
16979
|
+
break;
|
|
16980
|
+
case MaritimeWarningAction.UPDATE:
|
|
16981
|
+
void editMaritimeWarning(warning);
|
|
16982
|
+
break;
|
|
16983
|
+
case MaritimeWarningAction.EXTEND:
|
|
16984
|
+
extendMaritimeWarning(warning);
|
|
16985
|
+
break;
|
|
14822
16986
|
}
|
|
14823
|
-
refetchWarnings();
|
|
14824
16987
|
};
|
|
14825
|
-
var
|
|
14826
|
-
|
|
14827
|
-
|
|
14828
|
-
|
|
14829
|
-
dispatch(warningsFiltersActions.setWarningFilters({
|
|
14830
|
-
filterState: filterState,
|
|
14831
|
-
panelId: panelId,
|
|
14832
|
-
systemUpdate: systemUpdate
|
|
14833
|
-
}));
|
|
14834
|
-
}, [dispatch, panelId]);
|
|
14835
|
-
var filterHookState = useWarningFilters(combinedWarnings, onUpdateFilters, savedFilterState, presetFilterState);
|
|
14836
|
-
var filteredWarnings = React.useMemo(function () {
|
|
14837
|
-
return combinedWarnings.filter(filterHookState.byFilterState);
|
|
14838
|
-
}, [combinedWarnings, filterHookState.byFilterState]);
|
|
14839
|
-
var isOverLimit = filteredWarnings.length > MAX_WARNINGS_DISPLAY;
|
|
14840
|
-
var hasCustomTimeFilter = savedFilterState.time.mode === TimeFilterMode.custom;
|
|
14841
|
-
var shouldShowAlertBanner = hasCustomTimeFilter && isOverLimit;
|
|
14842
|
-
var displayedWarnings = React.useMemo(function () {
|
|
14843
|
-
return shouldShowAlertBanner ? [] : filteredWarnings;
|
|
14844
|
-
}, [shouldShowAlertBanner, filteredWarnings]);
|
|
14845
|
-
var expandedSections = useSelector(function (store) {
|
|
14846
|
-
return getExpandedSectionsByPanelId(store, panelId);
|
|
14847
|
-
});
|
|
14848
|
-
var setExpandedSections = React.useCallback(function (nextExpandedSections) {
|
|
14849
|
-
dispatch(warningsFiltersActions.setExpandedSectionsForPanel({
|
|
14850
|
-
panelId: panelId,
|
|
14851
|
-
expandedSections: nextExpandedSections,
|
|
14852
|
-
systemUpdate: false
|
|
14853
|
-
}));
|
|
14854
|
-
}, [dispatch, panelId]);
|
|
14855
|
-
React.useEffect(function () {
|
|
14856
|
-
if (!presetExpandedSections) {
|
|
14857
|
-
return;
|
|
14858
|
-
}
|
|
14859
|
-
dispatch(warningsFiltersActions.setExpandedSectionsForPanel({
|
|
14860
|
-
panelId: panelId,
|
|
14861
|
-
expandedSections: presetExpandedSections,
|
|
14862
|
-
systemUpdate: true
|
|
14863
|
-
}));
|
|
14864
|
-
}, [dispatch, panelId, presetExpandedSections]);
|
|
14865
|
-
var filteredWarningsByExpandedSections = React.useMemo(function () {
|
|
14866
|
-
return displayedWarnings.filter(function (warning) {
|
|
14867
|
-
var sectionKey = warning.status || warning.productStatus;
|
|
14868
|
-
return sectionKey ? Boolean(expandedSections[sectionKey]) : false;
|
|
14869
|
-
});
|
|
14870
|
-
}, [displayedWarnings, expandedSections]);
|
|
14871
|
-
var selectedFormAreaIds = React.useMemo(function () {
|
|
14872
|
-
var _selectedFormWarning$, _selectedFormWarning$2;
|
|
14873
|
-
return new Set(((_selectedFormWarning$ = selectedFormWarning == null || (_selectedFormWarning$2 = selectedFormWarning.warningDetail) == null ? void 0 : _selectedFormWarning$2.areas) != null ? _selectedFormWarning$ : []).map(function (area) {
|
|
14874
|
-
return area.areaId;
|
|
14875
|
-
}).filter(function (areaId) {
|
|
14876
|
-
return Boolean(areaId);
|
|
16988
|
+
var openSnackbar = function openSnackbar(message) {
|
|
16989
|
+
dispatch(snackbarActions.openSnackbar({
|
|
16990
|
+
type: snackbarTypes.SnackbarMessageType.VERBATIM_MESSAGE,
|
|
16991
|
+
message: message
|
|
14877
16992
|
}));
|
|
14878
|
-
}
|
|
14879
|
-
var
|
|
14880
|
-
|
|
14881
|
-
|
|
14882
|
-
|
|
14883
|
-
|
|
14884
|
-
|
|
14885
|
-
|
|
14886
|
-
|
|
14887
|
-
|
|
14888
|
-
|
|
14889
|
-
|
|
14890
|
-
|
|
14891
|
-
|
|
14892
|
-
|
|
14893
|
-
|
|
14894
|
-
|
|
14895
|
-
|
|
14896
|
-
|
|
14897
|
-
|
|
14898
|
-
|
|
14899
|
-
|
|
14900
|
-
|
|
14901
|
-
|
|
14902
|
-
|
|
14903
|
-
|
|
14904
|
-
|
|
14905
|
-
|
|
14906
|
-
|
|
14907
|
-
|
|
14908
|
-
|
|
14909
|
-
|
|
14910
|
-
|
|
14911
|
-
var
|
|
14912
|
-
|
|
14913
|
-
|
|
14914
|
-
|
|
14915
|
-
|
|
14916
|
-
|
|
14917
|
-
|
|
14918
|
-
|
|
14919
|
-
|
|
14920
|
-
|
|
14921
|
-
|
|
14922
|
-
|
|
14923
|
-
})
|
|
14924
|
-
};
|
|
14925
|
-
}, [allFeatures]);
|
|
14926
|
-
var warningLayerId = React.useRef(webmapUtils.generateLayerId()).current;
|
|
14927
|
-
var warningFeatureLayersById = React.useMemo(function () {
|
|
14928
|
-
var _ref7;
|
|
14929
|
-
return _ref7 = {}, _ref7[warningLayerId] = {
|
|
14930
|
-
id: warningLayerId,
|
|
14931
|
-
geojson: warningFeatureCollection
|
|
14932
|
-
}, _ref7;
|
|
14933
|
-
}, [warningLayerId, warningFeatureCollection]);
|
|
14934
|
-
useUpdateFeatureSyncLayers(warningFeatureLayersById, panelId);
|
|
14935
|
-
var store = useStore();
|
|
14936
|
-
var workspaceViewsById = useSelector(function (state) {
|
|
14937
|
-
return syncGroupsSelector.getWorkspaceViewsById(state);
|
|
14938
|
-
});
|
|
14939
|
-
var ownedFeatureLayerIds = useSelector(function (state) {
|
|
14940
|
-
return genericSelectors.selectFeatureSyncLayerIdsForPanel(state, panelId);
|
|
14941
|
-
}, shallowEqual);
|
|
14942
|
-
var linkedTargetIds = useSelector(function (state) {
|
|
14943
|
-
return genericSelectors.getLinkedTargetIds(state, panelId);
|
|
14944
|
-
}, shallowEqual);
|
|
14945
|
-
var hoveredLinkedFeatureIds = useSelector(function (state) {
|
|
14946
|
-
return genericSelectors.selectHoveredFeatureIdsForPanel(state, panelId);
|
|
14947
|
-
}, shallowEqual);
|
|
14948
|
-
var hoveredLocalWarningIds = useSelector(function (state) {
|
|
14949
|
-
return getHoveredWarningIdsByPanelId(state, panelId);
|
|
14950
|
-
});
|
|
14951
|
-
var hasLinkedTimelineTarget = linkedTargetIds.some(function (targetId) {
|
|
14952
|
-
var _workspaceViewsById$t;
|
|
14953
|
-
return (workspaceViewsById == null || (_workspaceViewsById$t = workspaceViewsById[targetId]) == null ? void 0 : _workspaceViewsById$t.componentType) === 'WarningsTimeline';
|
|
14954
|
-
});
|
|
14955
|
-
var _React$useState5 = React.useState(undefined),
|
|
14956
|
-
localHoveredWarningId = _React$useState5[0],
|
|
14957
|
-
setLocalHoveredWarningId = _React$useState5[1];
|
|
14958
|
-
var _React$useState6 = React.useState(false),
|
|
14959
|
-
isUsingLocalHoverOverride = _React$useState6[0],
|
|
14960
|
-
setIsUsingLocalHoverOverride = _React$useState6[1];
|
|
14961
|
-
var hoverDispatchTimeoutRef = React.useRef(undefined);
|
|
14962
|
-
var hoveredFeatureId = isUsingLocalHoverOverride ? localHoveredWarningId : (_hoveredLinkedFeature = hoveredLinkedFeatureIds[0]) != null ? _hoveredLinkedFeature : hoveredLocalWarningIds[0];
|
|
14963
|
-
var handleHoverWarning = React.useCallback(function (warningId) {
|
|
14964
|
-
setLocalHoveredWarningId(warningId);
|
|
14965
|
-
setIsUsingLocalHoverOverride(true);
|
|
14966
|
-
if (hoverDispatchTimeoutRef.current) {
|
|
14967
|
-
window.clearTimeout(hoverDispatchTimeoutRef.current);
|
|
14968
|
-
}
|
|
14969
|
-
hoverDispatchTimeoutRef.current = window.setTimeout(function () {
|
|
14970
|
-
if (!ownedFeatureLayerIds.length && hasLinkedTimelineTarget) {
|
|
14971
|
-
dispatch(warningsFiltersActions.setHoveredWarningIdsForPanel({
|
|
14972
|
-
panelId: panelId,
|
|
14973
|
-
warningIds: warningId ? [warningId] : []
|
|
14974
|
-
}));
|
|
14975
|
-
}
|
|
14976
|
-
ownedFeatureLayerIds.forEach(function (layerId) {
|
|
14977
|
-
dispatch(layerActions.setHoveredFeatures({
|
|
14978
|
-
layerId: layerId,
|
|
14979
|
-
hoveredFeatureIds: warningId ? [warningId] : []
|
|
14980
|
-
}));
|
|
14981
|
-
});
|
|
14982
|
-
setIsUsingLocalHoverOverride(false);
|
|
14983
|
-
}, WARNING_HOVER_DISPATCH_DELAY);
|
|
14984
|
-
}, [dispatch, hasLinkedTimelineTarget, ownedFeatureLayerIds, panelId]);
|
|
14985
|
-
React.useEffect(function () {
|
|
14986
|
-
return function () {
|
|
14987
|
-
if (hoverDispatchTimeoutRef.current) {
|
|
14988
|
-
window.clearTimeout(hoverDispatchTimeoutRef.current);
|
|
14989
|
-
}
|
|
14990
|
-
var ownedLayerIds = genericSelectors.selectFeatureSyncLayerIdsForPanel(store.getState(), panelId);
|
|
14991
|
-
var currentLinkedTargetIds = genericSelectors.getLinkedTargetIds(store.getState(), panelId);
|
|
14992
|
-
var currentWorkspaceViewsById = syncGroupsSelector.getWorkspaceViewsById(store.getState());
|
|
14993
|
-
var hasCurrentLinkedTimelineTarget = currentLinkedTargetIds.some(function (targetId) {
|
|
14994
|
-
var _currentWorkspaceView;
|
|
14995
|
-
return ((_currentWorkspaceView = currentWorkspaceViewsById[targetId]) == null ? void 0 : _currentWorkspaceView.componentType) === 'WarningsTimeline';
|
|
14996
|
-
});
|
|
14997
|
-
if (!ownedLayerIds.length && hasCurrentLinkedTimelineTarget) {
|
|
14998
|
-
dispatch(warningsFiltersActions.setHoveredWarningIdsForPanel({
|
|
14999
|
-
panelId: panelId,
|
|
15000
|
-
warningIds: []
|
|
15001
|
-
}));
|
|
15002
|
-
}
|
|
15003
|
-
ownedLayerIds.forEach(function (layerId) {
|
|
15004
|
-
dispatch(layerActions.setHoveredFeatures({
|
|
15005
|
-
layerId: layerId,
|
|
15006
|
-
hoveredFeatureIds: []
|
|
15007
|
-
}));
|
|
15008
|
-
});
|
|
15009
|
-
};
|
|
15010
|
-
}, [dispatch, panelId, store]);
|
|
15011
|
-
return isLoggedIn ? jsxs(Fragment, {
|
|
15012
|
-
children: [jsx(PublicWarningList, {
|
|
15013
|
-
error: error != null ? error : undefined,
|
|
15014
|
-
expandedSections: expandedSections,
|
|
15015
|
-
filterHookState: filterHookState,
|
|
15016
|
-
hiddenWarningIds: hiddenWarningIds,
|
|
15017
|
-
hoveredFeatureId: hoveredFeatureId,
|
|
15018
|
-
isLoading: isFetching,
|
|
15019
|
-
lastUpdatedTime: lastUpdateTime,
|
|
15020
|
-
limitAlertCount: filteredWarnings.length,
|
|
15021
|
-
onActionAviationWarning: handleAviationProductClick,
|
|
15022
|
-
onActionMaritimeWarning: handleMaritimeProductClick,
|
|
15023
|
-
onCreateWarning: createWarning,
|
|
15024
|
-
onDeleteReviewWarning: deleteReviewWarning,
|
|
15025
|
-
onDeleteWarning: deleteWarning,
|
|
15026
|
-
onEditWarning: editWarning,
|
|
15027
|
-
onExpireWarning: expireWarning,
|
|
15028
|
-
onHoverWarning: handleHoverWarning,
|
|
15029
|
-
onRefetchWarnings: refetchWarnings,
|
|
15030
|
-
onSelectWarning: selectWarning,
|
|
15031
|
-
onToggleWarningVisibility: handleToggleWarningVisibility,
|
|
15032
|
-
onWithdrawWarning: withdrawWarning,
|
|
15033
|
-
selectedWarningId: selectedWarningId,
|
|
15034
|
-
setExpandedSections: setExpandedSections,
|
|
15035
|
-
shouldDisableAviationAmendOption: (aviationConfig == null ? void 0 : aviationConfig.disable_amend_action) === true,
|
|
15036
|
-
showLimitAlert: shouldShowAlertBanner,
|
|
15037
|
-
warnings: displayedWarnings
|
|
15038
|
-
}), confirmDialogOptions ? jsx(ConfirmDeleteWarningDialog, {
|
|
15039
|
-
callback: confirmDialogOptions.callback,
|
|
15040
|
-
confirmLabel: confirmDialogOptions.confirmLabel,
|
|
15041
|
-
description: confirmDialogOptions.description,
|
|
15042
|
-
isLocked: confirmDialogOptions.isLocked,
|
|
15043
|
-
onClose: function onClose() {
|
|
15044
|
-
return setConfirmDialogOptions(undefined);
|
|
15045
|
-
},
|
|
15046
|
-
request: confirmDialogOptions.request,
|
|
15047
|
-
title: confirmDialogOptions.title
|
|
15048
|
-
}) : null, !!cancelCtx && jsx(CancelAviationConfirmDialog, {
|
|
15049
|
-
aviationConfig: aviationConfig,
|
|
15050
|
-
cancelAviationProduct: function () {
|
|
15051
|
-
var _cancelAviationProduct2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee10(product, t, opts) {
|
|
15052
|
-
return _regenerator().w(function (_context10) {
|
|
15053
|
-
while (1) switch (_context10.n) {
|
|
16993
|
+
};
|
|
16994
|
+
var deleteWarning = function deleteWarning(warningId, warningEditor) {
|
|
16995
|
+
var _auth$username3;
|
|
16996
|
+
var editor = warningEditor != null ? warningEditor : '';
|
|
16997
|
+
var currentUser = (_auth$username3 = auth == null ? void 0 : auth.username) != null ? _auth$username3 : '';
|
|
16998
|
+
var isLocked = editor !== '' && editor !== currentUser;
|
|
16999
|
+
setConfirmDialogOptions({
|
|
17000
|
+
confirmLabel: t('warning-dialog-delete-confirm'),
|
|
17001
|
+
title: t('warning-dialog-delete-title'),
|
|
17002
|
+
description: t('warning-dialog-delete-description'),
|
|
17003
|
+
request: function () {
|
|
17004
|
+
var _request5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {
|
|
17005
|
+
return _regenerator().w(function (_context0) {
|
|
17006
|
+
while (1) switch (_context0.n) {
|
|
17007
|
+
case 0:
|
|
17008
|
+
return _context0.a(2, deletePublicWarning({
|
|
17009
|
+
id: warningId
|
|
17010
|
+
}, {
|
|
17011
|
+
onSuccess: function onSuccess() {
|
|
17012
|
+
return onRemoveSuccessHooks(warningId);
|
|
17013
|
+
}
|
|
17014
|
+
}));
|
|
17015
|
+
}
|
|
17016
|
+
}, _callee0);
|
|
17017
|
+
}));
|
|
17018
|
+
function request() {
|
|
17019
|
+
return _request5.apply(this, arguments);
|
|
17020
|
+
}
|
|
17021
|
+
return request;
|
|
17022
|
+
}(),
|
|
17023
|
+
isLocked: isLocked
|
|
17024
|
+
});
|
|
17025
|
+
};
|
|
17026
|
+
var deleteReviewWarning = function deleteReviewWarning(warning) {
|
|
17027
|
+
var ignoredWarning = Object.assign({}, warning, {
|
|
17028
|
+
status: PublicWarningStatus.IGNORED
|
|
17029
|
+
});
|
|
17030
|
+
setConfirmDialogOptions({
|
|
17031
|
+
confirmLabel: t('warning-dialog-delete-confirm'),
|
|
17032
|
+
title: t('warning-dialog-delete-title'),
|
|
17033
|
+
description: t('warning-dialog-delete-description'),
|
|
17034
|
+
request: function () {
|
|
17035
|
+
var _request6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1() {
|
|
17036
|
+
return _regenerator().w(function (_context1) {
|
|
17037
|
+
while (1) switch (_context1.n) {
|
|
15054
17038
|
case 0:
|
|
15055
|
-
return
|
|
17039
|
+
return _context1.a(2, saveWarning({
|
|
17040
|
+
id: ignoredWarning.id,
|
|
17041
|
+
data: Object.assign({}, ignoredWarning, {
|
|
17042
|
+
type: 'public'
|
|
17043
|
+
})
|
|
17044
|
+
}));
|
|
15056
17045
|
}
|
|
15057
|
-
},
|
|
17046
|
+
}, _callee1);
|
|
15058
17047
|
}));
|
|
15059
|
-
function
|
|
15060
|
-
return
|
|
17048
|
+
function request() {
|
|
17049
|
+
return _request6.apply(this, arguments);
|
|
15061
17050
|
}
|
|
15062
|
-
return
|
|
17051
|
+
return request;
|
|
15063
17052
|
}(),
|
|
15064
|
-
|
|
15065
|
-
|
|
15066
|
-
|
|
15067
|
-
|
|
15068
|
-
|
|
15069
|
-
|
|
15070
|
-
|
|
15071
|
-
|
|
15072
|
-
|
|
15073
|
-
|
|
15074
|
-
|
|
15075
|
-
|
|
15076
|
-
|
|
15077
|
-
|
|
15078
|
-
};
|
|
15079
|
-
|
|
15080
|
-
/* *
|
|
15081
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
15082
|
-
* you may not use this file except in compliance with the License.
|
|
15083
|
-
* You may obtain a copy of the License at
|
|
15084
|
-
*
|
|
15085
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15086
|
-
*
|
|
15087
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
15088
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15089
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15090
|
-
* See the License for the specific language governing permissions and
|
|
15091
|
-
* limitations under the License.
|
|
15092
|
-
*
|
|
15093
|
-
* Copyright 2026 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15094
|
-
* Copyright 2026 - Finnish Meteorological Institute (FMI)
|
|
15095
|
-
* Copyright 2026 - The Norwegian Meteorological Institute (MET Norway)
|
|
15096
|
-
* */
|
|
15097
|
-
var draftStripes = function draftStripes(stripeColor, bgColor) {
|
|
15098
|
-
return "repeating-linear-gradient(\n -45deg,\n transparent,\n transparent 8px,\n " + stripeColor + " 8px,\n " + stripeColor + " 9px\n ), " + bgColor;
|
|
15099
|
-
};
|
|
15100
|
-
var TimelineColors = {
|
|
15101
|
-
// Public warnings - Extreme (Red)
|
|
15102
|
-
extreme: {
|
|
15103
|
-
published: {
|
|
15104
|
-
background: LevelColors.extreme.color,
|
|
15105
|
-
border: LevelColors.extreme.borderColor,
|
|
15106
|
-
iconColor: LevelColors.extreme.textColor,
|
|
15107
|
-
letterColor: LevelColors.extreme.textColor
|
|
15108
|
-
},
|
|
15109
|
-
draft: {
|
|
15110
|
-
background: '#F1D0D0',
|
|
15111
|
-
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
15112
|
-
border: LevelColors.extreme.borderColor,
|
|
15113
|
-
iconColor: LevelColors.extreme.color,
|
|
15114
|
-
letterColor: LevelColors.extreme.color
|
|
15115
|
-
},
|
|
15116
|
-
expired: {
|
|
15117
|
-
background: '#EFEFEF',
|
|
15118
|
-
border: LevelColors.extreme.borderColor,
|
|
15119
|
-
iconColor: LevelColors.extreme.color,
|
|
15120
|
-
letterColor: LevelColors.extreme.color
|
|
15121
|
-
}
|
|
15122
|
-
},
|
|
15123
|
-
// Public warnings - Severe (Orange)
|
|
15124
|
-
severe: {
|
|
15125
|
-
published: {
|
|
15126
|
-
background: LevelColors.severe.color,
|
|
15127
|
-
border: LevelColors.severe.borderColor,
|
|
15128
|
-
iconColor: 'white',
|
|
15129
|
-
letterColor: 'white'
|
|
15130
|
-
},
|
|
15131
|
-
draft: {
|
|
15132
|
-
background: '#FADDC2',
|
|
15133
|
-
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
15134
|
-
border: '#E27000',
|
|
15135
|
-
iconColor: '#9C4D00',
|
|
15136
|
-
letterColor: '#9C4D00'
|
|
15137
|
-
},
|
|
15138
|
-
expired: {
|
|
15139
|
-
background: '#EFEFEF',
|
|
15140
|
-
border: '#E27000',
|
|
15141
|
-
iconColor: '#9C4D00',
|
|
15142
|
-
letterColor: '#9C4D00'
|
|
15143
|
-
}
|
|
15144
|
-
},
|
|
15145
|
-
// Public warnings - Moderate (Yellow)
|
|
15146
|
-
moderate: {
|
|
15147
|
-
published: {
|
|
15148
|
-
background: LevelColors.moderate.color,
|
|
15149
|
-
border: LevelColors.moderate.borderColor,
|
|
15150
|
-
iconColor: '#3A3400',
|
|
15151
|
-
letterColor: '#3A3400'
|
|
15152
|
-
},
|
|
15153
|
-
draft: {
|
|
15154
|
-
background: '#FFFACE',
|
|
15155
|
-
stripeColor: 'rgba(250, 226, 28, 0.5)',
|
|
15156
|
-
// Yellow stripes
|
|
15157
|
-
border: LevelColors.moderate.borderColor,
|
|
15158
|
-
iconColor: '#3A3400',
|
|
15159
|
-
letterColor: '#3A3400'
|
|
15160
|
-
},
|
|
15161
|
-
expired: {
|
|
15162
|
-
background: '#EFEFEF',
|
|
15163
|
-
border: LevelColors.moderate.borderColor,
|
|
15164
|
-
iconColor: '#3A3400',
|
|
15165
|
-
letterColor: '#3A3400'
|
|
15166
|
-
}
|
|
15167
|
-
},
|
|
15168
|
-
// Aviation (SIGMET/AIRMET) - Blue
|
|
15169
|
-
aviation: {
|
|
15170
|
-
published: {
|
|
15171
|
-
background: '#186DFF',
|
|
15172
|
-
border: '#0800B9',
|
|
15173
|
-
iconColor: '#FFFFFF',
|
|
15174
|
-
letterColor: '#FFFFFF'
|
|
15175
|
-
},
|
|
15176
|
-
draft: {
|
|
15177
|
-
background: '#E3EDFF',
|
|
15178
|
-
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
15179
|
-
border: '#0800B9',
|
|
15180
|
-
iconColor: '#0800B9',
|
|
15181
|
-
letterColor: '#0800B9'
|
|
15182
|
-
},
|
|
15183
|
-
expired: {
|
|
15184
|
-
background: '#EFEFEF',
|
|
15185
|
-
border: '#0800B9',
|
|
15186
|
-
iconColor: '#186DFF',
|
|
15187
|
-
letterColor: '#186DFF'
|
|
15188
|
-
}
|
|
15189
|
-
},
|
|
15190
|
-
// Default/fallback
|
|
15191
|
-
"default": {
|
|
15192
|
-
published: {
|
|
15193
|
-
background: '#FFFFFF',
|
|
15194
|
-
border: '#AAAAAA',
|
|
15195
|
-
iconColor: '#333333',
|
|
15196
|
-
letterColor: '#333333'
|
|
15197
|
-
},
|
|
15198
|
-
draft: {
|
|
15199
|
-
background: '#FFFFFF',
|
|
15200
|
-
stripeColor: 'rgba(255, 255, 255, 0.5)',
|
|
15201
|
-
border: '#AAAAAA',
|
|
15202
|
-
iconColor: '#333333',
|
|
15203
|
-
letterColor: '#333333'
|
|
15204
|
-
},
|
|
15205
|
-
expired: {
|
|
15206
|
-
background: '#EFEFEF',
|
|
15207
|
-
border: '#AAAAAA',
|
|
15208
|
-
iconColor: '#333333',
|
|
15209
|
-
letterColor: '#333333'
|
|
17053
|
+
callback: function callback() {
|
|
17054
|
+
return onRemoveSuccess(ignoredWarning.id, t('warning-dialog-delete-succes'));
|
|
17055
|
+
}
|
|
17056
|
+
});
|
|
17057
|
+
void refetchWarnings();
|
|
17058
|
+
};
|
|
17059
|
+
var onRemoveSuccessHooks = function onRemoveSuccessHooks(warningId) {
|
|
17060
|
+
setConfirmDialogOptions(undefined);
|
|
17061
|
+
// Close warning dialog if needed
|
|
17062
|
+
if (selectedWarningId === warningId) {
|
|
17063
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
17064
|
+
setOpen: false,
|
|
17065
|
+
type: publicWarningDialogType
|
|
17066
|
+
}));
|
|
15210
17067
|
}
|
|
15211
|
-
}
|
|
15212
|
-
};
|
|
15213
|
-
var getThemeForLevel = function getThemeForLevel(level, isAviation) {
|
|
15214
|
-
if (isAviation) {
|
|
15215
|
-
return TimelineColors.aviation;
|
|
15216
|
-
}
|
|
15217
|
-
switch (level) {
|
|
15218
|
-
case WarningLevel.extreme:
|
|
15219
|
-
return TimelineColors.extreme;
|
|
15220
|
-
case WarningLevel.severe:
|
|
15221
|
-
return TimelineColors.severe;
|
|
15222
|
-
case WarningLevel.moderate:
|
|
15223
|
-
return TimelineColors.moderate;
|
|
15224
|
-
default:
|
|
15225
|
-
return TimelineColors["default"];
|
|
15226
|
-
}
|
|
15227
|
-
};
|
|
15228
|
-
var getBlockStyle = function getBlockStyle(level, status, isAviation) {
|
|
15229
|
-
var theme = getThemeForLevel(level, isAviation);
|
|
15230
|
-
if (status === PublicWarningStatus.DRAFT || status === PublicWarningStatus.DRAFT_PUBLISHED) {
|
|
15231
|
-
var _theme$draft = theme.draft,
|
|
15232
|
-
stripeColor = _theme$draft.stripeColor,
|
|
15233
|
-
background = _theme$draft.background,
|
|
15234
|
-
border = _theme$draft.border,
|
|
15235
|
-
iconColor = _theme$draft.iconColor,
|
|
15236
|
-
letterColor = _theme$draft.letterColor;
|
|
15237
|
-
return {
|
|
15238
|
-
background: draftStripes(stripeColor, background),
|
|
15239
|
-
border: "1px solid " + border,
|
|
15240
|
-
borderColor: border,
|
|
15241
|
-
iconColor: iconColor,
|
|
15242
|
-
letterColor: letterColor
|
|
15243
|
-
};
|
|
15244
|
-
}
|
|
15245
|
-
if (status === PublicWarningStatus.EXPIRED) {
|
|
15246
|
-
return {
|
|
15247
|
-
background: theme.expired.background,
|
|
15248
|
-
border: "1px solid " + theme.expired.border,
|
|
15249
|
-
borderColor: theme.expired.border,
|
|
15250
|
-
iconColor: theme.expired.iconColor,
|
|
15251
|
-
letterColor: theme.expired.letterColor
|
|
15252
|
-
};
|
|
15253
|
-
}
|
|
15254
|
-
// Published (default)
|
|
15255
|
-
return {
|
|
15256
|
-
background: theme.published.background,
|
|
15257
|
-
border: "1px solid " + theme.published.border,
|
|
15258
|
-
borderColor: theme.published.border,
|
|
15259
|
-
iconColor: theme.published.iconColor,
|
|
15260
|
-
letterColor: theme.published.letterColor
|
|
15261
17068
|
};
|
|
15262
|
-
|
|
15263
|
-
|
|
15264
|
-
|
|
15265
|
-
|
|
15266
|
-
|
|
15267
|
-
|
|
15268
|
-
|
|
15269
|
-
|
|
15270
|
-
|
|
15271
|
-
|
|
15272
|
-
|
|
15273
|
-
|
|
15274
|
-
|
|
15275
|
-
|
|
15276
|
-
|
|
15277
|
-
|
|
15278
|
-
|
|
15279
|
-
|
|
15280
|
-
|
|
15281
|
-
|
|
15282
|
-
|
|
15283
|
-
|
|
15284
|
-
|
|
15285
|
-
|
|
15286
|
-
};
|
|
15287
|
-
|
|
15288
|
-
var
|
|
15289
|
-
|
|
15290
|
-
return
|
|
15291
|
-
}
|
|
15292
|
-
var
|
|
15293
|
-
var
|
|
15294
|
-
var
|
|
15295
|
-
|
|
15296
|
-
|
|
15297
|
-
|
|
15298
|
-
|
|
15299
|
-
|
|
15300
|
-
|
|
15301
|
-
|
|
15302
|
-
|
|
15303
|
-
|
|
15304
|
-
|
|
15305
|
-
|
|
15306
|
-
|
|
15307
|
-
if (hour === 0) {
|
|
15308
|
-
ticks.push({
|
|
15309
|
-
time: new Date(current),
|
|
15310
|
-
type: 'day'
|
|
15311
|
-
});
|
|
15312
|
-
} else if (hour % hourInterval === 0) {
|
|
15313
|
-
ticks.push({
|
|
15314
|
-
time: new Date(current),
|
|
15315
|
-
type: 'major'
|
|
15316
|
-
});
|
|
15317
|
-
} else {
|
|
15318
|
-
ticks.push({
|
|
15319
|
-
time: new Date(current),
|
|
15320
|
-
type: 'dashed'
|
|
17069
|
+
// TODO remove when all is moved to tanstack
|
|
17070
|
+
var onRemoveSuccess = function onRemoveSuccess(warningId, snackbarMessage) {
|
|
17071
|
+
// close confirm dialog
|
|
17072
|
+
setConfirmDialogOptions(undefined);
|
|
17073
|
+
// Close warning dialog if needed
|
|
17074
|
+
if (selectedWarningId === warningId) {
|
|
17075
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
17076
|
+
setOpen: false,
|
|
17077
|
+
type: publicWarningDialogType
|
|
17078
|
+
}));
|
|
17079
|
+
}
|
|
17080
|
+
if (snackbarMessage) {
|
|
17081
|
+
openSnackbar(snackbarMessage);
|
|
17082
|
+
}
|
|
17083
|
+
refetchWarnings();
|
|
17084
|
+
};
|
|
17085
|
+
var onUpdateFilters = React.useCallback(function (filterState, systemUpdate) {
|
|
17086
|
+
if (systemUpdate === void 0) {
|
|
17087
|
+
systemUpdate = false;
|
|
17088
|
+
}
|
|
17089
|
+
dispatch(warningsFiltersActions.setWarningFilters({
|
|
17090
|
+
filterState: filterState,
|
|
17091
|
+
panelId: panelId,
|
|
17092
|
+
systemUpdate: systemUpdate
|
|
17093
|
+
}));
|
|
17094
|
+
}, [dispatch, panelId]);
|
|
17095
|
+
var filterHookState = useWarningFilters(combinedWarnings, onUpdateFilters, savedFilterState, presetFilterState);
|
|
17096
|
+
var filteredWarnings = React.useMemo(function () {
|
|
17097
|
+
return combinedWarnings.filter(filterHookState.byFilterState);
|
|
17098
|
+
}, [combinedWarnings, filterHookState.byFilterState]);
|
|
17099
|
+
var isOverLimit = filteredWarnings.length > MAX_WARNINGS_DISPLAY;
|
|
17100
|
+
var hasCustomTimeFilter = savedFilterState.time.mode === TimeFilterMode.custom;
|
|
17101
|
+
var shouldShowAlertBanner = hasCustomTimeFilter && isOverLimit;
|
|
17102
|
+
var displayedWarnings = React.useMemo(function () {
|
|
17103
|
+
return shouldShowAlertBanner ? [] : filteredWarnings;
|
|
17104
|
+
}, [shouldShowAlertBanner, filteredWarnings]);
|
|
17105
|
+
React.useEffect(function () {
|
|
17106
|
+
setSelectedForBatchDelete(function (prev) {
|
|
17107
|
+
var visibleIds = new Set(displayedWarnings.map(function (warning) {
|
|
17108
|
+
return warning.id;
|
|
17109
|
+
}).filter(function (id) {
|
|
17110
|
+
return !!id;
|
|
17111
|
+
}));
|
|
17112
|
+
var next = prev.filter(function (id) {
|
|
17113
|
+
return visibleIds.has(id);
|
|
15321
17114
|
});
|
|
17115
|
+
return next.length === prev.length ? prev : next;
|
|
17116
|
+
});
|
|
17117
|
+
}, [displayedWarnings]);
|
|
17118
|
+
var expandedSections = useSelector(function (store) {
|
|
17119
|
+
return getExpandedSectionsByPanelId(store, panelId);
|
|
17120
|
+
});
|
|
17121
|
+
var setExpandedSections = React.useCallback(function (nextExpandedSections) {
|
|
17122
|
+
dispatch(warningsFiltersActions.setExpandedSectionsForPanel({
|
|
17123
|
+
panelId: panelId,
|
|
17124
|
+
expandedSections: nextExpandedSections,
|
|
17125
|
+
systemUpdate: false
|
|
17126
|
+
}));
|
|
17127
|
+
}, [dispatch, panelId]);
|
|
17128
|
+
React.useEffect(function () {
|
|
17129
|
+
if (!presetExpandedSections) {
|
|
17130
|
+
return;
|
|
15322
17131
|
}
|
|
15323
|
-
|
|
15324
|
-
|
|
15325
|
-
|
|
15326
|
-
|
|
15327
|
-
|
|
15328
|
-
|
|
15329
|
-
|
|
15330
|
-
|
|
15331
|
-
|
|
15332
|
-
|
|
15333
|
-
|
|
15334
|
-
|
|
15335
|
-
|
|
15336
|
-
|
|
15337
|
-
|
|
17132
|
+
dispatch(warningsFiltersActions.setExpandedSectionsForPanel({
|
|
17133
|
+
panelId: panelId,
|
|
17134
|
+
expandedSections: presetExpandedSections,
|
|
17135
|
+
systemUpdate: true
|
|
17136
|
+
}));
|
|
17137
|
+
}, [dispatch, panelId, presetExpandedSections]);
|
|
17138
|
+
var filteredWarningsByExpandedSections = React.useMemo(function () {
|
|
17139
|
+
return displayedWarnings.filter(function (warning) {
|
|
17140
|
+
var sectionKey = warning.status || warning.productStatus;
|
|
17141
|
+
return sectionKey ? Boolean(expandedSections[sectionKey]) : false;
|
|
17142
|
+
});
|
|
17143
|
+
}, [displayedWarnings, expandedSections]);
|
|
17144
|
+
var _useWarningListFeatur = useWarningListFeatureSync({
|
|
17145
|
+
filteredWarningsByExpandedSections: filteredWarningsByExpandedSections,
|
|
17146
|
+
hiddenWarningIds: hiddenWarningIds,
|
|
17147
|
+
panelId: panelId,
|
|
17148
|
+
selectedFormWarning: selectedFormWarning,
|
|
17149
|
+
selectedWarningId: selectedWarningId
|
|
17150
|
+
}),
|
|
17151
|
+
handleHoverWarning = _useWarningListFeatur.handleHoverWarning,
|
|
17152
|
+
hoveredFeatureId = _useWarningListFeatur.hoveredFeatureId;
|
|
17153
|
+
var doBatchDelete = /*#__PURE__*/function () {
|
|
17154
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee11(warningIds) {
|
|
17155
|
+
var warningsById, promises, results;
|
|
17156
|
+
return _regenerator().w(function (_context11) {
|
|
17157
|
+
while (1) switch (_context11.n) {
|
|
17158
|
+
case 0:
|
|
17159
|
+
warningsById = new Map(displayedWarnings.map(function (warning) {
|
|
17160
|
+
return [warning.id, warning];
|
|
17161
|
+
}));
|
|
17162
|
+
promises = warningIds.flatMap(function (warningId) {
|
|
17163
|
+
var warning = warningsById.get(warningId);
|
|
17164
|
+
if (!warning) {
|
|
17165
|
+
return [];
|
|
17166
|
+
}
|
|
17167
|
+
if (warning.type === 'public') {
|
|
17168
|
+
var promise = warning.status === PublicWarningStatus.TODO ? saveWarning({
|
|
17169
|
+
id: warning.id,
|
|
17170
|
+
data: Object.assign({}, warning, {
|
|
17171
|
+
status: PublicWarningStatus.IGNORED,
|
|
17172
|
+
type: 'public'
|
|
17173
|
+
})
|
|
17174
|
+
}) : deletePublicWarning({
|
|
17175
|
+
id: warningId
|
|
17176
|
+
});
|
|
17177
|
+
return [{
|
|
17178
|
+
id: warningId,
|
|
17179
|
+
promise: promise
|
|
17180
|
+
}];
|
|
17181
|
+
}
|
|
17182
|
+
if (warning.type === 'airmet' || warning.type === 'sigmet') {
|
|
17183
|
+
return [{
|
|
17184
|
+
id: warningId,
|
|
17185
|
+
promise: postAviationProduct(warning.sigmetAirmetDetails, 'DISCARDED', warning.type)
|
|
17186
|
+
}];
|
|
17187
|
+
}
|
|
17188
|
+
// Maritime warnings are ignored as they cannot have status DRAFT/TODO
|
|
17189
|
+
return [];
|
|
17190
|
+
}); // Correct version
|
|
17191
|
+
_context11.n = 1;
|
|
17192
|
+
return Promise.allSettled(promises.map(/*#__PURE__*/function () {
|
|
17193
|
+
var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee10(_ref8) {
|
|
17194
|
+
var promise;
|
|
17195
|
+
return _regenerator().w(function (_context10) {
|
|
17196
|
+
while (1) switch (_context10.n) {
|
|
17197
|
+
case 0:
|
|
17198
|
+
promise = _ref8.promise;
|
|
17199
|
+
return _context10.a(2, promise);
|
|
17200
|
+
}
|
|
17201
|
+
}, _callee10);
|
|
17202
|
+
}));
|
|
17203
|
+
return function (_x12) {
|
|
17204
|
+
return _ref9.apply(this, arguments);
|
|
17205
|
+
};
|
|
17206
|
+
}()));
|
|
17207
|
+
case 1:
|
|
17208
|
+
results = _context11.v;
|
|
17209
|
+
return _context11.a(2, promises.filter(function (_, index) {
|
|
17210
|
+
return results[index].status === 'fulfilled';
|
|
17211
|
+
}).map(function (_ref0) {
|
|
17212
|
+
var id = _ref0.id;
|
|
17213
|
+
return id;
|
|
17214
|
+
}));
|
|
17215
|
+
}
|
|
17216
|
+
}, _callee11);
|
|
17217
|
+
}));
|
|
17218
|
+
return function doBatchDelete(_x11) {
|
|
17219
|
+
return _ref7.apply(this, arguments);
|
|
15338
17220
|
};
|
|
15339
|
-
}
|
|
15340
|
-
|
|
15341
|
-
|
|
15342
|
-
|
|
17221
|
+
}();
|
|
17222
|
+
var onClickBatchDelete = function onClickBatchDelete(warningIds) {
|
|
17223
|
+
// Filter out any warnings that are excluded because of the filter
|
|
17224
|
+
var warningIdSet = new Set(displayedWarnings.map(function (warning) {
|
|
17225
|
+
return warning.id;
|
|
17226
|
+
}));
|
|
17227
|
+
var filteredWarningIds = warningIds.filter(function (id) {
|
|
17228
|
+
return warningIdSet.has(id);
|
|
17229
|
+
});
|
|
17230
|
+
var isLocked = filteredWarningIds.some(function (warningId) {
|
|
17231
|
+
var _fullWarning$editor, _auth$username4;
|
|
17232
|
+
var fullWarning = displayedWarnings.find(function (warning) {
|
|
17233
|
+
return warning.id === warningId;
|
|
17234
|
+
});
|
|
17235
|
+
var editor = (_fullWarning$editor = fullWarning == null ? void 0 : fullWarning.editor) != null ? _fullWarning$editor : '';
|
|
17236
|
+
var currentUser = (_auth$username4 = auth == null ? void 0 : auth.username) != null ? _auth$username4 : '';
|
|
17237
|
+
return editor !== '' && editor !== currentUser;
|
|
17238
|
+
});
|
|
17239
|
+
setConfirmDialogOptions({
|
|
17240
|
+
confirmLabel: t('warning-dialog-delete-all-confirm'),
|
|
17241
|
+
title: t('warning-dialog-delete-all-title'),
|
|
17242
|
+
description: t('warning-dialog-delete-all-description', {
|
|
17243
|
+
ns: WARN_NAMESPACE,
|
|
17244
|
+
NUMBER: filteredWarningIds.length
|
|
17245
|
+
}),
|
|
17246
|
+
request: function () {
|
|
17247
|
+
var _request7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee12() {
|
|
17248
|
+
return _regenerator().w(function (_context12) {
|
|
17249
|
+
while (1) switch (_context12.n) {
|
|
17250
|
+
case 0:
|
|
17251
|
+
return _context12.a(2, doBatchDelete(filteredWarningIds));
|
|
17252
|
+
}
|
|
17253
|
+
}, _callee12);
|
|
17254
|
+
}));
|
|
17255
|
+
function request() {
|
|
17256
|
+
return _request7.apply(this, arguments);
|
|
17257
|
+
}
|
|
17258
|
+
return request;
|
|
17259
|
+
}(),
|
|
17260
|
+
callback: function callback(data) {
|
|
17261
|
+
var successfulIds = data || [];
|
|
17262
|
+
if (filteredWarningIds.includes(selectedWarningId)) {
|
|
17263
|
+
dispatch(uiActions.setToggleOpenDialog({
|
|
17264
|
+
setOpen: false,
|
|
17265
|
+
type: publicWarningDialogType
|
|
17266
|
+
}));
|
|
17267
|
+
}
|
|
17268
|
+
// Only show snackbar and remove from selection if there were successes
|
|
17269
|
+
if (successfulIds.length > 0) {
|
|
17270
|
+
openSnackbar(t('warning-dialog-delete-all-succes'));
|
|
17271
|
+
setSelectedForBatchDelete(function (prev) {
|
|
17272
|
+
return prev.filter(function (id) {
|
|
17273
|
+
return !successfulIds.includes(id);
|
|
17274
|
+
});
|
|
17275
|
+
});
|
|
17276
|
+
}
|
|
17277
|
+
var failedCount = filteredWarningIds.length - successfulIds.length;
|
|
17278
|
+
if (failedCount > 0) {
|
|
17279
|
+
throw new Error(t('warning-dialog-delete-all-failed', {
|
|
17280
|
+
NUMBER: failedCount
|
|
17281
|
+
}));
|
|
17282
|
+
} else {
|
|
17283
|
+
setConfirmDialogOptions(undefined);
|
|
17284
|
+
}
|
|
17285
|
+
refetchWarnings();
|
|
17286
|
+
},
|
|
17287
|
+
isLocked: isLocked
|
|
17288
|
+
});
|
|
15343
17289
|
};
|
|
15344
|
-
|
|
15345
|
-
|
|
15346
|
-
|
|
15347
|
-
|
|
15348
|
-
|
|
15349
|
-
|
|
15350
|
-
|
|
15351
|
-
|
|
15352
|
-
|
|
15353
|
-
|
|
15354
|
-
|
|
15355
|
-
|
|
17290
|
+
return isLoggedIn ? jsxs(Fragment, {
|
|
17291
|
+
children: [jsx(PublicWarningList, {
|
|
17292
|
+
error: error != null ? error : undefined,
|
|
17293
|
+
expandedSections: expandedSections,
|
|
17294
|
+
filterHookState: filterHookState,
|
|
17295
|
+
hiddenWarningIds: hiddenWarningIds,
|
|
17296
|
+
hoveredFeatureId: hoveredFeatureId,
|
|
17297
|
+
isLoading: isFetching,
|
|
17298
|
+
lastUpdatedTime: lastUpdateTime,
|
|
17299
|
+
limitAlertCount: filteredWarnings.length,
|
|
17300
|
+
onActionAviationWarning: handleAviationProductClick,
|
|
17301
|
+
onActionMaritimeWarning: handleMaritimeProductClick,
|
|
17302
|
+
onClearBatchDeleteSelection: clearBatchDeleteSelection,
|
|
17303
|
+
onClickBatchDelete: onClickBatchDelete,
|
|
17304
|
+
onCreateWarning: createWarning,
|
|
17305
|
+
onDeleteReviewWarning: deleteReviewWarning,
|
|
17306
|
+
onDeleteWarning: deleteWarning,
|
|
17307
|
+
onEditWarning: editWarning,
|
|
17308
|
+
onExpireWarning: expireWarning,
|
|
17309
|
+
onHoverWarning: handleHoverWarning,
|
|
17310
|
+
onRefetchWarnings: refetchWarnings,
|
|
17311
|
+
onSelectAllForBatchDelete: selectAllForBatchDelete,
|
|
17312
|
+
onSelectWarning: selectWarning,
|
|
17313
|
+
onToggleWarningVisibility: handleToggleWarningVisibility,
|
|
17314
|
+
onWithdrawWarning: withdrawWarning,
|
|
17315
|
+
selectedForBatchDelete: selectedForBatchDelete,
|
|
17316
|
+
selectedWarningId: selectedWarningId,
|
|
17317
|
+
setExpandedSections: setExpandedSections,
|
|
17318
|
+
shouldDisableAviationAmendOption: (aviationConfig == null ? void 0 : aviationConfig.disable_amend_action) === true,
|
|
17319
|
+
showLimitAlert: shouldShowAlertBanner,
|
|
17320
|
+
toggleWarningForBatchDelete: toggleWarningForBatchDelete,
|
|
17321
|
+
warnings: displayedWarnings
|
|
17322
|
+
}), confirmDialogOptions ? jsx(ConfirmDeleteWarningDialog, {
|
|
17323
|
+
callback: confirmDialogOptions.callback,
|
|
17324
|
+
confirmLabel: confirmDialogOptions.confirmLabel,
|
|
17325
|
+
description: confirmDialogOptions.description,
|
|
17326
|
+
isLocked: confirmDialogOptions.isLocked,
|
|
17327
|
+
onClose: function onClose() {
|
|
17328
|
+
return setConfirmDialogOptions(undefined);
|
|
17329
|
+
},
|
|
17330
|
+
request: confirmDialogOptions.request,
|
|
17331
|
+
title: confirmDialogOptions.title
|
|
17332
|
+
}) : null, !!cancelCtx && jsx(CancelAviationConfirmDialog, {
|
|
17333
|
+
aviationConfig: aviationConfig,
|
|
17334
|
+
cancelAviationProduct: function () {
|
|
17335
|
+
var _cancelAviationProduct2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee13(product, t, opts) {
|
|
17336
|
+
return _regenerator().w(function (_context13) {
|
|
17337
|
+
while (1) switch (_context13.n) {
|
|
17338
|
+
case 0:
|
|
17339
|
+
return _context13.a(2, _cancelAviationProduct(product, t, opts));
|
|
17340
|
+
}
|
|
17341
|
+
}, _callee13);
|
|
17342
|
+
}));
|
|
17343
|
+
function cancelAviationProduct(_x13, _x14, _x15) {
|
|
17344
|
+
return _cancelAviationProduct2.apply(this, arguments);
|
|
17345
|
+
}
|
|
17346
|
+
return cancelAviationProduct;
|
|
17347
|
+
}(),
|
|
17348
|
+
confirmLabel: getConfirmationDialogButtonLabel(t, ProductAction.CANCEL, cancelCtx.type),
|
|
17349
|
+
onClose: closeCancelDialog,
|
|
17350
|
+
open: cancelOpen,
|
|
17351
|
+
product: cancelCtx.product,
|
|
17352
|
+
showVA: cancelCtx.showVA,
|
|
17353
|
+
sigmet: cancelCtx.sigmet,
|
|
17354
|
+
title: getConfirmationDialogTitle(t, ProductAction.CANCEL, cancelCtx.type),
|
|
17355
|
+
type: cancelCtx.type
|
|
17356
|
+
})]
|
|
17357
|
+
}) : jsx(AlertBanner, {
|
|
17358
|
+
dataTestId: "public-warning-list-auth-error",
|
|
17359
|
+
severity: "error",
|
|
17360
|
+
title: t('error-auth-login')
|
|
17361
|
+
});
|
|
15356
17362
|
};
|
|
15357
17363
|
|
|
15358
17364
|
/**
|
|
@@ -15760,8 +17766,8 @@ var WarningsTimeline = function WarningsTimeline(_ref) {
|
|
|
15760
17766
|
var _loop = function _loop() {
|
|
15761
17767
|
var entry = _step.value;
|
|
15762
17768
|
var nextSize = {
|
|
15763
|
-
width: entry.contentRect.width,
|
|
15764
|
-
height: entry.contentRect.height
|
|
17769
|
+
width: Math.round(entry.contentRect.width),
|
|
17770
|
+
height: Math.round(entry.contentRect.height)
|
|
15765
17771
|
};
|
|
15766
17772
|
setContainerSize(function (currentSize) {
|
|
15767
17773
|
return currentSize.width === nextSize.width && currentSize.height === nextSize.height ? currentSize : nextSize;
|
|
@@ -15926,6 +17932,7 @@ var WarningsTimeline = function WarningsTimeline(_ref) {
|
|
|
15926
17932
|
sx: {
|
|
15927
17933
|
flex: 1,
|
|
15928
17934
|
overflow: 'auto',
|
|
17935
|
+
scrollbarGutter: 'stable',
|
|
15929
17936
|
minHeight: 0
|
|
15930
17937
|
},
|
|
15931
17938
|
children: jsx(Box$1, {
|
|
@@ -16188,4 +18195,4 @@ ComponentsLookUpWrapper) {
|
|
|
16188
18195
|
}
|
|
16189
18196
|
};
|
|
16190
18197
|
|
|
16191
|
-
export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningsTimeline, WarningsTimelineConnect, componentsLookUp, createMockStore, isAlreadyEdited, selectors as publicWarningsSelectors, useObjectDrawDialogAction, warningFormConfirmationOptions, warningsDrawingsActions, warningsDrawingsReducer, warningsFiltersActions, warningsFiltersReducer, warningsFormActions, warningsFormListener, warningsFormReducer, warningsMiddlewares, warningsReducersMap, warningsTranslations };
|
|
18198
|
+
export { DrawingToolConnect, Wrapper as DrawingToolForm, DrawingToolFormConnect, DrawingToolMapButtonConnect, ObjectManagerConnect, ObjectManagerMapButtonConnect, PublicWarningsFormDialog, PublicWarningsFormDialogConnect, WARN_NAMESPACE, WarningEventDialog, WarningEventDialogConnect, WarningEventFormContent, WarningsTimeline, WarningsTimelineConnect, componentsLookUp, createMockStore, isAlreadyEdited, selectors as publicWarningsSelectors, useObjectDrawDialogAction, warningFormConfirmationOptions, warningsDrawingsActions, warningsDrawingsReducer, warningsFiltersActions, warningsFiltersReducer, warningsFormActions, warningsFormListener, warningsFormReducer, warningsMiddlewares, warningsReducersMap, warningsTranslations };
|