@opengeoweb/taf 2.14.0 → 2.15.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.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-sortablejs'), require('@opengeoweb/form-fields'), require('@opengeoweb/shared'), require('lodash'), require('moment'), require('@opengeoweb/theme'), require('@mui/styles/makeStyles'), 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-sortablejs', '@opengeoweb/form-fields', '@opengeoweb/shared', 'lodash', 'moment', '@opengeoweb/theme', '@mui/styles/makeStyles', '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.reactSortablejs, global.formFields, global.shared, global.lodash, global.moment, global.theme, global.makeStyles, global.ReactDOM, global.api, global.LinearProgress, global.Box));
5
- })(this, (function (exports, React, material, reactHookForm, reactSortablejs, formFields, shared, lodash, moment, theme, makeStyles, ReactDOM, api, LinearProgress, Box) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('@mui/material'), require('react-hook-form'), require('react-sortablejs'), require('lodash'), require('@opengeoweb/authentication'), require('@opengeoweb/form-fields'), require('@opengeoweb/shared'), require('moment'), require('@opengeoweb/theme'), require('@mui/styles/makeStyles'), 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-sortablejs', 'lodash', '@opengeoweb/authentication', '@opengeoweb/form-fields', '@opengeoweb/shared', 'moment', '@opengeoweb/theme', '@mui/styles/makeStyles', '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.reactSortablejs, global.lodash, global.authentication, global.formFields, global.shared, global.moment, global.theme, global.makeStyles, global.ReactDOM, global.api, global.LinearProgress, global.Box));
5
+ })(this, (function (exports, React, material, reactHookForm, reactSortablejs, lodash, authentication, formFields, shared, moment, theme, makeStyles, 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
 
@@ -3825,7 +3825,12 @@
3825
3825
  fontSize: '4rem'
3826
3826
  },
3827
3827
  "data-testid": "zeroIssuesImage"
3828
- }, /*#__PURE__*/React__namespace.createElement(theme.ThumbsUp, null)), errorList.length > 0 && errorList.map(function (error, index) {
3828
+ }, /*#__PURE__*/React__namespace.createElement(theme.ThumbsUp, {
3829
+ sx: {
3830
+ height: '69px',
3831
+ width: '58px'
3832
+ }
3833
+ })), errorList.length > 0 && errorList.map(function (error, index) {
3829
3834
  return /*#__PURE__*/React__namespace.createElement(material.Typography // eslint-disable-next-line react/no-array-index-key
3830
3835
  , {
3831
3836
  // eslint-disable-next-line react/no-array-index-key
@@ -3909,9 +3914,59 @@
3909
3914
  }, children);
3910
3915
  };
3911
3916
 
3917
+ var styles = {
3918
+ label: {
3919
+ color: 'geowebColors.buttons.tertiary.default.color',
3920
+ opacity: 1,
3921
+ fontSize: '12px',
3922
+ fontWeight: 500
3923
+ }
3924
+ };
3925
+
3926
+ var SwitchButton = function SwitchButton(props) {
3927
+ return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
3928
+ title: "Switch mode"
3929
+ }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(material.FormLabel, {
3930
+ sx: styles.label
3931
+ }, "Viewer"), /*#__PURE__*/React__namespace.createElement(material.Switch, __assign({
3932
+ "data-testid": "switchMode"
3933
+ }, props)), /*#__PURE__*/React__namespace.createElement(material.FormLabel, {
3934
+ sx: styles.label
3935
+ }, "Editor")));
3936
+ };
3937
+
3938
+ /* *
3939
+ * Licensed under the Apache License, Version 2.0 (the "License");
3940
+ * you may not use this file except in compliance with the License.
3941
+ * You may obtain a copy of the License at
3942
+ *
3943
+ * http://www.apache.org/licenses/LICENSE-2.0
3944
+ *
3945
+ * Unless required by applicable law or agreed to in writing, software
3946
+ * distributed under the License is distributed on an "AS IS" BASIS,
3947
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3948
+ * See the License for the specific language governing permissions and
3949
+ * limitations under the License.
3950
+ *
3951
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3952
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
3953
+ * */
3954
+
3955
+ var TafAvatar = function TafAvatar(_a) {
3956
+ var editor = _a.editor,
3957
+ _b = _a.tooltipPlacement,
3958
+ tooltipPlacement = _b === void 0 ? 'bottom' : _b;
3959
+ return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
3960
+ title: "Editor: " + editor,
3961
+ placement: tooltipPlacement
3962
+ }, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.Avatar, {
3963
+ size: "small"
3964
+ }, shared.getInitials(editor))));
3965
+ };
3966
+
3912
3967
  var noop = function noop() {};
3913
3968
 
