@opengeoweb/sigmet-airmet 9.3.1 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.esm.js CHANGED
@@ -417,6 +417,15 @@ function _nonIterableRest() {
417
417
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
418
418
  }
419
419
 
420
+ /**
421
+ * The possible type for the airmet
422
+ */
423
+ var AirmetType;
424
+ (function (AirmetType) {
425
+ AirmetType["NORMAL"] = "Normal";
426
+ AirmetType["TEST"] = "Test";
427
+ AirmetType["EXERCISE"] = "Exercise";
428
+ })(AirmetType || (AirmetType = {}));
420
429
  /**
421
430
  * The possible type for the sigmet
422
431
  */
@@ -425,6 +434,8 @@ var SigmetType;
425
434
  SigmetType["NORMAL"] = "Normal";
426
435
  SigmetType["TEST"] = "Test";
427
436
  SigmetType["EXERCISE"] = "Exercise";
437
+ SigmetType["SHORT_TEST"] = "Short test";
438
+ SigmetType["SHORT_VA_TEST"] = "Short VA test";
428
439
  })(SigmetType || (SigmetType = {}));
429
440
  /**
430
441
  * The possible phenomena for the sigmet
@@ -761,6 +772,51 @@ var ProductFormFieldLayout = function ProductFormFieldLayout(_a) {
761
772
  }, children));
762
773
  };
763
774
 
775
+ /* *
776
+ * Licensed under the Apache License, Version 2.0 (the "License");
777
+ * you may not use this file except in compliance with the License.
778
+ * You may obtain a copy of the License at
779
+ *
780
+ * http://www.apache.org/licenses/LICENSE-2.0
781
+ *
782
+ * Unless required by applicable law or agreed to in writing, software
783
+ * distributed under the License is distributed on an "AS IS" BASIS,
784
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
785
+ * See the License for the specific language governing permissions and
786
+ * limitations under the License.
787
+ *
788
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
789
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
790
+ * */
791
+ var useShortTestHelpers = function useShortTestHelpers() {
792
+ var _useFormContext = useFormContext(),
793
+ getValues = _useFormContext.getValues,
794
+ setValue = _useFormContext.setValue,
795
+ clearErrors = _useFormContext.clearErrors;
796
+ var unusedFields = ['isObservationOrForecast', 'change', 'startGeometry', 'startGeometryIntersect', 'endGeometry', 'endGeometryIntersect', 'levelInfoMode', 'level', 'lowerLevel', 'movementType', 'movementDirection', 'movementUnit', 'movementSpeed', 'change', 'vaSigmetVolcanoName', 'vaSigmetVolcanoCoordinates.latitude', 'vaSigmetVolcanoCoordinates.longitude'];
797
+ var isShortTest = function isShortTest() {
798
+ var type = getValues('type');
799
+ return type === 'SHORT_TEST' || type === 'SHORT_VA_TEST';
800
+ };
801
+ var onTypeChange = function onTypeChange() {
802
+ if (getValues('type') === 'SHORT_TEST') {
803
+ setValue('phenomenon', 'EMBD_TS');
804
+ } else if (getValues('type') === 'SHORT_VA_TEST') {
805
+ setValue('phenomenon', 'VA_CLD');
806
+ }
807
+ if (isShortTest()) {
808
+ unusedFields.forEach(function (field) {
809
+ setValue(field, null);
810
+ });
811
+ clearErrors(unusedFields);
812
+ }
813
+ };
814
+ return {
815
+ isShortTest: isShortTest,
816
+ onTypeChange: onTypeChange
817
+ };
818
+ };
819
+
764
820
  /* *
765
821
  * Licensed under the Apache License, Version 2.0 (the "License");
766
822
  * you may not use this file except in compliance with the License.
@@ -781,7 +837,13 @@ var Change = function Change(_ref) {
781
837
  var isDisabled = _ref.isDisabled,
782
838
  isReadOnly = _ref.isReadOnly;
783
839
  var _useDraftFormHelpers = useDraftFormHelpers(),
784
- isRequired = _useDraftFormHelpers.isRequired;
840
+ isRequiredField = _useDraftFormHelpers.isRequired;
841
+ var _useShortTestHelpers = useShortTestHelpers(),
842
+ isShortTest = _useShortTestHelpers.isShortTest;
843
+ var isRequired = function isRequired(value) {
844
+ return isShortTest() || isRequiredField(value);
845
+ };
846
+ var fieldsDisabled = isDisabled || isShortTest();
785
847
  return /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
786
848
  title: "Change",
787
849
  sx: styles$2.containerItem
@@ -795,22 +857,22 @@ var Change = function Change(_ref) {
795
857
  isRequired: isRequired
796
858
  }
797
859
  },
798
- disabled: isDisabled,
860
+ disabled: fieldsDisabled,
799
861
  isReadOnly: isReadOnly
800
862
  }, /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
801
863
  value: "WKN",
802
864
  label: "Weakening",
803
- disabled: isDisabled,
865
+ disabled: fieldsDisabled,
804
866
  "data-testid": "change-WKN"
805
867
  }), /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
806
868
  value: "NC",
807
869
  label: "No change",
808
- disabled: isDisabled,
870
+ disabled: fieldsDisabled,
809
871
  "data-testid": "change-NC"
810
872
  }), /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
811
873
  value: "INTSF",
812
874
  label: "Intensifying",
813
- disabled: isDisabled,
875
+ disabled: fieldsDisabled,
814
876
  "data-testid": "change-INTSF"
815
877
  }))));
816
878
  };
@@ -1127,7 +1189,7 @@ var getProductFormLifecycleButtons = function getProductFormLifecycleButtons(_re
1127
1189
  }))));
1128
1190
  };
1129
1191
  var hasValue = function hasValue(value) {
1130
- return value !== null && value.toString() !== 'NaN' && value !== '';
1192
+ return value !== undefined && value !== null && value !== 'null' && value.toString() !== 'NaN' && value !== '';
1131
1193
  };
1132
1194
  var prepareFormValues = function prepareFormValues(product) {
1133
1195
  return Object.keys(product).reduce(function (list, key) {
@@ -1384,7 +1446,9 @@ var styles$1 = {
1384
1446
  var DrawTools = function DrawTools(_ref) {
1385
1447
  var activeTool = _ref.activeTool,
1386
1448
  tools = _ref.tools,
1387
- onChangeTool = _ref.onChangeTool;
1449
+ onChangeTool = _ref.onChangeTool,
1450
+ _ref$isDisabled = _ref.isDisabled,
1451
+ isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled;
1388
1452
  return /*#__PURE__*/React__default.createElement(Grid, {
1389
1453
  item: true,
1390
1454
  xs: 12,
@@ -1403,6 +1467,7 @@ var DrawTools = function DrawTools(_ref) {
1403
1467
  value: true,
1404
1468
  checkedIcon: getToolIcon(tool.drawModeId),
1405
1469
  checked: activeTool === tool.drawModeId,
1470
+ disabled: isDisabled,
1406
1471
  onChange: function onChange() {
1407
1472
  onChangeTool(tool);
1408
1473
  },
@@ -1490,10 +1555,16 @@ var Levels = function Levels(_ref) {
1490
1555
  clearErrors = _useFormContext.clearErrors,
1491
1556
  unregister = _useFormContext.unregister;
1492
1557
  var _useDraftFormHelpers = useDraftFormHelpers(),
1493
- isRequired = _useDraftFormHelpers.isRequired;
1558
+ isRequiredField = _useDraftFormHelpers.isRequired;
1559
+ var _useShortTestHelpers = useShortTestHelpers(),
1560
+ isShortTest = _useShortTestHelpers.isShortTest;
1561
+ var isRequired = function isRequired(value) {
1562
+ return isShortTest() || isRequiredField(value);
1563
+ };
1494
1564
  var level = watch('level.value');
1495
1565
  var levelInfoMode = watch('levelInfoMode');
1496
1566
  var isRadioactiveCloud = watch('phenomenon') === 'RDOACT_CLD';
1567
+ var fieldsDisabled = isDisabled || isShortTest() || isRadioactiveCloud;
1497
1568
  var getFIRValue = function getFIRValue() {
1498
1569
  return getValues('locationIndicatorATSR');
1499
1570
  };
@@ -1523,7 +1594,7 @@ var Levels = function Levels(_ref) {
1523
1594
  isRequired: isRequired
1524
1595
  }
1525
1596
  },
1526
- disabled: isDisabled || isRadioactiveCloud,
1597
+ disabled: fieldsDisabled,
1527
1598
  isReadOnly: isReadOnly,
1528
1599
  onChange: function onChange() {
1529
1600
  // Reset default value for the level value to '' so when it rerenders it uses this empty default value
@@ -1537,7 +1608,7 @@ var Levels = function Levels(_ref) {
1537
1608
  label: "At",
1538
1609
  checked: levelInfoMode === 'AT' || levelInfoMode === 'TOPS',
1539
1610
  "data-testid": "levels-AT",
1540
- disabled: isDisabled || isRadioactiveCloud
1611
+ disabled: fieldsDisabled
1541
1612
  }), (levelInfoMode === 'AT' || levelInfoMode === 'TOPS') && !isRadioactiveCloud ? ( /*#__PURE__*/React__default.createElement(Grid, {
1542
1613
  item: true,
1543
1614
  xs: 12,
@@ -1629,7 +1700,7 @@ var Levels = function Levels(_ref) {
1629
1700
  label: "Between",
1630
1701
  checked: levelInfoMode === 'BETW' || levelInfoMode === 'BETW_SFC',
1631
1702
  "data-testid": "levels-BETW",
1632
- disabled: isDisabled || isRadioactiveCloud
1703
+ disabled: fieldsDisabled
1633
1704
  }), levelInfoMode === 'BETW' || levelInfoMode === 'BETW_SFC' ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
1634
1705
  item: true,
1635
1706
  xs: 12,
@@ -1659,7 +1730,7 @@ var Levels = function Levels(_ref) {
1659
1730
  },
1660
1731
  size: "small",
1661
1732
  sx: styles$2.unit,
1662
- disabled: isDisabled || isRadioactiveCloud,
1733
+ disabled: fieldsDisabled,
1663
1734
  isReadOnly: isReadOnly,
1664
1735
  defaultValue: 'FL',
1665
1736
  onChange: function onChange() {
@@ -1705,7 +1776,7 @@ var Levels = function Levels(_ref) {
1705
1776
  }
1706
1777
  }
1707
1778
  },
1708
- disabled: isDisabled || isRadioactiveCloud,
1779
+ disabled: fieldsDisabled,
1709
1780
  isReadOnly: isReadOnly,
1710
1781
  onChange: function onChange() {
1711
1782
  triggerValidations(['lowerLevel.value'], getValues, trigger);
@@ -1733,7 +1804,7 @@ var Levels = function Levels(_ref) {
1733
1804
  },
1734
1805
  name: "checkedF",
1735
1806
  color: "secondary",
1736
- disabled: isDisabled || isRadioactiveCloud
1807
+ disabled: fieldsDisabled
1737
1808
  }),
1738
1809
  "data-testid": "levels-SFC",
1739
1810
  label: "SFC"
@@ -1812,7 +1883,7 @@ var Levels = function Levels(_ref) {
1812
1883
  }))))))) : null, /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
