@opengeoweb/taf 4.6.0 → 4.7.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 +104 -198
- package/index.umd.js +127 -198
- package/lib/components/TafForm/TafFormRow/types.d.ts +1 -0
- package/lib/components/TafForm/TafFormRow/validations/validField.d.ts +2 -2
- package/lib/components/TafForm/utils.d.ts +11 -10
- package/lib/components/TafLayout/LocationTabs/LocationTabs.d.ts +1 -1
- package/lib/components/TafLayout/TopTabs/TopTabs.d.ts +1 -1
- package/lib/components/TafModule/TafModuleProvider.d.ts +3 -8
- package/lib/types.d.ts +1 -2
- package/package.json +13 -12
package/index.esm.js
CHANGED
|
@@ -5,12 +5,12 @@ import { useFormContext, Controller, useFieldArray } 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
|
-
import { isEqual } from 'lodash';
|
|
9
8
|
import { useAuthenticationContext } from '@opengeoweb/authentication';
|
|
10
9
|
import { getDeepProperty, ReactHookFormHiddenInput, ReactHookFormProvider } from '@opengeoweb/form-fields';
|
|
11
|
-
import { useIsMounted, ToggleMenu,
|
|
10
|
+
import { HIDDEN_INPUT_HELPER_IS_DRAFT, useIsMounted, ToggleMenu, CustomTooltip, ToolContainerDraggable, Avatar, getInitials, useConfirmationDialog, useDraftFormHelpers, usePreventBrowserClose, ToolButton, ToolHeader, AlertBanner, getErrorMessage as getErrorMessage$1, getWarningMessage, ConfirmationServiceProvider, usePoller, ErrorBoundary } from '@opengeoweb/shared';
|
|
12
11
|
import { snackbarActions } from '@opengeoweb/core';
|
|
13
12
|
import moment from 'moment';
|
|
13
|
+
import { isEqual } from 'lodash';
|
|
14
14
|
import { Add, Delete, Close, DragHandle as DragHandle$1, ThumbsUp, Clock, Cancel, Edit, Success, Export, ListItem, Cached } from '@opengeoweb/theme';
|
|
15
15
|
import ReactDOM from 'react-dom';
|
|
16
16
|
import { useApiContext, createApiInstance, createFakeApiInstance, ApiProvider } from '@opengeoweb/api';
|
|
@@ -241,7 +241,7 @@ var invalidValidityMinutesMessage = 'Invalid validity period, specified minutes
|
|
|
241
241
|
var invalidValidityStartTimeMessage = 'Invalid validity start time, change group validity must lie within the TAF validity period';
|
|
242
242
|
var invalidValidityPeriodMessage = 'Invalid validity period, validity end time has to be after validity start time';
|
|
243
243
|
var invalidValidityEndTimeMessage = 'Invalid validity end time, change group validity must lie within the TAF validity period';
|
|
244
|
-
var invalidChangeValidInterFieldMessage = 'Invalid validity period, expected DDHH/DDHH for BECMG and TEMPO or DDHHmm for FM';
|
|
244
|
+
var invalidChangeValidInterFieldMessage = 'Invalid validity period, expected DDHH/DDHH for PROB, BECMG and TEMPO or DDHHmm for FM';
|
|
245
245
|
var invalidBECMGDurationValidInterFieldMessage = 'Invalid validity period, for BECMG only validity periods with a duration of 1, 2, 3 or 4 hours are allowed';
|
|
246
246
|
var invalidChangeGroupOverlapsWithFM = 'The valid time of a change group cannot overlap with the valid time of a following FM group. This change group should end before or at the hour of the start of the FM group'; // Validations
|
|
247
247
|
// Ensure all individual sections are correct (DD HH mm etc)
|
|
@@ -327,16 +327,29 @@ var validateValidField = function validateValidField(value, tafStart, tafEnd) {
|
|
|
327
327
|
|
|
328
328
|
return true;
|
|
329
329
|
};
|
|
330
|
-
var validateValidChangeGroupInterField = function validateValidChangeGroupInterField(value, valueChange, tafStart, tafEnd) {
|
|
330
|
+
var validateValidChangeGroupInterField = function validateValidChangeGroupInterField(value, valueChange, valueProb, tafStart, tafEnd) {
|
|
331
331
|
var trimmedValue = value.trim();
|
|
332
332
|
var trimmedValueChange = valueChange.trim();
|
|
333
|
+
var trimmedValueProb = valueProb.trim();
|
|
333
334
|
|
|
334
335
|
if (!trimmedValue.length) {
|
|
335
336
|
return true;
|
|
336
|
-
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (!trimmedValueChange.length && !trimmedValueProb.length) {
|
|
340
|
+
return true;
|
|
341
|
+
}
|
|
337
342
|
|
|
343
|
+
if (!trimmedValueChange.length && trimmedValueProb.length) {
|
|
344
|
+
if ( // Ensure format for probability without change is correct DDHH/DDHH
|
|
345
|
+
trimmedValue.length < 9) {
|
|
346
|
+
return invalidChangeValidInterFieldMessage;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
338
349
|
|
|
339
|
-
if (
|
|
350
|
+
if ( // Ensure format for FM changegroups is correct DDHHmm
|
|
351
|
+
trimmedValue.length > 6 && trimmedValueChange === 'FM' || // Ensure format for BECMG and TEMPO changegroups is correct DDHH/DDHH
|
|
352
|
+
trimmedValue.length < 9 && trimmedValueChange !== 'FM') {
|
|
340
353
|
return invalidChangeValidInterFieldMessage;
|
|
341
354
|
} // Ensure BECMG changegroup has duration of 1,2,3,4 hours
|
|
342
355
|
|
|
@@ -2357,7 +2370,7 @@ var useTACGenerator = function useTACGenerator(taf, requestTAC) {
|
|
|
2357
2370
|
}, []);
|
|
2358
2371
|
return [TAC, retrieveTAC, onSetTac];
|
|
2359
2372
|
};
|
|
2360
|
-
var useDragOrder = function useDragOrder(trigger, move
|
|
2373
|
+
var useDragOrder = function useDragOrder(trigger, move) {
|
|
2361
2374
|
var _React$useState3 = React__default.useState(null),
|
|
2362
2375
|
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
2363
2376
|
activeDraggingIndex = _React$useState4[0],
|
|
@@ -2392,18 +2405,7 @@ var useDragOrder = function useDragOrder(trigger, move, onFormBlur) {
|
|
|
2392
2405
|
// trigger validation of all fields
|
|
2393
2406
|
trigger();
|
|
2394
2407
|
}
|
|
2395
|
-
}, [lastDragOrder, trigger]);
|
|
2396
|
-
|
|
2397
|
-
React__default.useEffect(function () {
|
|
2398
|
-
var _lastDragOrder2 = _slicedToArray(lastDragOrder, 2),
|
|
2399
|
-
oldIndex = _lastDragOrder2[0],
|
|
2400
|
-
newIndex = _lastDragOrder2[1];
|
|
2401
|
-
|
|
2402
|
-
if (oldIndex !== null && newIndex !== null) {
|
|
2403
|
-
onFormBlur();
|
|
2404
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2405
|
-
|
|
2406
|
-
}, [lastDragOrder]);
|
|
2408
|
+
}, [lastDragOrder, trigger]);
|
|
2407
2409
|
return {
|
|
2408
2410
|
onChangeOrder: onChangeOrder,
|
|
2409
2411
|
activeDraggingIndex: activeDraggingIndex,
|
|
@@ -2472,18 +2474,18 @@ var emptyChangegroup = {
|
|
|
2472
2474
|
wind: '',
|
|
2473
2475
|
visibility: '',
|
|
2474
2476
|
weather: {
|
|
2475
|
-
weather1:
|
|
2476
|
-
weather2:
|
|
2477
|
-
weather3:
|
|
2477
|
+
weather1: '',
|
|
2478
|
+
weather2: '',
|
|
2479
|
+
weather3: ''
|
|
2478
2480
|
},
|
|
2479
2481
|
cloud: {
|
|
2480
|
-
cloud1:
|
|
2481
|
-
cloud2:
|
|
2482
|
-
cloud3:
|
|
2483
|
-
cloud4:
|
|
2482
|
+
cloud1: '',
|
|
2483
|
+
cloud2: '',
|
|
2484
|
+
cloud3: '',
|
|
2485
|
+
cloud4: ''
|
|
2484
2486
|
},
|
|
2485
|
-
change:
|
|
2486
|
-
probability:
|
|
2487
|
+
change: '',
|
|
2488
|
+
probability: ''
|
|
2487
2489
|
};
|
|
2488
2490
|
var getTafStatusLabel = function getTafStatusLabel(status) {
|
|
2489
2491
|
switch (status) {
|
|
@@ -2539,24 +2541,35 @@ var getAmendedCorrectedTafTimes = function getAmendedCorrectedTafTimes(taf, tafA
|
|
|
2539
2541
|
previousValidDateEnd: previousValidDateEnd
|
|
2540
2542
|
});
|
|
2541
2543
|
};
|
|
2544
|
+
var createChangeGroup = function createChangeGroup(changeGroup) {
|
|
2545
|
+
return Object.assign(Object.assign(Object.assign({}, emptyChangegroup), changeGroup), {
|
|
2546
|
+
weather: Object.assign(Object.assign({}, emptyChangegroup.weather), changeGroup.weather),
|
|
2547
|
+
cloud: Object.assign(Object.assign({}, emptyChangegroup.cloud), changeGroup.cloud)
|
|
2548
|
+
});
|
|
2549
|
+
};
|
|
2542
2550
|
var prepareTafValues = function prepareTafValues(_taf, tafAction) {
|
|
2543
2551
|
var addEmptyChangeGroup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
2544
|
-
|
|
2552
|
+
|
|
2553
|
+
var _a; // If action is AMEND/CORRECT/DRAFT_AMEND/DRAFT_CORRECTION - add previous valid start and end
|
|
2545
2554
|
// If action is AMEND/DRAFT_AMEND - update validity start time to current time
|
|
2555
|
+
|
|
2556
|
+
|
|
2546
2557
|
var taf = tafAction === 'AMEND' || tafAction === 'DRAFT_AMEND' || tafAction === 'CORRECT' || tafAction === 'DRAFT_CORRECT' ? getAmendedCorrectedTafTimes(_taf, tafAction) : _taf;
|
|
2547
2558
|
var formattedBaseForecast = formatFormValues(taf.baseForecast);
|
|
2548
2559
|
var baseForecast = Object.assign(Object.assign(Object.assign({}, emptyBaseForecast), formattedBaseForecast), {
|
|
2549
2560
|
weather: Object.assign(Object.assign({}, emptyBaseForecast.weather), formattedBaseForecast.weather),
|
|
2550
2561
|
cloud: Object.assign(Object.assign({}, emptyBaseForecast.cloud), formattedBaseForecast.cloud)
|
|
2551
2562
|
});
|
|
2552
|
-
|
|
2563
|
+
var formattedChangeGroups = ((_a = taf.changeGroups) === null || _a === void 0 ? void 0 : _a.map(formatFormValues)) || [];
|
|
2564
|
+
var changeGroups = formattedChangeGroups.map(createChangeGroup);
|
|
2565
|
+
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, taf), {
|
|
2553
2566
|
messageType: getMessageType(taf, tafAction),
|
|
2554
2567
|
baseForecast: baseForecast
|
|
2555
|
-
}),
|
|
2556
|
-
changeGroups:
|
|
2568
|
+
}), changeGroups.length && {
|
|
2569
|
+
changeGroups: changeGroups
|
|
2557
2570
|
}), addEmptyChangeGroup && {
|
|
2558
2571
|
changeGroups: [emptyChangegroup]
|
|
2559
|
-
});
|
|
2572
|
+
}), _defineProperty({}, HIDDEN_INPUT_HELPER_IS_DRAFT, true));
|
|
2560
2573
|
};
|
|
2561
2574
|
var getIsFormDefaultDisabled = function getIsFormDefaultDisabled(status) {
|
|
2562
2575
|
return !(status === 'NEW' || status === 'DRAFT' || status === 'DRAFT_AMENDED' || status === 'DRAFT_CORRECTED');
|
|
@@ -2906,7 +2919,8 @@ var getRequiredCrossFields = function getRequiredCrossFields(fieldNames) {
|
|
|
2906
2919
|
};
|
|
2907
2920
|
|
|
2908
2921
|
var TafFormRow = /*#__PURE__*/React__default.forwardRef(function (_a, ref) {
|
|
2909
|
-
var
|
|
2922
|
+
var isNotRequiredForAction = _a.isNotRequiredForAction,
|
|
2923
|
+
_a$isChangeGroup = _a.isChangeGroup,
|
|
2910
2924
|
isChangeGroup = _a$isChangeGroup === void 0 ? false : _a$isChangeGroup,
|
|
2911
2925
|
_a$disabled = _a.disabled,
|
|
2912
2926
|
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
|
@@ -2920,17 +2934,14 @@ var TafFormRow = /*#__PURE__*/React__default.forwardRef(function (_a, ref) {
|
|
|
2920
2934
|
onAddChangeGroupBelow = _a.onAddChangeGroupBelow,
|
|
2921
2935
|
onAddChangeGroupAbove = _a.onAddChangeGroupAbove,
|
|
2922
2936
|
onClearRow = _a.onClearRow,
|
|
2923
|
-
props = __rest(_a, ["isChangeGroup", "disabled", "index", "onRemoveChangeGroup", "field", "dragHandle", "onAddChangeGroupBelow", "onAddChangeGroupAbove", "onClearRow"]);
|
|
2937
|
+
props = __rest(_a, ["isNotRequiredForAction", "isChangeGroup", "disabled", "index", "onRemoveChangeGroup", "field", "dragHandle", "onAddChangeGroupBelow", "onAddChangeGroupAbove", "onClearRow"]);
|
|
2924
2938
|
|
|
2925
2939
|
var namePrefix = !isChangeGroup ? 'baseForecast' : "changeGroups[".concat(index, "]");
|
|
2926
2940
|
var fieldNames = getFieldNames(isChangeGroup, index);
|
|
2927
2941
|
|
|
2928
2942
|
var _useFormContext = useFormContext(),
|
|
2929
2943
|
getValues = _useFormContext.getValues,
|
|
2930
|
-
trigger = _useFormContext.trigger;
|
|
2931
|
-
|
|
2932
|
-
var _useDraftFormHelpers = useDraftFormHelpers(true),
|
|
2933
|
-
isNotRequiredForAction = _useDraftFormHelpers.isRequired; // cross-field required validation
|
|
2944
|
+
trigger = _useFormContext.trigger; // cross-field required validation
|
|
2934
2945
|
|
|
2935
2946
|
|
|
2936
2947
|
var _getRequiredCrossFiel = getRequiredCrossFields(fieldNames),
|
|
@@ -3155,7 +3166,7 @@ var TafFormRow = /*#__PURE__*/React__default.forwardRef(function (_a, ref) {
|
|
|
3155
3166
|
return isChangeGroup ? validateValidField(value, getValues('validDateStart'), getValues('validDateEnd')) : true;
|
|
3156
3167
|
},
|
|
3157
3168
|
validateValidChangeGroupInterField: function validateValidChangeGroupInterField$1(value) {
|
|
3158
|
-
return isChangeGroup ? validateValidChangeGroupInterField(value, getValues(fieldNames.change), getValues('validDateStart'), getValues('validDateEnd')) : true;
|
|
3169
|
+
return isChangeGroup ? validateValidChangeGroupInterField(value, getValues(fieldNames.change), getValues(fieldNames.probability), getValues('validDateStart'), getValues('validDateEnd')) : true;
|
|
3159
3170
|
},
|
|
3160
3171
|
validatePreviousRow: validatePreviousRow,
|
|
3161
3172
|
validateNextRows: validateNextRows
|
|
@@ -3819,8 +3830,7 @@ var TafModuleContext = /*#__PURE__*/React.createContext({
|
|
|
3819
3830
|
registerValidateForm: null,
|
|
3820
3831
|
tafAction: null,
|
|
3821
3832
|
setTafAction: null,
|
|
3822
|
-
|
|
3823
|
-
setIsFormDirty: null
|
|
3833
|
+
onPreventCloseView: null
|
|
3824
3834
|
});
|
|
3825
3835
|
var useTafModuleContext = function useTafModuleContext() {
|
|
3826
3836
|
return React.useContext(TafModuleContext);
|
|
@@ -3828,9 +3838,6 @@ var useTafModuleContext = function useTafModuleContext() {
|
|
|
3828
3838
|
var useTafModuleState = function useTafModuleState(_ref) {
|
|
3829
3839
|
var onPreventCloseView = _ref.onPreventCloseView;
|
|
3830
3840
|
|
|
3831
|
-
var _useApiContext = useApiContext(),
|
|
3832
|
-
api = _useApiContext.api;
|
|
3833
|
-
|
|
3834
3841
|
var _React$useState = React.useState(function () {
|
|
3835
3842
|
return new Promise(function () {
|
|
3836
3843
|
return true;
|
|
@@ -3845,40 +3852,18 @@ var useTafModuleState = function useTafModuleState(_ref) {
|
|
|
3845
3852
|
tafAction = _React$useState4[0],
|
|
3846
3853
|
setTafAction = _React$useState4[1];
|
|
3847
3854
|
|
|
3848
|
-
var _React$useState5 = React.useState(false),
|
|
3849
|
-
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
3850
|
-
isFormDirty = _React$useState6[0],
|
|
3851
|
-
setIsFormDirty = _React$useState6[1];
|
|
3852
|
-
|
|
3853
|
-
var _useTACGenerator = useTACGenerator(undefined, api.getTAC),
|
|
3854
|
-
_useTACGenerator2 = _slicedToArray(_useTACGenerator, 3),
|
|
3855
|
-
TAC = _useTACGenerator2[0],
|
|
3856
|
-
updateTAC = _useTACGenerator2[1],
|
|
3857
|
-
setTAC = _useTACGenerator2[2];
|
|
3858
|
-
|
|
3859
3855
|
var onRegisterValidateForm = function onRegisterValidateForm(promiseToRegister) {
|
|
3860
3856
|
registerValidateForm(function () {
|
|
3861
3857
|
return promiseToRegister;
|
|
3862
3858
|
});
|
|
3863
3859
|
};
|
|
3864
3860
|
|
|
3865
|
-
var onChangeFormDirty = function onChangeFormDirty(isDirty) {
|
|
3866
|
-
if (isDirty !== isFormDirty) {
|
|
3867
|
-
setIsFormDirty(isDirty);
|
|
3868
|
-
onPreventCloseView(isDirty);
|
|
3869
|
-
}
|
|
3870
|
-
};
|
|
3871
|
-
|
|
3872
3861
|
return {
|
|
3873
3862
|
onValidateForm: onValidateForm,
|
|
3874
3863
|
registerValidateForm: onRegisterValidateForm,
|
|
3875
3864
|
tafAction: tafAction,
|
|
3876
3865
|
setTafAction: setTafAction,
|
|
3877
|
-
|
|
3878
|
-
updateTAC: updateTAC,
|
|
3879
|
-
setTAC: setTAC,
|
|
3880
|
-
isFormDirty: isFormDirty,
|
|
3881
|
-
setIsFormDirty: onChangeFormDirty
|
|
3866
|
+
onPreventCloseView: onPreventCloseView
|
|
3882
3867
|
};
|
|
3883
3868
|
};
|
|
3884
3869
|
var TafModuleProvider = function TafModuleProvider(_ref2) {
|
|
@@ -3984,21 +3969,15 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
3984
3969
|
var isDefaultDisabled = getIsFormDefaultDisabled(originalTaf.status);
|
|
3985
3970
|
var confirmDialog = useConfirmationDialog();
|
|
3986
3971
|
|
|
3987
|
-
var _useDraftFormHelpers = useDraftFormHelpers(
|
|
3972
|
+
var _useDraftFormHelpers = useDraftFormHelpers(),
|
|
3988
3973
|
toggleIsDraft = _useDraftFormHelpers.toggleIsDraft,
|
|
3989
|
-
|
|
3974
|
+
isNotRequiredForAction = _useDraftFormHelpers.isRequired;
|
|
3990
3975
|
|
|
3991
3976
|
var _useTafModuleContext = useTafModuleContext(),
|
|
3992
3977
|
registerValidateForm = _useTafModuleContext.registerValidateForm,
|
|
3993
3978
|
tafAction = _useTafModuleContext.tafAction,
|
|
3994
|
-
setIsFormDirty = _useTafModuleContext.setIsFormDirty,
|
|
3995
3979
|
setTafAction = _useTafModuleContext.setTafAction,
|
|
3996
|
-
|
|
3997
|
-
updateTAC = _useTafModuleContext.updateTAC,
|
|
3998
|
-
setTAC = _useTafModuleContext.setTAC;
|
|
3999
|
-
|
|
4000
|
-
var _useIsMounted = useIsMounted(),
|
|
4001
|
-
isMounted = _useIsMounted.isMounted;
|
|
3980
|
+
onPreventCloseView = _useTafModuleContext.onPreventCloseView;
|
|
4002
3981
|
|
|
4003
3982
|
var _useFormContext = useFormContext(),
|
|
4004
3983
|
control = _useFormContext.control,
|
|
@@ -4011,48 +3990,12 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4011
3990
|
|
|
4012
3991
|
var isFormDirty = formState.isDirty,
|
|
4013
3992
|
errors = formState.errors;
|
|
4014
|
-
usePreventBrowserClose(isFormDirty && !isDisabled);
|
|
4015
|
-
var hiddenInputFields = ['baseTime', 'issueDate', 'uuid', 'validDateStart', 'validDateEnd', 'status', 'previousId', 'previousValidDateStart', 'previousValidDateEnd'];
|
|
4016
|
-
|
|
4017
|
-
var _React$useState = React__default.useState(getValues()),
|
|
4018
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
4019
|
-
delayedFormValues = _React$useState2[0],
|
|
4020
|
-
setDelayedFormValues = _React$useState2[1];
|
|
3993
|
+
usePreventBrowserClose(isFormDirty && !isDisabled); // Needed to be able to show a confirmation dialog on closing parent view
|
|
4021
3994
|
|
|
4022
|
-
var hasErrors = Object.keys(errors).length;
|
|
4023
|
-
|
|
4024
|
-
var onFormBlur = function onFormBlur() {
|
|
4025
|
-
if (!isEqual(getValues(), delayedFormValues)) {
|
|
4026
|
-
setDelayedFormValues(getValues());
|
|
4027
|
-
}
|
|
4028
|
-
};
|
|
4029
|
-
|
|
4030
|
-
var resetTAC = function resetTAC() {
|
|
4031
|
-
if (originalTaf.status !== 'NEW') {
|
|
4032
|
-
updateTAC(originalTaf);
|
|
4033
|
-
} else {
|
|
4034
|
-
setTAC(TAC_NOT_AVAILABLE);
|
|
4035
|
-
}
|
|
4036
|
-
};
|
|
4037
|
-
|
|
4038
|
-
React__default.useEffect(function () {
|
|
4039
|
-
if (isMounted.current && isFormDirty) {
|
|
4040
|
-
var newTAC = hasErrors ? null : convertTafValuesToObject(delayedFormValues);
|
|
4041
|
-
updateTAC(newTAC);
|
|
4042
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4043
|
-
|
|
4044
|
-
}, [delayedFormValues]);
|
|
4045
3995
|
React__default.useEffect(function () {
|
|
4046
|
-
//
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4050
|
-
|
|
4051
|
-
}, [hasErrors]); // Needed to be able to show a confirmation dialog on switching tabs when form is edited and not saved
|
|
4052
|
-
|
|
4053
|
-
React__default.useEffect(function () {
|
|
4054
|
-
setIsFormDirty(isFormDirty);
|
|
4055
|
-
}, [isFormDirty, setIsFormDirty]);
|
|
3996
|
+
onPreventCloseView(isFormDirty); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3997
|
+
}, [isFormDirty]);
|
|
3998
|
+
var hiddenInputFields = ['baseTime', 'issueDate', 'uuid', 'validDateStart', 'validDateEnd', 'status', 'previousId', 'previousValidDateStart', 'previousValidDateEnd', HIDDEN_INPUT_HELPER_IS_DRAFT];
|
|
4056
3999
|
|
|
4057
4000
|
var onSubmit = function onSubmit(data) {
|
|
4058
4001
|
// eslint-disable-next-line no-console
|
|
@@ -4069,18 +4012,17 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4069
4012
|
});
|
|
4070
4013
|
};
|
|
4071
4014
|
|
|
4072
|
-
var resetFormValues = function resetFormValues() {
|
|
4073
|
-
|
|
4074
|
-
var shouldAddEmptyChangGroup = arguments.length > 1 ? arguments[1] : undefined;
|
|
4075
|
-
var newTaf = prepareTafValues(originalTaf, action, shouldAddEmptyChangGroup);
|
|
4076
|
-
reset(newTaf);
|
|
4015
|
+
var resetFormValues = function resetFormValues(formData) {
|
|
4016
|
+
return reset(formData);
|
|
4077
4017
|
};
|
|
4078
4018
|
|
|
4079
|
-
var
|
|
4019
|
+
var resetFormState = function resetFormState() {
|
|
4080
4020
|
var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
|
|
4081
4021
|
var resetDisabled = arguments.length > 1 ? arguments[1] : undefined;
|
|
4082
|
-
var
|
|
4083
|
-
|
|
4022
|
+
var tafToReset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : originalTaf;
|
|
4023
|
+
var shouldAddEmptyChangGroup = !(tafToReset && tafToReset.changeGroups) && !resetDisabled;
|
|
4024
|
+
var newTaf = prepareTafValues(tafToReset, action, shouldAddEmptyChangGroup);
|
|
4025
|
+
resetFormValues(newTaf);
|
|
4084
4026
|
setIsDisabled(resetDisabled);
|
|
4085
4027
|
setTafAction(action);
|
|
4086
4028
|
};
|
|
@@ -4188,8 +4130,7 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4188
4130
|
didSucceed = _context2.sent;
|
|
4189
4131
|
|
|
4190
4132
|
if (didSucceed) {
|
|
4191
|
-
|
|
4192
|
-
resetTAC();
|
|
4133
|
+
resetFormState(undefined, isDefaultDisabled);
|
|
4193
4134
|
}
|
|
4194
4135
|
|
|
4195
4136
|
case 4:
|
|
@@ -4213,18 +4154,17 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4213
4154
|
toggleIsDraft(true);
|
|
4214
4155
|
handleSubmit(function (data) {
|
|
4215
4156
|
onFormAction(action, convertTafValuesToObject(data));
|
|
4216
|
-
|
|
4157
|
+
resetFormValues(getValues());
|
|
4217
4158
|
})();
|
|
4218
4159
|
break;
|
|
4219
4160
|
|
|
4220
4161
|
case 'DISCARD':
|
|
4221
4162
|
if (isFormDirty) {
|
|
4222
4163
|
showConfirmDialog(action).then(function () {
|
|
4223
|
-
|
|
4224
|
-
resetTAC();
|
|
4164
|
+
resetFormState(undefined, isDefaultDisabled);
|
|
4225
4165
|
});
|
|
4226
4166
|
} else {
|
|
4227
|
-
|
|
4167
|
+
resetFormState(undefined, isDefaultDisabled);
|
|
4228
4168
|
}
|
|
4229
4169
|
|
|
4230
4170
|
break;
|
|
@@ -4251,9 +4191,7 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4251
4191
|
didSucceed = _context3.sent;
|
|
4252
4192
|
|
|
4253
4193
|
if (didSucceed) {
|
|
4254
|
-
|
|
4255
|
-
reset(prepareTafValues(convertTafValuesToObject(data), action, false));
|
|
4256
|
-
setTafAction(null);
|
|
4194
|
+
resetFormState(null, true, convertTafValuesToObject(data));
|
|
4257
4195
|
}
|
|
4258
4196
|
|
|
4259
4197
|
case 6:
|
|
@@ -4295,7 +4233,7 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4295
4233
|
break;
|
|
4296
4234
|
|
|
4297
4235
|
default:
|
|
4298
|
-
|
|
4236
|
+
resetFormState(action, false);
|
|
4299
4237
|
break;
|
|
4300
4238
|
}
|
|
4301
4239
|
};
|
|
@@ -4309,7 +4247,7 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4309
4247
|
remove = _useFieldArray.remove,
|
|
4310
4248
|
move = _useFieldArray.move;
|
|
4311
4249
|
|
|
4312
|
-
var _useDragOrder = useDragOrder(trigger, move
|
|
4250
|
+
var _useDragOrder = useDragOrder(trigger, move),
|
|
4313
4251
|
onChangeOrder = _useDragOrder.onChangeOrder,
|
|
4314
4252
|
onStartDrag = _useDragOrder.onStartDrag,
|
|
4315
4253
|
activeDraggingIndex = _useDragOrder.activeDraggingIndex;
|
|
@@ -4322,8 +4260,6 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4322
4260
|
}).then(function () {
|
|
4323
4261
|
remove(index);
|
|
4324
4262
|
trigger(); // trigger all fields validation
|
|
4325
|
-
|
|
4326
|
-
onFormBlur();
|
|
4327
4263
|
});
|
|
4328
4264
|
}; // TODO: https://gitlab.com/opengeoweb/opengeoweb/-/issues/726 insert (react-hook-form) does not work well with focus (only last row will get focus), so added this dirty solution. This can be fixed in a better way in react-hook-form v7
|
|
4329
4265
|
|
|
@@ -4381,16 +4317,13 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4381
4317
|
});
|
|
4382
4318
|
};
|
|
4383
4319
|
|
|
4384
|
-
var _React$
|
|
4385
|
-
_React$
|
|
4386
|
-
shouldValidate = _React$
|
|
4387
|
-
setShouldValidate = _React$
|
|
4320
|
+
var _React$useState = React__default.useState(false),
|
|
4321
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
4322
|
+
shouldValidate = _React$useState2[0],
|
|
4323
|
+
setShouldValidate = _React$useState2[1];
|
|
4388
4324
|
|
|
4389
4325
|
React__default.useEffect(function () {
|
|
4390
|
-
setIsDisabled(!isEditor || isDefaultDisabled);
|
|
4391
|
-
var defaultValues = prepareTafValues(originalTaf, undefined, !isDefaultDisabled && !originalTaf.changeGroups); // set initial form values
|
|
4392
|
-
|
|
4393
|
-
reset(defaultValues); // set validate flag to validate after the values have been set
|
|
4326
|
+
setIsDisabled(!isEditor || isDefaultDisabled); // set validate flag to validate after the values have been set
|
|
4394
4327
|
|
|
4395
4328
|
setShouldValidate(true); // register validate method to use in parent components
|
|
4396
4329
|
|
|
@@ -4412,17 +4345,14 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4412
4345
|
registerValidateForm(onValidateFormPromise); // set default taf action
|
|
4413
4346
|
|
|
4414
4347
|
setTafAction(fromStatusToAction(originalTaf.status));
|
|
4415
|
-
resetTAC();
|
|
4416
4348
|
return function () {
|
|
4417
|
-
|
|
4349
|
+
resetFormValues({});
|
|
4418
4350
|
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4419
4351
|
}, []);
|
|
4420
4352
|
React__default.useEffect(function () {
|
|
4421
4353
|
var newValues = prepareTafValues(originalTaf, undefined, !isDefaultDisabled && !originalTaf.changeGroups); // set new form values when taf values changed
|
|
4422
4354
|
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
resetTAC(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4355
|
+
resetFormValues(newValues); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4426
4356
|
}, [originalTaf]);
|
|
4427
4357
|
React__default.useEffect(function () {
|
|
4428
4358
|
// update disabled state when editor changed
|
|
@@ -4467,39 +4397,12 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4467
4397
|
editor: editor
|
|
4468
4398
|
}))), /*#__PURE__*/React__default.createElement("form", {
|
|
4469
4399
|
"data-testid": "taf-form",
|
|
4470
|
-
onSubmit: handleSubmit(onSubmit)
|
|
4471
|
-
|
|
4472
|
-
}, /*#__PURE__*/React__default.createElement(Typography, {
|
|
4473
|
-
sx: {
|
|
4474
|
-
fontSize: '20px',
|
|
4475
|
-
fontWeight: 500,
|
|
4476
|
-
height: '24px',
|
|
4477
|
-
display: 'flex',
|
|
4478
|
-
alignItems: 'center'
|
|
4479
|
-
}
|
|
4480
|
-
}, "TAC"), /*#__PURE__*/React__default.createElement(Typography, {
|
|
4481
|
-
sx: {
|
|
4482
|
-
fontSize: '12px',
|
|
4483
|
-
lineHeight: 1.67,
|
|
4484
|
-
letterSpacing: '0.21px',
|
|
4485
|
-
margin: '8px 0px'
|
|
4486
|
-
},
|
|
4487
|
-
"data-testid": "form-tac-message"
|
|
4488
|
-
}, TAC.split('\n').map(function (line) {
|
|
4489
|
-
return /*#__PURE__*/React__default.createElement(Box, {
|
|
4490
|
-
component: "span",
|
|
4491
|
-
key: line,
|
|
4492
|
-
"data-testid": "tafform-tac-message-line",
|
|
4493
|
-
sx: {
|
|
4494
|
-
textIndent: '-0.7em',
|
|
4495
|
-
borderRadius: '3px',
|
|
4496
|
-
paddingRight: '0.7em'
|
|
4497
|
-
}
|
|
4498
|
-
}, line);
|
|
4499
|
-
})), /*#__PURE__*/React__default.createElement(TafFormRow, {
|
|
4400
|
+
onSubmit: handleSubmit(onSubmit)
|
|
4401
|
+
}, /*#__PURE__*/React__default.createElement(TafFormRow, {
|
|
4500
4402
|
disabled: isDisabled,
|
|
4501
4403
|
onAddChangeGroupBelow: onAddRow,
|
|
4502
|
-
onClearRow: _onClearRow
|
|
4404
|
+
onClearRow: _onClearRow,
|
|
4405
|
+
isNotRequiredForAction: isNotRequiredForAction
|
|
4503
4406
|
}), /*#__PURE__*/React__default.createElement(ReactSortable, {
|
|
4504
4407
|
tag: "div",
|
|
4505
4408
|
list: fields,
|
|
@@ -4533,7 +4436,8 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4533
4436
|
isDisabled: fields.length === 1 || isDisabled,
|
|
4534
4437
|
isSorting: activeDraggingIndex === index,
|
|
4535
4438
|
index: index
|
|
4536
|
-
})
|
|
4439
|
+
}),
|
|
4440
|
+
isNotRequiredForAction: isNotRequiredForAction
|
|
4537
4441
|
});
|
|
4538
4442
|
})), !isDisabled && isEditor && /*#__PURE__*/React__default.createElement(Grid, {
|
|
4539
4443
|
container: true,
|
|
@@ -4560,7 +4464,7 @@ var TafForm = /*#__PURE__*/React__default.memo(function (_ref) {
|
|
|
4560
4464
|
name: field,
|
|
4561
4465
|
key: field
|
|
4562
4466
|
});
|
|
4563
|
-
})
|
|
4467
|
+
})));
|
|
4564
4468
|
}, function (prevProps, nextProps) {
|
|
4565
4469
|
// prevent re-render
|
|
4566
4470
|
return !nextProps.isDisabled && prevProps.tafFromBackend !== nextProps.tafFromBackend && // if editor changed it should rerender
|
|
@@ -4997,9 +4901,6 @@ var TacContainer = function TacContainer(_ref) {
|
|
|
4997
4901
|
trigger = _useFormContext.trigger,
|
|
4998
4902
|
setValue = _useFormContext.setValue;
|
|
4999
4903
|
|
|
5000
|
-
var _useTafModuleContext = useTafModuleContext(),
|
|
5001
|
-
updateTAC = _useTafModuleContext.updateTAC;
|
|
5002
|
-
|
|
5003
4904
|
var showSnackbar = React__default.useCallback(function (message) {
|
|
5004
4905
|
dispatch(snackbarActions.openSnackbar({
|
|
5005
4906
|
message: message
|
|
@@ -5018,7 +4919,6 @@ var TacContainer = function TacContainer(_ref) {
|
|
|
5018
4919
|
setTimeout(function () {
|
|
5019
4920
|
trigger(); // trigger all fields validation
|
|
5020
4921
|
}, 0);
|
|
5021
|
-
updateTAC(convertTafValuesToObject(newTaf));
|
|
5022
4922
|
showSnackbar(getSnackbarMessage$1(location, locationLabel));
|
|
5023
4923
|
};
|
|
5024
4924
|
|
|
@@ -5250,7 +5150,7 @@ var TacOverviewMobile = function TacOverviewMobile(_ref) {
|
|
|
5250
5150
|
},
|
|
5251
5151
|
position: 'absolute',
|
|
5252
5152
|
right: '4px',
|
|
5253
|
-
top: '
|
|
5153
|
+
top: '42px'
|
|
5254
5154
|
}
|
|
5255
5155
|
}, /*#__PURE__*/React.createElement(ListItem, null)), /*#__PURE__*/React.createElement(Dialog, {
|
|
5256
5156
|
open: isOpen,
|
|
@@ -5309,6 +5209,9 @@ var TopTabs = function TopTabs(_ref) {
|
|
|
5309
5209
|
}
|
|
5310
5210
|
} : _ref$tafFromBackend;
|
|
5311
5211
|
|
|
5212
|
+
var _useFormContext = useFormContext(),
|
|
5213
|
+
isDirty = _useFormContext.formState.isDirty;
|
|
5214
|
+
|
|
5312
5215
|
if (!tafFromBackend) {
|
|
5313
5216
|
return null;
|
|
5314
5217
|
}
|
|
@@ -5328,7 +5231,7 @@ var TopTabs = function TopTabs(_ref) {
|
|
|
5328
5231
|
}];
|
|
5329
5232
|
|
|
5330
5233
|
var onChangeTab = function onChangeTab(_event, newValue) {
|
|
5331
|
-
onChangeTimeSlot(tabs[newValue].timeSlot);
|
|
5234
|
+
onChangeTimeSlot(tabs[newValue].timeSlot, isDirty);
|
|
5332
5235
|
};
|
|
5333
5236
|
|
|
5334
5237
|
return /*#__PURE__*/React__default.createElement(Tabs, {
|
|
@@ -5373,6 +5276,10 @@ var LocationTabs = function LocationTabs(_ref) {
|
|
|
5373
5276
|
_ref$onChangeTab = _ref.onChangeTab,
|
|
5374
5277
|
onChangeTab = _ref$onChangeTab === void 0 ? function () {} : _ref$onChangeTab,
|
|
5375
5278
|
timeSlot = _ref.timeSlot;
|
|
5279
|
+
|
|
5280
|
+
var _useFormContext = useFormContext(),
|
|
5281
|
+
isDirty = _useFormContext.formState.isDirty;
|
|
5282
|
+
|
|
5376
5283
|
return /*#__PURE__*/React.createElement(MenuList, {
|
|
5377
5284
|
"data-testid": "location-tabs",
|
|
5378
5285
|
sx: {
|
|
@@ -5403,7 +5310,7 @@ var LocationTabs = function LocationTabs(_ref) {
|
|
|
5403
5310
|
}
|
|
5404
5311
|
},
|
|
5405
5312
|
onClick: function onClick() {
|
|
5406
|
-
return onChangeTab(index);
|
|
5313
|
+
return onChangeTab(index, isDirty);
|
|
5407
5314
|
}
|
|
5408
5315
|
}, editor && /*#__PURE__*/React.createElement(Box$1, {
|
|
5409
5316
|
sx: {
|
|
@@ -5871,8 +5778,7 @@ var TafLayout = function TafLayout(_ref2) {
|
|
|
5871
5778
|
|
|
5872
5779
|
var _useTafModuleContext = useTafModuleContext(),
|
|
5873
5780
|
onValidateForm = _useTafModuleContext.onValidateForm,
|
|
5874
|
-
tafAction = _useTafModuleContext.tafAction
|
|
5875
|
-
isFormDirty = _useTafModuleContext.isFormDirty;
|
|
5781
|
+
tafAction = _useTafModuleContext.tafAction;
|
|
5876
5782
|
|
|
5877
5783
|
var _React$useState = React__default.useState(sortTafTimeSlots(tafList)),
|
|
5878
5784
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
@@ -5985,7 +5891,7 @@ var TafLayout = function TafLayout(_ref2) {
|
|
|
5985
5891
|
}));
|
|
5986
5892
|
};
|
|
5987
5893
|
|
|
5988
|
-
function onChangeTab(action, value) {
|
|
5894
|
+
function onChangeTab(action, value, isFormDirty) {
|
|
5989
5895
|
return __awaiter(this, void 0, void 0, /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {
|
|
5990
5896
|
var taf;
|
|
5991
5897
|
return regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
@@ -6039,12 +5945,12 @@ var TafLayout = function TafLayout(_ref2) {
|
|
|
6039
5945
|
}));
|
|
6040
5946
|
}
|
|
6041
5947
|
|
|
6042
|
-
var onChangeLocationTab = function onChangeLocationTab(index) {
|
|
6043
|
-
onChangeTab(setActiveTafIndex, index);
|
|
5948
|
+
var onChangeLocationTab = function onChangeLocationTab(index, isFormDirty) {
|
|
5949
|
+
onChangeTab(setActiveTafIndex, index, isFormDirty);
|
|
6044
5950
|
};
|
|
6045
5951
|
|
|
6046
|
-
var onChangeTimeSlot = function onChangeTimeSlot(newTimeSlot) {
|
|
6047
|
-
onChangeTab(changeTimeSlot, newTimeSlot);
|
|
5952
|
+
var onChangeTimeSlot = function onChangeTimeSlot(newTimeSlot, isFormDirty) {
|
|
5953
|
+
onChangeTab(changeTimeSlot, newTimeSlot, isFormDirty);
|
|
6048
5954
|
};
|
|
6049
5955
|
|
|
6050
5956
|
var changeTimeSlot = function changeTimeSlot(newTimeSlot) {
|