3914
- var TafForm = function TafForm(_a) {
3969
+ var TafForm = /*#__PURE__*/React__default["default"].memo(function (_a) {
3915
3970
  var tafFromBackend = _a.tafFromBackend,
3916
3971
  _b = _a.onFormAction,
3917
3972
  onFormAction = _b === void 0 ? function () {
@@ -3928,43 +3983,50 @@
3928
3983
  _f = _a.setIsDisabled,
3929
3984
  setIsDisabled = _f === void 0 ? function () {
3930
3985
  return null;
3931
- } : _f;
3932
- var originalTaf = tafFromBackend.taf;
3986
+ } : _f,
3987
+ _g = _a.onSwitchEditor,
3988
+ onSwitchEditor = _g === void 0 ? function () {
3989
+ return null;
3990
+ } : _g;
3991
+ var originalTaf = tafFromBackend.taf,
3992
+ editor = tafFromBackend.editor;
3993
+ var auth = authentication.useAuthenticationContext().auth;
3994
+ var isEditor = editor === (auth === null || auth === void 0 ? void 0 : auth.username) || false;
3933
3995
  var isDefaultDisabled = getIsFormDefaultDisabled(tafFromBackend.taf.status);
3934
3996
  var confirmDialog = shared.useConfirmationDialog();
3935
3997
 
3936
- var _g = shared.useDraftFormHelpers(true),
3937
- toggleIsDraft = _g.toggleIsDraft,
3938
- DraftFieldHelper = _g.DraftFieldHelper;
3998
+ var _h = shared.useDraftFormHelpers(true),
3999
+ toggleIsDraft = _h.toggleIsDraft,
4000
+ DraftFieldHelper = _h.DraftFieldHelper;
3939
4001
 
3940
- var _h = useTafModuleContext(),
3941
- registerValidateForm = _h.registerValidateForm,
3942
- tafAction = _h.tafAction,
3943
- setIsFormDirty = _h.setIsFormDirty,
3944
- setTafAction = _h.setTafAction,
3945
- TAC = _h.TAC,
3946
- updateTAC = _h.updateTAC,
3947
- setTAC = _h.setTAC;
4002
+ var _j = useTafModuleContext(),
4003
+ registerValidateForm = _j.registerValidateForm,
4004
+ tafAction = _j.tafAction,
4005
+ setIsFormDirty = _j.setIsFormDirty,
4006
+ setTafAction = _j.setTafAction,
4007
+ TAC = _j.TAC,
4008
+ updateTAC = _j.updateTAC,
4009
+ setTAC = _j.setTAC;
3948
4010
 
3949
4011
  var isMounted = shared.useIsMounted().isMounted;
3950
4012
 
3951
- var _j = reactHookForm.useFormContext(),
3952
- control = _j.control,
3953
- handleSubmit = _j.handleSubmit,
3954
- trigger = _j.trigger,
3955
- formState = _j.formState,
3956
- getValues = _j.getValues,
3957
- setValue = _j.setValue,
3958
- reset = _j.reset;
4013
+ var _k = reactHookForm.useFormContext(),
4014
+ control = _k.control,
4015
+ handleSubmit = _k.handleSubmit,
4016
+ trigger = _k.trigger,
4017
+ formState = _k.formState,
4018
+ getValues = _k.getValues,
4019
+ setValue = _k.setValue,
4020
+ reset = _k.reset;
3959
4021
 
3960
4022
  var isFormDirty = formState.isDirty,
3961
4023
  errors = formState.errors;
3962
4024
  shared.usePreventBrowserClose(isFormDirty && !isDisabled);
3963
4025
  var hiddenInputFields = ['baseTime', 'issueDate', 'type', 'uuid', 'validDateStart', 'validDateEnd', 'status', 'previousId', 'previousValidDateStart', 'previousValidDateEnd'];
3964
4026
 
3965
- var _k = __read(React__default["default"].useState(getValues()), 2),
3966
- delayedFormValues = _k[0],
3967
- setDelayedFormValues = _k[1];
4027
+ var _l = __read(React__default["default"].useState(getValues()), 2),
4028
+ delayedFormValues = _l[0],
4029
+ setDelayedFormValues = _l[1];
3968
4030
 
3969
4031
  var hasErrors = Object.keys(errors).length;
3970
4032
 
@@ -4036,6 +4098,92 @@
4036
4098
  setTafAction(action);
4037
4099
  };
4038
4100
 
4101
+ var setIsEditor = function setIsEditor(checked) {
4102
+ return __awaiter(void 0, void 0, void 0, function () {
4103
+ var editor, didSucceed;
4104
+ return __generator(this, function (_a) {
4105
+ switch (_a.label) {
4106
+ case 0:
4107
+ editor = checked ? auth === null || auth === void 0 ? void 0 : auth.username : '';
4108
+
4109
+ if (editor === tafFromBackend.editor) {
4110
+ // do nothing, correct editor is already set
4111
+ return [2
4112
+ /*return*/
4113
+ , true];
4114
+ }
4115
+
4116
+ if (!(tafFromBackend.editor !== '' && tafFromBackend.editor !== null && tafFromBackend.editor !== (auth === null || auth === void 0 ? void 0 : auth.username))) return [3
4117
+ /*break*/
4118
+ , 2];
4119
+ return [4
4120
+ /*yield*/
4121
+ , confirmDialog({
4122
+ title: 'Switch to editor mode',
4123
+ description: 'This TAF is already in edit mode and important information could get lost in the switching process.',
4124
+ confirmLabel: 'Edit mode'
4125
+ })];
4126
+
4127
+ case 1:
4128
+ _a.sent();
4129
+
4130
+ _a.label = 2;
4131
+
4132
+ case 2:
4133
+ return [4
4134
+ /*yield*/
4135
+ , onSwitchEditor(__assign(__assign({}, tafFromBackend), {
4136
+ editor: editor
4137
+ }))];
4138
+
4139
+ case 3:
4140
+ didSucceed = _a.sent();
4141
+ return [2
4142
+ /*return*/
4143
+ , didSucceed];
4144
+ }
4145
+ });
4146
+ });
4147
+ };
4148
+
4149
+ var onSwitchMode = function onSwitchMode(event) {
4150
+ var checked = event.target.checked;
4151
+
4152
+ if (!checked && isFormDirty) {
4153
+ confirmDialog({
4154
+ title: 'Whoops',
4155
+ description: 'Are you sure you want to switch to viewer mode? Your unsaved changes will be lost.',
4156
+ confirmLabel: 'Switch mode'
4157
+ }).then(function () {
4158
+ return __awaiter(void 0, void 0, void 0, function () {
4159
+ var didSucceed;
4160
+ return __generator(this, function (_a) {
4161
+ switch (_a.label) {
4162
+ case 0:
4163
+ return [4
4164
+ /*yield*/
4165
+ , setIsEditor(checked)];
4166
+
4167
+ case 1:
4168
+ didSucceed = _a.sent();
4169
+
4170
+ if (didSucceed) {
4171
+ resetForm(undefined, isDefaultDisabled);
4172
+ resetTAC();
4173
+ }
4174
+
4175
+ return [2
4176
+ /*return*/
4177
+ ];
4178
+ }
4179
+ });
4180
+ });
4181
+ });
4182
+ } else {
4183
+ setIsEditor(checked);
4184
+ }
4185
+ };
4186
+
4039
4187
  var onTafEditModeButtonPress = function onTafEditModeButtonPress(action) {
4040
4188
  switch (action) {
4041
4189
  case 'DRAFT':
@@ -4109,7 +4257,23 @@
4109
4257
  switch (action) {
4110
4258
  case 'CANCEL':
4111
4259
  showConfirmDialog(action).then(function () {
4112
- onFormAction(action, convertTafValuesToObject(prepareTafValues(tafFromBackend.taf, action)));
4260
+ return __awaiter(void 0, void 0, void 0, function () {
4261
+ return __generator(this, function (_a) {
4262
+ switch (_a.label) {
4263
+ case 0:
4264
+ return [4
4265
+ /*yield*/
4266
+ , onFormAction(action, convertTafValuesToObject(prepareTafValues(tafFromBackend.taf, action)))];
4267
+
4268
+ case 1:
4269
+ _a.sent();
4270
+
4271
+ return [2
4272
+ /*return*/
4273
+ ];
4274
+ }
4275
+ });
4276
+ });
4113
4277
  });
4114
4278
  break;
4115
4279
 
@@ -4119,19 +4283,19 @@
4119
4283
  }
4120
4284
  };
4121
4285
 
4122
- var _l = reactHookForm.useFieldArray({
4286
+ var _m = reactHookForm.useFieldArray({
4123
4287
  control: control,
4124
4288
  name: 'changeGroups'
4125
4289
  }),
4126
- fields = _l.fields,
4127
- insert = _l.insert,
4128
- remove = _l.remove,
4129
- move = _l.move;
4290
+ fields = _m.fields,
4291
+ insert = _m.insert,
4292
+ remove = _m.remove,
4293
+ move = _m.move;
4130
4294
 
4131
- var _m = useDragOrder(trigger, move, onFormBlur),
4132
- onChangeOrder = _m.onChangeOrder,
4133
- onStartDrag = _m.onStartDrag,
4134
- activeDraggingIndex = _m.activeDraggingIndex;
4295
+ var _o = useDragOrder(trigger, move, onFormBlur),
4296
+ onChangeOrder = _o.onChangeOrder,
4297
+ onStartDrag = _o.onStartDrag,
4298
+ activeDraggingIndex = _o.activeDraggingIndex;
4135
4299
 
4136
4300
  var onRemoverow = function onRemoverow(index) {
4137
4301
  confirmDialog({
@@ -4212,12 +4376,12 @@
4212
4376
  });
4213
4377
  };
4214
4378
 
4215
- var _o = __read(React__default["default"].useState(false), 2),
4216
- shouldValidate = _o[0],
4217
- setShouldValidate = _o[1];
4379
+ var _p = __read(React__default["default"].useState(false), 2),
4380
+ shouldValidate = _p[0],
4381
+ setShouldValidate = _p[1];
4218
4382
 
4219
4383
  React__default["default"].useEffect(function () {
4220
- setIsDisabled(isDefaultDisabled);
4384
+ setIsDisabled(!isEditor || isDefaultDisabled);
4221
4385
  var defaultValues = prepareTafValues(tafFromBackend.taf, undefined, !isDefaultDisabled && !tafFromBackend.taf.changeGroups); // set initial form values
4222
4386
 
4223
4387
  reset(defaultValues); // set validate flag to validate after the values have been set
@@ -4252,9 +4416,13 @@
4252
4416
 
4253
4417
  reset(newValues); // eslint-disable-next-line react-hooks/exhaustive-deps
4254
4418
  }, [tafFromBackend]);
4419
+ React__default["default"].useEffect(function () {
4420
+ // update disabled state when editor changed
4421
+ setIsDisabled(!isEditor || isDefaultDisabled); // eslint-disable-next-line react-hooks/exhaustive-deps
4422
+ }, [editor]);
4255
4423
  React__default["default"].useEffect(function () {
4256
4424
  if (shouldValidate && !isDisabled) {
4257
- // trigger validation on all changegroup validity times after initial load since they could be outside the new validity period
4425
+ // trigger validation on all changegroup validity times after form is enabled since they could be outside the new validity period
4258
4426
  var _a = tafFromBackend.taf.changeGroups,
4259
4427
  changeGroups = _a === void 0 ? [] : _a;
4260
4428
  var validFields = changeGroups.map(function (_field, index) {
@@ -4263,8 +4431,33 @@
4263
4431
  trigger(validFields);
4264
4432
  } // eslint-disable-next-line react-hooks/exhaustive-deps
4265
4433
 
4266
- }, [shouldValidate]);
4267
- return /*#__PURE__*/React__default["default"].createElement("form", {
4434
+ }, [shouldValidate, isDisabled]);
4435
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Box, {
4436
+ sx: {
4437
+ display: 'flex',
4438
+ flexDirection: 'row',
4439
+ alignItems: 'center',
4440
+ position: 'absolute',
4441
+ top: {
4442
+ xs: '20px',
4443
+ sm: '0px'
4444
+ },
4445
+ right: {
4446
+ xs: 'calc(50% - 70px)',
4447
+ sm: '8px'
4448
+ }
4449
+ }
4450
+ }, /*#__PURE__*/React__default["default"].createElement(SwitchButton, {
4451
+ checked: isEditor,
4452
+ onChange: onSwitchMode
4453
+ }), /*#__PURE__*/React__default["default"].createElement(material.Box, {
4454
+ sx: {
4455
+ width: '16px',
4456
+ marginLeft: 1
4457
+ }
4458
+ }, editor && /*#__PURE__*/React__default["default"].createElement(TafAvatar, {
4459
+ editor: editor
4460
+ }))), /*#__PURE__*/React__default["default"].createElement("form", {
4268
4461
  "data-testid": "taf-form",
4269
4462
  onSubmit: handleSubmit(onSubmit),
4270
4463
  onBlur: onFormBlur
@@ -4330,7 +4523,7 @@
4330
4523
  index: index
4331
4524
  })
4332
4525
  });
4333
- })), !isDisabled && /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4526
+ })), !isDisabled && isEditor && /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4334
4527
  container: true,
