@opengeoweb/taf 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
@@ -1,13 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import React__default from 'react';
3
3
  import { Grid, Button, Chip, Box, Typography, TextField, Card, Tabs, Tab, Dialog, MenuList, MenuItem, Backdrop, CircularProgress } from '@mui/material';
4
- import { useFormContext, Controller, useFieldArray } from 'react-hook-form';
4
+ import { useFormContext, useFieldArray, Controller } from 'react-hook-form';
5
5
  import { useDispatch } from 'react-redux';
6
6
  import { ReactSortable } from 'react-sortablejs';
7
7
  import Sortable from 'sortablejs';
8
8
  import { useAuthenticationContext } from '@opengeoweb/authentication';
9
9
  import { HIDDEN_INPUT_HELPER_IS_DRAFT, getDeepProperty, useDraftFormHelpers, ReactHookFormHiddenInput, ReactHookFormProvider } from '@opengeoweb/form-fields';
10
- import { useIsMounted, CustomIconButton, CustomTooltip, ToolContainerDraggable, Avatar, getInitials, ToggleMenu, useConfirmationDialog, usePreventBrowserClose, SwitchButton, ToolHeader, AlertBanner, getErrorMessage as getErrorMessage$1, getWarningMessage, usePoller, ErrorBoundary } from '@opengeoweb/shared';
10
+ import { dateUtils, useIsMounted, CustomIconButton, CustomTooltip, ToolContainerDraggable, Avatar, getInitials, ToggleMenu, useConfirmationDialog, usePreventBrowserClose, SwitchButton, ToolHeader, AlertBanner, getErrorMessage as getErrorMessage$1, getWarningMessage, usePoller, ErrorBoundary } from '@opengeoweb/shared';
11
11
  import { snackbarActions } from '@opengeoweb/snackbar';
12
12
  import moment from 'moment';
13
13
  import { isEqual } from 'lodash';
@@ -2274,6 +2274,26 @@ var validateFourthCloud = function validateFourthCloud(firstCloudValue, secondCl
2274
2274
  return true;
2275
2275
  };
2276
2276
 
