@opengeoweb/taf 4.6.1 → 4.7.1
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 +9 -8
package/index.umd.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('@mui/material'), require('react-hook-form'), require('react-redux'), require('react-sortablejs'), require('sortablejs'), require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'react', '@mui/material', 'react-hook-form', 'react-redux', 'react-sortablejs', 'sortablejs', '
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Taf = {}, global.React, global.material, global.reactHookForm, global.reactRedux, global.reactSortablejs, global.Sortable, global.
|
|
5
|
-
})(this, (function (exports, React, material, reactHookForm, reactRedux, reactSortablejs, Sortable,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('@mui/material'), require('react-hook-form'), require('react-redux'), require('react-sortablejs'), require('sortablejs'), require('@opengeoweb/authentication'), require('@opengeoweb/form-fields'), require('@opengeoweb/shared'), require('@opengeoweb/core'), require('moment'), require('lodash'), require('@opengeoweb/theme'), require('react-dom'), require('@opengeoweb/api'), require('@mui/material/LinearProgress'), require('@mui/material/Box')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'react', '@mui/material', 'react-hook-form', 'react-redux', 'react-sortablejs', 'sortablejs', '@opengeoweb/authentication', '@opengeoweb/form-fields', '@opengeoweb/shared', '@opengeoweb/core', 'moment', 'lodash', '@opengeoweb/theme', 'react-dom', '@opengeoweb/api', '@mui/material/LinearProgress', '@mui/material/Box'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Taf = {}, global.React, global.material, global.reactHookForm, global.reactRedux, global.reactSortablejs, global.Sortable, global.authentication, global.formFields, global.shared, global.core, global.moment, global.lodash, global.theme, global.ReactDOM, global.api, global.LinearProgress, global.Box));
|
|
5
|
+
})(this, (function (exports, React, material, reactHookForm, reactRedux, reactSortablejs, Sortable, authentication, formFields, shared, core, moment, lodash, theme, ReactDOM, api, LinearProgress, Box) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
var invalidValidityStartTimeMessage = 'Invalid validity start time, change group validity must lie within the TAF validity period';
|
|
236
236
|
var invalidValidityPeriodMessage = 'Invalid validity period, validity end time has to be after validity start time';
|
|
237
237
|
var invalidValidityEndTimeMessage = 'Invalid validity end time, change group validity must lie within the TAF validity period';
|
|
238
|
-
var invalidChangeValidInterFieldMessage = 'Invalid validity period, expected DDHH/DDHH for BECMG and TEMPO or DDHHmm for FM';
|
|
238
|
+
var invalidChangeValidInterFieldMessage = 'Invalid validity period, expected DDHH/DDHH for PROB, BECMG and TEMPO or DDHHmm for FM';
|
|
239
239
|
var invalidBECMGDurationValidInterFieldMessage = 'Invalid validity period, for BECMG only validity periods with a duration of 1, 2, 3 or 4 hours are allowed';
|
|
240
240
|
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
|
|
241
241
|
// Ensure all individual sections are correct (DD HH mm etc)
|
|
@@ -321,16 +321,29 @@
|
|
|
321
321
|
|
|
322
322
|
return true;
|
|
323
323
|
};
|
|
324
|
-
var validateValidChangeGroupInterField = function validateValidChangeGroupInterField(value, valueChange, tafStart, tafEnd) {
|
|
324
|
+
var validateValidChangeGroupInterField = function validateValidChangeGroupInterField(value, valueChange, valueProb, tafStart, tafEnd) {
|
|
325
325
|
var trimmedValue = value.trim();
|
|
326
326
|
var trimmedValueChange = valueChange.trim();
|
|
327
|
+
var trimmedValueProb = valueProb.trim();
|
|
327
328
|
|
|
328
329
|
if (!trimmedValue.length) {
|
|
329
330
|
return true;
|
|
330
|
-
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (!trimmedValueChange.length && !trimmedValueProb.length) {
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
331
336
|
|
|
337
|
+
if (!trimmedValueChange.length && trimmedValueProb.length) {
|
|
338
|
+
if ( // Ensure format for probability without change is correct DDHH/DDHH
|
|
339
|
+
trimmedValue.length < 9) {
|
|
340
|
+
return invalidChangeValidInterFieldMessage;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
332
343
|
|
|
333
|
-
if (
|
|
344
|
+
if ( // Ensure format for FM changegroups is correct DDHHmm
|
|
345
|
+
trimmedValue.length > 6 && trimmedValueChange === 'FM' || // Ensure format for BECMG and TEMPO changegroups is correct DDHH/DDHH
|
|
346
|
+
trimmedValue.length < 9 && trimmedValueChange !== 'FM') {
|
|
334
347
|
return invalidChangeValidInterFieldMessage;
|
|
335
348
|
} // Ensure BECMG changegroup has duration of 1,2,3,4 hours
|
|
336
349
|
|
|
@@ -2361,7 +2374,7 @@
|
|
|
2361
2374
|
}, []);
|
|
2362
2375
|
return [TAC, retrieveTAC, onSetTac];
|
|
2363
2376
|
};
|
|
2364
|
-
var useDragOrder = function useDragOrder(trigger, move
|
|
2377
|
+
var useDragOrder = function useDragOrder(trigger, move) {
|
|
2365
2378
|
var _a = __read(React__default["default"].useState(null), 2),
|
|
2366
2379
|
activeDraggingIndex = _a[0],
|
|
2367
2380
|
setIsDragging = _a[1];
|
|
@@ -2394,18 +2407,7 @@
|
|
|
2394
2407
|
// trigger validation of all fields
|
|
2395
2408
|
trigger();
|
|
2396
2409
|
}
|
|
2397
|
-
}, [lastDragOrder, trigger]);
|
|
2398
|
-
|
|
2399
|
-
React__default["default"].useEffect(function () {
|
|
2400
|
-
var _a = __read(lastDragOrder, 2),
|
|
2401
|
-
oldIndex = _a[0],
|
|
2402
|
-
newIndex = _a[1];
|
|
2403
|
-
|
|
2404
|
-
if (oldIndex !== null && newIndex !== null) {
|
|
2405
|
-
onFormBlur();
|
|
2406
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2407
|
-
|
|
2408
|
-
}, [lastDragOrder]);
|
|
2410
|
+
}, [lastDragOrder, trigger]);
|
|
2409
2411
|
return {
|
|
2410
2412
|
onChangeOrder: onChangeOrder,
|
|
2411
2413
|
activeDraggingIndex: activeDraggingIndex,
|
|
@@ -2474,18 +2476,18 @@
|
|
|
2474
2476
|
wind: '',
|
|
2475
2477
|
visibility: '',
|
|
2476
2478
|
weather: {
|
|
2477
|
-
weather1:
|
|
2478
|
-
weather2:
|
|
2479
|
-
weather3:
|
|
2479
|
+
weather1: '',
|
|
2480
|
+
weather2: '',
|
|
2481
|
+
weather3: ''
|
|
2480
2482
|
},
|
|
2481
2483
|
cloud: {
|
|
2482
|
-
cloud1:
|
|
2483
|
-
cloud2:
|
|
2484
|
-
cloud3:
|
|
2485
|
-
cloud4:
|
|
2484
|
+
cloud1: '',
|
|
2485
|
+
cloud2: '',
|
|
2486
|
+
cloud3: '',
|
|
2487
|
+
cloud4: ''
|
|
2486
2488
|
},
|
|
2487
|
-
change:
|
|
2488
|
-
probability:
|
|
2489
|
+
change: '',
|
|
2490
|
+
probability: ''
|
|
2489
2491
|
};
|
|
2490
2492
|
var getTafStatusLabel = function getTafStatusLabel(status) {
|
|
2491
2493
|
switch (status) {
|
|
@@ -2541,7 +2543,17 @@
|
|
|
2541
2543
|
previousValidDateEnd: previousValidDateEnd
|
|
2542
2544
|
});
|
|
2543
2545
|
};
|
|
2546
|
+
var createChangeGroup = function createChangeGroup(changeGroup) {
|
|
2547
|
+
return __assign(__assign(__assign({}, emptyChangegroup), changeGroup), {
|
|
2548
|
+
weather: __assign(__assign({}, emptyChangegroup.weather), changeGroup.weather),
|
|
2549
|
+
cloud: __assign(__assign({}, emptyChangegroup.cloud), changeGroup.cloud)
|
|
2550
|
+
});
|
|
2551
|
+
};
|
|
2544
2552
|
var prepareTafValues = function prepareTafValues(_taf, tafAction, addEmptyChangeGroup) {
|
|
2553
|
+
var _a;
|
|
2554
|
+
|
|
2555
|
+
var _b;
|
|
2556
|
+
|
|
2545
2557
|
if (addEmptyChangeGroup === void 0) {
|
|
2546
2558
|
addEmptyChangeGroup = false;
|
|
2547
2559
|
} // If action is AMEND/CORRECT/DRAFT_AMEND/DRAFT_CORRECTION - add previous valid start and end
|
|
@@ -2556,14 +2568,16 @@
|
|
|
2556
2568
|
cloud: __assign(__assign({}, emptyBaseForecast.cloud), formattedBaseForecast.cloud)
|
|
2557
2569
|
});
|
|
2558
2570
|
|
|
2559
|
-
|
|
2571
|
+
var formattedChangeGroups = ((_b = taf.changeGroups) === null || _b === void 0 ? void 0 : _b.map(formatFormValues)) || [];
|
|
2572
|
+
var changeGroups = formattedChangeGroups.map(createChangeGroup);
|
|
2573
|
+
return __assign(__assign(__assign(__assign(__assign({}, taf), {
|
|
2560
2574
|
messageType: getMessageType(taf, tafAction),
|
|
2561
2575
|
baseForecast: baseForecast
|
|
2562
|
-
}),
|
|
2563
|
-
changeGroups:
|
|
2576
|
+
}), changeGroups.length && {
|
|
2577
|
+
changeGroups: changeGroups
|
|
2564
2578
|
}), addEmptyChangeGroup && {
|
|
2565
2579
|
changeGroups: [emptyChangegroup]
|
|
2566
|
-
});
|
|
2580
|
+
}), (_a = {}, _a[shared.HIDDEN_INPUT_HELPER_IS_DRAFT] = true, _a));
|
|
2567
2581
|
};
|
|
2568
2582
|
var getIsFormDefaultDisabled = function getIsFormDefaultDisabled(status) {
|
|
2569
2583
|
return !(status === 'NEW' || status === 'DRAFT' || status === 'DRAFT_AMENDED' || status === 'DRAFT_CORRECTED');
|
|
@@ -2912,7 +2926,8 @@
|
|
|
2912
2926
|
};
|
|
2913
2927
|
|
|
2914
2928
|
var TafFormRow = /*#__PURE__*/React__default["default"].forwardRef(function (_a, ref) {
|
|
2915
|
-
var
|
|
2929
|
+
var isNotRequiredForAction = _a.isNotRequiredForAction,
|
|
2930
|
+
_b = _a.isChangeGroup,
|
|
2916
2931
|
isChangeGroup = _b === void 0 ? false : _b,
|
|
2917
2932
|
_c = _a.disabled,
|
|
2918
2933
|
disabled = _c === void 0 ? false : _c,
|
|
@@ -2926,16 +2941,15 @@
|
|
|
2926
2941
|
onAddChangeGroupBelow = _a.onAddChangeGroupBelow,
|
|
2927
2942
|
onAddChangeGroupAbove = _a.onAddChangeGroupAbove,
|
|
2928
2943
|
onClearRow = _a.onClearRow,
|
|
2929
|
-
props = __rest(_a, ["isChangeGroup", "disabled", "index", "onRemoveChangeGroup", "field", "dragHandle", "onAddChangeGroupBelow", "onAddChangeGroupAbove", "onClearRow"]);
|
|
2944
|
+
props = __rest(_a, ["isNotRequiredForAction", "isChangeGroup", "disabled", "index", "onRemoveChangeGroup", "field", "dragHandle", "onAddChangeGroupBelow", "onAddChangeGroupAbove", "onClearRow"]);
|
|
2930
2945
|
|
|
2931
2946
|
var namePrefix = !isChangeGroup ? 'baseForecast' : "changeGroups[" + index + "]";
|
|
2932
2947
|
var fieldNames = getFieldNames(isChangeGroup, index);
|
|
2933
2948
|
|
|
2934
2949
|
var _g = reactHookForm.useFormContext(),
|
|
2935
2950
|
getValues = _g.getValues,
|
|
2936
|
-
trigger = _g.trigger;
|
|
2951
|
+
trigger = _g.trigger; // cross-field required validation
|
|
2937
2952
|
|
|
2938
|
-
var isNotRequiredForAction = shared.useDraftFormHelpers(true).isRequired; // cross-field required validation
|
|
2939
2953
|
|
|
2940
2954
|
var _h = __read(getRequiredCrossFields(fieldNames), 3),
|
|
2941
2955
|
mainFields = _h[0],
|
|
@@ -3156,7 +3170,7 @@
|
|
|
3156
3170
|
return isChangeGroup ? validateValidField(value, getValues('validDateStart'), getValues('validDateEnd')) : true;
|
|
3157
3171
|
},
|
|
3158
3172
|
validateValidChangeGroupInterField: function validateValidChangeGroupInterField$1(value) {
|
|
3159
|
-
return isChangeGroup ? validateValidChangeGroupInterField(value, getValues(fieldNames.change), getValues('validDateStart'), getValues('validDateEnd')) : true;
|
|
3173
|
+
return isChangeGroup ? validateValidChangeGroupInterField(value, getValues(fieldNames.change), getValues(fieldNames.probability), getValues('validDateStart'), getValues('validDateEnd')) : true;
|
|
3160
3174
|
},
|
|
3161
3175
|
validatePreviousRow: validatePreviousRow,
|
|
3162
3176
|
validateNextRows: validateNextRows
|
|
@@ -3818,20 +3832,34 @@
|
|
|
3818
3832
|
}))), rootElement);
|
|
3819
3833
|
};
|
|
3820
3834
|
|
|
3835
|
+
/* *
|
|
3836
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3837
|
+
* you may not use this file except in compliance with the License.
|
|
3838
|
+
* You may obtain a copy of the License at
|
|
3839
|
+
*
|
|
3840
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3841
|
+
*
|
|
3842
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3843
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3844
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3845
|
+
* See the License for the specific language governing permissions and
|
|
3846
|
+
* limitations under the License.
|
|
3847
|
+
*
|
|
3848
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
3849
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
3850
|
+
* */
|
|
3821
3851
|
var TafModuleContext = /*#__PURE__*/React__namespace.createContext({
|
|
3822
3852
|
onValidateForm: null,
|
|
3823
3853
|
registerValidateForm: null,
|
|
3824
3854
|
tafAction: null,
|
|
3825
3855
|
setTafAction: null,
|
|
3826
|
-
|
|
3827
|
-
setIsFormDirty: null
|
|
3856
|
+
onPreventCloseView: null
|
|
3828
3857
|
});
|
|
3829
3858
|
var useTafModuleContext = function useTafModuleContext() {
|
|
3830
3859
|
return React__namespace.useContext(TafModuleContext);
|
|
3831
3860
|
};
|
|
3832
3861
|
var useTafModuleState = function useTafModuleState(_a) {
|
|
3833
3862
|
var onPreventCloseView = _a.onPreventCloseView;
|
|
3834
|
-
var api$1 = api.useApiContext().api;
|
|
3835
3863
|
|
|
3836
3864
|
var _b = __read(React__namespace.useState(function () {
|
|
3837
3865
|
return new Promise(function () {
|
|
@@ -3845,38 +3873,18 @@
|
|
|
3845
3873
|
tafAction = _c[0],
|
|
3846
3874
|
setTafAction = _c[1];
|
|
3847
3875
|
|
|
3848
|
-
var _d = __read(React__namespace.useState(false), 2),
|
|
3849
|
-
isFormDirty = _d[0],
|
|
3850
|
-
setIsFormDirty = _d[1];
|
|
3851
|
-
|
|
3852
|
-
var _e = __read(useTACGenerator(undefined, api$1.getTAC), 3),
|
|
3853
|
-
TAC = _e[0],
|
|
3854
|
-
updateTAC = _e[1],
|
|
3855
|
-
setTAC = _e[2];
|
|
3856
|
-
|
|
3857
3876
|
var onRegisterValidateForm = function onRegisterValidateForm(promiseToRegister) {
|
|
3858
3877
|
registerValidateForm(function () {
|
|
3859
3878
|
return promiseToRegister;
|
|
3860
3879
|
});
|
|
3861
3880
|
};
|
|
3862
3881
|
|
|
3863
|
-
var onChangeFormDirty = function onChangeFormDirty(isDirty) {
|
|
3864
|
-
if (isDirty !== isFormDirty) {
|
|
3865
|
-
setIsFormDirty(isDirty);
|
|
3866
|
-
onPreventCloseView(isDirty);
|
|
3867
|
-
}
|
|
3868
|
-
};
|
|
3869
|
-
|
|
3870
3882
|
return {
|
|
3871
3883
|
onValidateForm: onValidateForm,
|
|
3872
3884
|
registerValidateForm: onRegisterValidateForm,
|
|
3873
3885
|
tafAction: tafAction,
|
|
3874
3886
|
setTafAction: setTafAction,
|
|
3875
|
-
|
|
3876
|
-
updateTAC: updateTAC,
|
|
3877
|
-
setTAC: setTAC,
|
|
3878
|
-
isFormDirty: isFormDirty,
|
|
3879
|
-
setIsFormDirty: onChangeFormDirty
|
|
3887
|
+
onPreventCloseView: onPreventCloseView
|
|
3880
3888
|
};
|
|
3881
3889
|
};
|
|
3882
3890
|
var TafModuleProvider = function TafModuleProvider(_a) {
|
|
@@ -3963,20 +3971,15 @@
|
|
|
3963
3971
|
var isDefaultDisabled = getIsFormDefaultDisabled(originalTaf.status);
|
|
3964
3972
|
var confirmDialog = shared.useConfirmationDialog();
|
|
3965
3973
|
|
|
3966
|
-
var _j = shared.useDraftFormHelpers(
|
|
3974
|
+
var _j = shared.useDraftFormHelpers(),
|
|
3967
3975
|
toggleIsDraft = _j.toggleIsDraft,
|
|
3968
|
-
|
|
3976
|
+
isNotRequiredForAction = _j.isRequired;
|
|
3969
3977
|
|
|
3970
3978
|
var _k = useTafModuleContext(),
|
|
3971
3979
|
registerValidateForm = _k.registerValidateForm,
|
|
3972
3980
|
tafAction = _k.tafAction,
|
|
3973
|
-
setIsFormDirty = _k.setIsFormDirty,
|
|
3974
3981
|
setTafAction = _k.setTafAction,
|
|
3975
|
-
|
|
3976
|
-
updateTAC = _k.updateTAC,
|
|
3977
|
-
setTAC = _k.setTAC;
|
|
3978
|
-
|
|
3979
|
-
var isMounted = shared.useIsMounted().isMounted;
|
|
3982
|
+
onPreventCloseView = _k.onPreventCloseView;
|
|
3980
3983
|
|
|
3981
3984
|
var _l = reactHookForm.useFormContext(),
|
|
3982
3985
|
control = _l.control,
|
|
@@ -3989,47 +3992,12 @@
|
|
|
3989
3992
|
|
|
3990
3993
|
var isFormDirty = formState.isDirty,
|
|
3991
3994
|
errors = formState.errors;
|
|
3992
|
-
shared.usePreventBrowserClose(isFormDirty && !isDisabled);
|
|
3993
|
-
var hiddenInputFields = ['baseTime', 'issueDate', 'uuid', 'validDateStart', 'validDateEnd', 'status', 'previousId', 'previousValidDateStart', 'previousValidDateEnd'];
|
|
3994
|
-
|
|
3995
|
-
var _m = __read(React__default["default"].useState(getValues()), 2),
|
|
3996
|
-
delayedFormValues = _m[0],
|
|
3997
|
-
setDelayedFormValues = _m[1];
|
|
3998
|
-
|
|
3999
|
-
var hasErrors = Object.keys(errors).length;
|
|
4000
|
-
|
|
4001
|
-
var onFormBlur = function onFormBlur() {
|
|
4002
|
-
if (!lodash.isEqual(getValues(), delayedFormValues)) {
|
|
4003
|
-
setDelayedFormValues(getValues());
|
|
4004
|
-
}
|
|
4005
|
-
};
|
|
4006
|
-
|
|
4007
|
-
var resetTAC = function resetTAC() {
|
|
4008
|
-
if (originalTaf.status !== 'NEW') {
|
|
4009
|
-
updateTAC(originalTaf);
|
|
4010
|
-
} else {
|
|
4011
|
-
setTAC(TAC_NOT_AVAILABLE);
|
|
4012
|
-
}
|
|
4013
|
-
};
|
|
4014
|
-
|
|
4015
|
-
React__default["default"].useEffect(function () {
|
|
4016
|
-
if (isMounted.current && isFormDirty) {
|
|
4017
|
-
var newTAC = hasErrors ? null : convertTafValuesToObject(delayedFormValues);
|
|
4018
|
-
updateTAC(newTAC);
|
|
4019
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4020
|
-
|
|
4021
|
-
}, [delayedFormValues]);
|
|
4022
|
-
React__default["default"].useEffect(function () {
|
|
4023
|
-
// prevent updating an error while typing
|
|
4024
|
-
if (!hasErrors && isFormDirty && document.activeElement.tagName !== 'INPUT') {
|
|
4025
|
-
updateTAC(convertTafValuesToObject(delayedFormValues));
|
|
4026
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4027
|
-
|
|
4028
|
-
}, [hasErrors]); // Needed to be able to show a confirmation dialog on switching tabs when form is edited and not saved
|
|
3995
|
+
shared.usePreventBrowserClose(isFormDirty && !isDisabled); // Needed to be able to show a confirmation dialog on closing parent view
|
|
4029
3996
|
|
|
4030
3997
|
React__default["default"].useEffect(function () {
|
|
4031
|
-
|
|
4032
|
-
}, [isFormDirty
|
|
3998
|
+
onPreventCloseView(isFormDirty); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3999
|
+
}, [isFormDirty]);
|
|
4000
|
+
var hiddenInputFields = ['baseTime', 'issueDate', 'uuid', 'validDateStart', 'validDateEnd', 'status', 'previousId', 'previousValidDateStart', 'previousValidDateEnd', shared.HIDDEN_INPUT_HELPER_IS_DRAFT];
|
|
4033
4001
|
|
|
4034
4002
|
var onSubmit = function onSubmit(data) {
|
|
4035
4003
|
// eslint-disable-next-line no-console
|
|
@@ -4046,22 +4014,22 @@
|
|
|
4046
4014
|
});
|
|
4047
4015
|
};
|
|
4048
4016
|
|
|
4049
|
-
var resetFormValues = function resetFormValues(
|
|
4050
|
-
|
|
4051
|
-
action = undefined;
|
|
4052
|
-
}
|
|
4053
|
-
|
|
4054
|
-
var newTaf = prepareTafValues(originalTaf, action, shouldAddEmptyChangGroup);
|
|
4055
|
-
reset(newTaf);
|
|
4017
|
+
var resetFormValues = function resetFormValues(formData) {
|
|
4018
|
+
return reset(formData);
|
|
4056
4019
|
};
|
|
4057
4020
|
|
|
4058
|
-
var
|
|
4021
|
+
var resetFormState = function resetFormState(action, resetDisabled, tafToReset) {
|
|
4059
4022
|
if (action === void 0) {
|
|
4060
4023
|
action = undefined;
|
|
4061
4024
|
}
|
|
4062
4025
|
|
|
4063
|
-
|
|
4064
|
-
|
|
4026
|
+
if (tafToReset === void 0) {
|
|
4027
|
+
tafToReset = originalTaf;
|
|
4028
|
+
}
|
|
4029
|
+
|
|
4030
|
+
var shouldAddEmptyChangGroup = !(tafToReset && tafToReset.changeGroups) && !resetDisabled;
|
|
4031
|
+
var newTaf = prepareTafValues(tafToReset, action, shouldAddEmptyChangGroup);
|
|
4032
|
+
resetFormValues(newTaf);
|
|
4065
4033
|
setIsDisabled(resetDisabled);
|
|
4066
4034
|
setTafAction(action);
|
|
4067
4035
|
};
|
|
@@ -4167,8 +4135,7 @@
|
|
|
4167
4135
|
didSucceed = _a.sent();
|
|
4168
4136
|
|
|
4169
4137
|
if (didSucceed) {
|
|
4170
|
-
|
|
4171
|
-
resetTAC();
|
|
4138
|
+
resetFormState(undefined, isDefaultDisabled);
|
|
4172
4139
|
}
|
|
4173
4140
|
|
|
4174
4141
|
return [2
|
|
@@ -4191,18 +4158,17 @@
|
|
|
4191
4158
|
toggleIsDraft(true);
|
|
4192
4159
|
handleSubmit(function (data) {
|
|
4193
4160
|
onFormAction(action, convertTafValuesToObject(data));
|
|
4194
|
-
|
|
4161
|
+
resetFormValues(getValues());
|
|
4195
4162
|
})();
|
|
4196
4163
|
break;
|
|
4197
4164
|
|
|
4198
4165
|
case 'DISCARD':
|
|
4199
4166
|
if (isFormDirty) {
|
|
4200
4167
|
showConfirmDialog(action).then(function () {
|
|
4201
|
-
|
|
4202
|
-
resetTAC();
|
|
4168
|
+
resetFormState(undefined, isDefaultDisabled);
|
|
4203
4169
|
});
|
|
4204
4170
|
} else {
|
|
4205
|
-
|
|
4171
|
+
resetFormState(undefined, isDefaultDisabled);
|
|
4206
4172
|
}
|
|
4207
4173
|
|
|
4208
4174
|
break;
|
|
@@ -4232,9 +4198,7 @@
|
|
|
4232
4198
|
didSucceed = _a.sent();
|
|
4233
4199
|
|
|
4234
4200
|
if (didSucceed) {
|
|
4235
|
-
|
|
4236
|
-
reset(prepareTafValues(convertTafValuesToObject(data), action, false));
|
|
4237
|
-
setTafAction(null);
|
|
4201
|
+
resetFormState(null, true, convertTafValuesToObject(data));
|
|
4238
4202
|
}
|
|
4239
4203
|
|
|
4240
4204
|
return [2
|
|
@@ -4277,24 +4241,24 @@
|
|
|
4277
4241
|
break;
|
|
4278
4242
|
|
|
4279
4243
|
default:
|
|
4280
|
-
|
|
4244
|
+
resetFormState(action, false);
|
|
4281
4245
|
break;
|
|
4282
4246
|
}
|
|
4283
4247
|
};
|
|
4284
4248
|
|
|
4285
|
-
var
|
|
4249
|
+
var _m = reactHookForm.useFieldArray({
|
|
4286
4250
|
control: control,
|
|
4287
4251
|
name: 'changeGroups'
|
|
4288
4252
|
}),
|
|
4289
|
-
fields =
|
|
4290
|
-
insert =
|
|
4291
|
-
remove =
|
|
4292
|
-
move =
|
|
4253
|
+
fields = _m.fields,
|
|
4254
|
+
insert = _m.insert,
|
|
4255
|
+
remove = _m.remove,
|
|
4256
|
+
move = _m.move;
|
|
4293
4257
|
|
|
4294
|
-
var
|
|
4295
|
-
onChangeOrder =
|
|
4296
|
-
onStartDrag =
|
|
4297
|
-
activeDraggingIndex =
|
|
4258
|
+
var _o = useDragOrder(trigger, move),
|
|
4259
|
+
onChangeOrder = _o.onChangeOrder,
|
|
4260
|
+
onStartDrag = _o.onStartDrag,
|
|
4261
|
+
activeDraggingIndex = _o.activeDraggingIndex;
|
|
4298
4262
|
|
|
4299
4263
|
var onRemoverow = function onRemoverow(index) {
|
|
4300
4264
|
confirmDialog({
|
|
@@ -4304,8 +4268,6 @@
|
|
|
4304
4268
|
}).then(function () {
|
|
4305
4269
|
remove(index);
|
|
4306
4270
|
trigger(); // trigger all fields validation
|
|
4307
|
-
|
|
4308
|
-
onFormBlur();
|
|
4309
4271
|
});
|
|
4310
4272
|
}; // 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
|
|
4311
4273
|
|
|
@@ -4375,15 +4337,12 @@
|
|
|
4375
4337
|
});
|
|
4376
4338
|
};
|
|
4377
4339
|
|
|
4378
|
-
var
|
|
4379
|
-
shouldValidate =
|
|
4380
|
-
setShouldValidate =
|
|
4340
|
+
var _p = __read(React__default["default"].useState(false), 2),
|
|
4341
|
+
shouldValidate = _p[0],
|
|
4342
|
+
setShouldValidate = _p[1];
|
|
4381
4343
|
|
|
4382
4344
|
React__default["default"].useEffect(function () {
|
|
4383
|
-
setIsDisabled(!isEditor || isDefaultDisabled);
|
|
4384
|
-
var defaultValues = prepareTafValues(originalTaf, undefined, !isDefaultDisabled && !originalTaf.changeGroups); // set initial form values
|
|
4385
|
-
|
|
4386
|
-
reset(defaultValues); // set validate flag to validate after the values have been set
|
|
4345
|
+
setIsDisabled(!isEditor || isDefaultDisabled); // set validate flag to validate after the values have been set
|
|
4387
4346
|
|
|
4388
4347
|
setShouldValidate(true); // register validate method to use in parent components
|
|
4389
4348
|
|
|
@@ -4405,17 +4364,14 @@
|
|
|
4405
4364
|
registerValidateForm(onValidateFormPromise); // set default taf action
|
|
4406
4365
|
|
|
4407
4366
|
setTafAction(fromStatusToAction(originalTaf.status));
|
|
4408
|
-
resetTAC();
|
|
4409
4367
|
return function () {
|
|
4410
|
-
|
|
4368
|
+
resetFormValues({});
|
|
4411
4369
|
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4412
4370
|
}, []);
|
|
4413
4371
|
React__default["default"].useEffect(function () {
|
|
4414
4372
|
var newValues = prepareTafValues(originalTaf, undefined, !isDefaultDisabled && !originalTaf.changeGroups); // set new form values when taf values changed
|
|
4415
4373
|
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
resetTAC(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4374
|
+
resetFormValues(newValues); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
4419
4375
|
}, [originalTaf]);
|
|
4420
4376
|
React__default["default"].useEffect(function () {
|
|
4421
4377
|
// update disabled state when editor changed
|
|
@@ -4460,39 +4416,12 @@
|
|
|
4460
4416
|
editor: editor
|
|
4461
4417
|
}))), /*#__PURE__*/React__default["default"].createElement("form", {
|
|
4462
4418
|
"data-testid": "taf-form",
|
|
4463
|
-
onSubmit: handleSubmit(onSubmit)
|
|
4464
|
-
|
|
4465
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
4466
|
-
sx: {
|
|
4467
|
-
fontSize: '20px',
|
|
4468
|
-
fontWeight: 500,
|
|
4469
|
-
height: '24px',
|
|
4470
|
-
display: 'flex',
|
|
4471
|
-
alignItems: 'center'
|
|
4472
|
-
}
|
|
4473
|
-
}, "TAC"), /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
4474
|
-
sx: {
|
|
4475
|
-
fontSize: '12px',
|
|
4476
|
-
lineHeight: 1.67,
|
|
4477
|
-
letterSpacing: '0.21px',
|
|
4478
|
-
margin: '8px 0px'
|
|
4479
|
-
},
|
|
4480
|
-
"data-testid": "form-tac-message"
|
|
4481
|
-
}, TAC.split('\n').map(function (line) {
|
|
4482
|
-
return /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
4483
|
-
component: "span",
|
|
4484
|
-
key: line,
|
|
4485
|
-
"data-testid": "tafform-tac-message-line",
|
|
4486
|
-
sx: {
|
|
4487
|
-
textIndent: '-0.7em',
|
|
4488
|
-
borderRadius: '3px',
|
|
4489
|
-
paddingRight: '0.7em'
|
|
4490
|
-
}
|
|
4491
|
-
}, line);
|
|
4492
|
-
})), /*#__PURE__*/React__default["default"].createElement(TafFormRow, {
|
|
4419
|
+
onSubmit: handleSubmit(onSubmit)
|
|
4420
|
+
}, /*#__PURE__*/React__default["default"].createElement(TafFormRow, {
|
|
4493
4421
|
disabled: isDisabled,
|
|
4494
4422
|
onAddChangeGroupBelow: onAddRow,
|
|
4495
|
-
onClearRow: _onClearRow
|
|
4423
|
+
onClearRow: _onClearRow,
|
|
4424
|
+
isNotRequiredForAction: isNotRequiredForAction
|
|
4496
4425
|
}), /*#__PURE__*/React__default["default"].createElement(reactSortablejs.ReactSortable, {
|
|
4497
4426
|
tag: "div",
|
|
4498
4427
|
list: fields,
|
|
@@ -4526,7 +4455,8 @@
|
|
|
4526
4455
|
isDisabled: fields.length === 1 || isDisabled,
|
|
4527
4456
|
isSorting: activeDraggingIndex === index,
|
|
4528
4457
|
index: index
|
|
4529
|
-
})
|
|
4458
|
+
}),
|
|
4459
|
+
isNotRequiredForAction: isNotRequiredForAction
|
|
4530
4460
|
});
|
|
4531
4461
|
})), !isDisabled && isEditor && /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4532
4462
|
container: true,
|
|
@@ -4553,7 +4483,7 @@
|
|
|
4553
4483
|
name: field,
|
|
4554
4484
|
key: field
|
|
4555
4485
|
});
|
|
4556
|
-
})
|
|
4486
|
+
})));
|
|
4557
4487
|
}, function (prevProps, nextProps) {
|
|
4558
4488
|
// prevent re-render
|
|
4559
4489
|
return !nextProps.isDisabled && prevProps.tafFromBackend !== nextProps.tafFromBackend && // if editor changed it should rerender
|
|
@@ -4997,7 +4927,6 @@
|
|
|
4997
4927
|
trigger = _e.trigger,
|
|
4998
4928
|
setValue = _e.setValue;
|
|
4999
4929
|
|
|
5000
|
-
var updateTAC = useTafModuleContext().updateTAC;
|
|
5001
4930
|
var showSnackbar = React__default["default"].useCallback(function (message) {
|
|
5002
4931
|
dispatch(core.snackbarActions.openSnackbar({
|
|
5003
4932
|
message: message
|
|
@@ -5016,7 +4945,6 @@
|
|
|
5016
4945
|
setTimeout(function () {
|
|
5017
4946
|
trigger(); // trigger all fields validation
|
|
5018
4947
|
}, 0);
|
|
5019
|
-
updateTAC(convertTafValuesToObject(newTaf));
|
|
5020
4948
|
showSnackbar(getSnackbarMessage$1(location, locationLabel));
|
|
5021
4949
|
};
|
|
5022
4950
|
|
|
@@ -5246,7 +5174,7 @@
|
|
|
5246
5174
|
},
|
|
5247
5175
|
position: 'absolute',
|
|
5248
5176
|
right: '4px',
|
|
5249
|
-
top: '
|
|
5177
|
+
top: '42px'
|
|
5250
5178
|
}
|
|
5251
5179
|
}, /*#__PURE__*/React__namespace.createElement(theme.ListItem, null)), /*#__PURE__*/React__namespace.createElement(material.Dialog, {
|
|
5252
5180
|
open: isOpen,
|
|
@@ -5288,6 +5216,7 @@
|
|
|
5288
5216
|
location: 'EHAM'
|
|
5289
5217
|
}
|
|
5290
5218
|
} : _c;
|
|
5219
|
+
var isDirty = reactHookForm.useFormContext().formState.isDirty;
|
|
5291
5220
|
|
|
5292
5221
|
if (!tafFromBackend) {
|
|
5293
5222
|
return null;
|
|
@@ -5308,7 +5237,7 @@
|
|
|
5308
5237
|
}];
|
|
5309
5238
|
|
|
5310
5239
|
var onChangeTab = function onChangeTab(_event, newValue) {
|
|
5311
|
-
onChangeTimeSlot(tabs[newValue].timeSlot);
|
|
5240
|
+
onChangeTimeSlot(tabs[newValue].timeSlot, isDirty);
|
|
5312
5241
|
};
|
|
5313
5242
|
|
|
5314
5243
|
return /*#__PURE__*/React__default["default"].createElement(material.Tabs, {
|
|
@@ -5353,6 +5282,7 @@
|
|
|
5353
5282
|
_c = _a.onChangeTab,
|
|
5354
5283
|
onChangeTab = _c === void 0 ? function () {} : _c,
|
|
5355
5284
|
timeSlot = _a.timeSlot;
|
|
5285
|
+
var isDirty = reactHookForm.useFormContext().formState.isDirty;
|
|
5356
5286
|
return /*#__PURE__*/React__namespace.createElement(material.MenuList, {
|
|
5357
5287
|
"data-testid": "location-tabs",
|
|
5358
5288
|
sx: {
|
|
@@ -5383,7 +5313,7 @@
|
|
|
5383
5313
|
}
|
|
5384
5314
|
},
|
|
5385
5315
|
onClick: function onClick() {
|
|
5386
|
-
return onChangeTab(index);
|
|
5316
|
+
return onChangeTab(index, isDirty);
|
|
5387
5317
|
}
|
|
5388
5318
|
}, editor && /*#__PURE__*/React__namespace.createElement(Box__default["default"], {
|
|
5389
5319
|
sx: {
|
|
@@ -5861,8 +5791,7 @@
|
|
|
5861
5791
|
|
|
5862
5792
|
var _g = useTafModuleContext(),
|
|
5863
5793
|
onValidateForm = _g.onValidateForm,
|
|
5864
|
-
tafAction = _g.tafAction
|
|
5865
|
-
isFormDirty = _g.isFormDirty;
|
|
5794
|
+
tafAction = _g.tafAction;
|
|
5866
5795
|
|
|
5867
5796
|
var _h = __read(React__default["default"].useState(sortTafTimeSlots(tafList)), 2),
|
|
5868
5797
|
_j = _h[0],
|
|
@@ -5981,7 +5910,7 @@
|
|
|
5981
5910
|
});
|
|
5982
5911
|
};
|
|
5983
5912
|
|
|
5984
|
-
function onChangeTab(action, value) {
|
|
5913
|
+
function onChangeTab(action, value, isFormDirty) {
|
|
5985
5914
|
return __awaiter(this, void 0, void 0, function () {
|
|
5986
5915
|
var taf;
|
|
5987
5916
|
return __generator(this, function (_a) {
|
|
@@ -6045,12 +5974,12 @@
|
|
|
6045
5974
|
});
|
|
6046
5975
|
}
|
|
6047
5976
|
|
|
6048
|
-
var onChangeLocationTab = function onChangeLocationTab(index) {
|
|
6049
|
-
onChangeTab(setActiveTafIndex, index);
|
|
5977
|
+
var onChangeLocationTab = function onChangeLocationTab(index, isFormDirty) {
|
|
5978
|
+
onChangeTab(setActiveTafIndex, index, isFormDirty);
|
|
6050
5979
|
};
|
|
6051
5980
|
|
|
6052
|
-
var onChangeTimeSlot = function onChangeTimeSlot(newTimeSlot) {
|
|
6053
|
-
onChangeTab(changeTimeSlot, newTimeSlot);
|
|
5981
|
+
var onChangeTimeSlot = function onChangeTimeSlot(newTimeSlot, isFormDirty) {
|
|
5982
|
+
onChangeTab(changeTimeSlot, newTimeSlot, isFormDirty);
|
|
6054
5983
|
};
|
|
6055
5984
|
|
|
6056
5985
|
var changeTimeSlot = function changeTimeSlot(newTimeSlot) {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { GridProps } from '@mui/material';
|
|
3
3
|
import { ArrayField } from 'react-hook-form';
|
|
4
4
|
export interface TafFormRowProps extends GridProps {
|
|
5
|
+
isNotRequiredForAction: (value: string) => boolean | string;
|
|
5
6
|
isChangeGroup?: boolean;
|
|
6
7
|
disabled?: boolean;
|
|
7
8
|
index?: number;
|