4335
4528
  justifyContent: "space-between",
4336
4529
  alignItems: "center",
@@ -4344,7 +4537,7 @@
4344
4537
  errors: errors,
4345
4538
  isIssuesPaneOpen: isIssuesPaneOpen,
4346
4539
  setIsIssuesPaneOpen: setIsIssuesPaneOpen
4347
- }))), /*#__PURE__*/React__default["default"].createElement(TafFormButtons, {
4540
+ }))), isEditor && /*#__PURE__*/React__default["default"].createElement(TafFormButtons, {
4348
4541
  isFormDisabled: isDisabled,
4349
4542
  tafAction: tafAction,
4350
4543
  canBe: tafFromBackend.canbe,
@@ -4355,8 +4548,12 @@
4355
4548
  name: field,
4356
4549
  key: field
4357
4550
  });
4358
- }), /*#__PURE__*/React__default["default"].createElement(DraftFieldHelper, null));
4359
- };
4551
+ }), /*#__PURE__*/React__default["default"].createElement(DraftFieldHelper, null)));
4552
+ }, function (prevProps, nextProps) {
4553
+ // prevent re-render
4554
+ return !nextProps.isDisabled && prevProps.tafFromBackend !== nextProps.tafFromBackend && // if editor changed it should rerender
4555
+ prevProps.tafFromBackend.editor === nextProps.tafFromBackend.editor;
4556
+ });
4360
4557
 