2277
+ /* *
2278
+ * Licensed under the Apache License, Version 2.0 (the "License");
2279
+ * you may not use this file except in compliance with the License.
2280
+ * You may obtain a copy of the License at
2281
+ *
2282
+ * http://www.apache.org/licenses/LICENSE-2.0
2283
+ *
2284
+ * Unless required by applicable law or agreed to in writing, software
2285
+ * distributed under the License is distributed on an "AS IS" BASIS,
2286
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2287
+ * See the License for the specific language governing permissions and
2288
+ * limitations under the License.
2289
+ *
2290
+ * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
2291
+ * Copyright 2023 - Finnish Meteorological Institute (FMI)
2292
+ * */
2293
+ var DATE_FORMAT_YEAR = "yyyy-MM-dd'";
2294
+ var DATE_FORMAT_ISSUE_TIME = "ddHHmm'Z";
2295
+ var DATE_FORMAT_FULL = "yyyy-MM-dd'T'HH:mm:ss'";
2296
+
2277
2297
  var emptyBaseForecast = {
2278
2298
  wind: '',
2279
2299
  visibility: '',
@@ -2292,7 +2312,7 @@ var emptyBaseForecast = {
2292
2312
  var MIN_NUMBER_CHANGE_GROUP = 5;
2293
2313
  // formatters
2294
2314
  var formatIssueTime = function formatIssueTime(issueDate) {
2295
- return issueDate ? "".concat(moment(issueDate).utc().format('DDHHmm'), "Z") : 'Not issued';
2315
+ return issueDate ? dateUtils.dateToString(new Date(issueDate), DATE_FORMAT_ISSUE_TIME) : 'Not issued';
2296
2316
  };
2297
2317
  function formatFormValues(row) {
2298
2318
  return Object.keys(row).reduce(function (list, key) {
@@ -3182,7 +3202,8 @@ var TafModuleContext = /*#__PURE__*/React.createContext({
3182
3202
  registerValidateForm: null,
3183
3203
  tafAction: null,
3184
3204
  setTafAction: null,
3185
- onPreventCloseView: null
3205
+ onPreventCloseView: null,
3206
+ useFieldArrayMethods: {}
3186
3207
  });
3187
3208
  var useTafModuleContext = function useTafModuleContext() {
3188
3209
  return React.useContext(TafModuleContext);
@@ -3201,6 +3222,12 @@ var useTafModuleState = function useTafModuleState(_ref) {
3201
3222
  _React$useState4 = _slicedToArray(_React$useState3, 2),
3202
3223
  tafAction = _React$useState4[0],
3203
3224
  setTafAction = _React$useState4[1];
3225
+ var _useFormContext = useFormContext(),
3226
+ control = _useFormContext.control;
3227
+ var useFieldArrayMethods = useFieldArray({
3228
+ control: control,
3229
+ name: 'changeGroups'
3230
+ });
3204
3231
  var onRegisterValidateForm = function onRegisterValidateForm(promiseToRegister) {
3205
3232
  registerValidateForm(function () {
3206
3233
  return promiseToRegister;
@@ -3211,7 +3238,8 @@ var useTafModuleState = function useTafModuleState(_ref) {
3211
3238
  registerValidateForm: onRegisterValidateForm,
3212
3239
  tafAction: tafAction,
3213
3240
  setTafAction: setTafAction,
3214
- onPreventCloseView: onPreventCloseView
3241
+ onPreventCloseView: onPreventCloseView,
3242
+ useFieldArrayMethods: useFieldArrayMethods
3215
3243
  };
3216
3244
  };
3217
3245
  var TafModuleProvider = function TafModuleProvider(_ref2) {
@@ -4080,23 +4108,20 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
4080
4108
  _useTafModuleContext$ = _useTafModuleContext.setTafAction,
4081
4109
  setTafAction = _useTafModuleContext$ === void 0 ? function () {} : _useTafModuleContext$,
4082
4110
  _useTafModuleContext$2 = _useTafModuleContext.onPreventCloseView,
4083
- onPreventCloseView = _useTafModuleContext$2 === void 0 ? function () {} : _useTafModuleContext$2;
4111
+ onPreventCloseView = _useTafModuleContext$2 === void 0 ? function () {} : _useTafModuleContext$2,
4112
+ useFieldArrayMethods = _useTafModuleContext.useFieldArrayMethods;
4113
+ var fields = useFieldArrayMethods.fields,
4114
+ insert = useFieldArrayMethods.insert,
4115
+ remove = useFieldArrayMethods.remove,
4116
+ move = useFieldArrayMethods.move,
4117
+ replace = useFieldArrayMethods.replace;
4084
4118
  var _useFormContext = useFormContext(),
4085
- control = _useFormContext.control,
4086
4119
  handleSubmit = _useFormContext.handleSubmit,
4087
4120
  trigger = _useFormContext.trigger,
4088
4121
  formState = _useFormContext.formState,
4089
4122
  getValues = _useFormContext.getValues,
4090
4123
  setValue = _useFormContext.setValue,
4091
- resetField = _useFormContext.resetField;
4092
- var _useFieldArray = useFieldArray({
4093
- control: control,
4094
- name: 'changeGroups'
4095
- }),
4096
- fields = _useFieldArray.fields,
4097
- insert = _useFieldArray.insert,
4098
- remove = _useFieldArray.remove,
4099
- move = _useFieldArray.move;
4124
+ reset = _useFormContext.reset;
4100
4125
  var _useDragOrder = useDragOrder(trigger, move),
4101
4126
  onChangeOrder = _useDragOrder.onChangeOrder,
4102
4127
  onStartDrag = _useDragOrder.onStartDrag,
@@ -4127,17 +4152,10 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
4127
4152
  };
4128
4153
  var resetFormValues = function resetFormValues(formData) {
4129
4154
  var keepDirty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4130
- Object.keys(formData).forEach(function (key) {
4131
- if (!keepDirty || key === 'changeGroups') {
4132
- resetField(key, {
4133
- keepDirty: keepDirty,
4134
- defaultValue: formData[key]
4135
- });
4136
- }
4137
- setValue(key, formData[key], {
4138
- shouldDirty: keepDirty
4139
- });
4155
+ reset(formData, {
4156
+ keepDirty: keepDirty
4140
4157
  });
4158
+ replace(formData.changeGroups);
4141
4159
  };
4142
4160
  var resetFormState = function resetFormState(resetDisabled) {
4143
4161
  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
@@ -4976,7 +4994,10 @@ var TacContainer = function TacContainer(_ref) {
4976
4994
  var _useFormContext = useFormContext(),
4977
4995
  getValues = _useFormContext.getValues,
4978
4996
  trigger = _useFormContext.trigger,
4979
- setValue = _useFormContext.setValue;
4997
+ reset = _useFormContext.reset;
4998
+ var _useTafModuleContext = useTafModuleContext(),
4999
+ useFieldArrayMethods = _useTafModuleContext.useFieldArrayMethods;
5000
+ var replace = useFieldArrayMethods.replace;
4980
5001
  var showSnackbar = React__default.useCallback(function (message) {
4981
5002
  dispatch(snackbarActions.openSnackbar({
4982
5003
  message: message
@@ -4985,12 +5006,10 @@ var TacContainer = function TacContainer(_ref) {
4985
5006
  var handleExport = function handleExport() {
4986
5007
  var currentTaf = getValues();
4987
5008
  var newTaf = prepareTafExportValues(taf, currentTaf);
4988
- setValue('baseForecast', newTaf.baseForecast, {
4989
- shouldDirty: true
4990
- });
4991
- setValue('changeGroups', newTaf.changeGroups, {
4992
- shouldDirty: true
5009
+ reset(newTaf, {
5010
+ keepDirty: true
4993
5011
  });
5012
+ replace(newTaf.changeGroups);
4994
5013
  setTimeout(function () {
4995
5014
  trigger(); // trigger all fields validation
4996
5015
  }, 0);
@@ -6095,7 +6114,7 @@ var TafLayout = function TafLayout(_ref2) {
6095
6114
  var TafWrapper = function TafWrapper(_a) {
6096
6115
  var children = _a.children,
6097
6116
  props = __rest(_a, ["children"]);
6098
- return /*#__PURE__*/React.createElement(TafModuleProvider, Object.assign({}, props), /*#__PURE__*/React.createElement(ReactHookFormProvider, {
6117
+ return /*#__PURE__*/React.createElement(ReactHookFormProvider, {
6099
6118
  options: {
6100
6119
  mode: 'onTouched',
6101
6120
  reValidateMode: 'onChange',
@@ -6105,7 +6124,7 @@ var TafWrapper = function TafWrapper(_a) {
6105
6124
  changeGroups: [emptyChangegroup, emptyChangegroup, emptyChangegroup, emptyChangegroup, emptyChangegroup]
6106
6125
  }
6107
6126
  }
6108
- }, children));
6127
+ }, /*#__PURE__*/React.createElement(TafModuleProvider, Object.assign({}, props), children));
6109
6128
  };
6110
6129
 
6111
6130
  var getCurrentDate = function getCurrentDate() {
@@ -6269,32 +6288,45 @@ var createApi$1 = function createApi(props) {
6269
6288
 
6270
6289
  // Used to mimic an authenticated user
6271
6290
  var MOCK_USERNAME = 'user.name';
6272
- var currentDate = moment.utc().format('YYYY-MM-DD');
6273
- var tomorrowDate = moment.utc().add(1, 'day').format('YYYY-MM-DD');
6291
+ var currentDate = dateUtils.dateToString(dateUtils.utc(), DATE_FORMAT_YEAR);
6292
+ var tomorrowDate = dateUtils.dateToString(dateUtils.add(dateUtils.utc(), {
6293
+ days: 1
6294
+ }), DATE_FORMAT_YEAR);
6274
6295
  var airportPeriod = 6;
6275
6296
  var airportValidity = 40;
6276
6297
  var validDateRange = function validDateRange(refHour, period) {
6277
- var startHour = period * Math.floor(parseInt(refHour.format('HH'), 10) / period) % 24;
6278
- var start = refHour.set({
6279
- hour: startHour,
6280
- minute: 0,
6281
- second: 0
6298
+ var hours = dateUtils.dateToString(refHour, 'HH');
6299
+ var startHour = period * Math.floor(parseInt(hours, 10) / period) % 24;
6300
+ var start = dateUtils.set(refHour, {
6301
+ hours: startHour,
6302
+ minutes: 0,
6303
+ seconds: 0
6304
+ });
6305
+ var end = dateUtils.add(start, {
6306
+ hours: airportValidity
6282
6307
  });
6283
- var end = start.clone().add(airportValidity, 'hours');
6284
- return [start.format('YYYY-MM-DDTHH:mm:ss'), end.format('YYYY-MM-DDTHH:mm:ss')];
6308
+ return [dateUtils.dateToString(start, DATE_FORMAT_FULL, false), dateUtils.dateToString(end, DATE_FORMAT_FULL, false)];
6285
6309
  };
6286
6310
  var dateAdd = function dateAdd(refDateAsString, hours) {
6287
- return moment.utc(refDateAsString).add(hours, 'hours').format('YYYY-MM-DDTHH:mm:ss');
6311
+ var newDate = dateUtils.add(dateUtils.utc(refDateAsString), {
6312
+ hours: hours
6313
+ });
6314
+ var formattedDate = dateUtils.dateToString(newDate, DATE_FORMAT_FULL);
6315
+ return formattedDate;
6288
6316
  };
6289
- var _validDateRange = validDateRange(moment.utc(), airportPeriod),
6317
+ var _validDateRange = validDateRange(dateUtils.utc(), airportPeriod),
6290
6318
  _validDateRange2 = _slicedToArray(_validDateRange, 2),
6291
6319
  currentValidDateStart = _validDateRange2[0],
6292
6320
  currentValidDateEnd = _validDateRange2[1];
6293
- var _validDateRange3 = validDateRange(moment.utc().add(6, 'hours'), airportPeriod),
6321
+ var _validDateRange3 = validDateRange(dateUtils.add(dateUtils.utc(), {
6322
+ hours: 6
6323
+ }), airportPeriod),
6294
6324
  _validDateRange4 = _slicedToArray(_validDateRange3, 2),
6295
6325
  upcomingValidDateStart = _validDateRange4[0],
6296
6326
  upcomingValidDateEnd = _validDateRange4[1];
6297
- var _validDateRange5 = validDateRange(moment.utc().add(-6, 'hours'), airportPeriod),
6327
+ var _validDateRange5 = validDateRange(dateUtils.sub(dateUtils.utc(), {
6328
+ hours: 6
6329
+ }), airportPeriod),
6298
6330
  _validDateRange6 = _slicedToArray(_validDateRange5, 2),
6299
6331
  expiredValidDateStart = _validDateRange6[0],
6300
6332
  expiredValidDateEnd = _validDateRange6[1];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/taf",
3
- "version": "9.3.1",
3
+ "version": "9.4.0",
4
4
  "description": "GeoWeb TAF library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { FieldValues, UseFieldArrayReturn } from 'react-hook-form';
2
3
  import { BaseTaf, TafActions } from '../../types';
3
4
  type ValidateFormPromise = () => Promise<void | BaseTaf>;
4
5
  interface TafModuleMethods {
@@ -10,6 +11,7 @@ interface TafModuleContextState {
10
11
  tafAction: TafActions;
11
12
  setTafAction: (action: TafActions) => void;
12
13
  onPreventCloseView: (shouldPreventClose: boolean) => void;
14
+ useFieldArrayMethods: UseFieldArrayReturn<FieldValues, string>;
13
15
  }
14
16
  declare const TafModuleContext: React.Context<TafModuleContextState>;
15
17
  export declare const useTafModuleContext: () => Partial<TafModuleContextState>;
@@ -0,0 +1,3 @@
1
+ export declare const DATE_FORMAT_YEAR = "yyyy-MM-dd'";
2
+ export declare const DATE_FORMAT_ISSUE_TIME = "ddHHmm'Z";
3
+ export declare const DATE_FORMAT_FULL = "yyyy-MM-dd'T'HH:mm:ss'";
@@ -1,6 +1,5 @@
1
1
  import { TafFromBackend } from '../../types';
2
2
  export declare const MOCK_USERNAME = "user.name";
3
- export declare const dateFormatUTC = "YYYY-MM-DDTHH:mmZ";
4
3
  export declare const fakeTafList: TafFromBackend[];
5
4
  export declare const fakeNewTaf: TafFromBackend;
6
5
  export declare const fakeNewFixedTaf: TafFromBackend;