1813
1884
  value: "ABV",
1814
1885
  label: "Above",
1815
- disabled: isDisabled || isRadioactiveCloud,
1886
+ disabled: fieldsDisabled,
1816
1887
  checked: levelInfoMode === 'ABV' || levelInfoMode === 'TOPS_ABV',
1817
1888
  "data-testid": "levels-ABV"
1818
1889
  }), levelInfoMode === 'ABV' || levelInfoMode === 'TOPS_ABV' ? ( /*#__PURE__*/React__default.createElement(Grid, {
@@ -1926,7 +1997,13 @@ var ObservationForecast = function ObservationForecast(_ref) {
1926
1997
  trigger = _useFormContext.trigger,
1927
1998
  getValues = _useFormContext.getValues;
1928
1999
  var _useDraftFormHelpers = useDraftFormHelpers(),
1929
- isRequired = _useDraftFormHelpers.isRequired;
2000
+ isRequiredField = _useDraftFormHelpers.isRequired;
2001
+ var _useShortTestHelpers = useShortTestHelpers(),
2002
+ isShortTest = _useShortTestHelpers.isShortTest;
2003
+ var isRequired = function isRequired(value) {
2004
+ return isShortTest() || isRequiredField(value);
2005
+ };
2006
+ var fieldsDisabled = isDisabled || isShortTest();
1930
2007
  return /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
1931
2008
  sx: {
1932
2009
  paddingTop: '8px!important',
@@ -1937,7 +2014,7 @@ var ObservationForecast = function ObservationForecast(_ref) {
1937
2014
  }
1938
2015
  }, /*#__PURE__*/React__default.createElement(ReactHookFormRadioGroup, {
1939
2016
  name: "isObservationOrForecast",
1940
- disabled: isDisabled,
2017
+ disabled: fieldsDisabled,
1941
2018
  rules: {
1942
2019
  validate: {
1943
2020
  isRequired: isRequired
@@ -1950,12 +2027,12 @@ var ObservationForecast = function ObservationForecast(_ref) {
1950
2027
  }, (!isReadOnly || watch('isObservationOrForecast') === 'OBS') && ( /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
1951
2028
  value: "OBS",
1952
2029
  label: "Observed",
1953
- disabled: isDisabled,
2030
+ disabled: fieldsDisabled,
1954
2031
  "data-testid": "isObservationOrForecast-OBS"
1955
2032
  })), (!isReadOnly || watch('isObservationOrForecast') === 'FCST') && ( /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
1956
2033
  value: "FCST",
1957
2034
  label: "Forecast",
1958
- disabled: isDisabled,
2035
+ disabled: fieldsDisabled,
1959
2036
  "data-testid": "isObservationOrForecast-FCST"
1960
2037
  }))));
1961
2038
  };
@@ -1986,6 +2063,9 @@ var ObservationForecastTime = function ObservationForecastTime(_ref) {
1986
2063
  var _useFormContext = useFormContext(),
1987
2064
  watch = _useFormContext.watch;
1988
2065
  var label = getFieldLabel('Date and time', isReadOnly);
2066
+ var _useShortTestHelpers = useShortTestHelpers(),
2067
+ isShortTest = _useShortTestHelpers.isShortTest;
2068
+ var fieldsDisabled = isDisabled || isShortTest();
1989
2069
  return !isReadOnly || watch('observationOrForecastTime') !== null ? ( /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
1990
2070
  title: "At"
1991
2071
  }, /*#__PURE__*/React__default.createElement(ReactHookFormDateTime, {
@@ -2004,7 +2084,7 @@ var ObservationForecastTime = function ObservationForecastTime(_ref) {
2004
2084
  }
2005
2085
  }
2006
2086
  },
2007
- disabled: isDisabled,
2087
+ disabled: fieldsDisabled,
2008
2088
  isReadOnly: isReadOnly,
2009
2089
  helperText: helperText,
2010
2090
  onChange: function onChange() {
@@ -2041,9 +2121,12 @@ var Phenomenon = function Phenomenon(_ref) {
2041
2121
  getValues = _useFormContext.getValues,
2042
2122
  setValue = _useFormContext.setValue,
2043
2123
  trigger = _useFormContext.trigger;
2124
+ var _useShortTestHelpers = useShortTestHelpers(),
2125
+ isShortTest = _useShortTestHelpers.isShortTest;
2044
2126
  var isSigmet = productType === 'sigmet';
2045
2127
  var phenomenaList = isSigmet ? SigmetPhenomena : AirmetPhenomena;
2046
2128
  var label = getFieldLabel('Phenomenon', isReadOnly);
2129
+ var fieldsDisabled = isDisabled || isShortTest();
2047
2130
  return /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
2048
2131
  title: "What"
2049
2132
  }, /*#__PURE__*/React__default.createElement(ReactHookFormSelect, {
@@ -2052,7 +2135,7 @@ var Phenomenon = function Phenomenon(_ref) {
2052
2135
  rules: {
2053
2136
  required: true
2054
2137
  },
2055
- disabled: isDisabled,
2138
+ disabled: fieldsDisabled,
2056
2139
  isReadOnly: isReadOnly,
2057
2140
  size: "small",
2058
2141
  "data-testid": "phenomenon",
@@ -2112,6 +2195,8 @@ var StartGeometry = function StartGeometry(_ref) {
2112
2195
  watch = _useFormContext.watch;
2113
2196
  var _useDraftFormHelpers = useDraftFormHelpers(),
2114
2197
  isDraft = _useDraftFormHelpers.isDraft;
2198
+ var _useShortTestHelpers = useShortTestHelpers(),
2199
+ isShortTest = _useShortTestHelpers.isShortTest;
2115
2200
  return !isReadOnly ? ( /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
2116
2201
  title: "Start position",
2117
2202
  sx: styles$2.drawSection,
@@ -2119,7 +2204,8 @@ var StartGeometry = function StartGeometry(_ref) {
2119
2204
  }, /*#__PURE__*/React__default.createElement(DrawTools, {
2120
2205
  activeTool: activeTool,
2121
2206
  tools: tools,
2122
- onChangeTool: onChangeTool
2207
+ onChangeTool: onChangeTool,
2208
+ isDisabled: isShortTest()
2123
2209
  }), activeTool && ( /*#__PURE__*/React__default.createElement(FormHelperText, {
2124
2210
  variant: "filled",
2125
2211
  sx: styles$2.quitDrawModeMessage
@@ -2142,7 +2228,7 @@ var StartGeometry = function StartGeometry(_ref) {
2142
2228
  return hasIntersectionWithFIR(value, watch('startGeometryIntersect')) || noIntersectionMessage$1;
2143
2229
  },
2144
2230
  coordinatesNotEmpty: function coordinatesNotEmpty(value) {
2145
- return isDraft() ? true : isValidGeoJsonCoordinates(value) || coordinatesEmptyMessage$1;
2231
+ return isDraft() || isShortTest() ? true : isValidGeoJsonCoordinates(value) || coordinatesEmptyMessage$1;
2146
2232
  },
2147
2233
  hasMaxFeaturePoints: function hasMaxFeaturePoints$1(value) {
2148
2234
  return isFir(value) ? true : !hasMaxFeaturePoints(value) || maximum6PointsMessage$1;
@@ -2225,8 +2311,13 @@ var Progress = function Progress(_ref) {
2225
2311
  errors = _useFormContext.formState.errors,
2226
2312
  unregister = _useFormContext.unregister;
2227
2313
  var _useDraftFormHelpers = useDraftFormHelpers(),
2228
- isRequired = _useDraftFormHelpers.isRequired,
2314
+ isRequiredField = _useDraftFormHelpers.isRequired,
2229
2315
  isDraft = _useDraftFormHelpers.isDraft;
2316
+ var _useShortTestHelpers = useShortTestHelpers(),
2317
+ isShortTest = _useShortTestHelpers.isShortTest;
2318
+ var isRequired = function isRequired(value) {
2319
+ return isShortTest() || isRequiredField(value);
2320
+ };
2230
2321
  var movementType = watch('movementType');
2231
2322
  var getFIRValue = function getFIRValue() {
2232
2323
  return getValues('locationIndicatorATSR');
@@ -2247,6 +2338,8 @@ var Progress = function Progress(_ref) {
2247
2338
  var isSigmet = productType === 'sigmet';
2248
2339
  var isRadioactiveCloud = watch('phenomenon') === 'RDOACT_CLD';
2249
2340
  var isVolcanicCloud = watch('phenomenon') === 'VA_CLD';
2341
+ var isShortTestOrRdoact = isShortTest() || isRadioactiveCloud;
2342
+ var fieldsDisabled = isDisabled || isShortTestOrRdoact;
2250
2343
  return /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
2251
2344
  title: "Progress",
2252
2345
  sx: styles$2.containerItem
@@ -2273,31 +2366,33 @@ var Progress = function Progress(_ref) {
2273
2366
  }, isVolcanicCloud && ( /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
2274
2367
  value: "NO_VA_EXP",
2275
2368
  label: "No volcanic ash expected",
2276
- disabled: isDisabled,
2369
+ disabled: fieldsDisabled,
2277
2370
  "data-testid": "movementType-NO_VA_EXP"
2278
2371
  })), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
2279
2372
  value: "STATIONARY",
2280
2373
  label: "Stationary",
2281
- disabled: isDisabled || isRadioactiveCloud,
2374
+ disabled: fieldsDisabled,
2282
2375
  "data-testid": "movementType-STATIONARY"
2283
2376
  }), /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
2284
2377
  value: "MOVEMENT",
2285
2378
  label: "Movement",
2286
- disabled: isDisabled || isRadioactiveCloud,
2379
+ disabled: fieldsDisabled,
2287
2380
  "data-testid": "movementType-MOVEMENT"
2288
- }), isSigmet && isRadioactiveCloud && ( /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
2381
+ }), isSigmet && isShortTestOrRdoact && ( /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
2289
2382
  value: "FORECAST_POSITION",
2290
2383
  label: "End position",
2291
- disabled: isDisabled || isRadioactiveCloud,
2384
+ disabled: fieldsDisabled,
2292
2385
  "data-testid": "movementType-FORECAST_POSITION"
2293
- }))), movementType === 'MOVEMENT' && !isRadioactiveCloud && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
2386
+ }))), movementType === 'MOVEMENT' && !isShortTestOrRdoact && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
2294
2387
  item: true,
2295
2388
  xs: 12
2296
2389
  }, /*#__PURE__*/React__default.createElement(ReactHookFormSelect, {
2297
2390
  name: "movementDirection",
2298
2391
  label: "Set direction",
2299
2392
  rules: {
2300
- validate: isRequired
2393
+ validate: {
2394
+ isRequired: isRequired
2395
+ }
2301
2396
  },
2302
2397
  size: "small",
2303
2398
  sx: styles$2.movement,
@@ -2325,7 +2420,9 @@ var Progress = function Progress(_ref) {
2325
2420
  name: "movementUnit",
2326
2421
  label: "Unit",
2327
2422
  rules: {
2328
- validate: isRequired
2423
+ validate: {
2424
+ isRequired: isRequired
2425
+ }
2329
2426
  },
2330
2427
  size: "small",
2331
2428
  sx: styles$2.unit,
@@ -2380,12 +2477,12 @@ var Progress = function Progress(_ref) {
2380
2477
  onChange: function onChange(event) {
2381
2478
  return event && event.stopPropagation();
2382
2479
  }
2383
- }))))), isSigmet && !isRadioactiveCloud && ( /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
2480
+ }))))), isSigmet && !isShortTestOrRdoact && ( /*#__PURE__*/React__default.createElement(RadioButtonAndLabel, {
2384
2481
  value: "FORECAST_POSITION",
2385
2482
  label: "End position",
2386
2483
  disabled: isDisabled,
2387
2484
  "data-testid": "movementType-FORECAST_POSITION"
2388
- }))), isSigmet && !isRadioactiveCloud && movementType === 'FORECAST_POSITION' && ( /*#__PURE__*/React__default.createElement(Grid, {
2485
+ }))), isSigmet && !isShortTestOrRdoact && movementType === 'FORECAST_POSITION' && ( /*#__PURE__*/React__default.createElement(Grid, {
2389
2486
  item: true,
2390
2487
  xs: 12,
2391
2488
  "data-testid": "endGeometry",
@@ -2549,7 +2646,8 @@ var SelectFIR = function SelectFIR(_ref) {
2549
2646
  * Copyright 2022 - Finnish Meteorological Institute (FMI)
2550
2647
  * */
2551
2648
  var Type = function Type(_ref) {
2552
- var isReadOnly = _ref.isReadOnly,
2649
+ var productType = _ref.productType,
2650
+ isReadOnly = _ref.isReadOnly,
2553
2651
  isDisabled = _ref.isDisabled,
2554
2652
  _ref$onChange = _ref.onChange,
2555
2653
  _onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange;
@@ -2557,6 +2655,9 @@ var Type = function Type(_ref) {
2557
2655
  getValues = _useFormContext.getValues,
2558
2656
  trigger = _useFormContext.trigger;
2559
2657
  var label = getFieldLabel('Type', isReadOnly);
2658
+ var _useShortTestHelpers = useShortTestHelpers(),
2659
+ onTypeChange = _useShortTestHelpers.onTypeChange;
2660
+ var messageType = productType === 'airmet' ? AirmetType : SigmetType;
2560
2661
  return /*#__PURE__*/React__default.createElement(ProductFormFieldLayout, {
2561
2662
  title: "Type"
2562
2663
  }, /*#__PURE__*/React__default.createElement(ReactHookFormSelect, {
@@ -2568,15 +2669,16 @@ var Type = function Type(_ref) {
2568
2669
  "data-testid": "type",
2569
2670
  defaultValue: "NORMAL",
2570
2671
  onChange: function onChange() {
2672
+ onTypeChange();
2571
2673
  triggerValidations(['validDateStart', 'validDateEnd'], getValues, trigger);
2572
2674
  _onChange();
2573
2675
  },
2574
2676
  autoFocus: true
2575
- }, Object.keys(SigmetType).map(function (key) {
2677
+ }, Object.keys(messageType).map(function (key) {
2576
2678
  return /*#__PURE__*/React__default.createElement(MenuItem, {
2577
2679
  value: key,
2578
2680
  key: key
2579
- }, SigmetType[key]);
2681
+ }, messageType[key]);
2580
2682
  })));
2581
2683
  };
2582
2684
 
@@ -3489,6 +3591,10 @@ var shouldRetrieveTAC = function shouldRetrieveTAC(product, omitChange) {
3489
3591
  if (product && isInstanceOfCancelSigmetOrAirmet(product)) {
3490
3592
  return true;
3491
3593
  }
3594
+ // retrieve for short (va) test sigmets with less mandatory fields
3595
+ if (product && isInstanceOfSigmetOrAirmet(product) && (product.type === 'SHORT_TEST' || product.type === 'SHORT_VA_TEST') && product.phenomenon && product.phenomenon !== '') {
3596
+ return true;
3597
+ }
3492
3598
  if (product && isInstanceOfSigmetOrAirmet(product) && product.phenomenon && product.phenomenon !== '' && product.isObservationOrForecast && product.isObservationOrForecast !== '' && product.validDateStart && product.validDateStart !== null && product.validDateEnd && product.validDateEnd !== null && isLevelFieldsComplete(product) && product.startGeometry && product.startGeometry !== null && product.startGeometryIntersect && product.startGeometryIntersect !== null && product.movementType && product.movementType !== '' && isChangeComplete(product, omitChange) && isSurfaceVisComplete(product)) {
3493
3599
  return true;
3494
3600
  }
@@ -7117,6 +7223,8 @@ var SigmetForm = function SigmetForm(_ref) {
7117
7223
  var _useConditionalFields = useConditionalFields$1(productConfig),
7118
7224
  hasVolcanicAshes = _useConditionalFields.hasVolcanicAshes,
7119
7225
  omitChange = _useConditionalFields.omitChange;
7226
+ var _useShortTestHelpers = useShortTestHelpers(),
7227
+ isShortTest = _useShortTestHelpers.isShortTest;
7120
7228
  var onChangeFir = function onChangeFir(event) {
7121
7229
  var newFIRValue = event === null || event === void 0 ? void 0 : event.target.value;
7122
7230
  var newFirGeoJSON = addFeatureProperties(getFir(productConfig, newFIRValue), featurePropsFIR);
@@ -7156,6 +7264,7 @@ var SigmetForm = function SigmetForm(_ref) {
7156
7264
  }
7157
7265
  }
7158
7266
  }, /*#__PURE__*/React__default.createElement(Type, {
7267
+ productType: "sigmet",
7159
7268
  isDisabled: isDisabled,
7160
7269
  isReadOnly: isReadOnly,
7161
7270
  onChange: onChangeForm
@@ -7172,7 +7281,7 @@ var SigmetForm = function SigmetForm(_ref) {
7172
7281
  isReadOnly: isReadOnly,
7173
7282
  helperText: helperText,
7174
7283
  onChange: onChangeForm
7175
- })), !isCancelSigmet && hasVolcanicAshes && ( /*#__PURE__*/React__default.createElement(VolcanicFields, {
7284
+ })), !isCancelSigmet && hasVolcanicAshes && !isShortTest() && ( /*#__PURE__*/React__default.createElement(VolcanicFields, {
7176
7285
  isDisabled: isDisabled,
7177
7286
  isReadOnly: isReadOnly,
7178
7287
  helperText: helperText
@@ -7426,6 +7535,7 @@ var AirmetForm = function AirmetForm(_ref) {
7426
7535
  }
7427
7536
  }
7428
7537
  }, /*#__PURE__*/React__default.createElement(Type, {
7538
+ productType: "airmet",
7429
7539
  isDisabled: isDisabled,
7430
7540
  isReadOnly: isReadOnly,
7431
7541
  onChange: onChangeForm
@@ -8170,6 +8280,8 @@ var ProductFormDialogContent = function ProductFormDialogContent(_ref) {
8170
8280
  var _useDraftFormHelpers = useDraftFormHelpers(),
8171
8281
  toggleIsDraft = _useDraftFormHelpers.toggleIsDraft,
8172
8282
  DraftFieldHelper = _useDraftFormHelpers.DraftFieldHelper;
8283
+ var _useShortTestHelpers = useShortTestHelpers(),
8284
+ isShortTest = _useShortTestHelpers.isShortTest;
8173
8285
  usePreventBrowserClose(isDirty);
8174
8286
  var confirmationDialog = useConfirmationDialog();
8175
8287
  var _React$useState = React.useState(false),
@@ -8216,7 +8328,7 @@ var ProductFormDialogContent = function ProductFormDialogContent(_ref) {
8216
8328
  confirmLabel: getConfirmationDialogButtonLabel(action, productType),
8217
8329
  cancelLabel: getConfirmationDialogCancelLabel(action),
8218
8330
  catchOnCancel: action === 'CLOSED',
8219
- content: isVAPhenomenon(product, action) ? ( /*#__PURE__*/React.createElement(CancelSigmetVolcanicMovements, {
8331
+ content: isVAPhenomenon(product, action) && !isShortTest() ? ( /*#__PURE__*/React.createElement(CancelSigmetVolcanicMovements, {
8220
8332
  sigmet: product,
8221
8333
  productConfig: productConfig
8222
8334
  })) : null
@@ -10494,6 +10606,50 @@ var fakeSigmetList = [{
10494
10606
  }]
10495
10607
  }
10496
10608
  });
10609
+ ({
10610
+ creationDate: '2020-09-17T12:00:00Z',
10611
+ canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
10612
+ sigmet: {
10613
+ uuid: 'someuniqueidprescibedbyBE',
10614
+ phenomenon: 'EMBD_TS',
10615
+ sequence: 'Z01',
10616
+ validDateStart: dateUtils.dateToString(dateUtils.add(dateUtils.utc(), {
10617
+ hours: 1
10618
+ })),
10619
+ validDateEnd: dateUtils.dateToString(dateUtils.add(dateUtils.utc(), {
10620
+ hours: 3
10621
+ })),
10622
+ firName: 'AMSTERDAM FIR',
10623
+ locationIndicatorATSU: 'EHAA',
10624
+ locationIndicatorATSR: 'EHAA',
10625
+ locationIndicatorMWO: 'EHDB',
10626
+ type: 'SHORT_TEST',
10627
+ status: 'DRAFT',
10628
+ firGeometry: getFir(sigmetConfig)
10629
+ }
10630
+ });
10631
+ ({
10632
+ creationDate: '2020-09-17T12:00:00Z',
10633
+ canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
10634
+ sigmet: {
10635
+ uuid: 'someuniqueidprescibedbyBE',
10636
+ phenomenon: 'VA_CLD',
10637
+ sequence: 'Y01',
10638
+ validDateStart: dateUtils.dateToString(dateUtils.add(dateUtils.utc(), {
10639
+ hours: 1
10640
+ })),
10641
+ validDateEnd: dateUtils.dateToString(dateUtils.add(dateUtils.utc(), {
10642
+ hours: 3
10643
+ })),
10644
+ firName: 'AMSTERDAM FIR',
10645
+ locationIndicatorATSU: 'EHAA',
10646
+ locationIndicatorATSR: 'EHAA',
10647
+ locationIndicatorMWO: 'EHDB',
10648
+ type: 'SHORT_VA_TEST',
10649
+ status: 'DRAFT',
10650
+ firGeometry: getFir(sigmetConfig)
10651
+ }
10652
+ });
10497
10653
  [{
10498
10654
  creationDate: '2020-09-17T12:00:00Z',
10499
10655
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
@@ -11105,4 +11261,4 @@ var AirmetComponentsLookUp = function AirmetComponentsLookUp(payload, _ref) {
11105
11261
  }
11106
11262
  };
11107
11263
 
11108
- export { AirmetComponentsLookUp, AirmetForm, AirmetPhenomena, CloudLevelUnits, ContentDialog, Direction, DownloadSigmetAirmetConfigWrapper, LevelUnits, MapViewGeoJson, MetInfoWrapper, MovementUnit, ProductList, ProductListRow, ProductStatusDescription, SigmetComponentsLookUp, SigmetForm, SigmetPhenomena, SigmetType, StartOrEndDrawing, VisibilityCause, WindUnit, airmetConfig, createApi$1 as createApi, createApi as createFakeApi, isInstanceOfAirmet, isInstanceOfCancelAirmet, isInstanceOfCancelSigmet, isInstanceOfCancelSigmetOrAirmet, isInstanceOfSigmet, isInstanceOfSigmetOrAirmet, sigmetConfig };
11264
+ export { AirmetComponentsLookUp, AirmetForm, AirmetPhenomena, AirmetType, CloudLevelUnits, ContentDialog, Direction, DownloadSigmetAirmetConfigWrapper, LevelUnits, MapViewGeoJson, MetInfoWrapper, MovementUnit, ProductList, ProductListRow, ProductStatusDescription, SigmetComponentsLookUp, SigmetForm, SigmetPhenomena, SigmetType, StartOrEndDrawing, VisibilityCause, WindUnit, airmetConfig, createApi$1 as createApi, createApi as createFakeApi, isInstanceOfAirmet, isInstanceOfCancelAirmet, isInstanceOfCancelSigmet, isInstanceOfCancelSigmetOrAirmet, isInstanceOfSigmet, isInstanceOfSigmetOrAirmet, sigmetConfig };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/sigmet-airmet",
3
- "version": "9.3.1",
3
+ "version": "9.4.0",
4
4
  "description": "GeoWeb Sigmet/Airmet library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -4,6 +4,7 @@ interface DrawToolsProps {
4
4
  activeTool: string;
5
5
  tools: DrawMode[];
6
6
  onChangeTool: (newToolMode: DrawMode) => void;
7
+ isDisabled?: boolean;
7
8
  }
8
9
  declare const DrawTools: React.FC<DrawToolsProps>;
9
10
  export default DrawTools;
@@ -0,0 +1,4 @@
1
+ export declare const useShortTestHelpers: () => {
2
+ isShortTest: () => boolean;
3
+ onTypeChange: () => void;
4
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,13 +1,23 @@
1
1
  /// <reference types="react" />
2
2
  import { mapTypes } from '@opengeoweb/store';
3
3
  export type ProductType = 'sigmet' | 'airmet';
4
+ /**
5
+ * The possible type for the airmet
6
+ */
7
+ export declare enum AirmetType {
8
+ 'NORMAL' = "Normal",
9
+ 'TEST' = "Test",
10
+ 'EXERCISE' = "Exercise"
11
+ }
4
12
  /**
5
13
  * The possible type for the sigmet
6
14
  */
7
15
  export declare enum SigmetType {
8
16
  'NORMAL' = "Normal",
9
17
  'TEST' = "Test",
10
- 'EXERCISE' = "Exercise"
18
+ 'EXERCISE' = "Exercise",
19
+ 'SHORT_TEST' = "Short test",
20
+ 'SHORT_VA_TEST' = "Short VA test"
11
21
  }
12
22
  /**
13
23
  * The possible phenomena for the sigmet
@@ -214,24 +224,24 @@ export type AirmetMovementType = 'STATIONARY' | 'MOVEMENT';
214
224
  export interface Sigmet extends BaseProduct {
215
225
  phenomenon: SigmetPhenomena;
216
226
  status: ProductStatus;
217
- isObservationOrForecast: ObservationOrForcast;
227
+ isObservationOrForecast?: ObservationOrForcast;
218
228
  observationOrForecastTime?: DateType;
219
- type: 'NORMAL' | 'TEST' | 'EXERCISE';
229
+ type: 'NORMAL' | 'TEST' | 'EXERCISE' | 'SHORT_TEST' | 'SHORT_VA_TEST';
220
230
  /** Change type of the Sigmet, can be:
221
231
  * INTSF:Intensifying
222
232
  * WKN: Weakening
223
233
  * NC: No change
224
234
  */
225
235
  change?: Change;
226
- levelInfoMode: LevelInfoMode;
227
- level: LevelType;
236
+ levelInfoMode?: LevelInfoMode;
237
+ level?: LevelType;
228
238
  lowerLevel?: LevelType;
229
239
  firGeometry?: GeoJSON.FeatureCollection;
230
- startGeometry: GeoJSON.FeatureCollection;
231
- startGeometryIntersect: GeoJSON.FeatureCollection;
240
+ startGeometry?: GeoJSON.FeatureCollection;
241
+ startGeometryIntersect?: GeoJSON.FeatureCollection;
232
242
  endGeometry?: GeoJSON.FeatureCollection;
233
243
  endGeometryIntersect?: GeoJSON.FeatureCollection;
234
- movementType: SigmetMovementType;
244
+ movementType?: SigmetMovementType;
235
245
  movementSpeed?: number;
236
246
  movementUnit?: MovementUnit;
237
247
  movementDirection?: Direction;
@@ -7,4 +7,6 @@ export declare const fakeNewSigmet: Sigmet;
7
7
  export declare const fakeSigmetMultiPolygon: SigmetFromBackend;
8
8
  export declare const fakeVolcanicCancelSigmetNoMoveTo: SigmetFromBackend;
9
9
  export declare const fakeVolcanicCancelSigmetWithMoveTo: SigmetFromBackend;
10
+ export declare const fakeShortTestSigmet: SigmetFromBackend;
11
+ export declare const fakeShortVaTestSigmet: SigmetFromBackend;
10
12
  export declare const fakeStaticSigmetList: SigmetFromBackend[];