4361
4558
  /* *
4362
4559
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -4962,7 +5159,7 @@
4962
5159
  },
4963
5160
  position: 'absolute',
4964
5161
  right: '8px',
4965
- top: '30px'
5162
+ top: '48px'
4966
5163
  }
4967
5164
  }, /*#__PURE__*/React__namespace.createElement(theme.ListItem, null)), /*#__PURE__*/React__namespace.createElement(material.Dialog, {
4968
5165
  open: isOpen,
@@ -5075,7 +5272,8 @@
5075
5272
  paddingTop: '32px'
5076
5273
  }
5077
5274
  }, tafList.map(function (_a, index) {
5078
- var taf = _a.taf;
5275
+ var taf = _a.taf,
5276
+ editor = _a.editor;
5079
5277
  return /*#__PURE__*/React__namespace.createElement(material.MenuItem, {
5080
5278
  key: taf.uuid,
5081
5279
  selected: index === activeIndex,
@@ -5100,8 +5298,18 @@
5100
5298
  onClick: function onClick() {
5101
5299
  return onChangeTab(index);
5102
5300
  }
5103
- }, /*#__PURE__*/React__namespace.createElement(Box__default["default"], {
5301
+ }, editor && /*#__PURE__*/React__namespace.createElement(Box__default["default"], {
5302
+ sx: {
5303
+ position: 'absolute',
5304
+ top: '4px',
5305
+ left: '8px'
5306
+ }
5307
+ }, /*#__PURE__*/React__namespace.createElement(TafAvatar, {
5308
+ editor: editor,
5309
+ tooltipPlacement: "right"
5310
+ })), /*#__PURE__*/React__namespace.createElement(Box__default["default"], {
5104
5311
  component: "span",
5312
+ "data-testid": "taf-location",
5105
5313
  sx: {
5106
5314
  fontSize: '12px',
5107
5315
  fontWeight: '500',
@@ -5160,13 +5368,15 @@
5160
5368
  };
5161
5369
 
5162
5370
  var parseErrorMessage = function parseErrorMessage(error, params) {
5371
+ var message = shared.getErrorMessage(error);
5163
5372
  return params.changeStatusTo === 'CANCELLED' ? {
5164
5373
  type: 'CANCELLED',
5165
- title: 'Cancelling this TAF failed, please try again'
5374
+ title: 'Cancelling this TAF failed, please try again',
5375
+ message: message
5166
5376
  } : {
5167
5377
  type: 'SERVER',
5168
5378
  title: 'An error has occurred while saving, please try again',
5169
- message: shared.isAxiosError(error) ? shared.getAxiosErrorMessage(error) : error.message
5379
+ message: message
5170
5380
  };
5171
5381
  };
5172
5382
 
@@ -5251,18 +5461,22 @@
5251
5461
  postTaf = _c === void 0 ? function () {
5252
5462
  return null;
5253
5463
  } : _c,
5254
- _d = _a.isIssuesPaneOpen,
5255
- isIssuesPaneOpen = _d === void 0 ? false : _d,
5256
- _e = _a.setIsIssuesPaneOpen,
5257
- setIsIssuesPaneOpen = _e === void 0 ? function () {
5464
+ _d = _a.patchTaf,
5465
+ patchTaf = _d === void 0 ? function () {
5258
5466
  return null;
5259
- } : _e,
5260
- _f = _a.isFormDisabled,
5261
- isFormDisabled = _f === void 0 ? false : _f,
5262
- _g = _a.setIsFormDisabled,
5263
- setIsFormDisabled = _g === void 0 ? function () {
5467
+ } : _d,
5468
+ _e = _a.isIssuesPaneOpen,
5469
+ isIssuesPaneOpen = _e === void 0 ? false : _e,
5470
+ _f = _a.setIsIssuesPaneOpen,
5471
+ setIsIssuesPaneOpen = _f === void 0 ? function () {
5264
5472
  return null;
5265
- } : _g,
5473
+ } : _f,
5474
+ _g = _a.isFormDisabled,
5475
+ isFormDisabled = _g === void 0 ? false : _g,
5476
+ _h = _a.setIsFormDisabled,
5477
+ setIsFormDisabled = _h === void 0 ? function () {
5478
+ return null;
5479
+ } : _h,
5266
5480
  error = _a.error;
5267
5481
 
5268
5482
  var onTafAction = function onTafAction(action, taf) {
@@ -5389,7 +5603,8 @@
5389
5603
  isIssuesPaneOpen: isIssuesPaneOpen,
5390
5604
  setIsIssuesPaneOpen: setIsIssuesPaneOpen,
5391
5605
  isDisabled: isFormDisabled,
5392
- setIsDisabled: setIsFormDisabled
5606
+ setIsDisabled: setIsFormDisabled,
5607
+ onSwitchEditor: patchTaf
5393
5608
  })));
5394
5609
  };
5395
5610
 
@@ -5401,6 +5616,57 @@
5401
5616
  }, props));
5402
5617
  };
5403
5618
 
5619
+ /* *
5620
+ * Licensed under the Apache License, Version 2.0 (the "License");
5621
+ * you may not use this file except in compliance with the License.
5622
+ * You may obtain a copy of the License at
5623
+ *
5624
+ * http://www.apache.org/licenses/LICENSE-2.0
5625
+ *
5626
+ * Unless required by applicable law or agreed to in writing, software
5627
+ * distributed under the License is distributed on an "AS IS" BASIS,
5628
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5629
+ * See the License for the specific language governing permissions and
5630
+ * limitations under the License.
5631
+ *
5632
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
5633
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
5634
+ * */
5635
+ var getLastUpdateTitle = function getLastUpdateTitle(time) {
5636
+ return "Last updated " + time;
5637
+ };
5638
+
5639
+ var LastUpdateTime = function LastUpdateTime(_a) {
5640
+ var _b = _a.onUpdateTaf,
5641
+ onUpdateTaf = _b === void 0 ? function () {} : _b,
5642
+ lastUpdateTime = _a.lastUpdateTime;
5643
+ return /*#__PURE__*/React__default["default"].createElement(material.Box, {
5644
+ sx: {
5645
+ display: 'flex',
5646
+ alignItems: 'center',
5647
+ height: '100%',
5648
+ justifyContent: 'flex-end'
5649
+ }
5650
+ }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
5651
+ sx: {
5652
+ color: 'geowebColors.captions.captionStatus.rgba',
5653
+ fontSize: '10px',
5654
+ lineHeight: '1.6',
5655
+ letterSpacing: '0.33px'
5656
+ },
5657
+ "data-testid": "lastupdated-time"
5658
+ }, getLastUpdateTitle(lastUpdateTime)), /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
5659
+ title: "Click to refresh"
5660
+ }, /*#__PURE__*/React__default["default"].createElement(shared.ToolButton, {
5661
+ "data-testid": "updateTafBtn",
5662
+ onClick: onUpdateTaf,
5663
+ sx: {
5664
+ marginRight: 1,
5665
+ marginLeft: 1
5666
+ }
5667
+ }, /*#__PURE__*/React__default["default"].createElement(theme.Cached, null))));
5668
+ };
5669
+
5404
5670
  var CONFIRM_DIALOG_OPTIONS = {
5405
5671
  title: 'Whoops',
5406
5672
  description: "It's not possible to autosave this TAF due to the presence of issue(s). Are you sure you want to close this TAF? Any changes made will be lost.",
@@ -5410,8 +5676,9 @@
5410
5676
  var TafLayout = function TafLayout(_a) {
5411
5677
  var _b = _a.tafList,
5412
5678
  tafList = _b === void 0 ? [] : _b,
5413
- _c = _a.onPostTaf,
5414
- onPostTaf = _c === void 0 ? function () {} : _c;
5679
+ _c = _a.onUpdateTaf,
5680
+ onUpdateTaf = _c === void 0 ? function () {} : _c,
5681
+ lastUpdateTime = _a.lastUpdateTime;
5415
5682
  var api$1 = api.useApiContext().api;
5416
5683
  var confirmDialog = shared.useConfirmationDialog();
5417
5684
 
@@ -5424,39 +5691,46 @@
5424
5691
  var _e = usePostTafRequest(api$1.postTaf),
5425
5692
  isLoading = _e.isLoading,
5426
5693
  postTafRequest = _e.doRequest,
5427
- error = _e.error,
5428
- setError = _e.setError;
5694
+ postError = _e.error;
5695
+
5696
+ var _f = usePostTafRequest(api$1.patchTaf),
5697
+ patchTafRequest = _f.doRequest,
5698
+ patchError = _f.error;
5429
5699
 
5430
- var _f = useTafModuleContext(),
5431
- onValidateForm = _f.onValidateForm,
5432
- tafAction = _f.tafAction,
5433
- isFormDirty = _f.isFormDirty;
5700
+ var _g = useTafModuleContext(),
5701
+ onValidateForm = _g.onValidateForm,
5702
+ tafAction = _g.tafAction,
5703
+ isFormDirty = _g.isFormDirty;
5434
5704
 
5435
- var _g = __read(React__default["default"].useState(sortTafTimeSlots(tafList)), 2),
5436
- _h = _g[0],
5437
- upcoming = _h.upcoming,
5438
- current = _h.current,
5439
- expired = _h.expired,
5440
- updateSortedTafs = _g[1];
5705
+ var _h = __read(React__default["default"].useState(sortTafTimeSlots(tafList)), 2),
5706
+ _j = _h[0],
5707
+ upcoming = _j.upcoming,
5708
+ current = _j.current,
5709
+ expired = _j.expired,
5710
+ updateSortedTafs = _h[1];
5441
5711
 
5442
- var _j = __read(current.slice(-1), 1),
5443
- lastCurrentTaf = _j[0];
5712
+ var _k = __read(current.slice(-1), 1),
5713
+ lastCurrentTaf = _k[0];
5444
5714
 
5445
- var _k = __read(React__default["default"].useState('UPCOMING'), 2),
5446
- timeSlot = _k[0],
5447
- setTimeSlot = _k[1];
5715
+ var _l = __read(React__default["default"].useState('UPCOMING'), 2),
5716
+ timeSlot = _l[0],
5717
+ setTimeSlot = _l[1];
5448
5718
 
5449
- var _l = __read(React__default["default"].useState(upcoming), 2),
5450
- locations = _l[0],
5451
- setLocations = _l[1];
5719
+ var _m = __read(React__default["default"].useState(upcoming), 2),
5720
+ locations = _m[0],
5721
+ setLocations = _m[1];
5452
5722
 
5453
- var _m = __read(React__default["default"].useState(0), 2),
5454
- activeTafIndex = _m[0],
5455
- setActiveTafIndex = _m[1];
5723
+ var _o = __read(React__default["default"].useState(0), 2),
5724
+ activeTafIndex = _o[0],
5725
+ setActiveTafIndex = _o[1];
5456
5726
 
5457
- var _o = __read(React__default["default"].useState(false), 2),
5458
- isFormDisabled = _o[0],
5459
- setIsFormDisabled = _o[1];
5727
+ var _p = __read(React__default["default"].useState(false), 2),
5728
+ isFormDisabled = _p[0],
5729
+ setIsFormDisabled = _p[1];
5730
+
5731
+ var _q = __read(React__default["default"].useState(), 2),
5732
+ error = _q[0],
5733
+ setError = _q[1];
5460
5734
 
5461
5735
  var postTaf = function postTaf(data) {
5462
5736
  return __awaiter(void 0, void 0, void 0, function () {
@@ -5471,7 +5745,42 @@
5471
5745
  _a.sent(); // callback
5472
5746
 
5473
5747
 
5474
- onPostTaf();
5748
+ onUpdateTaf();
5749
+ return [2
5750
+ /*return*/
5751
+ ];
5752
+ }
5753
+ });
5754
+ });
5755
+ };
5756
+
5757
+ var patchTaf = function patchTaf(data) {
5758
+ return __awaiter(void 0, void 0, void 0, function () {
5759
+ return __generator(this, function (_a) {
5760
+ switch (_a.label) {
5761
+ case 0:
5762
+ _a.trys.push([0, 2,, 3]);
5763
+
5764
+ return [4
5765
+ /*yield*/
5766
+ , patchTafRequest(data)];
5767
+
5768
+ case 1:
5769
+ _a.sent(); // callback
5770
+
5771
+
5772
+ onUpdateTaf();
5773
+ return [2
5774
+ /*return*/
5775
+ , true];
5776
+
5777
+ case 2:
5778
+ _a.sent();
5779
+ return [2
5780
+ /*return*/
5781
+ , false];
5782
+
5783
+ case 3:
5475
5784
  return [2
5476
5785
  /*return*/
5477
5786
  ];
@@ -5573,7 +5882,8 @@
5573
5882
  setActiveTafIndex(newIndex); // eslint-disable-next-line react-hooks/exhaustive-deps
5574
5883
  }, [tafList, setLocations]);
5575
5884
  React__default["default"].useEffect(function () {
5576
- var cancelErrorTimeout = error && error.type === 'CANCELLED' ? setTimeout(function () {
5885
+ setError(postError);
5886
+ var cancelErrorTimeout = postError && postError.type === 'CANCELLED' ? setTimeout(function () {
5577
5887
  setError(null);
5578
5888
  }, 10000) : null;
5579
5889
  return function () {
@@ -5581,7 +5891,10 @@
5581
5891
  clearTimeout(cancelErrorTimeout);
5582
5892
  }
5583
5893
  };
5584
- }, [error, setError]);
5894
+ }, [postError]);
5895
+ React__default["default"].useEffect(function () {
5896
+ setError(patchError);
5897
+ }, [patchError]);
5585
5898
 
5586
5899
  if (!tafList) {
5587
5900
  return null;
@@ -5627,6 +5940,13 @@
5627
5940
  tafFromBackend: lastCurrentTaf,
5628
5941
  timeSlot: timeSlot,
5629
5942
  onChangeTimeSlot: onChangeTimeSlot
5943
+ })), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5944
+ item: true,
5945
+ xs: 12,
5946
+ sm: 3
5947
+ }, lastUpdateTime && /*#__PURE__*/React__default["default"].createElement(LastUpdateTime, {
5948
+ lastUpdateTime: lastUpdateTime,
5949
+ onUpdateTaf: onUpdateTaf
5630
5950
  }))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5631
5951
  container: true,
5632
5952
  flexGrow: 1,
@@ -5676,6 +5996,7 @@
5676
5996
  isFormDisabled: isFormDisabled,
5677
5997
  setIsFormDisabled: setIsFormDisabled,
5678
5998
  postTaf: postTaf,
5999
+ patchTaf: patchTaf,
5679
6000
  isLoading: isLoading,
5680
6001
  error: error
5681
6002
  });
@@ -5717,23 +6038,80 @@
5717
6038
  }, children)));
5718
6039
  };
5719
6040
 
6041
+ var getCurrentDate = function getCurrentDate() {
6042
+ return moment__default["default"].utc().format('HH:mm');
6043
+ };
6044
+
5720
6045
  var TafModule = function TafModule() {
5721
6046
  var api$1 = api.useApiContext().api;
5722
6047
 
5723
- var _a = api.useApi(api$1.getTafList),
5724
- getTafListError = _a.error,
5725
- isLoading = _a.isLoading,
5726
- tafList = _a.result,
5727
- fetchNewTafList = _a.fetchApiData;
6048
+ var _a = __read(React__namespace.useState([]), 2),
6049
+ tafList = _a[0],
6050
+ setTafList = _a[1];
5728
6051
 
5729
- shared.usePoller([tafList, getTafListError], function () {
5730
- return fetchNewTafList({});
5731
- });
6052
+ var _b = __read(React__namespace.useState(true), 2),
6053
+ isLoading = _b[0],
6054
+ setIsLoading = _b[1];
6055
+
6056
+ var _c = __read(React__namespace.useState(null), 2),
6057
+ getTafListError = _c[0],
6058
+ setError = _c[1];
6059
+
6060
+ var _d = __read(React__namespace.useState(), 2),
6061
+ lastUpdateTime = _d[0],
6062
+ setLastUpdateTime = _d[1];
6063
+
6064
+ var fetchNewTafList = function fetchNewTafList() {
6065
+ return __awaiter(void 0, void 0, void 0, function () {
6066
+ var result, error_1;
6067
+ return __generator(this, function (_a) {
6068
+ switch (_a.label) {
6069
+ case 0:
6070
+ setIsLoading(true);
6071
+ setError(null);
6072
+ _a.label = 1;
6073
+
6074
+ case 1:
6075
+ _a.trys.push([1, 3,, 4]);
6076
+
6077
+ return [4
6078
+ /*yield*/
6079
+ , api$1.getTafList()];
6080
+
6081
+ case 2:
6082
+ result = _a.sent();
6083
+ setTafList(result.data);
6084
+ setIsLoading(false);
6085
+ setLastUpdateTime(getCurrentDate());
6086
+ return [3
6087
+ /*break*/
6088
+ , 4];
5732
6089
 
5733
- var onPostTaf = function onPostTaf() {
5734
- fetchNewTafList({});
6090
+ case 3:
6091
+ error_1 = _a.sent();
6092
+ setError(error_1);
6093
+ setIsLoading(false);
6094
+ return [3
6095
+ /*break*/
6096
+ , 4];
6097
+
6098
+ case 4:
6099
+ return [2
6100
+ /*return*/
6101
+ ];
6102
+ }
6103
+ });
6104
+ });
5735
6105
  };
5736
6106
 
6107
+ var onUpdateTaf = function onUpdateTaf() {
6108
+ fetchNewTafList();
6109
+ };
6110
+
6111
+ React__namespace.useEffect(function () {
6112
+ fetchNewTafList(); // eslint-disable-next-line react-hooks/exhaustive-deps
6113
+ }, []);
6114
+ shared.usePoller([tafList, getTafListError], fetchNewTafList);
5737
6115
  var hasTafListError = getTafListError !== null;
5738
6116
  return /*#__PURE__*/React__namespace.createElement(material.Box, {
5739
6117
  component: "div",
@@ -5758,7 +6136,8 @@
5758
6136
  }
5759
6137
  }), /*#__PURE__*/React__namespace.createElement(TafLayout, {
5760
6138
  tafList: tafList,
5761
- onPostTaf: onPostTaf
6139
+ onUpdateTaf: onUpdateTaf,
6140
+ lastUpdateTime: lastUpdateTime
5762
6141
  }));
5763
6142
  };
5764
6143
 
@@ -5780,10 +6159,32 @@
5780
6159
  return axiosInstance.post.apply(axiosInstance, __spreadArray(['/taf2tac'], __read(__spreadArray([__assign({}, tafData)], __read(signal ? [{
5781
6160
  signal: signal
5782
6161
  }] : [])))));
6162
+ },
6163
+ patchTaf: function patchTaf(formData) {
6164
+ return axiosInstance.patch('/taf', __assign({}, formData));
5783
6165
  }
5784
6166
  };
5785
6167
  };
5786
6168
 
6169
+ /* *
6170
+ * Licensed under the Apache License, Version 2.0 (the "License");
6171
+ * you may not use this file except in compliance with the License.
6172
+ * You may obtain a copy of the License at
6173
+ *
6174
+ * http://www.apache.org/licenses/LICENSE-2.0
6175
+ *
6176
+ * Unless required by applicable law or agreed to in writing, software
6177
+ * distributed under the License is distributed on an "AS IS" BASIS,
6178
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6179
+ * See the License for the specific language governing permissions and
6180
+ * limitations under the License.
6181
+ *
6182
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6183
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
6184
+ * */
6185
+
6186
+ var MOCK_USERNAME = 'user.name';
6187
+
5787
6188
  var currentDate = moment__default["default"].utc().format('YYYY-MM-DD');
5788
6189
  var tomorrowDate = moment__default["default"].utc().add(1, 'day').format('YYYY-MM-DD');
5789
6190
  var airportPeriod = 6;
@@ -5819,6 +6220,7 @@
5819
6220
  var fakeTafList = [{
5820
6221
  creationDate: upcomingValidDateStart,
5821
6222
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6223
+ editor: MOCK_USERNAME,
5822
6224
  taf: {
5823
6225
  uuid: '5f9583fjdf0f337925',
5824
6226
  baseTime: upcomingValidDateStart,
@@ -5838,6 +6240,7 @@
5838
6240
  }, {
5839
6241
  creationDate: upcomingValidDateStart,
5840
6242
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6243
+ editor: null,
5841
6244
  taf: {
5842
6245
  uuid: '5f9583fjd111137925',
5843
6246
  baseTime: upcomingValidDateStart,
@@ -5863,6 +6266,7 @@
5863
6266
  }, {
5864
6267
  creationDate: upcomingValidDateStart,
5865
6268
  canbe: ['CANCELLED', 'AMENDED', 'DISCARDED'],
6269
+ editor: null,
5866
6270
  taf: {
5867
6271
  uuid: '754905485',
5868
6272
  baseTime: upcomingValidDateStart,
@@ -5920,6 +6324,7 @@
5920
6324
  }, {
5921
6325
  creationDate: upcomingValidDateStart,
5922
6326
  canbe: ['CANCELLED', 'AMENDED', 'CORRECTED'],
6327
+ editor: MOCK_USERNAME,
5923
6328
  taf: {
5924
6329
  uuid: '43545345345',
5925
6330
  issueDate: upcomingValidDateStart,
@@ -5990,6 +6395,7 @@
5990
6395
  }, {
5991
6396
  creationDate: upcomingValidDateStart,
5992
6397
  canbe: ['CANCELLED', 'AMENDED', 'CORRECTED'],
6398
+ editor: null,
5993
6399
  taf: {
5994
6400
  uuid: '5f9583fjdf45ff4330f337925',
5995
6401
  issueDate: upcomingValidDateStart,
@@ -6045,6 +6451,7 @@
6045
6451
  }, {
6046
6452
  creationDate: upcomingValidDateStart,
6047
6453
  canbe: ['AMENDED'],
6454
+ editor: null,
6048
6455
  taf: {
6049
6456
  uuid: '5464565464',
6050
6457
  previousId: '5445fghrfg3546456',
@@ -6086,6 +6493,7 @@
6086
6493
  }, {
6087
6494
  creationDate: upcomingValidDateStart,
6088
6495
  canbe: ['CANCELLED', 'AMENDED', 'CORRECTED'],
6496
+ editor: 'max.jansen',
6089
6497
  taf: {
6090
6498
  uuid: 'gh56734fghfgh',
6091
6499
  previousId: '8574jnf93475',
@@ -6127,6 +6535,7 @@
6127
6535
  }, {
6128
6536
  creationDate: currentValidDateStart,
6129
6537
  canbe: ['CANCELLED', 'AMENDED', 'CORRECTED'],
6538
+ editor: null,
6130
6539
  taf: {
6131
6540
  uuid: 'giskdj09845872039',
6132
6541
  issueDate: currentValidDateStart,
@@ -6166,6 +6575,7 @@
6166
6575
  }, {
6167
6576
  creationDate: currentValidDateStart,
6168
6577
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6578
+ editor: null,
6169
6579
  taf: {
6170
6580
  uuid: 'ghskdj09845872039',
6171
6581
  baseTime: currentValidDateStart,
@@ -6185,6 +6595,7 @@
6185
6595
  }, {
6186
6596
  creationDate: currentValidDateStart,
6187
6597
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6598
+ editor: null,
6188
6599
  taf: {
6189
6600
  uuid: 'ghskdj09845872040',
6190
6601
  issueDate: currentValidDateStart,
@@ -6205,6 +6616,7 @@
6205
6616
  }, {
6206
6617
  creationDate: currentDate + "T06:00:00Z",
6207
6618
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6619
+ editor: null,
6208
6620
  taf: {
6209
6621
  uuid: 'ghskdj09845872041',
6210
6622
  issueDate: currentValidDateStart,
@@ -6225,6 +6637,7 @@
6225
6637
  }, {
6226
6638
  creationDate: currentDate + "T06:00:00Z",
6227
6639
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6640
+ editor: null,
6228
6641
  taf: {
6229
6642
  uuid: 'ghskdj09845872042',
6230
6643
  issueDate: currentValidDateStart,
@@ -6245,6 +6658,7 @@
6245
6658
  }, {
6246
6659
  creationDate: currentDate + "T06:00:00Z",
6247
6660
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6661
+ editor: null,
6248
6662
  taf: {
6249
6663
  uuid: 'ghskdj09845872043',
6250
6664
  issueDate: currentValidDateStart,
@@ -6265,6 +6679,7 @@
6265
6679
  }, {
6266
6680
  creationDate: expiredValidDateStart,
6267
6681
  canbe: [],
6682
+ editor: null,
6268
6683
  taf: {
6269
6684
  uuid: 'sdkjhsdf90845890',
6270
6685
  issueDate: expiredValidDateStart,
@@ -6329,6 +6744,7 @@
6329
6744
  var fakeNewTaf = {
6330
6745
  creationDate: currentDate + "T12:00:00Z",
6331
6746
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6747
+ editor: null,
6332
6748
  taf: {
6333
6749
  type: 'NORMAL',
6334
6750
  messageType: 'ORG',
@@ -6349,6 +6765,7 @@
6349
6765
  ({
6350
6766
  creationDate: "2022-01-06T12:00:00Z",
6351
6767
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6768
+ editor: MOCK_USERNAME,
6352
6769
  taf: __assign(__assign({}, fakeNewTaf.taf), {
6353
6770
  baseTime: "2022-01-06T12:00:00Z",
6354
6771
  validDateStart: "2022-01-06T12:00:00Z",
@@ -6364,6 +6781,7 @@
6364
6781
  var fakePublishedTaf = {
6365
6782
  creationDate: currentDate + "T12:00:00Z",
6366
6783
  canbe: ['CANCELLED', 'AMENDED', 'CORRECTED'],
6784
+ editor: null,
6367
6785
  taf: {
6368
6786
  uuid: 'slsdkjg-023895',
6369
6787
  issueDate: currentDate + "T12:00:00Z",
@@ -6439,7 +6857,9 @@
6439
6857
  ({
6440
6858
  creationDate: "2022-01-06T12:00:00Z",
6441
6859
  canbe: ['CANCELLED', 'AMENDED', 'CORRECTED'],
6860
+ editor: MOCK_USERNAME,
6442
6861
  taf: __assign(__assign({}, fakePublishedTaf.taf), {
6862
+ uuid: 'sowi3u4o-lsdjflsk',
6443
6863
  location: 'EHGG',
6444
6864
  baseTime: "2022-01-06T12:00:00Z",
6445
6865
  issueDate: "2022-01-06T12:00:00Z",
@@ -6504,6 +6924,7 @@
6504
6924
  var fakeDraftTaf = {
6505
6925
  creationDate: currentDate + "T18:00:00Z",
6506
6926
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6927
+ editor: null,
6507
6928
  taf: {
6508
6929
  uuid: '5f9583fjdf0f337925',
6509
6930
  baseTime: currentDate + "T18:00:00Z",
@@ -6542,6 +6963,7 @@
6542
6963
  ({
6543
6964
  creationDate: "2022-01-06T18:00:00Z",
6544
6965
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6966
+ editor: MOCK_USERNAME,
6545
6967
  taf: __assign(__assign({}, fakeDraftTaf.taf), {
6546
6968
  baseTime: "2022-01-06T18:00:00Z",
6547
6969
  validDateStart: "2022-01-06T18:00:00Z",
@@ -6557,6 +6979,7 @@
6557
6979
  var fakeDraftAmendmentTaf = {
6558
6980
  creationDate: currentDate + "T14:00:00Z",
6559
6981
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
6982
+ editor: null,
6560
6983
  taf: {
6561
6984
  uuid: '954905487',
6562
6985
  previousId: '5f9583fjdf45ff4330f337925',
@@ -6617,6 +7040,7 @@
6617
7040
  ({
6618
7041
  creationDate: "2022-01-06T14:00:00Z",
6619
7042
  canbe: ['DRAFTED', 'DISCARDED', 'PUBLISHED'],
7043
+ editor: null,
6620
7044
  taf: __assign(__assign({}, fakeDraftAmendmentTaf.taf), {
6621
7045
  location: 'EHRD',
6622
7046
  issueDate: "2022-01-06T14:00:00Z",
@@ -6637,6 +7061,7 @@
6637
7061
  var fakeAmendmentTaf = {
6638
7062
  creationDate: currentDate + "T14:00:00Z",
6639
7063
  canbe: ['CANCELLED', 'CORRECTED', 'AMENDED'],
7064
+ editor: null,
6640
7065
  taf: {
6641
7066
  uuid: '754905486',
6642
7067
  previousId: '5f9583fjdf45ff4330f337925',
@@ -6680,6 +7105,7 @@
6680
7105
  ({
6681
7106
  creationDate: "2022-01-06T14:00:00Z",
6682
7107
  canbe: ['CANCELLED', 'CORRECTED', 'AMENDED'],
7108
+ editor: MOCK_USERNAME,
6683
7109
  taf: __assign(__assign({}, fakeAmendmentTaf.taf), {
6684
7110
  uuid: '7549058980',
6685
7111
  issueDate: "2022-01-06T14:00:00Z",
@@ -6717,6 +7143,14 @@
6717
7143
  });
6718
7144
  };
6719
7145
 
7146
+ var fakeUpdatedTafList = __spreadArray([], __read(fakeTafList));
7147
+
7148
+ var setFakeUpdatedList = function setFakeUpdatedList(newList) {
7149
+ fakeUpdatedTafList = newList;
7150
+ };
7151
+ var getFakeUpdatedList = function getFakeUpdatedList() {
7152
+ return fakeUpdatedTafList;
7153
+ };
6720
7154
  var fakeAxiosInstance = {
6721
7155
  // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/explicit-module-boundary-types
6722
7156
  get: function get(_url, _params) {
@@ -6725,6 +7159,10 @@
6725
7159
  // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/explicit-module-boundary-types
6726
7160
  post: function post(_url, _params, _signal) {
6727
7161
  return fakePromise(false, _signal);
7162
+ },
7163
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/explicit-module-boundary-types
7164
+ patch: function patch(_url, _params, _signal) {
7165
+ return fakePromise(false, _signal);
6728
7166
  }
6729
7167
  };
6730
7168
  var createApi = function createApi() {
@@ -6734,7 +7172,7 @@
6734
7172
  console.log('Retrieving new TAF list');
6735
7173
  return fakeAxiosInstance.get('/taflist').then(function () {
6736
7174
  return {
6737
- data: __spreadArray([], __read(fakeTafList))
7175
+ data: getFakeUpdatedList()
6738
7176
  };
6739
7177
  });
6740
7178
  },
@@ -6753,6 +7191,21 @@
6753
7191
  data: fakeTafTac
6754
7192
  };
6755
7193
  });
7194
+ },
7195
+ patchTaf: function patchTaf(_patchTaf) {
7196
+ var updatedList = getFakeUpdatedList().map(function (tafFromBackend) {
7197
+ if (tafFromBackend.taf.uuid === _patchTaf.taf.uuid) {
7198
+ return __assign(__assign({}, tafFromBackend), {
7199
+ editor: _patchTaf.editor
7200
+ });
7201
+ }
7202
+
7203
+ return tafFromBackend;
7204
+ });
7205
+ setFakeUpdatedList(updatedList); // eslint-disable-next-line no-console
7206
+
7207
+ console.log("The new editor of the taf will be " + (_patchTaf.editor || 'empty'));
7208
+ return fakeAxiosInstance.patch('/taf', _patchTaf);
6756
7209
  }
6757
7210
  };
6758
7211
  };