@opengeoweb/taf 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +2 -2
  2. package/index.d.ts +1 -3
  3. package/index.esm.js +1470 -1287
  4. package/index.umd.js +1572 -1287
  5. package/lib/TafDemo.stories.d.ts +2 -2
  6. package/lib/components/IssuesPane/IssuesButton.d.ts +8 -2
  7. package/lib/components/IssuesPane/IssuesPane.d.ts +5 -0
  8. package/lib/components/IssuesPane/IssuesPane.stories.d.ts +12 -3
  9. package/lib/components/Spinner/Spinner.d.ts +2 -1
  10. package/lib/components/{TafLayout → StatusIcon}/StatusIcon.d.ts +0 -0
  11. package/lib/components/{TafLayout → StatusIcon}/StatusIcon.spec.d.ts +0 -0
  12. package/lib/components/{TafLayout/TabPanel → TabPanel}/TabPanel.d.ts +0 -0
  13. package/lib/components/{TafLayout/TabPanel → TabPanel}/TabPanel.spec.d.ts +0 -0
  14. package/lib/components/{TafLayout/TabPanel → TabPanel}/index.d.ts +0 -0
  15. package/lib/components/TafForm/TafForm.d.ts +1 -19
  16. package/lib/components/TafForm/TafFormButtons/TafFormButtons.d.ts +5 -9
  17. package/lib/components/TafForm/TafFormRow/{change.d.ts → validations/change.d.ts} +0 -0
  18. package/lib/components/TafForm/TafFormRow/{change.spec.d.ts → validations/change.spec.d.ts} +0 -0
  19. package/lib/components/TafForm/TafFormRow/{clouds.d.ts → validations/clouds.d.ts} +1 -1
  20. package/lib/components/TafForm/TafFormRow/{clouds.spec.d.ts → validations/clouds.spec.d.ts} +0 -0
  21. package/lib/components/TafForm/TafFormRow/{probability.d.ts → validations/probability.d.ts} +0 -0
  22. package/lib/components/TafForm/TafFormRow/{probability.spec.d.ts → validations/probability.spec.d.ts} +0 -0
  23. package/lib/components/TafForm/TafFormRow/{utils.d.ts → validations/utils.d.ts} +0 -0
  24. package/lib/components/TafForm/TafFormRow/{utils.spec.d.ts → validations/utils.spec.d.ts} +0 -0
  25. package/lib/components/TafForm/TafFormRow/{validField.d.ts → validations/validField.d.ts} +1 -1
  26. package/lib/components/TafForm/TafFormRow/{validField.spec.d.ts → validations/validField.spec.d.ts} +0 -0
  27. package/lib/components/TafForm/TafFormRow/{visibility.d.ts → validations/visibility.d.ts} +1 -1
  28. package/lib/components/TafForm/TafFormRow/{visibility.spec.d.ts → validations/visibility.spec.d.ts} +0 -0
  29. package/lib/components/TafForm/TafFormRow/{weather.d.ts → validations/weather.d.ts} +1 -1
  30. package/lib/components/TafForm/TafFormRow/{weather.spec.d.ts → validations/weather.spec.d.ts} +0 -0
  31. package/lib/components/TafForm/TafFormRow/{wind.d.ts → validations/wind.d.ts} +1 -1
  32. package/lib/components/TafForm/TafFormRow/{wind.spec.d.ts → validations/wind.spec.d.ts} +0 -0
  33. package/lib/components/TafForm/TafFormWrapper.d.ts +3 -6
  34. package/lib/components/TafForm/index.d.ts +0 -1
  35. package/lib/components/TafForm/utils.d.ts +21 -0
  36. package/lib/components/{TafLayout → TafHeader}/TafHeader.d.ts +0 -0
  37. package/lib/components/{TafLayout → TafHeader}/TafHeader.spec.d.ts +0 -0
  38. package/lib/components/TafLayout/TacOverview/TacContainer.d.ts +3 -4
  39. package/lib/components/TafLayout/TacOverview/TacOverview.d.ts +2 -0
  40. package/lib/components/TafLayout/TacOverview/TacOverview.stories.d.ts +2 -0
  41. package/lib/components/TafLayout/TacOverview/TacOverviewMobile.d.ts +11 -0
  42. package/lib/components/{ContentDialog/ContentDialog.spec.d.ts → TafLayout/TacOverview/TacOverviewMobile.spec.d.ts} +0 -0
  43. package/lib/components/TafLayout/TacOverview/TacOverviewMobile.stories.d.ts +23 -0
  44. package/lib/components/TafLayout/TacOverview/index.d.ts +1 -0
  45. package/lib/components/TafLayout/TafLayout.d.ts +1 -0
  46. package/lib/components/{TafForm/TafFormDialog/TafFormDialog.spec.d.ts → TafLayout/TafLayout.spec.d.ts} +0 -0
  47. package/lib/components/TafLayout/TafPanel/TafPanel.d.ts +10 -0
  48. package/lib/components/{TafList/TafList.spec.d.ts → TafLayout/TafPanel/TafPanel.spec.d.ts} +0 -0
  49. package/lib/components/TafLayout/TafPanel/index.d.ts +1 -0
  50. package/lib/components/TafModule/TafModule.d.ts +3 -0
  51. package/lib/components/{TafList/TafListAccordion.spec.d.ts → TafModule/TafModule.spec.d.ts} +0 -0
  52. package/lib/components/TafModule/TafModule.stories.d.ts +9 -0
  53. package/lib/components/TafModule/index.d.ts +1 -0
  54. package/lib/types.d.ts +2 -1
  55. package/lib/utils/__mocks__/api.d.ts +1 -0
  56. package/lib/utils/fakeApi.d.ts +1 -1
  57. package/lib/utils/mockdata/fakeTafList.d.ts +1 -0
  58. package/lib/utils/testUtils.d.ts +1 -10
  59. package/package.json +7 -6
  60. package/lib/components/ContentDialog/ContentDialog.d.ts +0 -14
  61. package/lib/components/ContentDialog/ContentDialog.stories.d.ts +0 -7
  62. package/lib/components/ContentDialog/index.d.ts +0 -1
  63. package/lib/components/IssuesPane/IssuesPane.styles.d.ts +0 -1
  64. package/lib/components/TafForm/TafFormDialog/TafFormDialog.d.ts +0 -12
  65. package/lib/components/TafForm/TafFormDialog/TafFormDialog.stories.d.ts +0 -9
  66. package/lib/components/TafList/TafList.d.ts +0 -11
  67. package/lib/components/TafList/TafList.stories.d.ts +0 -8
  68. package/lib/components/TafList/TafListAccordion.d.ts +0 -11
  69. package/lib/components/TafList/TafListButtons.d.ts +0 -10
  70. package/lib/components/TafList/TafListButtons.spec.d.ts +0 -1
  71. package/lib/components/TafList/TafListRow.d.ts +0 -12
  72. package/lib/components/TafList/TafListRow.spec.d.ts +0 -1
  73. package/lib/components/TafList/TafListSection.d.ts +0 -12
  74. package/lib/components/TafList/TafListSection.spec.d.ts +0 -1
  75. package/lib/components/TafList/TafListSection.stories.d.ts +0 -18
  76. package/lib/components/TafList/index.d.ts +0 -3
  77. package/lib/components/TafList/utils.d.ts +0 -4
  78. package/lib/components/TafList/utils.spec.d.ts +0 -1
  79. package/lib/components/TafWrapper/TafWrapper.d.ts +0 -13
  80. package/lib/components/TafWrapper/TafWrapper.spec.d.ts +0 -1
  81. package/lib/components/TafWrapper/index.d.ts +0 -1
  82. package/lib/utils/utils.d.ts +0 -3
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('@mui/styles/makeStyles'), require('moment'), require('@opengeoweb/shared'), require('@mui/icons-material'), require('@opengeoweb/api'), require('@opengeoweb/form-fields'), require('react-hook-form'), require('react-sortablejs'), require('lodash')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'react', '@mui/material', '@mui/styles/makeStyles', 'moment', '@opengeoweb/shared', '@mui/icons-material', '@opengeoweb/api', '@opengeoweb/form-fields', 'react-hook-form', 'react-sortablejs', 'lodash'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Taf = {}, global.React, global.material, global.makeStyles, global.moment, global.shared, global.iconsMaterial, global.api, global.formFields, global.reactHookForm, global.reactSortablejs, global.lodash));
5
- })(this, (function (exports, React, material, makeStyles, moment, shared, iconsMaterial, api, formFields, reactHookForm, reactSortablejs, lodash) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('@opengeoweb/form-fields'), require('@mui/material'), require('react-hook-form'), require('react-sortablejs'), require('@opengeoweb/api'), require('@opengeoweb/shared'), require('moment'), require('lodash'), require('@mui/styles/makeStyles'), require('@mui/icons-material'), require('react-dom'), require('@mui/material/LinearProgress'), require('@mui/icons-material/DoDisturb'), require('@mui/material/Box')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'react', '@opengeoweb/form-fields', '@mui/material', 'react-hook-form', 'react-sortablejs', '@opengeoweb/api', '@opengeoweb/shared', 'moment', 'lodash', '@mui/styles/makeStyles', '@mui/icons-material', 'react-dom', '@mui/material/LinearProgress', '@mui/icons-material/DoDisturb', '@mui/material/Box'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Taf = {}, global.React, global.formFields, global.material, global.reactHookForm, global.reactSortablejs, global.api, global.shared, global.moment, global.lodash, global.makeStyles, global.iconsMaterial, global.ReactDOM, global.LinearProgress, global.DoDisturbIcon, global.Box));
5
+ })(this, (function (exports, React, formFields, material, reactHookForm, reactSortablejs, api, shared, moment, lodash, makeStyles, iconsMaterial, ReactDOM, LinearProgress, DoDisturbIcon, Box) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -26,8 +26,12 @@
26
26
 
27
27
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
28
28
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
- var makeStyles__default = /*#__PURE__*/_interopDefaultLegacy(makeStyles);
30
29
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
30
+ var makeStyles__default = /*#__PURE__*/_interopDefaultLegacy(makeStyles);
31
+ var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
32
+ var LinearProgress__default = /*#__PURE__*/_interopDefaultLegacy(LinearProgress);
33
+ var DoDisturbIcon__default = /*#__PURE__*/_interopDefaultLegacy(DoDisturbIcon);
34
+ var Box__default = /*#__PURE__*/_interopDefaultLegacy(Box);
31
35
 
32
36
  /*! *****************************************************************************
33
37
  Copyright (c) Microsoft Corporation.
@@ -105,18 +109,6 @@
105
109
  }
106
110
  }
107
111
 
108
- function __values(o) {
109
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
110
- if (m) return m.call(o);
111
- if (o && typeof o.length === "number") return {
112
- next: function () {
113
- if (o && i >= o.length) o = void 0;
114
- return { value: o && o[i++], done: !o };
115
- }
116
- };
117
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
118
- }
119
-
120
112
  function __read(o, n) {
121
113
  var m = typeof Symbol === "function" && o[Symbol.iterator];
122
114
  if (!m) return o;
@@ -144,77 +136,6 @@
144
136
  return to.concat(ar || Array.prototype.slice.call(from));
145
137
  }
146
138
 
147
- /* *
148
- * Licensed under the Apache License, Version 2.0 (the "License");
149
- * you may not use this file except in compliance with the License.
150
- * You may obtain a copy of the License at
151
- *
152
- * http://www.apache.org/licenses/LICENSE-2.0
153
- *
154
- * Unless required by applicable law or agreed to in writing, software
155
- * distributed under the License is distributed on an "AS IS" BASIS,
156
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
157
- * See the License for the specific language governing permissions and
158
- * limitations under the License.
159
- *
160
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
161
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
162
- * */
163
- var useTafSettings = function useTafSettings( // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types
164
- tafConfig) {
165
- var locations = tafConfig.locations;
166
- return {
167
- locations: locations
168
- };
169
- };
170
-
171
- var location_indicator_mwo = "EHDB";
172
- var locations = {
173
- EHAM: {
174
- validity_duration: 30,
175
- activity_period: 6,
176
- label: "Schiphol"
177
- },
178
- EHRD: {
179
- validity_duration: 30,
180
- activity_period: 6,
181
- label: "Rotterdam"
182
- },
183
- EHGG: {
184
- validity_duration: 30,
185
- activity_period: 6,
186
- label: "Eelde"
187
- },
188
- EHBK: {
189
- validity_duration: 30,
190
- activity_period: 6,
191
- label: "Maastricht"
192
- },
193
- EHLE: {
194
- validity_duration: 30,
195
- activity_period: 6,
196
- label: "Lelystad"
197
- },
198
- TNCB: {
199
- validity_duration: 30,
200
- activity_period: 6,
201
- label: "Bonaire"
202
- }
203
- };
204
- var locationOrder = [
205
- "EHAM",
206
- "EHRD",
207
- "EHLE",
208
- "EHGG",
209
- "EHBK",
210
- "TNCB"
211
- ];
212
- var tafConfig = {
213
- location_indicator_mwo: location_indicator_mwo,
214
- locations: locations,
215
- locationOrder: locationOrder
216
- };
217
-
218
139
  function _typeof(obj) {
219
140
  "@babel/helpers - typeof";
220
141
 
@@ -2473,6 +2394,7 @@
2473
2394
  if (action === 'PUBLISH') return 'Publish';
2474
2395
  if (action === 'AMEND') return 'This TAF is an amendment';
2475
2396
  if (action === 'CORRECT') return 'This TAF is a correction';
2397
+ if (action === 'CANCEL') return 'Cancel TAF';
2476
2398
  return 'Cancel TAF';
2477
2399
  }; // Check if the amended/corrected TAF has been changed. Only compare the fields users are able to fill in
2478
2400
  // (i.e. exclude baseforecast valid time as that gets updated when doing an amendment automatically outside of the users influence)
@@ -2514,90 +2436,179 @@
2514
2436
  return 'Discard';
2515
2437
  }
2516
2438
 
2439
+ case 'CANCEL':
2440
+ return 'Cancel';
2441
+
2517
2442
  default:
2518
2443
  {
2519
2444
  return 'Publish';
2520
2445
  }
2521
2446
  }
2522
2447
  };
2448
+ var emptyChangegroup = {
2449
+ valid: '',
2450
+ wind: '',
2451
+ visibility: '',
2452
+ weather: {
2453
+ weather1: null,
2454
+ weather2: null,
2455
+ weather3: null
2456
+ },
2457
+ cloud: {
2458
+ cloud1: null,
2459
+ cloud2: null,
2460
+ cloud3: null,
2461
+ cloud4: null
2462
+ },
2463
+ change: null,
2464
+ probability: null
2465
+ };
2466
+ var getTafStatusLabel = function getTafStatusLabel(status) {
2467
+ switch (status) {
2468
+ case 'DRAFT_AMENDED':
2469
+ return 'draft amended';
2523
2470
 
2524
- var getTafErrors = function getTafErrors(name, errors) {
2525
- var nameAsArray = name.split('.');
2471
+ case 'DRAFT_CORRECTED':
2472
+ return 'draft corrected';
2526
2473
 
2527
- if (nameAsArray[0].includes('changeGroups')) {
2528
- if (errors.changeGroups) {
2529
- var changeGroupNum = nameAsArray[0].slice(13, nameAsArray[0].length - 1);
2530
- var restArray = nameAsArray.slice(1);
2531
- return formFields.getDeepProperty(restArray, errors.changeGroups[changeGroupNum]);
2532
- } // No changegroup errors
2474
+ default:
2475
+ return status.toLocaleLowerCase();
2476
+ }
2477
+ };
2478
+ var getMessageType = function getMessageType(taf, tafAction) {
2479
+ if (tafAction === 'CORRECT') {
2480
+ return 'COR';
2481
+ }
2482
+
2483
+ if (tafAction === 'AMEND') {
2484
+ return 'AMD';
2485
+ }
2533
2486
 
2487
+ return taf.messageType;
2488
+ }; // For corrections and amendment we need to add the previousValidStart and End for the TAC converter
2534
2489
 
2535
- return null;
2490
+ var getAmendedCorrectedTafTimes = function getAmendedCorrectedTafTimes(taf, tafAction) {
2491
+ var previousValidDateStart = taf.previousValidDateStart && tafAction !== 'AMEND' ? taf.previousValidDateStart : taf.validDateStart;
2492
+ var previousValidDateEnd = taf.previousValidDateEnd && tafAction !== 'AMEND' ? taf.previousValidDateEnd : taf.validDateEnd; // For amendment change valid start time to current time
2493
+ // only do this if we're already within the validity period
2494
+
2495
+ if ((tafAction === 'AMEND' || tafAction === 'DRAFT_AMEND') && moment__default["default"].utc() >= moment__default["default"].utc(taf.validDateStart)) {
2496
+ var now = moment__default["default"].utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
2497
+ var validObj = {
2498
+ start: now,
2499
+ end: taf.baseForecast.valid.end
2500
+ };
2501
+ return __assign(__assign({}, taf), {
2502
+ previousValidDateStart: previousValidDateStart,
2503
+ previousValidDateEnd: previousValidDateEnd,
2504
+ validDateStart: now,
2505
+ baseForecast: __assign(__assign({}, taf.baseForecast), {
2506
+ valid: validObj
2507
+ })
2508
+ });
2536
2509
  }
2537
2510
 
2538
- return formFields.getDeepProperty(nameAsArray, errors);
2511
+ return __assign(__assign({}, taf), {
2512
+ previousValidDateStart: previousValidDateStart,
2513
+ previousValidDateEnd: previousValidDateEnd
2514
+ });
2539
2515
  };
2516
+ var prepareTafValues = function prepareTafValues(_taf, tafAction, addEmptyChangeGroup) {
2517
+ if (addEmptyChangeGroup === void 0) {
2518
+ addEmptyChangeGroup = false;
2519
+ } // If action is AMEND/CORRECT/DRAFT_AMEND/DRAFT_CORRECTION - add previous valid start and end
2520
+ // If action is AMEND/DRAFT_AMEND - update validity start time to current time
2540
2521
 
2541
- var getDisplayValue = function getDisplayValue(value, disabled) {
2542
- return disabled && !value ? '-' : value;
2522
+
2523
+ var taf = tafAction === 'AMEND' || tafAction === 'DRAFT_AMEND' || tafAction === 'CORRECT' || tafAction === 'DRAFT_CORRECT' ? getAmendedCorrectedTafTimes(_taf, tafAction) : _taf;
2524
+ return __assign(__assign(__assign(__assign({}, taf), {
2525
+ messageType: getMessageType(taf, tafAction),
2526
+ baseForecast: formatFormValues(taf.baseForecast)
2527
+ }), taf.changeGroups && {
2528
+ changeGroups: taf.changeGroups.map(formatFormValues)
2529
+ }), addEmptyChangeGroup && {
2530
+ changeGroups: [emptyChangegroup]
2531
+ });
2543
2532
  };
2544
- var useStyles$8 = makeStyles__default["default"](function (theme) {
2533
+
2534
+ var textFieldStyle = function textFieldStyle(theme) {
2545
2535
  return {
2546
- textFieldInput: {
2547
- height: 46,
2548
- width: 56,
2536
+ // input
2537
+ marginRight: '2px',
2538
+ marginBottom: '4px',
2539
+ width: 56,
2540
+ height: 46,
2541
+ input: {
2549
2542
  textAlign: 'center',
2550
2543
  fontSize: 10,
2551
2544
  fontWeight: 500,
2552
2545
  paddingLeft: 0,
2553
2546
  paddingRight: 0,
2554
- marginBotom: '2px',
2555
2547
  '&.Mui-disabled': {
2556
- '-webkit-text-fill-color': theme.palette.geowebColors.typographyAndIcons.text,
2557
- color: theme.palette.geowebColors.typographyAndIcons.text,
2558
- '&:before': {
2559
- border: 'none'
2560
- }
2548
+ color: 'geowebColors.typographyAndIcons.text',
2549
+ WebkitTextFillColor: theme.palette.geowebColors.typographyAndIcons.text
2550
+ },
2551
+ // TODO: https://gitlab.com/opengeoweb/opengeoweb/-/issues/1995 disables the default autofill styling, should be a better fix
2552
+ '&:-webkit-autofill': {
2553
+ WebkitTransitionDelay: '86400s' // 1 day delay
2554
+
2561
2555
  }
2562
2556
  },
2563
- textFieldLabel: {
2557
+ label: {
2558
+ transformOrigin: 'center top',
2559
+ right: 0,
2560
+ textAlign: 'center',
2564
2561
  fontSize: '10px',
2565
2562
  '&.Mui-disabled': {
2566
- color: theme.palette.geowebColors.captions.captionStatus.rgba
2563
+ color: 'geowebColors.captions.captionStatus.rgba'
2567
2564
  },
2568
2565
  whiteSpace: 'nowrap',
2569
- maxWidth: '100%'
2566
+ maxWidth: '100%',
2567
+ transform: 'translate(0px, 16px) scale(1)'
2570
2568
  },
2571
- textFieldLabelShrink: {
2569
+ // shrink
2570
+ ' .MuiInputLabel-shrink': {
2572
2571
  transform: 'translate(2px, 10px) scale(0.75) !important',
2573
- letterSpacing: '0.33px'
2572
+ letterSpacing: '0.33px',
2573
+ textAlign: 'left'
2574
+ },
2575
+ // root
2576
+ '&': {
2577
+ '.Mui-disabled:before': {
2578
+ borderColor: 'transparent'
2579
+ }
2574
2580
  }
2575
2581
  };
2576
- });
2582
+ };
2583
+
2584
+ var getTafErrors = function getTafErrors(name, errors) {
2585
+ var nameAsArray = name.split('.');
2586
+
2587
+ if (nameAsArray[0].includes('changeGroups')) {
2588
+ if (errors.changeGroups) {
2589
+ var changeGroupNum = nameAsArray[0].slice(13, nameAsArray[0].length - 1);
2590
+ var restArray = nameAsArray.slice(1);
2591
+ return formFields.getDeepProperty(restArray, errors.changeGroups[changeGroupNum]);
2592
+ } // No changegroup errors
2593
+
2594
+
2595
+ return null;
2596
+ }
2597
+
2598
+ return formFields.getDeepProperty(nameAsArray, errors);
2599
+ };
2600
+
2601
+ var getDisplayValue = function getDisplayValue(value, disabled) {
2602
+ return disabled && !value ? '-' : value;
2603
+ };
2577
2604
  var BaseTextField = /*#__PURE__*/React__default["default"].memo(function (props) {
2578
- var classes = useStyles$8();
2579
2605
  return /*#__PURE__*/React__default["default"].createElement(material.TextField, __assign({
2580
2606
  type: "text",
2581
2607
  variant: "filled",
2582
- InputProps: {
2583
- classes: {
2584
- root: classes.textFieldInput,
2585
- input: classes.textFieldInput
2586
- }
2587
- },
2588
- InputLabelProps: {
2589
- classes: {
2590
- root: classes.textFieldLabel,
2591
- shrink: classes.textFieldLabelShrink
2592
- }
2593
- },
2594
- sx: {
2595
- marginRight: '2px',
2596
- marginBottom: '2px'
2597
- }
2608
+ sx: textFieldStyle
2598
2609
  }, props));
2599
2610
  }, function (prevProps, nextProps) {
2600
- return prevProps.value === nextProps.value && prevProps.error === nextProps.error && prevProps.name === nextProps.name;
2611
+ return prevProps.value === nextProps.value && prevProps.error === nextProps.error && prevProps.name === nextProps.name && prevProps.disabled === nextProps.disabled;
2601
2612
  });
2602
2613
 
2603
2614
  var TafFormTextField = function TafFormTextField(_a) {
@@ -2824,7 +2835,8 @@
2824
2835
  return /*#__PURE__*/React__namespace.createElement(shared.ToggleMenu, {
2825
2836
  buttonTestId: "tafFormOptions[" + index + "]",
2826
2837
  buttonSx: {
2827
- margin: '14px 10px'
2838
+ marginTop: '10px',
2839
+ marginLeft: '4px'
2828
2840
  },
2829
2841
  menuItems: isChangeGroup ? menuItemsChangeGroup : menuItemsBaseForecast
2830
2842
  });
@@ -2994,13 +3006,14 @@
2994
3006
  justifyContent: "flex-start",
2995
3007
  "data-testid": "row-" + namePrefix,
2996
3008
  container: true,
2997
- ref: ref
3009
+ ref: ref,
3010
+ columns: 24
2998
3011
  }, props), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
2999
3012
  item: true,
3000
- xs: 11
3001
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3002
3013
  container: true,
3003
- justifyContent: "flex-end"
3014
+ justifyContent: "flex-end",
3015
+ xs: 24,
3016
+ sm: 23
3004
3017
  }, !isChangeGroup && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(TafFormTextField, {
3005
3018
  label: "Type",
3006
3019
  name: fieldNames.messageType,
@@ -3257,9 +3270,16 @@
3257
3270
  }
3258
3271
  }
3259
3272
  }
3260
- }))), !disabled && /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3273
+ })), !disabled && /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3261
3274
  item: true,
3262
- xs: 1
3275
+ container: true,
3276
+ justifyContent: "flex-end",
3277
+ alignItems: "flex-end",
3278
+ xs: 24,
3279
+ sm: 1,
3280
+ sx: {
3281
+ marginBottom: '16px'
3282
+ }
3263
3283
  }, /*#__PURE__*/React__default["default"].createElement(TafFormOptionsButton, {
3264
3284
  isChangeGroup: isChangeGroup,
3265
3285
  addChangeGroupBelow: addChangeGroupBelow,
@@ -3272,76 +3292,6 @@
3272
3292
  })));
3273
3293
  });
3274
3294
 
3275
- var getIssuesLabel = function getIssuesLabel(sumOfErrors) {
3276
- switch (sumOfErrors) {
3277
- case 0:
3278
- return '0 issues';
3279
-
3280
- case 1:
3281
- return '1 issue';
3282
-
3283
- default:
3284
- return sumOfErrors + " issues";
3285
- }
3286
- };
3287
-
3288
- var buttonColors = {
3289
- green: '#72bb23',
3290
- red: '#c00000'
3291
- };
3292
-
3293
- var buttonStyle = function buttonStyle(color) {
3294
- var buttonColor = buttonColors[color];
3295
- return {
3296
- width: '74px',
3297
- color: '#ffffff',
3298
- backgroundColor: buttonColor,
3299
- '&:hover': {
3300
- backgroundColor: buttonColor
3301
- },
3302
- '&:focus': {
3303
- backgroundColor: buttonColor
3304
- },
3305
- fontSize: 12
3306
- };
3307
- };
3308
-
3309
- var IssuesButton = function IssuesButton(_a) {
3310
- var togglePane = _a.togglePane,
3311
- sumOfErrors = _a.sumOfErrors;
3312
- var color = sumOfErrors > 0 ? 'red' : 'green';
3313
- return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
3314
- title: "View details"
3315
- }, /*#__PURE__*/React__namespace.createElement(material.Chip, {
3316
- "data-testid": "issuesButton",
3317
- size: "small",
3318
- label: getIssuesLabel(sumOfErrors),
3319
- style: __assign({}, buttonStyle(color)),
3320
- onClick: togglePane
3321
- }));
3322
- };
3323
-
3324
- var ThumbsUp = function ThumbsUp(props) {
3325
- return /*#__PURE__*/React__default["default"].createElement(material.SvgIcon, __assign({
3326
- fontSize: "inherit",
3327
- viewBox: "0 0 58 69"
3328
- }, props), /*#__PURE__*/React__default["default"].createElement("title", null, "Thumbs up"), /*#__PURE__*/React__default["default"].createElement("g", {
3329
- id: "Thumbs-up",
3330
- stroke: "none",
3331
- strokeWidth: "1",
3332
- fill: "none",
3333
- fillRule: "evenodd"
3334
- }, /*#__PURE__*/React__default["default"].createElement("path", {
3335
- d: "M3.99883665,31.7843145 C7.41834232,30.0745617 7.39773108,30.3805485 10.9988366,28.8843145 C14.5999422,27.3880805 16.06167,27.0500418 18.1988366,25.8843145 C19.0904815,25.3979628 19.820202,24.8243341 20.5488366,24.1634286 C20.9845024,23.7682595 22.8819728,21.7794437 23.5488366,20.8277879 C24.2586546,19.8148341 25.1756722,18.5003429 25.9988366,16.8843145 C28.3936103,12.1829184 28.889513,9.4076237 29.8988366,6.88431453 C30.4506375,5.50481234 31.0206747,4.13576029 31.6089482,2.77715837 C31.8562473,2.20602771 32.1648239,1.47549588 32.9988366,0.88431453 C33.2365758,0.715795602 34.0556054,0.253858312 35.0144255,0.0843145301 C36.0262338,-0.0945989315 37.1937102,0.0296108539 37.9980376,0.28431453 C38.7449403,0.520833719 39.4692925,0.860990256 40.1710941,1.30478414 C40.2879689,1.37869154 41.2393256,2.13799569 41.8988366,3.58269657 C42.290748,4.4412034 42.5040976,4.92788584 42.7988366,6.88431453 C42.9953293,8.18860032 43.0453293,9.52193365 42.9488366,10.8843145 C42.947848,11.8251839 42.6645146,13.1585172 42.0988366,14.8843145 C41.9160014,15.4421169 41.6403041,16.2990156 41.2988366,17.1941099 C40.9325633,18.1542284 40.4965053,19.1582935 40.1988366,19.8843145 C39.1594737,22.4193462 37.7498356,25.6900566 37.4561402,26.5124038 C37.2603433,27.0606352 37.1745754,27.6512721 37.1988366,28.2843145 C37.21217,28.4109812 37.2455033,28.5187344 37.2988366,28.6075742 C37.35217,28.6964139 37.45217,28.821994 37.5988366,28.9843145 C38.7401033,28.7100145 39.6802034,28.5266812 40.4191367,28.4343145 C41.6262088,28.2834305 44.7342553,28.0975232 47.4943878,28.1962584 C50.2545202,28.2949937 51.7465936,28.4428269 52.9988366,28.8843145 C53.8336653,29.1786396 54.540332,29.8453063 55.1188366,30.8843145 C55.3507184,31.5616882 55.477385,32.2303996 55.4988366,32.8904489 C55.5202882,33.5504981 55.4369549,34.21512 55.2488366,34.8843145 C54.956044,35.585751 54.5393773,36.1190843 53.9988366,36.4843145 C53.4582959,36.8495447 52.6416293,37.1495447 51.5488366,37.3843145 C51.46217,37.6709812 51.4455033,37.9376479 51.4988366,38.1843145 C51.55217,38.4309812 51.7188366,38.5976479 51.9988366,38.6843145 C53.0027645,38.7154727 53.6750204,38.7821393 54.0156044,38.8843145 C54.7031375,39.0905745 55.3642149,39.4239078 55.9988366,39.8843145 C56.4980387,40.3674862 56.831372,40.7202741 56.9988366,40.9426784 C57.2459451,41.2708552 57.8988366,42.3863253 57.8988366,43.8843145 C57.8988366,44.882974 57.53217,45.882974 56.7988366,46.8843145 C56.4100652,47.2645006 55.9767318,47.5818962 55.4988366,47.8365013 C55.0209415,48.0911064 54.5157721,48.2737108 53.9833285,48.3843145 L52.6988366,48.3843145 C52.2988366,48.6576479 52.0988366,48.9643145 52.0988366,49.3043145 C52.0988366,49.6443145 52.1655033,49.9376479 52.2988366,50.1843145 L53.4440689,50.6343145 C54.0486381,50.9097065 54.566894,51.3263732 54.9988366,51.8843145 C55.2403033,52.1962176 55.7126861,53.1830494 55.7488366,53.8843145 C55.7849872,54.5855797 55.7892838,54.8412841 55.675362,55.3021772 C55.5409724,55.8458769 55.3321306,56.373256 54.9488366,56.8843145 C54.6880408,57.2320423 54.3421972,57.542124 54.0113058,57.8145598 C53.720974,58.0536013 53.0623839,58.3923099 52.0355354,58.6843145 C51.8426264,58.739172 51.4970601,58.8058387 50.9988366,58.8843145 L49.2488366,58.9843145 C48.96217,59.1509812 48.7955033,59.3509812 48.7488366,59.5843145 C48.70217,59.8176479 48.7855033,60.0643145 48.9988366,60.3243145 L50.0168579,60.6843145 C51.0110333,61.2176479 51.5216929,61.9496429 51.5488366,62.8802998 C51.5895523,64.276285 51.475285,65.4556464 50.0016466,66.7843145 C49.4876586,67.2477386 48.8545536,67.4912052 48.1023318,67.7343145 C47.6452927,67.8820242 46.8607943,68.0486909 45.7488366,68.2343145 L40.0010327,68.6843145 C38.1462353,68.7443145 36.81217,68.7776479 35.9988366,68.7843145 C34.7788366,68.7943145 28.6377735,68.7414839 25.3910307,68.5132824 C22.1442879,68.2850808 21.4236621,68.1168902 18.9258088,67.5843145 C16.4279556,67.0517389 16.0894589,66.9976619 13.9988366,66.0843145 C12.6050885,65.4754163 11.2717551,64.6754163 9.99883665,63.6843145 L5.99912679,59.8445931 C5.6005732,59.505994 5.13964906,59.1744645 4.61635438,58.8500046 C3.83141237,58.3633147 3.44878136,58.2942773 2.99883665,57.9843145 C2.44718062,57.6042838 2.05635486,57.1737105 1.71932092,56.7662516 C1.30382099,56.2639309 0.723401214,54.7703696 0.498836646,53.8721113 C0.239479861,52.8346842 0.182966814,51.4491222 0.134208514,50.425802 C0.00166588165,47.644049 0.0975252306,47.2982714 0.0687602378,44.8458357 C0.0452570713,42.8420109 -0.0277106081,40.4082829 0.0112302522,39.9409643 C0.224109489,37.3862585 0.450803729,36.3915418 0.898836646,34.8843145 C1.09883665,34.2114947 1.78104521,33.1945675 2.17275045,32.889441 C2.5644557,32.5843145 3.13875358,32.2143561 3.99883665,31.7843145 Z",
3336
- id: "Path-2",
3337
- fill: "#FFBF00"
3338
- }), /*#__PURE__*/React__default["default"].createElement("path", {
3339
- d: "M37.1988366,28.2843145 C36.6491114,28.3570112 36.2566531,28.4236779 36.0214618,28.4843145 C35.0603746,28.7321005 34.3937143,29.0314706 34.021481,29.207818 C33.777778,29.3232735 32.5285093,30.04554 31.6988366,30.8956082 C31.0356177,31.5751308 30.7670551,32.3363186 30.5620165,32.9344937 C29.9561734,34.7019667 30.4904911,36.5989836 30.5988366,36.8981554 C30.8174274,37.5017447 31.0945063,37.9694877 31.2988366,38.4843145 C31.4064264,38.7553957 31.4498365,39.7521385 31.3985954,40.9130014 C31.388536,41.1408948 31.3995111,42.8738523 30.5816296,45.1307691 C30.125032,46.3907349 29.4940749,47.743868 28.6988366,48.906031 C27.6082165,50.4998658 26.3589437,51.7345157 26.1988366,51.8770596 C25.2520649,52.7199732 23.8988366,53.516454 23.3777374,54.1031009 C22.8566381,54.6897478 22.8988366,54.7174426 22.8988366,54.8843145 C22.8988366,55.0643438 22.9342857,55.2139882 23.0063234,55.32641 C23.2544011,55.7135594 23.9363916,55.6592779 25.0988366,54.8843145 C25.8683088,54.3713331 26.8213311,53.5952018 27.5988366,52.8259025 C28.3369913,52.0955388 28.9092218,51.3713331 29.2988366,50.8843145 C29.6096134,50.4958436 30.1890589,49.8244169 30.7488366,48.8700346 C31.0160857,48.4143934 31.4327524,47.5858201 31.9988366,46.3843145 C31.9988366,46.7176479 32.33217,47.2176479 32.9988366,47.8843145 C33.1686748,48.0541527 33.5020081,48.3041527 33.9988366,48.6343145 C33.535822,48.6343145 33.2024887,48.6676479 32.9988366,48.7343145 C31.9774176,49.1343145 31.4345654,49.3440777 30.8488366,49.8843145 C30.1709576,50.5095446 29.6310297,51.1756019 29.3988366,52.3843145 C29.1722814,53.5636787 29.3142136,54.632966 29.6488366,55.5921767 C29.928312,56.3933044 30.3156141,57.1176481 30.9865396,57.7652076 C31.1856402,57.9573742 31.5230725,58.2304098 31.9988366,58.5843145 C30.2988366,59.4509812 29.4488366,60.8843145 29.4488366,62.8843145 C29.4488366,65.8843145 31.4988366,68.7843145 35.9988366,68.7843145 C37.2162866,68.7843145 38.5382158,68.7607397 39.9988366,68.6843145 C41.1579568,68.623665 43.0746234,68.473665 45.7488366,68.2343145 C42.81999,68.0652276 40.9033233,67.948561 39.9988366,67.8843145 C38.4397862,67.7735739 34.9576244,67.4218793 34.5109642,67.2843145 C33.8898949,67.0930342 33.3876529,66.66767 32.9988366,66.3843145 C31.7988366,65.509797 31.6488366,63.8668327 31.6488366,63.3843145 C31.6488366,62.6767971 32.115551,61.4820497 32.7124803,60.9291427 C33.2967248,60.387985 34.101504,59.9827037 34.9988366,59.8343145 C36.8129843,59.5343145 37.8279851,59.6343145 38.9968712,59.6343145 C41.8836014,59.6343145 46.4559662,59.9063364 47.0327603,59.9503801 C47.6352731,59.9963876 48.2906319,60.1194654 48.9988366,60.3196132 C48.7881139,60.0647262 48.7047806,59.8196266 48.7488366,59.5843145 C48.7928927,59.3490025 48.9595594,59.1490025 49.2488366,58.9843145 C41.7042463,58.5910176 37.2875796,58.2576842 35.9988366,57.9843145 C34.0657222,57.57426 33.0783849,56.5232188 32.4988366,55.3843145 C32.1808463,54.7594131 31.9988366,54.0680377 32.1988366,52.8843145 C32.4054546,51.661422 33.0758788,51.154421 33.9988366,50.7343145 C35.0343809,50.2629616 36.2160776,50.213626 38.0168693,50.1343145 C41.4226671,49.9843145 41.9988366,49.8715355 44.9988366,49.8843145 C47.4322993,49.8928339 49.8656327,49.9928339 52.2988366,50.1843145 C52.1655033,49.9452767 52.0988366,49.6535253 52.0988366,49.3090604 C52.0988366,48.9645954 52.2988366,48.6563468 52.6988366,48.3843145 C49.4970675,48.4374708 47.2644784,48.4840975 46.0010696,48.5241946 C42.8267531,48.6249387 40.1650305,48.7843145 38.0159019,48.6090596 C36.5073153,48.3843145 35.5349602,47.7454709 35.0988366,47.3586886 C33.5267511,45.9644623 33.6909724,44.1458838 33.6988366,43.902953 C33.7490538,42.3517256 34.2594453,41.6540102 34.9988366,41.2843145 C36.9988366,40.2843145 38.521019,40.3843145 40.9988366,39.8843145 L51.9988366,38.6843145 C51.7847588,38.5992008 51.6347588,38.4325341 51.5488366,38.1843145 C51.4629145,37.9360949 51.4629145,37.6694283 51.5488366,37.3843145 C48.6830402,37.6590904 46.693269,37.8590904 45.579523,37.9843145 C44.2653604,38.1320725 42.7384649,38.3154059 40.9988366,38.5343145 C38.9988366,38.6009812 37.6749072,38.5733169 37.0270482,38.4513217 C35.0988366,38.2216852 33.4888366,37.4843145 33.4388366,34.8545872 C33.3888366,32.7744565 33.7430954,32.2207578 33.8988366,31.9295788 C34.3117653,31.1575537 34.9128559,30.575799 35.3988366,30.1843145 C36.0681111,29.6451768 36.8014444,29.2451768 37.5988366,28.9843145 C37.4503711,28.8228789 37.3503711,28.6970685 37.2988366,28.6068833 C37.2473022,28.516698 37.2139689,28.4091751 37.1988366,28.2843145 Z",
3340
- id: "Path",
3341
- fill: "#F28700"
3342
- })));
3343
- };
3344
-
3345
3295
  /* *
3346
3296
  * Licensed under the Apache License, Version 2.0 (the "License");
3347
3297
  * you may not use this file except in compliance with the License.
@@ -3358,15 +3308,204 @@
3358
3308
  * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3359
3309
  * Copyright 2021 - Finnish Meteorological Institute (FMI)
3360
3310
  * */
3361
- var useStyles$7 = makeStyles__default["default"]({
3362
- paneContent: {
3363
- marginTop: '16px',
3364
- marginLeft: '24px'
3365
- },
3366
- image: {
3367
- fontSize: '4rem'
3311
+ var buttonsStyle = {
3312
+ button: {
3313
+ minWidth: {
3314
+ xs: '56px',
3315
+ sm: '64px'
3316
+ },
3317
+ width: {
3318
+ xs: '56px',
3319
+ sm: '64px'
3320
+ },
3321
+ marginLeft: {
3322
+ xs: 0.5,
3323
+ sm: 1
3324
+ },
3325
+ marginTop: 3,
3326
+ marginBottom: 3
3368
3327
  }
3369
- });
3328
+ };
3329
+
3330
+ var ViewModeButtons = function ViewModeButtons(_a) {
3331
+ var canBe = _a.canBe,
3332
+ onTafViewModeButtonPress = _a.onTafViewModeButtonPress;
3333
+ return !canBe.includes('CANCELLED') && !canBe.includes('CORRECTED') && !canBe.includes('AMENDED') ? null : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, canBe.includes('CANCELLED') && /*#__PURE__*/React__default["default"].createElement(material.Button, {
3334
+ "data-testid": "canceltaf",
3335
+ variant: "tertiary",
3336
+ onClick: function onClick() {
3337
+ return onTafViewModeButtonPress('CANCEL');
3338
+ }
3339
+ }, "Cancel"), canBe.includes('CORRECTED') && /*#__PURE__*/React__default["default"].createElement(material.Button, {
3340
+ "data-testid": "correctaf",
3341
+ variant: "tertiary",
3342
+ onClick: function onClick() {
3343
+ return onTafViewModeButtonPress('CORRECT');
3344
+ }
3345
+ }, "Correct"), canBe.includes('AMENDED') && /*#__PURE__*/React__default["default"].createElement(material.Button, {
3346
+ "data-testid": "amendtaf",
3347
+ variant: "tertiary",
3348
+ onClick: function onClick() {
3349
+ return onTafViewModeButtonPress('AMEND');
3350
+ }
3351
+ }, "Amend"));
3352
+ };
3353
+
3354
+ var TafFormButtons = function TafFormButtons(_a) {
3355
+ var _b = _a.isFormDisabled,
3356
+ isFormDisabled = _b === void 0 ? false : _b,
3357
+ tafAction = _a.tafAction,
3358
+ _c = _a.canBe,
3359
+ canBe = _c === void 0 ? [] : _c,
3360
+ onTafEditModeButtonPress = _a.onTafEditModeButtonPress,
3361
+ onTafViewModeButtonPress = _a.onTafViewModeButtonPress;
3362
+ return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3363
+ container: true,
3364
+ justifyContent: "flex-end",
3365
+ sx: buttonsStyle,
3366
+ columns: 24
3367
+ }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3368
+ item: true,
3369
+ container: true,
3370
+ justifyContent: "flex-end",
3371
+ xs: 24,
3372
+ sm: 23
3373
+ }, isFormDisabled ? /*#__PURE__*/React__default["default"].createElement(ViewModeButtons, {
3374
+ canBe: canBe,
3375
+ onTafViewModeButtonPress: onTafViewModeButtonPress
3376
+ }) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Button, {
3377
+ "data-testid": "discardtaf",
3378
+ variant: "tertiary",
3379
+ onClick: function onClick() {
3380
+ // Simply discard the changes and close the dialog.
3381
+ onTafEditModeButtonPress('DISCARD');
3382
+ }
3383
+ }, "Discard"), /*#__PURE__*/React__default["default"].createElement(material.Button, {
3384
+ "data-testid": "savedrafttaf",
3385
+ variant: "tertiary",
3386
+ onClick: function onClick() {
3387
+ /* Save the TAF as draft:
3388
+ if action NEW or DRAFT - new status will be DRAFT -- default
3389
+ if action AMEND - new status will be DRAFT_AMENDED
3390
+ if action CORRECT - new status will be DRAFT_CORRECTED
3391
+ if action DRAFT_AMEND - new status will be DRAFT_AMENDED
3392
+ if action DRAFT_CORRECT - new status will be DRAFT_CORRECTED
3393
+ */
3394
+ switch (tafAction) {
3395
+ case 'AMEND':
3396
+ case 'DRAFT_AMEND':
3397
+ onTafEditModeButtonPress('DRAFT_AMEND');
3398
+ break;
3399
+
3400
+ case 'CORRECT':
3401
+ case 'DRAFT_CORRECT':
3402
+ onTafEditModeButtonPress('DRAFT_CORRECT');
3403
+ break;
3404
+
3405
+ default:
3406
+ onTafEditModeButtonPress('DRAFT');
3407
+ break;
3408
+ }
3409
+ }
3410
+ }, "Save"), /*#__PURE__*/React__default["default"].createElement(material.Button, {
3411
+ "data-testid": "publishtaf",
3412
+ variant: "tertiary",
3413
+ onClick: function onClick() {
3414
+ /* Publish the TAF:
3415
+ if action NEW or DRAFT - new status will be PUBLISHED -- default
3416
+ if action AMEND - new status will be AMENDED
3417
+ if action CORRECT - new status will be CORRECTED
3418
+ if action DRAFT_AMEND - new status will be AMENDED
3419
+ if action DRAFT_CORRECT - new status will be CORRECTED
3420
+ */
3421
+ switch (tafAction) {
3422
+ case 'AMEND':
3423
+ case 'DRAFT_AMEND':
3424
+ onTafEditModeButtonPress('AMEND');
3425
+ break;
3426
+
3427
+ case 'CORRECT':
3428
+ case 'DRAFT_CORRECT':
3429
+ onTafEditModeButtonPress('CORRECT');
3430
+ break;
3431
+
3432
+ default:
3433
+ onTafEditModeButtonPress('PUBLISH');
3434
+ break;
3435
+ }
3436
+ }
3437
+ }, "Publish"))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3438
+ item: true,
3439
+ sm: 1
3440
+ }));
3441
+ };
3442
+
3443
+ /* *
3444
+ * Licensed under the Apache License, Version 2.0 (the "License");
3445
+ * you may not use this file except in compliance with the License.
3446
+ * You may obtain a copy of the License at
3447
+ *
3448
+ * http://www.apache.org/licenses/LICENSE-2.0
3449
+ *
3450
+ * Unless required by applicable law or agreed to in writing, software
3451
+ * distributed under the License is distributed on an "AS IS" BASIS,
3452
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3453
+ * See the License for the specific language governing permissions and
3454
+ * limitations under the License.
3455
+ *
3456
+ * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3457
+ * Copyright 2021 - Finnish Meteorological Institute (FMI)
3458
+ * */
3459
+ var useStyles = makeStyles__default["default"](function () {
3460
+ return {
3461
+ dragHandle: {
3462
+ backgroundColor: 'transparent',
3463
+ '&:hover': {
3464
+ backgroundColor: 'transparent'
3465
+ },
3466
+ cursor: function cursor(isSorting) {
3467
+ return isSorting ? 'grabbing' : 'grab';
3468
+ }
3469
+ }
3470
+ };
3471
+ });
3472
+
3473
+ var DragHandle = function DragHandle(_a) {
3474
+ var _b = _a.isSorting,
3475
+ isSorting = _b === void 0 ? false : _b,
3476
+ _c = _a.isDisabled,
3477
+ isDisabled = _c === void 0 ? false : _c,
3478
+ index = _a.index;
3479
+ var classes = useStyles(isSorting);
3480
+ return /*#__PURE__*/React__default["default"].createElement(material.IconButton, {
3481
+ className: classes.dragHandle + " handle",
3482
+ "data-testid": "dragHandle-" + index,
3483
+ disableRipple: true,
3484
+ disabled: isDisabled,
3485
+ size: "large"
3486
+ }, /*#__PURE__*/React__default["default"].createElement(iconsMaterial.DragIndicator, null));
3487
+ };
3488
+
3489
+ var ThumbsUp = function ThumbsUp(props) {
3490
+ return /*#__PURE__*/React__default["default"].createElement(material.SvgIcon, __assign({
3491
+ fontSize: "inherit",
3492
+ viewBox: "0 0 58 69"
3493
+ }, props), /*#__PURE__*/React__default["default"].createElement("title", null, "Thumbs up"), /*#__PURE__*/React__default["default"].createElement("g", {
3494
+ id: "Thumbs-up",
3495
+ stroke: "none",
3496
+ strokeWidth: "1",
3497
+ fill: "none",
3498
+ fillRule: "evenodd"
3499
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
3500
+ d: "M3.99883665,31.7843145 C7.41834232,30.0745617 7.39773108,30.3805485 10.9988366,28.8843145 C14.5999422,27.3880805 16.06167,27.0500418 18.1988366,25.8843145 C19.0904815,25.3979628 19.820202,24.8243341 20.5488366,24.1634286 C20.9845024,23.7682595 22.8819728,21.7794437 23.5488366,20.8277879 C24.2586546,19.8148341 25.1756722,18.5003429 25.9988366,16.8843145 C28.3936103,12.1829184 28.889513,9.4076237 29.8988366,6.88431453 C30.4506375,5.50481234 31.0206747,4.13576029 31.6089482,2.77715837 C31.8562473,2.20602771 32.1648239,1.47549588 32.9988366,0.88431453 C33.2365758,0.715795602 34.0556054,0.253858312 35.0144255,0.0843145301 C36.0262338,-0.0945989315 37.1937102,0.0296108539 37.9980376,0.28431453 C38.7449403,0.520833719 39.4692925,0.860990256 40.1710941,1.30478414 C40.2879689,1.37869154 41.2393256,2.13799569 41.8988366,3.58269657 C42.290748,4.4412034 42.5040976,4.92788584 42.7988366,6.88431453 C42.9953293,8.18860032 43.0453293,9.52193365 42.9488366,10.8843145 C42.947848,11.8251839 42.6645146,13.1585172 42.0988366,14.8843145 C41.9160014,15.4421169 41.6403041,16.2990156 41.2988366,17.1941099 C40.9325633,18.1542284 40.4965053,19.1582935 40.1988366,19.8843145 C39.1594737,22.4193462 37.7498356,25.6900566 37.4561402,26.5124038 C37.2603433,27.0606352 37.1745754,27.6512721 37.1988366,28.2843145 C37.21217,28.4109812 37.2455033,28.5187344 37.2988366,28.6075742 C37.35217,28.6964139 37.45217,28.821994 37.5988366,28.9843145 C38.7401033,28.7100145 39.6802034,28.5266812 40.4191367,28.4343145 C41.6262088,28.2834305 44.7342553,28.0975232 47.4943878,28.1962584 C50.2545202,28.2949937 51.7465936,28.4428269 52.9988366,28.8843145 C53.8336653,29.1786396 54.540332,29.8453063 55.1188366,30.8843145 C55.3507184,31.5616882 55.477385,32.2303996 55.4988366,32.8904489 C55.5202882,33.5504981 55.4369549,34.21512 55.2488366,34.8843145 C54.956044,35.585751 54.5393773,36.1190843 53.9988366,36.4843145 C53.4582959,36.8495447 52.6416293,37.1495447 51.5488366,37.3843145 C51.46217,37.6709812 51.4455033,37.9376479 51.4988366,38.1843145 C51.55217,38.4309812 51.7188366,38.5976479 51.9988366,38.6843145 C53.0027645,38.7154727 53.6750204,38.7821393 54.0156044,38.8843145 C54.7031375,39.0905745 55.3642149,39.4239078 55.9988366,39.8843145 C56.4980387,40.3674862 56.831372,40.7202741 56.9988366,40.9426784 C57.2459451,41.2708552 57.8988366,42.3863253 57.8988366,43.8843145 C57.8988366,44.882974 57.53217,45.882974 56.7988366,46.8843145 C56.4100652,47.2645006 55.9767318,47.5818962 55.4988366,47.8365013 C55.0209415,48.0911064 54.5157721,48.2737108 53.9833285,48.3843145 L52.6988366,48.3843145 C52.2988366,48.6576479 52.0988366,48.9643145 52.0988366,49.3043145 C52.0988366,49.6443145 52.1655033,49.9376479 52.2988366,50.1843145 L53.4440689,50.6343145 C54.0486381,50.9097065 54.566894,51.3263732 54.9988366,51.8843145 C55.2403033,52.1962176 55.7126861,53.1830494 55.7488366,53.8843145 C55.7849872,54.5855797 55.7892838,54.8412841 55.675362,55.3021772 C55.5409724,55.8458769 55.3321306,56.373256 54.9488366,56.8843145 C54.6880408,57.2320423 54.3421972,57.542124 54.0113058,57.8145598 C53.720974,58.0536013 53.0623839,58.3923099 52.0355354,58.6843145 C51.8426264,58.739172 51.4970601,58.8058387 50.9988366,58.8843145 L49.2488366,58.9843145 C48.96217,59.1509812 48.7955033,59.3509812 48.7488366,59.5843145 C48.70217,59.8176479 48.7855033,60.0643145 48.9988366,60.3243145 L50.0168579,60.6843145 C51.0110333,61.2176479 51.5216929,61.9496429 51.5488366,62.8802998 C51.5895523,64.276285 51.475285,65.4556464 50.0016466,66.7843145 C49.4876586,67.2477386 48.8545536,67.4912052 48.1023318,67.7343145 C47.6452927,67.8820242 46.8607943,68.0486909 45.7488366,68.2343145 L40.0010327,68.6843145 C38.1462353,68.7443145 36.81217,68.7776479 35.9988366,68.7843145 C34.7788366,68.7943145 28.6377735,68.7414839 25.3910307,68.5132824 C22.1442879,68.2850808 21.4236621,68.1168902 18.9258088,67.5843145 C16.4279556,67.0517389 16.0894589,66.9976619 13.9988366,66.0843145 C12.6050885,65.4754163 11.2717551,64.6754163 9.99883665,63.6843145 L5.99912679,59.8445931 C5.6005732,59.505994 5.13964906,59.1744645 4.61635438,58.8500046 C3.83141237,58.3633147 3.44878136,58.2942773 2.99883665,57.9843145 C2.44718062,57.6042838 2.05635486,57.1737105 1.71932092,56.7662516 C1.30382099,56.2639309 0.723401214,54.7703696 0.498836646,53.8721113 C0.239479861,52.8346842 0.182966814,51.4491222 0.134208514,50.425802 C0.00166588165,47.644049 0.0975252306,47.2982714 0.0687602378,44.8458357 C0.0452570713,42.8420109 -0.0277106081,40.4082829 0.0112302522,39.9409643 C0.224109489,37.3862585 0.450803729,36.3915418 0.898836646,34.8843145 C1.09883665,34.2114947 1.78104521,33.1945675 2.17275045,32.889441 C2.5644557,32.5843145 3.13875358,32.2143561 3.99883665,31.7843145 Z",
3501
+ id: "Path-2",
3502
+ fill: "#FFBF00"
3503
+ }), /*#__PURE__*/React__default["default"].createElement("path", {
3504
+ d: "M37.1988366,28.2843145 C36.6491114,28.3570112 36.2566531,28.4236779 36.0214618,28.4843145 C35.0603746,28.7321005 34.3937143,29.0314706 34.021481,29.207818 C33.777778,29.3232735 32.5285093,30.04554 31.6988366,30.8956082 C31.0356177,31.5751308 30.7670551,32.3363186 30.5620165,32.9344937 C29.9561734,34.7019667 30.4904911,36.5989836 30.5988366,36.8981554 C30.8174274,37.5017447 31.0945063,37.9694877 31.2988366,38.4843145 C31.4064264,38.7553957 31.4498365,39.7521385 31.3985954,40.9130014 C31.388536,41.1408948 31.3995111,42.8738523 30.5816296,45.1307691 C30.125032,46.3907349 29.4940749,47.743868 28.6988366,48.906031 C27.6082165,50.4998658 26.3589437,51.7345157 26.1988366,51.8770596 C25.2520649,52.7199732 23.8988366,53.516454 23.3777374,54.1031009 C22.8566381,54.6897478 22.8988366,54.7174426 22.8988366,54.8843145 C22.8988366,55.0643438 22.9342857,55.2139882 23.0063234,55.32641 C23.2544011,55.7135594 23.9363916,55.6592779 25.0988366,54.8843145 C25.8683088,54.3713331 26.8213311,53.5952018 27.5988366,52.8259025 C28.3369913,52.0955388 28.9092218,51.3713331 29.2988366,50.8843145 C29.6096134,50.4958436 30.1890589,49.8244169 30.7488366,48.8700346 C31.0160857,48.4143934 31.4327524,47.5858201 31.9988366,46.3843145 C31.9988366,46.7176479 32.33217,47.2176479 32.9988366,47.8843145 C33.1686748,48.0541527 33.5020081,48.3041527 33.9988366,48.6343145 C33.535822,48.6343145 33.2024887,48.6676479 32.9988366,48.7343145 C31.9774176,49.1343145 31.4345654,49.3440777 30.8488366,49.8843145 C30.1709576,50.5095446 29.6310297,51.1756019 29.3988366,52.3843145 C29.1722814,53.5636787 29.3142136,54.632966 29.6488366,55.5921767 C29.928312,56.3933044 30.3156141,57.1176481 30.9865396,57.7652076 C31.1856402,57.9573742 31.5230725,58.2304098 31.9988366,58.5843145 C30.2988366,59.4509812 29.4488366,60.8843145 29.4488366,62.8843145 C29.4488366,65.8843145 31.4988366,68.7843145 35.9988366,68.7843145 C37.2162866,68.7843145 38.5382158,68.7607397 39.9988366,68.6843145 C41.1579568,68.623665 43.0746234,68.473665 45.7488366,68.2343145 C42.81999,68.0652276 40.9033233,67.948561 39.9988366,67.8843145 C38.4397862,67.7735739 34.9576244,67.4218793 34.5109642,67.2843145 C33.8898949,67.0930342 33.3876529,66.66767 32.9988366,66.3843145 C31.7988366,65.509797 31.6488366,63.8668327 31.6488366,63.3843145 C31.6488366,62.6767971 32.115551,61.4820497 32.7124803,60.9291427 C33.2967248,60.387985 34.101504,59.9827037 34.9988366,59.8343145 C36.8129843,59.5343145 37.8279851,59.6343145 38.9968712,59.6343145 C41.8836014,59.6343145 46.4559662,59.9063364 47.0327603,59.9503801 C47.6352731,59.9963876 48.2906319,60.1194654 48.9988366,60.3196132 C48.7881139,60.0647262 48.7047806,59.8196266 48.7488366,59.5843145 C48.7928927,59.3490025 48.9595594,59.1490025 49.2488366,58.9843145 C41.7042463,58.5910176 37.2875796,58.2576842 35.9988366,57.9843145 C34.0657222,57.57426 33.0783849,56.5232188 32.4988366,55.3843145 C32.1808463,54.7594131 31.9988366,54.0680377 32.1988366,52.8843145 C32.4054546,51.661422 33.0758788,51.154421 33.9988366,50.7343145 C35.0343809,50.2629616 36.2160776,50.213626 38.0168693,50.1343145 C41.4226671,49.9843145 41.9988366,49.8715355 44.9988366,49.8843145 C47.4322993,49.8928339 49.8656327,49.9928339 52.2988366,50.1843145 C52.1655033,49.9452767 52.0988366,49.6535253 52.0988366,49.3090604 C52.0988366,48.9645954 52.2988366,48.6563468 52.6988366,48.3843145 C49.4970675,48.4374708 47.2644784,48.4840975 46.0010696,48.5241946 C42.8267531,48.6249387 40.1650305,48.7843145 38.0159019,48.6090596 C36.5073153,48.3843145 35.5349602,47.7454709 35.0988366,47.3586886 C33.5267511,45.9644623 33.6909724,44.1458838 33.6988366,43.902953 C33.7490538,42.3517256 34.2594453,41.6540102 34.9988366,41.2843145 C36.9988366,40.2843145 38.521019,40.3843145 40.9988366,39.8843145 L51.9988366,38.6843145 C51.7847588,38.5992008 51.6347588,38.4325341 51.5488366,38.1843145 C51.4629145,37.9360949 51.4629145,37.6694283 51.5488366,37.3843145 C48.6830402,37.6590904 46.693269,37.8590904 45.579523,37.9843145 C44.2653604,38.1320725 42.7384649,38.3154059 40.9988366,38.5343145 C38.9988366,38.6009812 37.6749072,38.5733169 37.0270482,38.4513217 C35.0988366,38.2216852 33.4888366,37.4843145 33.4388366,34.8545872 C33.3888366,32.7744565 33.7430954,32.2207578 33.8988366,31.9295788 C34.3117653,31.1575537 34.9128559,30.575799 35.3988366,30.1843145 C36.0681111,29.6451768 36.8014444,29.2451768 37.5988366,28.9843145 C37.4503711,28.8228789 37.3503711,28.6970685 37.2988366,28.6068833 C37.2473022,28.516698 37.2139689,28.4091751 37.1988366,28.2843145 Z",
3505
+ id: "Path",
3506
+ fill: "#F28700"
3507
+ })));
3508
+ };
3370
3509
 
3371
3510
  var getPaneTitle = function getPaneTitle(sumOfErrors) {
3372
3511
  switch (sumOfErrors) {
@@ -3406,7 +3545,7 @@
3406
3545
  var nameWithoutBrackets = nameAsString.replace(/[[\]']+/g, '');
3407
3546
  var nameLowerCase = nameWithoutBrackets.toLowerCase();
3408
3547
 
3409
- var _a = __read(nameLowerCase.split(/([0-9]+)/) // split numbers from field and build array
3548
+ var _a = __read(nameLowerCase.split(/([0-9]+)/) // split num bers from field and build array
3410
3549
  .filter(function (s) {
3411
3550
  return s.length;
3412
3551
  }), 2),
@@ -3432,33 +3571,43 @@
3432
3571
  var fieldErrorTitle = humanizeErrorMessage(firstNamePart);
3433
3572
  return index + 1 + ". " + fieldErrorTitle + ": " + getErrorDefaultMessage(error);
3434
3573
  };
3574
+ var MODAL_DIALOG_ELEMENT = 'modal-dialog';
3435
3575
 
3436
3576
  var IssuesPane = function IssuesPane(_a) {
3437
3577
  var isOpen = _a.isOpen,
3438
3578
  handleClose = _a.handleClose,
3439
3579
  _b = _a.errorList,
3440
- errorList = _b === void 0 ? [] : _b;
3441
- var classes = useStyles$7();
3442
- return /*#__PURE__*/React__namespace.createElement(shared.ToolContainerDraggable, {
3580
+ errorList = _b === void 0 ? [] : _b,
3581
+ _c = _a.startPosition,
3582
+ startPosition = _c === void 0 ? {
3583
+ left: 20,
3584
+ top: 50
3585
+ } : _c;
3586
+ var rootElement = document.getElementById(MODAL_DIALOG_ELEMENT) || document.body;
3587
+ return /*#__PURE__*/ReactDOM__default["default"].createPortal( /*#__PURE__*/React__namespace.createElement(shared.ToolContainerDraggable, {
3443
3588
  startSize: {
3444
3589
  width: '577px',
3445
3590
  height: '200px'
3446
3591
  },
3447
- startPosition: {
3448
- right: 20,
3449
- top: 50
3450
- },
3592
+ startPosition: startPosition,
3451
3593
  minWidth: 300,
3452
3594
  onClose: handleClose,
3453
3595
  title: getPaneTitle(errorList.length),
3454
3596
  headerSize: "xs",
3455
3597
  isOpen: isOpen,
3456
3598
  "data-testid": "moveable-issues-pane",
3457
- bounds: "body"
3458
- }, /*#__PURE__*/React__namespace.createElement("div", {
3459
- className: classes.paneContent
3460
- }, errorList.length === 0 && /*#__PURE__*/React__namespace.createElement("div", {
3461
- className: classes.image,
3599
+ bounds: "parent"
3600
+ }, /*#__PURE__*/React__namespace.createElement(material.Box, {
3601
+ component: "div",
3602
+ sx: {
3603
+ marginTop: '16px',
3604
+ marginLeft: '24px'
3605
+ }
3606
+ }, errorList.length === 0 && /*#__PURE__*/React__namespace.createElement(material.Box, {
3607
+ component: "div",
3608
+ sx: {
3609
+ fontSize: '4rem'
3610
+ },
3462
3611
  "data-testid": "zeroIssuesImage"
3463
3612
  }, /*#__PURE__*/React__namespace.createElement(ThumbsUp, null)), errorList.length > 0 && errorList.map(function (error, index) {
3464
3613
  return /*#__PURE__*/React__namespace.createElement(material.Typography // eslint-disable-next-line react/no-array-index-key
@@ -3468,7 +3617,7 @@
3468
3617
  variant: "body1",
3469
3618
  "data-testid": "errorMessage"
3470
3619
  }, getErrorMessage(error, index));
3471
- })));
3620
+ }))), rootElement);
3472
3621
  };
3473
3622
 
3474
3623
  var getCustomError = function getCustomError(error) {
@@ -3482,6 +3631,19 @@
3482
3631
  });
3483
3632
  };
3484
3633
 
3634
+ var getIssuesLabel = function getIssuesLabel(sumOfErrors) {
3635
+ switch (sumOfErrors) {
3636
+ case 0:
3637
+ return '0 issues';
3638
+
3639
+ case 1:
3640
+ return '1 issue';
3641
+
3642
+ default:
3643
+ return sumOfErrors + " issues";
3644
+ }
3645
+ };
3646
+
3485
3647
  var getErrorValues = function getErrorValues(fieldErrors) {
3486
3648
  if (!fieldErrors) return [];
3487
3649
  return Object.keys(fieldErrors).reduce(function (list, key) {
@@ -3495,22 +3657,6 @@
3495
3657
  }, []);
3496
3658
  };
3497
3659
 
3498
- var getErrors = function getErrors(errors) {
3499
- var errorList = Object.keys(errors).reduce(function (list, key) {
3500
- var errorValue = errors[key];
3501
-
3502
- if (Array.isArray(errorValue)) {
3503
- var errorValues = errorValue.reduce(function (l, i) {
3504
- return l.concat(getErrorValues(i));
3505
- }, []);
3506
- return list.concat.apply(list, __spreadArray([], __read(errorValues)));
3507
- }
3508
-
3509
- return list.concat(getErrorValues(errorValue));
3510
- }, []);
3511
- return errorList;
3512
- };
3513
-
3514
3660
  var filterDuplicateErrors = function filterDuplicateErrors(errors) {
3515
3661
  return errors.reduce(function (list, error) {
3516
3662
  // check on type validateRequiredSub and validateRequiredMainOptional since these are giving 'duplicates'
@@ -3532,237 +3678,98 @@
3532
3678
  }, []);
3533
3679
  };
3534
3680
 
3535
- var TafFormButtons = function TafFormButtons(_a) {
3536
- var tafAction = _a.tafAction,
3537
- onTafFormButtonPress = _a.onTafFormButtonPress;
3538
- var errors = reactHookForm.useFormContext().errors;
3681
+ var getErrors = function getErrors(errors) {
3682
+ var errorList = Object.keys(errors).reduce(function (list, key) {
3683
+ var errorValue = errors[key];
3684
+
3685
+ if (Array.isArray(errorValue)) {
3686
+ var errorValues = errorValue.reduce(function (l, i) {
3687
+ return l.concat(getErrorValues(i));
3688
+ }, []);
3689
+ return list.concat.apply(list, __spreadArray([], __read(errorValues)));
3690
+ }
3691
+
3692
+ return list.concat(getErrorValues(errorValue));
3693
+ }, []);
3694
+ return errorList;
3695
+ };
3696
+
3697
+ var IssuesButton = function IssuesButton(_a) {
3698
+ var _b = _a.errors,
3699
+ errors = _b === void 0 ? {} : _b;
3539
3700
  var errorList = filterDuplicateErrors(getErrors(errors));
3701
+ var totalErrors = errorList.length;
3702
+ var errorStatus = totalErrors > 0 ? 'error' : 'success';
3703
+ var buttonColor = "geowebColors.functional." + errorStatus;
3540
3704
 
3541
- var _b = __read(React__default["default"].useState(false), 2),
3542
- isIssuesPaneOpen = _b[0],
3543
- setIsIssuesPaneOpen = _b[1];
3705
+ var _c = __read(React__namespace.useState(false), 2),
3706
+ isIssuesPaneOpen = _c[0],
3707
+ setIsIssuesPaneOpen = _c[1];
3544
3708
 
3545
3709
  var toggleIssuesPane = function toggleIssuesPane() {
3546
3710
  return setIsIssuesPaneOpen(!isIssuesPaneOpen);
3547
3711
  };
3548
3712
 
3549
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3550
- container: true,
3551
- justifyContent: "space-between",
3552
- alignItems: "center",
3553
- sx: {
3554
- margin: '10px 0px 22px 0px'
3555
- }
3556
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3557
- item: true
3558
- }, /*#__PURE__*/React__default["default"].createElement(IssuesButton, {
3559
- sumOfErrors: errorList.length,
3560
- togglePane: toggleIssuesPane
3561
- }))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3562
- container: true,
3563
- justifyContent: "flex-end",
3564
- sx: {
3565
- paddingRight: '28px'
3566
- }
3567
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3568
- item: true
3569
- }, /*#__PURE__*/React__default["default"].createElement(material.Button, {
3570
- "data-testid": "discardtaf",
3571
- variant: "tertiary",
3572
- onClick: function onClick() {
3573
- // Simply discard the changes and close the dialog.
3574
- onTafFormButtonPress('DISCARD');
3575
- }
3576
- }, "Discard"), /*#__PURE__*/React__default["default"].createElement(material.Button, {
3577
- "data-testid": "savedrafttaf",
3578
- variant: "tertiary",
3579
- sx: {
3580
- margin: '0px 10px'
3581
- },
3582
- onClick: function onClick() {
3583
- /* Save the TAF as draft:
3584
- if action NEW or DRAFT - new status will be DRAFT -- default
3585
- if action AMEND - new status will be DRAFT_AMENDED
3586
- if action CORRECT - new status will be DRAFT_CORRECTED
3587
- if action DRAFT_AMEND - new status will be DRAFT_AMENDED
3588
- if action DRAFT_CORRECT - new status will be DRAFT_CORRECTED
3589
- */
3590
- switch (tafAction) {
3591
- case 'AMEND':
3592
- case 'DRAFT_AMEND':
3593
- onTafFormButtonPress('DRAFT_AMEND');
3594
- break;
3713
+ var _d = __read(React__namespace.useState({
3714
+ left: 0,
3715
+ top: 0
3716
+ }), 2),
3717
+ startPosition = _d[0],
3718
+ setStartPosition = _d[1];
3595
3719
 
3596
- case 'CORRECT':
3597
- case 'DRAFT_CORRECT':
3598
- onTafFormButtonPress('DRAFT_CORRECT');
3599
- break;
3720
+ var onClickButton = function onClickButton(event) {
3721
+ var _a;
3600
3722
 
3601
- default:
3602
- onTafFormButtonPress('DRAFT');
3603
- break;
3604
- }
3605
- }
3606
- }, "Save"), /*#__PURE__*/React__default["default"].createElement(material.Button, {
3607
- "data-testid": "publishtaf",
3608
- variant: "tertiary",
3609
- onClick: function onClick() {
3610
- /* Publish the TAF:
3611
- if action NEW or DRAFT - new status will be PUBLISHED -- default
3612
- if action AMEND - new status will be AMENDED
3613
- if action CORRECT - new status will be CORRECTED
3614
- if action DRAFT_AMEND - new status will be AMENDED
3615
- if action DRAFT_CORRECT - new status will be CORRECTED
3616
- */
3617
- switch (tafAction) {
3618
- case 'AMEND':
3619
- case 'DRAFT_AMEND':
3620
- onTafFormButtonPress('AMEND');
3621
- break;
3723
+ var _b = event.currentTarget.getBoundingClientRect(),
3724
+ left = _b.left,
3725
+ top = _b.top;
3622
3726
 
3623
- case 'CORRECT':
3624
- case 'DRAFT_CORRECT':
3625
- onTafFormButtonPress('CORRECT');
3626
- break;
3727
+ var parentOffset = ((_a = document.getElementById('tafmodule')) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || {
3728
+ top: 0,
3729
+ left: 0
3730
+ };
3731
+ var newPosition = {
3732
+ left: left - parentOffset.left + 100,
3733
+ top: top - parentOffset.top
3734
+ };
3735
+ setStartPosition(newPosition);
3736
+ toggleIssuesPane();
3737
+ };
3627
3738
 
3628
- default:
3629
- onTafFormButtonPress('PUBLISH');
3630
- break;
3631
- }
3739
+ return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
3740
+ title: "View details"
3741
+ }, /*#__PURE__*/React__namespace.createElement(material.Chip, {
3742
+ "data-testid": "issuesButton",
3743
+ className: "status-" + errorStatus,
3744
+ size: "small",
3745
+ label: getIssuesLabel(totalErrors),
3746
+ onClick: onClickButton,
3747
+ sx: {
3748
+ width: '74px',
3749
+ color: '#ffffff',
3750
+ backgroundColor: buttonColor,
3751
+ '&:hover': {
3752
+ backgroundColor: buttonColor
3753
+ },
3754
+ '&:focus': {
3755
+ backgroundColor: buttonColor
3756
+ },
3757
+ fontSize: 12
3632
3758
  }
3633
- }, "Publish"))), /*#__PURE__*/React__default["default"].createElement(IssuesPane, {
3759
+ })), /*#__PURE__*/React__namespace.createElement(IssuesPane, {
3634
3760
  errorList: errorList,
3635
3761
  handleClose: toggleIssuesPane,
3636
- isOpen: isIssuesPaneOpen
3762
+ isOpen: isIssuesPaneOpen,
3763
+ startPosition: startPosition
3637
3764
  }));
3638
3765
  };
3639
3766
 
3640
- /* *
3641
- * Licensed under the Apache License, Version 2.0 (the "License");
3642
- * you may not use this file except in compliance with the License.
3643
- * You may obtain a copy of the License at
3644
- *
3645
- * http://www.apache.org/licenses/LICENSE-2.0
3646
- *
3647
- * Unless required by applicable law or agreed to in writing, software
3648
- * distributed under the License is distributed on an "AS IS" BASIS,
3649
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3650
- * See the License for the specific language governing permissions and
3651
- * limitations under the License.
3652
- *
3653
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3654
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
3655
- * */
3656
- var useStyles$6 = makeStyles__default["default"](function () {
3657
- return {
3658
- dragHandle: {
3659
- backgroundColor: 'transparent',
3660
- '&:hover': {
3661
- backgroundColor: 'transparent'
3662
- },
3663
- cursor: function cursor(isSorting) {
3664
- return isSorting ? 'grabbing' : 'grab';
3665
- }
3666
- }
3667
- };
3668
- });
3669
-
3670
- var DragHandle = function DragHandle(_a) {
3671
- var _b = _a.isSorting,
3672
- isSorting = _b === void 0 ? false : _b,
3673
- _c = _a.isDisabled,
3674
- isDisabled = _c === void 0 ? false : _c,
3675
- index = _a.index;
3676
- var classes = useStyles$6(isSorting);
3677
- return /*#__PURE__*/React__default["default"].createElement(material.IconButton, {
3678
- className: classes.dragHandle + " handle",
3679
- "data-testid": "dragHandle-" + index,
3680
- disableRipple: true,
3681
- disabled: isDisabled,
3682
- size: "large"
3683
- }, /*#__PURE__*/React__default["default"].createElement(iconsMaterial.DragIndicator, null));
3684
- };
3685
-
3686
- /* *
3687
- * Licensed under the Apache License, Version 2.0 (the "License");
3688
- * you may not use this file except in compliance with the License.
3689
- * You may obtain a copy of the License at
3690
- *
3691
- * http://www.apache.org/licenses/LICENSE-2.0
3692
- *
3693
- * Unless required by applicable law or agreed to in writing, software
3694
- * distributed under the License is distributed on an "AS IS" BASIS,
3695
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3696
- * See the License for the specific language governing permissions and
3697
- * limitations under the License.
3698
- *
3699
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
3700
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
3701
- * */
3702
-
3703
- var TafListButtons = function TafListButtons(_a) {
3704
- var uuid = _a.uuid,
3705
- canBe = _a.canBe,
3706
- onClickTafActionButton = _a.onClickTafActionButton,
3707
- _b = _a.testId,
3708
- testId = _b === void 0 ? 'taflist-canbebuttons' : _b;
3709
- return !canBe.includes('CANCELLED') && !canBe.includes('CORRECTED') && !canBe.includes('AMENDED') ? null : /*#__PURE__*/React__default["default"].createElement(material.Grid, {
3710
- container: true,
3711
- justifyContent: "flex-end",
3712
- alignItems: "center",
3713
- "data-testid": testId,
3714
- sx: {
3715
- margin: '10px 0px 22px 0px',
3716
- paddingRight: '28px'
3717
- }
3718
- }, canBe.includes('CANCELLED') && /*#__PURE__*/React__default["default"].createElement(material.Button, {
3719
- "data-testid": "canceltaf",
3720
- variant: "tertiary",
3721
- onClick: function onClick() {
3722
- return onClickTafActionButton('CANCEL', uuid);
3723
- }
3724
- }, "Cancel"), canBe.includes('CORRECTED') && /*#__PURE__*/React__default["default"].createElement(material.Button, {
3725
- "data-testid": "correctaf",
3726
- variant: "tertiary",
3727
- sx: {
3728
- margin: '0px 10px'
3729
- },
3730
- onClick: function onClick() {
3731
- return onClickTafActionButton('CORRECT', uuid);
3732
- }
3733
- }, "Correct"), canBe.includes('AMENDED') && /*#__PURE__*/React__default["default"].createElement(material.Button, {
3734
- "data-testid": "amendtaf",
3735
- variant: "tertiary",
3736
- onClick: function onClick() {
3737
- return onClickTafActionButton('AMEND', uuid);
3738
- }
3739
- }, "Amend"));
3740
- };
3741
-
3742
3767
  var noop = function noop() {};
3743
3768
 
3744
- var emptyChangegroup = {
3745
- valid: '',
3746
- wind: '',
3747
- visibility: '',
3748
- weather: {
3749
- weather1: null,
3750
- weather2: null,
3751
- weather3: null
3752
- },
3753
- cloud: {
3754
- cloud1: null,
3755
- cloud2: null,
3756
- cloud3: null,
3757
- cloud4: null
3758
- },
3759
- change: null,
3760
- probability: null
3761
- };
3762
-
3763
3769
  var TafForm = function TafForm(_a) {
3764
- var isDisabled = _a.isDisabled,
3765
- tafAction = _a.tafAction,
3770
+ var // can be removed after old TAF is gone
3771
+ defaultTafAction = _a.tafAction,
3772
+ isDefaultDisabled = _a.isDisabled,
3766
3773
  _b = _a.staticTAC,
3767
3774
  staticTAC = _b === void 0 ? '' : _b,
3768
3775
  tafFromBackend = _a.tafFromBackend,
@@ -3771,36 +3778,46 @@
3771
3778
  return null;
3772
3779
  } : _c;
3773
3780
  var originalTaf = tafFromBackend.taf;
3781
+
3782
+ var _d = __read(React__default["default"].useState(defaultTafAction), 2),
3783
+ tafAction = _d[0],
3784
+ setTafAction = _d[1];
3785
+
3786
+ var _e = __read(React__default["default"].useState(isDefaultDisabled), 2),
3787
+ isDisabled = _e[0],
3788
+ setIsDisabled = _e[1];
3789
+
3774
3790
  var confirmDialog = shared.useConfirmationDialog();
3775
3791
 
3776
- var _d = shared.useDraftFormHelpers(),
3777
- toggleIsDraft = _d.toggleIsDraft,
3778
- DraftFieldHelper = _d.DraftFieldHelper;
3792
+ var _f = shared.useDraftFormHelpers(),
3793
+ toggleIsDraft = _f.toggleIsDraft,
3794
+ DraftFieldHelper = _f.DraftFieldHelper;
3779
3795
 
3780
3796
  var api$1 = api.useApiContext().api;
3781
3797
  var isMounted = shared.useIsMounted().isMounted;
3782
3798
 
3783
- var _e = reactHookForm.useFormContext(),
3784
- control = _e.control,
3785
- handleSubmit = _e.handleSubmit,
3786
- watch = _e.watch,
3787
- trigger = _e.trigger,
3788
- formState = _e.formState,
3789
- getValues = _e.getValues,
3790
- setValue = _e.setValue;
3799
+ var _g = reactHookForm.useFormContext(),
3800
+ control = _g.control,
3801
+ handleSubmit = _g.handleSubmit,
3802
+ watch = _g.watch,
3803
+ trigger = _g.trigger,
3804
+ formState = _g.formState,
3805
+ getValues = _g.getValues,
3806
+ setValue = _g.setValue,
3807
+ reset = _g.reset;
3791
3808
 
3792
3809
  var isFormDirty = formState.isDirty,
3793
3810
  errors = formState.errors;
3794
3811
  shared.usePreventBrowserClose(isFormDirty && !isDisabled);
3795
3812
  var hiddenInputFields = ['baseTime', 'issueDate', 'type', 'uuid', 'validDateStart', 'validDateEnd', 'status', 'previousId', 'previousValidDateStart', 'previousValidDateEnd'];
3796
3813
 
3797
- var _f = __read(React__default["default"].useState(watch()), 2),
3798
- delayedFormValues = _f[0],
3799
- setDelayedFormValues = _f[1];
3814
+ var _h = __read(React__default["default"].useState(watch()), 2),
3815
+ delayedFormValues = _h[0],
3816
+ setDelayedFormValues = _h[1];
3800
3817
 
3801
- var _g = __read(useTACGenerator(convertTafValuesToObject(delayedFormValues), api$1.getTAC, staticTAC), 2),
3802
- TAC = _g[0],
3803
- updateTAC = _g[1];
3818
+ var _j = __read(useTACGenerator(convertTafValuesToObject(delayedFormValues), api$1.getTAC, staticTAC), 2),
3819
+ TAC = _j[0],
3820
+ updateTAC = _j[1];
3804
3821
 
3805
3822
  var hasErrors = Object.keys(errors).length;
3806
3823
 
@@ -3838,7 +3855,27 @@
3838
3855
  });
3839
3856
  };
3840
3857
 
3841
- var onTafButtonPress = function onTafButtonPress(action) {
3858
+ var resetFormValues = function resetFormValues(action, shouldAddEmptyChangGroup) {
3859
+ if (action === void 0) {
3860
+ action = undefined;
3861
+ }
3862
+
3863
+ var newTaf = prepareTafValues(tafFromBackend.taf, action, shouldAddEmptyChangGroup);
3864
+ reset(newTaf);
3865
+ };
3866
+
3867
+ var resetForm = function resetForm(action, resetDisabled) {
3868
+ if (action === void 0) {
3869
+ action = undefined;
3870
+ }
3871
+
3872
+ var shouldAddEmptyChangGroup = !(tafFromBackend.taf && tafFromBackend.taf.changeGroups) && !resetDisabled;
3873
+ resetFormValues(action, shouldAddEmptyChangGroup);
3874
+ setIsDisabled(resetDisabled);
3875
+ setTafAction(action);
3876
+ };
3877
+
3878
+ var onTafEditModeButtonPress = function onTafEditModeButtonPress(action) {
3842
3879
  switch (action) {
3843
3880
  case 'DRAFT':
3844
3881
  case 'DRAFT_AMEND':
@@ -3852,10 +3889,10 @@
3852
3889
  case 'DISCARD':
3853
3890
  if (isFormDirty) {
3854
3891
  showConfirmDialog(action).then(function () {
3855
- onFormAction(action);
3892
+ resetForm(undefined, isDefaultDisabled);
3856
3893
  });
3857
3894
  } else {
3858
- onFormAction(action);
3895
+ resetForm(undefined, isDefaultDisabled);
3859
3896
  }
3860
3897
 
3861
3898
  break;
@@ -3865,8 +3902,36 @@
3865
3902
  case 'PUBLISH':
3866
3903
  toggleIsDraft(false);
3867
3904
  handleSubmit(function (data) {
3868
- showConfirmDialog(action).then(function () {
3869
- onFormAction(action, convertTafValuesToObject(data));
3905
+ return __awaiter(void 0, void 0, void 0, function () {
3906
+ var didSucceed;
3907
+ return __generator(this, function (_a) {
3908
+ switch (_a.label) {
3909
+ case 0:
3910
+ return [4
3911
+ /*yield*/
3912
+ , showConfirmDialog(action)];
3913
+
3914
+ case 1:
3915
+ _a.sent();
3916
+
3917
+ return [4
3918
+ /*yield*/
3919
+ , onFormAction(action, convertTafValuesToObject(data))];
3920
+
3921
+ case 2:
3922
+ didSucceed = _a.sent();
3923
+
3924
+ if (didSucceed) {
3925
+ setIsDisabled(true);
3926
+ reset(prepareTafValues(convertTafValuesToObject(data), action, false));
3927
+ setTafAction(null);
3928
+ }
3929
+
3930
+ return [2
3931
+ /*return*/
3932
+ ];
3933
+ }
3934
+ });
3870
3935
  });
3871
3936
  })();
3872
3937
  break;
@@ -3875,30 +3940,35 @@
3875
3940
  onFormAction(action);
3876
3941
  break;
3877
3942
  }
3878
- }; // TODO: https://gitlab.com/opengeoweb/opengeoweb/-/issues/1906 hookup actions
3879
-
3943
+ };
3880
3944
 
3881
3945
  var onTafViewModeButtonPress = function onTafViewModeButtonPress(action) {
3882
3946
  switch (action) {
3947
+ case 'CANCEL':
3948
+ showConfirmDialog(action).then(function () {
3949
+ onFormAction(action, tafFromBackend.taf);
3950
+ });
3951
+ break;
3952
+
3883
3953
  default:
3884
- onFormAction(action);
3954
+ resetForm(action, false);
3885
3955
  break;
3886
3956
  }
3887
3957
  };
3888
3958
 
3889
- var _h = reactHookForm.useFieldArray({
3959
+ var _k = reactHookForm.useFieldArray({
3890
3960
  control: control,
3891
3961
  name: 'changeGroups'
3892
3962
  }),
3893
- fields = _h.fields,
3894
- insert = _h.insert,
3895
- remove = _h.remove,
3896
- move = _h.move;
3963
+ fields = _k.fields,
3964
+ insert = _k.insert,
3965
+ remove = _k.remove,
3966
+ move = _k.move;
3897
3967
 
3898
- var _j = useDragOrder(trigger, move, onFormBlur),
3899
- onChangeOrder = _j.onChangeOrder,
3900
- onStartDrag = _j.onStartDrag,
3901
- activeDraggingIndex = _j.activeDraggingIndex;
3968
+ var _l = useDragOrder(trigger, move, onFormBlur),
3969
+ onChangeOrder = _l.onChangeOrder,
3970
+ onStartDrag = _l.onStartDrag,
3971
+ activeDraggingIndex = _l.activeDraggingIndex;
3902
3972
 
3903
3973
  var onRemoverow = function onRemoverow(index) {
3904
3974
  confirmDialog({
@@ -3996,7 +4066,8 @@
3996
4066
  }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
3997
4067
  sx: {
3998
4068
  fontSize: '20px',
3999
- fontWeight: 500
4069
+ fontWeight: 500,
4070
+ height: '24px'
4000
4071
  }
4001
4072
  }, "TAC"), /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4002
4073
  sx: {
@@ -4011,7 +4082,8 @@
4011
4082
  "data-testid": "tafform-tac-message-line",
4012
4083
  sx: {
4013
4084
  textIndent: '-0.7em',
4014
- borderRadius: '3px'
4085
+ borderRadius: '3px',
4086
+ paddingRight: '0.7em'
4015
4087
  }
4016
4088
  }, line);
4017
4089
  })), /*#__PURE__*/React__default["default"].createElement(TafFormRow, {
@@ -4053,15 +4125,24 @@
4053
4125
  index: index
4054
4126
  })
4055
4127
  });
4056
- })), // TODO: these buttons should be combined, and the Issuesbuton should be separate
4057
- !isDisabled ? /*#__PURE__*/React__default["default"].createElement(TafFormButtons, {
4128
+ })), !isDisabled && /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4129
+ container: true,
4130
+ justifyContent: "space-between",
4131
+ alignItems: "center",
4132
+ sx: {
4133
+ marginLeft: 1.5,
4134
+ marginTop: 1
4135
+ }
4136
+ }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4137
+ item: true
4138
+ }, /*#__PURE__*/React__default["default"].createElement(IssuesButton, {
4139
+ errors: errors
4140
+ }))), /*#__PURE__*/React__default["default"].createElement(TafFormButtons, {
4141
+ isFormDisabled: isDisabled,
4058
4142
  tafAction: tafAction,
4059
- onTafFormButtonPress: onTafButtonPress
4060
- }) : /*#__PURE__*/React__default["default"].createElement(TafListButtons, {
4061
- uuid: originalTaf.uuid,
4062
4143
  canBe: tafFromBackend.canbe,
4063
- onClickTafActionButton: onTafViewModeButtonPress,
4064
- testId: "newtaflist-canbebuttons"
4144
+ onTafEditModeButtonPress: onTafEditModeButtonPress,
4145
+ onTafViewModeButtonPress: onTafViewModeButtonPress
4065
4146
  }), hiddenInputFields.map(function (field) {
4066
4147
  return /*#__PURE__*/React__default["default"].createElement(formFields.ReactHookFormHiddenInput, {
4067
4148
  name: field,
@@ -4070,72 +4151,33 @@
4070
4151
  }), /*#__PURE__*/React__default["default"].createElement(DraftFieldHelper, null));
4071
4152
  };
4072
4153
 
4073
- var getMessageType = function getMessageType(taf, tafAction) {
4074
- if (tafAction === 'CORRECT') {
4075
- return 'COR';
4076
- }
4077
-
4078
- if (tafAction === 'AMEND') {
4079
- return 'AMD';
4080
- }
4081
-
4082
- return taf.messageType;
4083
- }; // For corrections and amendment we need to add the previousValidStart and End for the TAC converter
4084
-
4085
- var getAmendedCorrectedTafTimes = function getAmendedCorrectedTafTimes(taf, tafAction) {
4086
- var previousValidDateStart = taf.previousValidDateStart && tafAction !== 'AMEND' ? taf.previousValidDateStart : taf.validDateStart;
4087
- var previousValidDateEnd = taf.previousValidDateEnd && tafAction !== 'AMEND' ? taf.previousValidDateEnd : taf.validDateEnd; // For amendment change valid start time to current time
4088
- // only do this if we're already within the validity period
4089
-
4090
- if ((tafAction === 'AMEND' || tafAction === 'DRAFT_AMEND') && moment__default["default"].utc() >= moment__default["default"].utc(taf.validDateStart)) {
4091
- var now = moment__default["default"].utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
4092
- var validObj = {
4093
- start: now,
4094
- end: taf.baseForecast.valid.end
4095
- };
4096
- return __assign(__assign({}, taf), {
4097
- previousValidDateStart: previousValidDateStart,
4098
- previousValidDateEnd: previousValidDateEnd,
4099
- validDateStart: now,
4100
- baseForecast: __assign(__assign({}, taf.baseForecast), {
4101
- valid: validObj
4102
- })
4103
- });
4104
- }
4105
-
4106
- return __assign(__assign({}, taf), {
4107
- previousValidDateStart: previousValidDateStart,
4108
- previousValidDateEnd: previousValidDateEnd
4109
- });
4110
- };
4111
- var prepareTafValues = function prepareTafValues(_taf, tafAction, addEmptyChangeGroup) {
4112
- if (addEmptyChangeGroup === void 0) {
4113
- addEmptyChangeGroup = false;
4114
- } // If action is AMEND/CORRECT/DRAFT_AMEND/DRAFT_CORRECTION - add previous valid start and end
4115
- // If action is AMEND/DRAFT_AMEND - update validity start time to current time
4116
-
4117
-
4118
- var taf = tafAction === 'AMEND' || tafAction === 'DRAFT_AMEND' || tafAction === 'CORRECT' || tafAction === 'DRAFT_CORRECT' ? getAmendedCorrectedTafTimes(_taf, tafAction) : _taf;
4119
- return __assign(__assign(__assign(__assign({}, taf), {
4120
- messageType: getMessageType(taf, tafAction),
4121
- baseForecast: formatFormValues(taf.baseForecast)
4122
- }), taf.changeGroups && {
4123
- changeGroups: taf.changeGroups.map(formatFormValues)
4124
- }), addEmptyChangeGroup && {
4125
- changeGroups: [emptyChangegroup]
4126
- });
4127
- };
4154
+ /* *
4155
+ * Licensed under the Apache License, Version 2.0 (the "License");
4156
+ * you may not use this file except in compliance with the License.
4157
+ * You may obtain a copy of the License at
4158
+ *
4159
+ * http://www.apache.org/licenses/LICENSE-2.0
4160
+ *
4161
+ * Unless required by applicable law or agreed to in writing, software
4162
+ * distributed under the License is distributed on an "AS IS" BASIS,
4163
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4164
+ * See the License for the specific language governing permissions and
4165
+ * limitations under the License.
4166
+ *
4167
+ * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4168
+ * Copyright 2021 - Finnish Meteorological Institute (FMI)
4169
+ * */
4128
4170
 
4129
4171
  var TafFormWrapper = function TafFormWrapper(_a) {
4130
4172
  var tafFromBackend = _a.tafFromBackend,
4131
4173
  mode = _a.mode,
4132
- tafAction = _a.tafAction,
4133
4174
  _b = _a.TAC,
4134
4175
  TAC = _b === void 0 ? '' : _b,
4135
- onFormAction = _a.onFormAction;
4176
+ onFormAction = _a.onFormAction,
4177
+ tafAction = _a.tafAction;
4136
4178
  var taf = tafFromBackend.taf;
4137
4179
  var isDisabled = mode === 'view';
4138
- var defaultValues = prepareTafValues(taf, tafAction, !isDisabled && !taf.changeGroups);
4180
+ var defaultValues = prepareTafValues(taf, undefined, !isDisabled && !taf.changeGroups);
4139
4181
  var options = {
4140
4182
  defaultValues: defaultValues,
4141
4183
  mode: 'onTouched',
@@ -4146,84 +4188,13 @@
4146
4188
  options: options
4147
4189
  }, /*#__PURE__*/React__default["default"].createElement(TafForm, {
4148
4190
  isDisabled: isDisabled,
4149
- tafAction: tafAction,
4150
4191
  staticTAC: TAC,
4151
4192
  onFormAction: onFormAction,
4152
- tafFromBackend: tafFromBackend
4193
+ tafFromBackend: tafFromBackend,
4194
+ tafAction: tafAction
4153
4195
  }));
4154
4196
  };
4155
4197
 
4156
- var useStyles$5 = makeStyles__default["default"]({
4157
- dialogHeader: {
4158
- borderRadius: '3px',
4159
- border: 'solid 1px #f6f5f5',
4160
- zIndex: 1,
4161
- padding: '16px 20px'
4162
- },
4163
- dialogTitle: {
4164
- display: 'flex',
4165
- alignItems: 'center'
4166
- },
4167
- dialogCloseButton: {
4168
- display: 'flex',
4169
- justifyContent: 'flex-end'
4170
- },
4171
- dialogChildren: {
4172
- display: 'flex',
4173
- padding: 20,
4174
- minHeight: 200,
4175
- minWidth: 400,
4176
- height: '100%'
4177
- }
4178
- });
4179
-
4180
- var ContentDialog = function ContentDialog(_a) {
4181
- var open = _a.open;
4182
- _a.toggleDialogStatus;
4183
- var titleComponent = _a.titleComponent,
4184
- children = _a.children;
4185
- _a.onClose;
4186
- var _b = _a.alertBanner,
4187
- alertBanner = _b === void 0 ? null : _b,
4188
- onFormAction = _a.onFormAction,
4189
- other = __rest(_a, ["open", "toggleDialogStatus", "titleComponent", "children", "onClose", "alertBanner", "onFormAction"]);
4190
-
4191
- var classes = useStyles$5();
4192
- return /*#__PURE__*/React__namespace.createElement(material.Dialog, __assign({
4193
- "data-testid": "contentDialog",
4194
- open: open,
4195
- onClose: function onClose() {
4196
- return onFormAction('CLOSE');
4197
- },
4198
- maxWidth: other.maxWidth ? other.maxWidth : 'lg',
4199
- PaperProps: {
4200
- style: {
4201
- position: 'inherit'
4202
- }
4203
- }
4204
- }, other), /*#__PURE__*/React__namespace.createElement(material.DialogTitle, {
4205
- className: classes.dialogHeader
4206
- }, /*#__PURE__*/React__namespace.createElement(material.Grid, {
4207
- container: true
4208
- }, /*#__PURE__*/React__namespace.createElement(material.Grid, {
4209
- item: true,
4210
- xs: 11,
4211
- className: classes.dialogTitle
4212
- }, titleComponent), /*#__PURE__*/React__namespace.createElement(material.Grid, {
4213
- item: true,
4214
- xs: true,
4215
- className: classes.dialogCloseButton
4216
- }, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
4217
- "data-testid": "closeDialog",
4218
- size: "small",
4219
- onClick: function onClick() {
4220
- return onFormAction('CLOSE');
4221
- }
4222
- }, /*#__PURE__*/React__namespace.createElement(iconsMaterial.Close, null))))), alertBanner !== null && alertBanner, /*#__PURE__*/React__namespace.createElement(material.DialogContent, {
4223
- className: classes.dialogChildren
4224
- }, children));
4225
- };
4226
-
4227
4198
  /* *
4228
4199
  * Licensed under the Apache License, Version 2.0 (the "License");
4229
4200
  * you may not use this file except in compliance with the License.
@@ -4237,175 +4208,23 @@
4237
4208
  * See the License for the specific language governing permissions and
4238
4209
  * limitations under the License.
4239
4210
  *
4240
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4241
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
4242
- * */
4243
-
4244
- var getActiveStatus = function getActiveStatus(listType, className) {
4245
- return listType === 'ACTIVE' ? /*#__PURE__*/React__default["default"].createElement(iconsMaterial.CheckCircle, {
4246
- "data-testid": "status-active",
4247
- className: className,
4248
- fontSize: "small"
4249
- }) : /*#__PURE__*/React__default["default"].createElement(iconsMaterial.Schedule, {
4250
- "data-testid": "status-upcoming",
4251
- className: className,
4252
- fontSize: "small"
4253
- });
4254
- };
4255
-
4256
- var getStatusTagList = function getStatusTagList(taf) {
4257
- // do not return anything if status = 'NEW'
4258
- if (taf.status === 'NEW') return null;
4259
-
4260
- if (taf.status === 'CANCELLED') {
4261
- return /*#__PURE__*/React__default["default"].createElement(shared.StatusTag, {
4262
- content: "cancelled",
4263
- color: "red"
4264
- });
4265
- }
4266
-
4267
- return /*#__PURE__*/React__default["default"].createElement(shared.StatusTag, {
4268
- content: taf.status.toLowerCase(),
4269
- color: taf.status === 'EXPIRED' ? 'grey' : 'green'
4270
- });
4271
- };
4272
-
4273
- var getDraftTitle = function getDraftTitle(status) {
4274
- if (status === 'DRAFT_AMENDED') {
4275
- return 'Draft amendment';
4276
- }
4277
-
4278
- if (status === 'DRAFT_CORRECTED') {
4279
- return 'Draft correction';
4280
- }
4281
-
4282
- return 'Draft';
4283
- };
4284
- var useStyles$4 = makeStyles__default["default"]({
4285
- cardWrapper: {
4286
- width: '100%'
4287
- },
4288
- cardContent: {
4289
- width: '100%'
4290
- },
4291
- activeStatus: {
4292
- color: '#72bb23'
4293
- },
4294
- font: {
4295
- fontWeight: 'normal'
4296
- },
4297
- alignIcon: {
4298
- display: 'flex',
4299
- alignSelf: 'center'
4300
- }
4301
- });
4211
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4212
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
4213
+ * */
4302
4214
 
4303
- var TafListRow = function TafListRow(_a) {
4304
- var taf = _a.taf,
4305
- listType = _a.listType,
4306
- _b = _a.TAC,
4307
- TAC = _b === void 0 ? '' : _b,
4308
- _c = _a.showTac,
4309
- showTac = _c === void 0 ? false : _c;
4310
- var classes = useStyles$4();
4311
- var validTimeDate = moment__default["default"].utc(taf.validDateStart).format('DD MMM');
4312
- var baseTime = moment__default["default"].utc(taf.baseTime).format('HH:mm');
4313
- return /*#__PURE__*/React__default["default"].createElement(material.Card, {
4314
- elevation: 0,
4315
- className: classes.cardWrapper
4316
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4317
- container: true,
4318
- alignItems: "center",
4319
- spacing: 1
4320
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4321
- item: true,
4322
- xs: 3,
4323
- sm: 2,
4324
- md: 1
4325
- }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4326
- variant: "subtitle2",
4327
- noWrap: true,
4328
- className: classes.font
4329
- }, taf.location)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4330
- item: true,
4331
- xs: 3,
4332
- sm: 3,
4333
- md: 1,
4334
- container: true
4335
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4336
- item: true,
4337
- xs: 3,
4338
- sm: 3,
4339
- md: 3,
4340
- className: classes.alignIcon
4341
- }, showTac && /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
4342
- "data-testid": "taflistrow-tactooltip",
4343
- title: /*#__PURE__*/React__default["default"].createElement("div", {
4344
- style: {
4345
- whiteSpace: 'pre-line'
4346
- }
4347
- }, TAC),
4348
- placement: "bottom-start"
4349
- }, /*#__PURE__*/React__default["default"].createElement(iconsMaterial.InfoOutlined, {
4350
- "data-testid": "taflistrow-tacicon",
4351
- color: "secondary",
4352
- fontSize: "small"
4353
- }))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4354
- item: true,
4355
- xs: 9,
4356
- sm: 9,
4357
- md: 9
4358
- }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4359
- variant: "subtitle2",
4360
- className: classes.font,
4361
- "data-testid": "baseTime"
4362
- }, baseTime))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4363
- item: true,
4364
- xs: 3,
4365
- sm: 2,
4366
- md: 1
4367
- }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4368
- variant: "subtitle2",
4369
- className: classes.font,
4370
- "data-testid": "validTimeDate"
4371
- }, validTimeDate)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4372
- item: true,
4373
- xs: 3,
4374
- sm: 3,
4375
- md: 6
4376
- }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4377
- variant: "subtitle2",
4378
- className: classes.font,
4379
- "data-testid": "validTimeSlot"
4380
- }, formatValidToString({
4381
- start: taf.validDateStart,
4382
- end: taf.validDateEnd
4383
- }))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4384
- item: true,
4385
- xs: 12,
4386
- sm: 4,
4387
- md: 3
4388
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4389
- container: true,
4390
- justifyContent: "flex-start",
4391
- spacing: 2
4392
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4393
- item: true,
4394
- xs: 8,
4395
- container: true,
4396
- justifyContent: "flex-end"
4397
- }, taf.status === 'DRAFT' || taf.status === 'DRAFT_CORRECTED' || taf.status === 'DRAFT_AMENDED' ? /*#__PURE__*/React__default["default"].createElement(material.Button, {
4398
- color: "secondary",
4399
- size: "small",
4400
- "data-testid": "tafRow-draft",
4401
- startIcon: /*#__PURE__*/React__default["default"].createElement(iconsMaterial.Create, {
4402
- fontSize: "small",
4403
- color: "secondary"
4404
- })
4405
- }, getDraftTitle(taf.status)) : getStatusTagList(taf)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4406
- item: true,
4407
- className: classes.alignIcon
4408
- }, taf.status !== 'NEW' && taf.status !== 'DRAFT' && taf.status !== 'DRAFT_CORRECTED' && taf.status !== 'DRAFT_AMENDED' && taf.status !== 'CANCELLED' && listType !== 'EXPIRED' && getActiveStatus(listType, classes.activeStatus))))));
4215
+ var TabPanel = function TabPanel(_a) {
4216
+ var children = _a.children,
4217
+ value = _a.value,
4218
+ index = _a.index,
4219
+ other = __rest(_a, ["children", "value", "index"]);
4220
+
4221
+ return /*#__PURE__*/React__default["default"].createElement(material.Box, __assign({
4222
+ role: "tabpanel",
4223
+ hidden: value !== index,
4224
+ id: "simple-tabpanel-" + index,
4225
+ "aria-labelledby": "simple-tab-" + index,
4226
+ "data-testid": "tab-panel-" + index
4227
+ }, other), value === index && children);
4409
4228
  };
4410
4229
 
4411
4230
  /* *
@@ -4421,171 +4240,204 @@
4421
4240
  * See the License for the specific language governing permissions and
4422
4241
  * limitations under the License.
4423
4242
  *
4424
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4425
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
4243
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4244
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
4426
4245
  * */
4427
- var getListType = function getListType(taf, locationSettings) {
4428
- if (!taf) return null;
4246
+
4247
+ var TafHeader = function TafHeader(_a) {
4248
+ var title = _a.title;
4249
+ return /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4250
+ sx: {
4251
+ textAlign: 'center',
4252
+ fontWeight: 500,
4253
+ paddingTop: '6px',
4254
+ textTransform: 'capitalize'
4255
+ }
4256
+ }, title);
4257
+ };
4258
+
4259
+ var location_indicator_mwo = "EHDB";
4260
+ var locations = {
4261
+ EHAM: {
4262
+ validity_duration: 30,
4263
+ activity_period: 6,
4264
+ label: "Schiphol"
4265
+ },
4266
+ EHRD: {
4267
+ validity_duration: 30,
4268
+ activity_period: 6,
4269
+ label: "Rotterdam"
4270
+ },
4271
+ EHGG: {
4272
+ validity_duration: 30,
4273
+ activity_period: 6,
4274
+ label: "Eelde"
4275
+ },
4276
+ EHBK: {
4277
+ validity_duration: 30,
4278
+ activity_period: 6,
4279
+ label: "Maastricht"
4280
+ },
4281
+ EHLE: {
4282
+ validity_duration: 30,
4283
+ activity_period: 6,
4284
+ label: "Lelystad"
4285
+ },
4286
+ TNCB: {
4287
+ validity_duration: 30,
4288
+ activity_period: 6,
4289
+ label: "Bonaire"
4290
+ }
4291
+ };
4292
+ var locationOrder = [
4293
+ "EHAM",
4294
+ "EHRD",
4295
+ "EHLE",
4296
+ "EHGG",
4297
+ "EHBK",
4298
+ "TNCB"
4299
+ ];
4300
+ var tafConfig = {
4301
+ location_indicator_mwo: location_indicator_mwo,
4302
+ locations: locations,
4303
+ locationOrder: locationOrder
4304
+ };
4305
+
4306
+ var getTafSettings = function getTafSettings() {
4307
+ return tafConfig;
4308
+ };
4309
+
4310
+ var tafSettings = getTafSettings();
4311
+ var getLocationSetting = function getLocationSetting(location, locationSettings) {
4312
+ if (locationSettings === void 0) {
4313
+ locationSettings = tafSettings.locations;
4314
+ }
4315
+
4316
+ return locationSettings[location];
4317
+ };
4318
+ var sortTafsOnLocation = function sortTafsOnLocation(tafList, locationOrder) {
4319
+ if (locationOrder === void 0) {
4320
+ locationOrder = tafSettings.locationOrder;
4321
+ }
4322
+
4323
+ if (!tafList) return [];
4324
+ return __spreadArray([], __read(tafList)).sort(function (_a, _b) {
4325
+ var tafA = _a.taf;
4326
+ var tafB = _b.taf;
4327
+ return locationOrder.indexOf(tafA.location) < locationOrder.indexOf(tafB.location) ? -1 : 1;
4328
+ });
4329
+ };
4330
+ var getBaseTime = function getBaseTime(baseTime, location) {
4331
+ var currentBaseTime = moment__default["default"].utc(baseTime);
4332
+ var activityPeriod = getLocationSetting(location).activity_period;
4333
+ var nextBaseTime = moment__default["default"].utc(baseTime).add(activityPeriod, 'hours');
4334
+ return {
4335
+ currentBaseTime: currentBaseTime,
4336
+ nextBaseTime: nextBaseTime
4337
+ };
4338
+ };
4339
+ var getTafTimeSlot = function getTafTimeSlot(baseTime, location, status) {
4429
4340
  var now = moment__default["default"].utc();
4430
- var baseTime = moment__default["default"].utc(taf.baseTime);
4431
- var activityPeriod = locationSettings[taf.location].activity_period;
4432
- var nextBaseTime = moment__default["default"].utc(taf.baseTime).add(activityPeriod, 'hours');
4433
4341
 
4434
- if (taf.status === 'EXPIRED') {
4342
+ var _a = getBaseTime(baseTime, location),
4343
+ currentBaseTime = _a.currentBaseTime,
4344
+ nextBaseTime = _a.nextBaseTime;
4345
+
4346
+ if (status === 'EXPIRED') {
4435
4347
  return 'EXPIRED';
4436
4348
  }
4437
4349
 
4438
- if (baseTime < now && nextBaseTime > now) {
4350
+ if (currentBaseTime < now && nextBaseTime > now) {
4439
4351
  return 'ACTIVE';
4440
4352
  }
4441
4353
 
4442
4354
  return 'UPCOMING';
4443
4355
  };
4356
+ var sortTafTimeSlots = function sortTafTimeSlots(tafList) {
4357
+ var sortedListOnLocation = sortTafsOnLocation(tafList);
4358
+ return sortedListOnLocation.reduce(function (sortedTafList, tafFromBackend) {
4359
+ var taf = tafFromBackend.taf;
4360
+ var timeSlot = getTafTimeSlot(taf.baseTime, taf.location, taf.status);
4361
+
4362
+ if (timeSlot === 'EXPIRED') {
4363
+ sortedTafList.expired.push(tafFromBackend);
4364
+ } else if (timeSlot === 'ACTIVE') {
4365
+ sortedTafList.current.push(tafFromBackend);
4366
+ } else {
4367
+ sortedTafList.upcoming.push(tafFromBackend);
4368
+ }
4444
4369
 
4445
- /* *
4446
- * Licensed under the Apache License, Version 2.0 (the "License");
4447
- * you may not use this file except in compliance with the License.
4448
- * You may obtain a copy of the License at
4449
- *
4450
- * http://www.apache.org/licenses/LICENSE-2.0
4451
- *
4452
- * Unless required by applicable law or agreed to in writing, software
4453
- * distributed under the License is distributed on an "AS IS" BASIS,
4454
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4455
- * See the License for the specific language governing permissions and
4456
- * limitations under the License.
4457
- *
4458
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4459
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
4460
- * */
4461
-
4462
- var TafFormDialog = function TafFormDialog(_a) {
4463
- var open = _a.open,
4464
- toggleFormDialog = _a.toggleFormDialog,
4465
- tafFromBackend = _a.tafFromBackend,
4466
- children = _a.children,
4467
- _b = _a.alertBanner,
4468
- alertBanner = _b === void 0 ? null : _b,
4469
- onFormAction = _a.onFormAction;
4470
- var taf = tafFromBackend ? tafFromBackend.taf : null;
4471
- var locationSettings = useTafSettings(tafConfig).locations;
4472
- return /*#__PURE__*/React__default["default"].createElement(ContentDialog, {
4473
- open: open,
4474
- toggleDialogStatus: toggleFormDialog,
4475
- titleComponent: /*#__PURE__*/React__default["default"].createElement(TafListRow, {
4476
- taf: taf,
4477
- listType: getListType(taf, locationSettings)
4478
- }),
4479
- alertBanner: alertBanner,
4480
- onFormAction: onFormAction
4481
- }, children);
4370
+ return sortedTafList;
4371
+ }, {
4372
+ current: [],
4373
+ upcoming: [],
4374
+ expired: []
4375
+ });
4376
+ };
4377
+ var muiTabA11yProps = function muiTabA11yProps(index) {
4378
+ return {
4379
+ id: "simple-tab-" + index,
4380
+ 'aria-controls': "simple-tabpanel-" + index
4381
+ };
4482
4382
  };
4483
4383
 
4484
- var useStyles$3 = makeStyles__default["default"]({
4485
- accordion: {
4486
- marginBottom: '5px'
4487
- },
4488
- formPadding: {
4489
- padding: '8px'
4490
- },
4491
- expandIcon: {
4492
- color: '#0075a9'
4493
- }
4494
- });
4495
-
4496
- var fromStatusToAction = function fromStatusToAction(tafStatus) {
4497
- switch (tafStatus) {
4498
- case 'DRAFT':
4499
- return 'DRAFT';
4500
-
4501
- case 'DRAFT_AMENDED':
4502
- return 'DRAFT_AMEND';
4384
+ var EditIcon = function EditIcon(props) {
4385
+ var theme = material.useTheme();
4386
+ return /*#__PURE__*/React__namespace.createElement(material.SvgIcon, __assign({}, props), /*#__PURE__*/React__namespace.createElement("g", null, /*#__PURE__*/React__namespace.createElement("path", {
4387
+ d: "m8.332 17.09-.005.001-2.652.604.956-2.542.001-.001.001-.001.857-.744 1.69 1.945-.848.738zm.71.815L20.932 7.577 17.823 4 5.933 14.329l-.01.008.005.005L4.173 19l4.857-1.09-.004-.02.019.02-.002-.005z",
4388
+ fillRule: "evenodd",
4389
+ fill: "" + theme.palette.geowebColors.buttons.tertiary["default"].color
4390
+ })));
4391
+ };
4503
4392
 
4504
- case 'DRAFT_CORRECTED':
4505
- return 'DRAFT_CORRECT';
4393
+ var StatusIcon = function StatusIcon(_a) {
4394
+ var timeSlot = _a.timeSlot,
4395
+ status = _a.status;
4506
4396
 
4507
- default:
4508
- return 'NEW';
4397
+ if (status === 'NEW') {
4398
+ return null;
4509
4399
  }
4510
- };
4511
4400
 
4512
- var TafListAccordion = function TafListAccordion(_a) {
4513
- var tafListItem = _a.tafListItem,
4514
- listType = _a.listType,
4515
- _b = _a.errorCancelTaf,
4516
- errorCancelTaf = _b === void 0 ? [] : _b,
4517
- onClickTafActionButton = _a.onClickTafActionButton;
4518
- var classes = useStyles$3();
4519
- var status = tafListItem.taf.status;
4520
- var api$1 = api.useApiContext().api;
4401
+ if (status === 'EXPIRED') {
4402
+ return /*#__PURE__*/React__namespace.createElement(iconsMaterial.Schedule, {
4403
+ "data-testid": "status-expired",
4404
+ fontSize: "small",
4405
+ sx: {
4406
+ transform: 'scaleX(-1)',
4407
+ color: 'geowebColors.buttons.tertiary.disabled.color'
4408
+ }
4409
+ });
4410
+ }
4521
4411
 
4522
- var _c = __read(useTACGenerator(tafListItem.taf, api$1.getTAC), 2),
4523
- TAC = _c[0],
4524
- requestTAC = _c[1];
4412
+ if (status === 'CANCELLED') {
4413
+ return /*#__PURE__*/React__namespace.createElement(DoDisturbIcon__default["default"], {
4414
+ "data-testid": "status-cancelled",
4415
+ fontSize: "small",
4416
+ sx: {
4417
+ color: 'geowebColors.captions.captionError.rgba'
4418
+ }
4419
+ });
4420
+ }
4525
4421
 
4526
- React__default["default"].useEffect(function () {
4527
- // only re-retrieve TAC if draft state
4528
- if (tafListItem.taf.status === 'DRAFT' || tafListItem.taf.status === 'DRAFT_AMENDED' || tafListItem.taf.status === 'DRAFT_CORRECTED') {
4529
- requestTAC(tafListItem.taf);
4530
- } // eslint-disable-next-line react-hooks/exhaustive-deps
4422
+ if (status === 'DRAFT' || status === 'DRAFT_CORRECTED' || status === 'DRAFT_AMENDED') {
4423
+ return /*#__PURE__*/React__namespace.createElement(EditIcon, {
4424
+ "data-testid": "status-draft"
4425
+ });
4426
+ }
4531
4427
 
4532
- }, [tafListItem.taf]);
4533
- var popOut = status === 'NEW' || status === 'DRAFT' || status === 'DRAFT_AMENDED' || status === 'DRAFT_CORRECTED';
4534
- return /*#__PURE__*/React__default["default"].createElement(material.Accordion, __assign({
4535
- "data-testid": "tafListItem",
4536
- className: classes.accordion
4537
- }, popOut ? {
4538
- expanded: false
4539
- } : {}, {
4540
- onClick: function onClick() {
4541
- if (popOut) {
4542
- onClickTafActionButton(fromStatusToAction(tafListItem.taf.status), tafListItem.taf.uuid);
4543
- }
4544
- },
4545
- TransitionProps: {
4546
- unmountOnExit: true
4428
+ return timeSlot === 'ACTIVE' ? /*#__PURE__*/React__namespace.createElement(iconsMaterial.CheckCircle, {
4429
+ "data-testid": "status-active",
4430
+ fontSize: "small",
4431
+ sx: {
4432
+ color: 'geowebColors.functional.success'
4547
4433
  }
4548
- }), /*#__PURE__*/React__default["default"].createElement(material.AccordionSummary, {
4549
- "data-testid": "tafListSectionAccordionSummary",
4550
- expandIcon: popOut ? /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
4551
- title: "Popout to edit",
4552
- className: classes.expandIcon
4553
- }, /*#__PURE__*/React__default["default"].createElement(iconsMaterial.OpenInNew, {
4554
- "data-testid": "popOutIcon",
4555
- fontSize: "small"
4556
- })) : /*#__PURE__*/React__default["default"].createElement(iconsMaterial.ExpandMore, {
4557
- className: classes.expandIcon,
4558
- "data-testid": "expandIcon"
4559
- })
4560
- }, /*#__PURE__*/React__default["default"].createElement(TafListRow, {
4561
- taf: tafListItem.taf,
4562
- listType: listType,
4563
- TAC: TAC,
4564
- showTac: true
4565
- })), /*#__PURE__*/React__default["default"].createElement(material.AccordionDetails, null, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4566
- container: true,
4567
- direction: "column"
4568
- }, errorCancelTaf.length > 0 && errorCancelTaf.find(function (uuid) {
4569
- return uuid === tafListItem.taf.uuid;
4570
- }) && /*#__PURE__*/React__default["default"].createElement(shared.AlertBanner, {
4571
- severity: "error",
4572
- title: "Cancelling this TAF failed, please try again",
4573
- dataTestId: "tafList-cancelAlert"
4574
- }), /*#__PURE__*/React__default["default"].createElement("div", {
4575
- className: classes.formPadding
4576
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4577
- item: true
4578
- }, /*#__PURE__*/React__default["default"].createElement(TafFormWrapper, {
4579
- tafFromBackend: tafListItem,
4580
- mode: "view",
4581
- TAC: TAC
4582
- })), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4583
- item: true
4584
- }, /*#__PURE__*/React__default["default"].createElement(TafListButtons, {
4585
- canBe: tafListItem.canbe,
4586
- uuid: tafListItem.taf.uuid,
4587
- onClickTafActionButton: onClickTafActionButton
4588
- }))))));
4434
+ }) : /*#__PURE__*/React__namespace.createElement(iconsMaterial.Schedule, {
4435
+ "data-testid": "status-upcoming",
4436
+ fontSize: "small",
4437
+ sx: {
4438
+ color: 'geowebColors.functional.success'
4439
+ }
4440
+ });
4589
4441
  };
4590
4442
 
4591
4443
  /* *
@@ -4601,138 +4453,319 @@
4601
4453
  * See the License for the specific language governing permissions and
4602
4454
  * limitations under the License.
4603
4455
  *
4604
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4605
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
4456
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4457
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
4606
4458
  * */
4607
- var useStyles$2 = makeStyles__default["default"]({
4608
- listHeaders: {
4609
- color: '#9d9d9d'
4610
- },
4611
- formPadding: {
4612
- padding: '8px'
4613
- },
4614
- paperButton: {
4615
- width: '100%'
4616
- }
4617
- });
4618
4459
 
4619
- var TafListSection = function TafListSection(_a) {
4620
- var tafList = _a.tafList,
4621
- title = _a.title,
4622
- listType = _a.listType,
4623
- _b = _a.errorCancelTaf,
4624
- errorCancelTaf = _b === void 0 ? [] : _b,
4625
- onClickTafActionButton = _a.onClickTafActionButton;
4626
- var classes = useStyles$2();
4627
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4628
- variant: "subtitle2",
4629
- className: classes.listHeaders
4630
- }, title), /*#__PURE__*/React__default["default"].createElement("div", {
4631
- "data-testid": "tafList" + listType
4632
- }, tafList.map(function (tafListItem) {
4633
- return /*#__PURE__*/React__default["default"].createElement(TafListAccordion, {
4634
- key: tafListItem.taf.uuid + "-" + tafListItem.taf.status,
4635
- tafListItem: tafListItem,
4636
- listType: listType,
4637
- errorCancelTaf: errorCancelTaf,
4638
- onClickTafActionButton: onClickTafActionButton
4639
- });
4460
+ var TacContainer = function TacContainer(_a) {
4461
+ var taf = _a.taf,
4462
+ _b = _a.isActive,
4463
+ isActive = _b === void 0 ? false : _b;
4464
+ var api$1 = api.useApiContext().api;
4465
+
4466
+ var _c = __read(useTACGenerator(taf, api$1.getTAC), 2),
4467
+ TAC = _c[0],
4468
+ retrieveTAC = _c[1];
4469
+
4470
+ var status = taf.status,
4471
+ location = taf.location,
4472
+ baseTime = taf.baseTime;
4473
+ var locationLabel = getLocationSetting(location).label;
4474
+ var timeSlot = getTafTimeSlot(baseTime, location, status);
4475
+ React__default["default"].useEffect(function () {
4476
+ if (isActive) {
4477
+ retrieveTAC(taf);
4478
+ }
4479
+ }, [taf, isActive, retrieveTAC]);
4480
+ return /*#__PURE__*/React__default["default"].createElement(material.Box, {
4481
+ sx: {
4482
+ marginBottom: '20px'
4483
+ },
4484
+ "data-location": location,
4485
+ className: isActive ? 'active' : null
4486
+ }, /*#__PURE__*/React__default["default"].createElement(material.Box, {
4487
+ sx: {
4488
+ display: 'flex',
4489
+ alignItems: 'center',
4490
+ marginBottom: '2px'
4491
+ }
4492
+ }, /*#__PURE__*/React__default["default"].createElement(material.Box, {
4493
+ sx: {
4494
+ width: 20,
4495
+ height: 20,
4496
+ display: 'flex',
4497
+ marginRight: '6px'
4498
+ }
4499
+ }, /*#__PURE__*/React__default["default"].createElement(StatusIcon, {
4500
+ timeSlot: timeSlot,
4501
+ status: status
4502
+ })), /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4503
+ sx: __assign({
4504
+ lineHeight: 1
4505
+ }, isActive && {
4506
+ backgroundColor: 'geowebColors.functional.warningHighlight.rgba',
4507
+ padding: '0 2px',
4508
+ marginLeft: '-2px'
4509
+ })
4510
+ }, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4511
+ sx: {
4512
+ fontSize: '12px',
4513
+ color: 'geowebColors.captions.captionInformation.rgba'
4514
+ },
4515
+ "data-testid": "tafLocation",
4516
+ component: "span"
4517
+ }, location), /*#__PURE__*/React__default["default"].createElement(material.Typography, {
4518
+ sx: {
4519
+ fontSize: '12px',
4520
+ marginLeft: '10px'
4521
+ },
4522
+ "data-testid": "tafLocationLabel",
4523
+ component: "span"
4524
+ }, locationLabel))), /*#__PURE__*/React__default["default"].createElement(material.Box, {
4525
+ sx: {
4526
+ fontSize: '12px',
4527
+ letterSpacing: '0.4px',
4528
+ color: 'geowebColors.captions.captionStatus.rgba'
4529
+ }
4530
+ }, TAC.split('\n').map(function (line) {
4531
+ return /*#__PURE__*/React__default["default"].createElement(material.Box, {
4532
+ component: "span",
4533
+ key: line,
4534
+ sx: {
4535
+ display: 'inline-block'
4536
+ }
4537
+ }, /*#__PURE__*/React__default["default"].createElement(material.Box, {
4538
+ component: "span",
4539
+ sx: __assign({
4540
+ display: 'inline',
4541
+ boxDecorationBreak: 'clone',
4542
+ WebkitBoxDecorationBreak: 'clone'
4543
+ }, isActive && {
4544
+ backgroundColor: 'geowebColors.functional.warningHighlight.rgba'
4545
+ })
4546
+ }, line));
4547
+ })));
4548
+ };
4549
+
4550
+ var TacOverview = function TacOverview(_a) {
4551
+ var _b = _a.upcomingTafs,
4552
+ upcomingTafs = _b === void 0 ? [] : _b,
4553
+ _c = _a.currentTafs,
4554
+ currentTafs = _c === void 0 ? [] : _c,
4555
+ _d = _a.expiredTafs,
4556
+ expiredTafs = _d === void 0 ? [] : _d,
4557
+ _e = _a.hideTitle,
4558
+ hideTitle = _e === void 0 ? false : _e,
4559
+ _f = _a.activeTaf,
4560
+ activeTaf = _f === void 0 ? null : _f;
4561
+
4562
+ var _g = __read(React__default["default"].useState(0), 2),
4563
+ activeTab = _g[0],
4564
+ setActiveTab = _g[1];
4565
+
4566
+ var scrollRef = React__default["default"].useRef(null);
4567
+ var tabs = [{
4568
+ title: 'Upcoming',
4569
+ tafList: upcomingTafs
4570
+ }, {
4571
+ title: 'Current & Expired',
4572
+ tafList: sortTafsOnLocation(__spreadArray(__spreadArray([], __read(currentTafs)), __read(expiredTafs)))
4573
+ }];
4574
+ var activeLocation = (activeTaf === null || activeTaf === void 0 ? void 0 : activeTaf.taf.location) || null;
4575
+
4576
+ var isActiveLocation = function isActiveLocation(location) {
4577
+ return location === activeLocation;
4578
+ };
4579
+
4580
+ var scrollToPosition = React__default["default"].useCallback(function () {
4581
+ if (!scrollRef.current) return;
4582
+ var containerTop = scrollRef.current.getBoundingClientRect().top;
4583
+ var firstLocation = scrollRef.current.querySelector("[data-location=\"" + activeLocation + "\"]");
4584
+ var paddingTop = parseInt(getComputedStyle(scrollRef.current).paddingTop, 10);
4585
+ var newScrollPosition = (firstLocation === null || firstLocation === void 0 ? void 0 : firstLocation.getBoundingClientRect().top) - containerTop + scrollRef.current.scrollTop - paddingTop;
4586
+ scrollRef.current.scrollTo(newScrollPosition, newScrollPosition);
4587
+ }, [activeLocation]);
4588
+
4589
+ var resetScrollPosition = function resetScrollPosition() {
4590
+ return scrollRef.current.scrollTo(0, 0);
4591
+ };
4592
+
4593
+ var onChangeTab = function onChangeTab(_event, newValue) {
4594
+ setActiveTab(newValue);
4595
+ resetScrollPosition();
4596
+ };
4597
+
4598
+ React__default["default"].useEffect(function () {
4599
+ if (activeLocation) {
4600
+ scrollToPosition();
4601
+ }
4602
+ }, [activeLocation, scrollToPosition]);
4603
+ React__default["default"].useEffect(function () {
4604
+ var SCROLL_DELAY = 1000;
4605
+ var timer = setTimeout(function () {
4606
+ scrollToPosition();
4607
+ }, SCROLL_DELAY);
4608
+ return function () {
4609
+ clearTimeout(timer);
4610
+ };
4611
+ }, [activeTab, scrollToPosition]);
4612
+ return /*#__PURE__*/React__default["default"].createElement(material.Card, {
4613
+ variant: "outlined",
4614
+ sx: {
4615
+ maxHeight: '100%',
4616
+ overflow: 'hidden',
4617
+ display: 'flex',
4618
+ flexDirection: 'column'
4619
+ }
4620
+ }, /*#__PURE__*/React__default["default"].createElement(material.Box, {
4621
+ sx: {
4622
+ zIndex: 1
4623
+ }
4624
+ }, !hideTitle && /*#__PURE__*/React__default["default"].createElement(TafHeader, {
4625
+ title: "TAC Overview"
4626
+ }), /*#__PURE__*/React__default["default"].createElement(material.Tabs, {
4627
+ value: activeTab,
4628
+ onChange: onChangeTab,
4629
+ "aria-label": "tabs"
4630
+ }, tabs.map(function (tab, index) {
4631
+ return /*#__PURE__*/React__default["default"].createElement(material.Tab, __assign({
4632
+ key: tab.title,
4633
+ sx: {
4634
+ flexGrow: 1
4635
+ },
4636
+ label: tab.title,
4637
+ "data-testid": "tab-" + index
4638
+ }, muiTabA11yProps(index)));
4639
+ }))), /*#__PURE__*/React__default["default"].createElement(material.Box, {
4640
+ ref: scrollRef,
4641
+ sx: {
4642
+ padding: '10px',
4643
+ maxHeight: '100%',
4644
+ overflow: 'auto'
4645
+ }
4646
+ }, tabs.map(function (tab, index) {
4647
+ return /*#__PURE__*/React__default["default"].createElement(TabPanel, {
4648
+ key: tab.title,
4649
+ value: activeTab,
4650
+ index: index
4651
+ }, tab.tafList.map(function (_a) {
4652
+ var taf = _a.taf;
4653
+ return /*#__PURE__*/React__default["default"].createElement(TacContainer, {
4654
+ key: taf.uuid,
4655
+ taf: taf,
4656
+ isActive: isActiveLocation(taf.location)
4657
+ });
4658
+ }));
4640
4659
  })));
4641
4660
  };
4642
4661
 
4643
- var useStyles$1 = makeStyles__default["default"]({
4644
- accordion: {
4645
- marginBottom: '5px'
4646
- },
4647
- listHeaders: {
4648
- color: '#9d9d9d'
4649
- },
4650
- listBody: {
4651
- width: '100%',
4652
- minHeight: '600px'
4653
- }
4654
- });
4662
+ var TacOverviewIcon = /*#__PURE__*/React__namespace.createElement(material.SvgIcon, null, /*#__PURE__*/React__namespace.createElement("path", {
4663
+ d: "M3 3h4v4H3V3zm0 7h4v4H3v-4zm0 7h4v4H3v-4zm7-14h11v4H10V3zm0 7h11v4H10v-4zm0 7h11v4H10v-4z"
4664
+ }));
4655
4665
 
4656
- var TafList = function TafList(_a) {
4657
- var e_1, _b;
4666
+ var TacOverviewMobile = function TacOverviewMobile(_a) {
4667
+ var upcomingTafs = _a.upcomingTafs,
4668
+ currentTafs = _a.currentTafs,
4669
+ expiredTafs = _a.expiredTafs,
4670
+ activeTaf = _a.activeTaf,
4671
+ _b = _a.defaultOpen,
4672
+ defaultOpen = _b === void 0 ? false : _b;
4658
4673
 
4659
- var tafList = _a.tafList,
4660
- isLoading = _a.isLoading,
4661
- error = _a.error,
4662
- _c = _a.errorCancelTaf,
4663
- errorCancelTaf = _c === void 0 ? [] : _c,
4664
- onClickTafActionButton = _a.onClickTafActionButton;
4665
- var classes = useStyles$1();
4666
- var locationSettings = useTafSettings(tafConfig).locations;
4667
- var upcomingTafs = [];
4668
- var currentTafs = [];
4669
- var expiredTafs = [];
4670
-
4671
- if (tafList) {
4672
- try {
4673
- for (var tafList_1 = __values(tafList), tafList_1_1 = tafList_1.next(); !tafList_1_1.done; tafList_1_1 = tafList_1.next()) {
4674
- var taf = tafList_1_1.value;
4675
- var now = moment__default["default"].utc();
4676
- var baseTime = moment__default["default"].utc(taf.taf.baseTime);
4677
- var activityPeriod = locationSettings[taf.taf.location].activity_period;
4678
- var nextBaseTime = moment__default["default"].utc(taf.taf.baseTime).add(activityPeriod, 'hours');
4679
-
4680
- if (taf.taf.status === 'EXPIRED') {
4681
- expiredTafs.push(taf);
4682
- } else if (baseTime < now && nextBaseTime > now) {
4683
- currentTafs.push(taf);
4684
- } else {
4685
- upcomingTafs.push(taf);
4686
- }
4687
- }
4688
- } catch (e_1_1) {
4689
- e_1 = {
4690
- error: e_1_1
4691
- };
4692
- } finally {
4693
- try {
4694
- if (tafList_1_1 && !tafList_1_1.done && (_b = tafList_1["return"])) _b.call(tafList_1);
4695
- } finally {
4696
- if (e_1) throw e_1.error;
4697
- }
4674
+ var _c = __read(React__namespace.useState(defaultOpen), 2),
4675
+ isOpen = _c[0],
4676
+ toggleOpen = _c[1];
4677
+
4678
+ var onClose = function onClose() {
4679
+ return toggleOpen(false);
4680
+ };
4681
+
4682
+ return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
4683
+ active: isOpen,
4684
+ onClick: function onClick() {
4685
+ return toggleOpen(true);
4686
+ },
4687
+ "data-testid": "tac-overview-mobile-button",
4688
+ sx: {
4689
+ display: {
4690
+ xs: 'inline-flex',
4691
+ sm: 'none'
4692
+ },
4693
+ position: 'absolute',
4694
+ right: '8px',
4695
+ top: '30px'
4698
4696
  }
4697
+ }, TacOverviewIcon), /*#__PURE__*/React__namespace.createElement(material.Dialog, {
4698
+ open: isOpen,
4699
+ onClose: onClose,
4700
+ PaperProps: {
4701
+ sx: {
4702
+ margin: 2,
4703
+ width: '100%',
4704
+ height: '100%'
4705
+ }
4706
+ },
4707
+ "data-testid": "tac-overview-mobile"
4708
+ }, /*#__PURE__*/React__namespace.createElement(shared.ToolHeader, {
4709
+ title: "TAC Overview",
4710
+ size: "small",
4711
+ isDraggable: false,
4712
+ onClose: onClose
4713
+ }), /*#__PURE__*/React__namespace.createElement(TacOverview, {
4714
+ upcomingTafs: upcomingTafs,
4715
+ currentTafs: currentTafs,
4716
+ expiredTafs: expiredTafs,
4717
+ activeTaf: activeTaf,
4718
+ hideTitle: true
4719
+ })));
4720
+ };
4721
+
4722
+ var formatBaseTime = function formatBaseTime(time) {
4723
+ return time.format('HH:mm DD MMM');
4724
+ };
4725
+
4726
+ var TopTabs = function TopTabs(_a) {
4727
+ var timeSlot = _a.timeSlot,
4728
+ _b = _a.onChangeTimeSlot,
4729
+ onChangeTimeSlot = _b === void 0 ? function () {} : _b,
4730
+ tafFromBackend = _a.tafFromBackend;
4731
+
4732
+ if (!tafFromBackend) {
4733
+ return null;
4699
4734
  }
4700
4735
 
4701
- return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4702
- container: true,
4703
- direction: "column",
4704
- alignItems: "stretch"
4705
- }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
4706
- item: true,
4707
- className: classes.listBody
4708
- }, error && /*#__PURE__*/React__default["default"].createElement(shared.AlertBanner, {
4709
- severity: "error",
4710
- title: "An error has occurred while retrieving the list, please try again",
4711
- info: error.message ? error.message : '',
4712
- dataTestId: "tafList-alert"
4713
- }), tafList && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(TafListSection, {
4714
- title: "Upcoming",
4715
- listType: "UPCOMING",
4716
- tafList: upcomingTafs,
4717
- errorCancelTaf: errorCancelTaf,
4718
- onClickTafActionButton: onClickTafActionButton
4719
- }), /*#__PURE__*/React__default["default"].createElement(TafListSection, {
4720
- title: "Current time slot",
4721
- listType: "ACTIVE",
4722
- tafList: currentTafs,
4723
- errorCancelTaf: errorCancelTaf,
4724
- onClickTafActionButton: onClickTafActionButton
4725
- }), /*#__PURE__*/React__default["default"].createElement(TafListSection, {
4726
- title: "Expired",
4727
- listType: "EXPIRED",
4728
- tafList: expiredTafs,
4729
- errorCancelTaf: errorCancelTaf,
4730
- onClickTafActionButton: onClickTafActionButton
4731
- })), isLoading && /*#__PURE__*/React__default["default"].createElement(material.Skeleton, {
4732
- "data-testid": "tafList-skeleton",
4733
- variant: "rectangular",
4734
- height: "660px"
4735
- })));
4736
+ var activeTab = timeSlot === 'UPCOMING' ? 0 : 1;
4737
+
4738
+ var _c = getBaseTime(tafFromBackend.taf.baseTime, tafFromBackend.taf.location),
4739
+ currentBaseTime = _c.currentBaseTime,
4740
+ nextBaseTime = _c.nextBaseTime;
4741
+
4742
+ var tabs = [{
4743
+ title: "Upcoming " + formatBaseTime(nextBaseTime),
4744
+ timeSlot: 'UPCOMING'
4745
+ }, {
4746
+ title: "Current " + formatBaseTime(currentBaseTime),
4747
+ timeSlot: 'ACTIVE'
4748
+ }];
4749
+
4750
+ var onChangeTab = function onChangeTab(_event, newValue) {
4751
+ onChangeTimeSlot(tabs[newValue].timeSlot);
4752
+ };
4753
+
4754
+ return /*#__PURE__*/React__default["default"].createElement(material.Tabs, {
4755
+ value: activeTab,
4756
+ onChange: onChangeTab,
4757
+ "aria-label": "timeslot-tabs",
4758
+ variant: "fullWidth"
4759
+ }, tabs.map(function (tab, index) {
4760
+ return /*#__PURE__*/React__default["default"].createElement(material.Tab, __assign({
4761
+ key: tab.title,
4762
+ label: tab.title,
4763
+ "data-testid": "tab-" + index,
4764
+ sx: {
4765
+ fontSize: 16
4766
+ }
4767
+ }, muiTabA11yProps(index)));
4768
+ }));
4736
4769
  };
4737
4770
 
4738
4771
  /* *
@@ -4748,189 +4781,270 @@
4748
4781
  * See the License for the specific language governing permissions and
4749
4782
  * limitations under the License.
4750
4783
  *
4751
- * Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4752
- * Copyright 2021 - Finnish Meteorological Institute (FMI)
4784
+ * Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
4785
+ * Copyright 2022 - Finnish Meteorological Institute (FMI)
4753
4786
  * */
4754
- var useStyles = makeStyles__default["default"]({
4755
- backdrop: {
4756
- zIndex: 1500,
4757
- color: '#fff'
4758
- }
4759
- });
4760
-
4761
- var Spinner = function Spinner() {
4762
- var classes = useStyles();
4763
- return /*#__PURE__*/React__default["default"].createElement(material.Backdrop, {
4764
- open: true,
4765
- className: classes.backdrop
4766
- }, /*#__PURE__*/React__default["default"].createElement(material.CircularProgress, {
4767
- "data-testid": "spinner",
4768
- color: "inherit"
4769
- }));
4770
- };
4771
-
4772
- var useTimeoutCancelError = function useTimeoutCancelError(pollingInterval) {
4773
- if (pollingInterval === void 0) {
4774
- pollingInterval = 10000;
4775
- }
4776
-
4777
- var _a = __read(React__default["default"].useState([]), 2),
4778
- errorCancelTaf = _a[0],
4779
- setErrorCancelTaf = _a[1];
4780
4787
 
4781
- React__default["default"].useEffect(function () {
4782
- var cancelErrorMessageHandler = errorCancelTaf.length > 0 ? setTimeout(function () {
4783
- if (errorCancelTaf.length > 0) {
4784
- setErrorCancelTaf(errorCancelTaf.slice(1));
4788
+ var LocationTabs = function LocationTabs(_a) {
4789
+ var tafList = _a.tafList,
4790
+ _b = _a.activeIndex,
4791
+ activeIndex = _b === void 0 ? 0 : _b,
4792
+ _c = _a.onChangeTab,
4793
+ onChangeTab = _c === void 0 ? function () {} : _c,
4794
+ timeSlot = _a.timeSlot;
4795
+ return /*#__PURE__*/React__namespace.createElement(material.MenuList, {
4796
+ "data-testid": "location-tabs",
4797
+ sx: {
4798
+ paddingTop: '32px'
4799
+ }
4800
+ }, tafList.map(function (_a, index) {
4801
+ var taf = _a.taf;
4802
+ return /*#__PURE__*/React__namespace.createElement(material.MenuItem, {
4803
+ key: taf.uuid,
4804
+ selected: index === activeIndex,
4805
+ sx: {
4806
+ backgroundColor: 'geowebColors.cards.cardContainer',
4807
+ borderColor: 'geowebColors.cards.cardContainerBorder',
4808
+ borderWidth: '1px',
4809
+ borderStyle: 'solid',
4810
+ margin: '0 0 4px',
4811
+ height: '56px',
4812
+ justifyContent: 'center',
4813
+ ':after': {
4814
+ background: 'none!important'
4815
+ },
4816
+ '&.Mui-selected': {
4817
+ backgroundColor: 'geowebColors.cards.cardContainer',
4818
+ marginRight: '-17px',
4819
+ borderRight: '0px',
4820
+ zIndex: 1
4821
+ }
4822
+ },
4823
+ onClick: function onClick() {
4824
+ return onChangeTab(index);
4785
4825
  }
4786
- }, pollingInterval) : null;
4787
- return function () {
4788
- if (cancelErrorMessageHandler !== null) {
4789
- clearTimeout(cancelErrorMessageHandler);
4826
+ }, /*#__PURE__*/React__namespace.createElement(Box__default["default"], {
4827
+ component: "span",
4828
+ sx: {
4829
+ fontSize: '12px',
4830
+ fontWeight: '500',
4831
+ letterSpacing: '0.09px',
4832
+ '& + svg': {
4833
+ position: 'absolute',
4834
+ bottom: '1px',
4835
+ width: '20px',
4836
+ height: '20px'
4837
+ }
4790
4838
  }
4791
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
4792
- }, [errorCancelTaf]);
4793
- return [errorCancelTaf, setErrorCancelTaf];
4794
- };
4795
- var getSelectedTaf = function getSelectedTaf(selectedTafId, tafList) {
4796
- if (tafList === null) return undefined;
4797
- return tafList.find(function (element) {
4798
- return element.taf.uuid === selectedTafId;
4799
- });
4839
+ }, taf.location), /*#__PURE__*/React__namespace.createElement(StatusIcon, {
4840
+ timeSlot: timeSlot,
4841
+ status: taf.status
4842
+ }));
4843
+ }));
4800
4844
  };
4801
4845
 
4802
- var TafWrapper = function TafWrapper() {
4803
- var api$1 = api.useApiContext().api;
4804
- var confirmDialog = shared.useConfirmationDialog();
4805
-
4806
- var _a = __read(React__default["default"].useState(false), 2),
4807
- isTafDialogOpen = _a[0],
4808
- setTafDialogOpen = _a[1];
4809
-
4810
- var _b = __read(React__default["default"].useState(null), 2),
4811
- selectedTafId = _b[0],
4812
- setselectedTafId = _b[1];
4846
+ var Spinner = function Spinner(props) {
4847
+ return /*#__PURE__*/React__default["default"].createElement(material.Backdrop, __assign({
4848
+ open: true
4849
+ }, props), /*#__PURE__*/React__default["default"].createElement(material.CircularProgress, {
4850
+ "data-testid": "spinner",
4851
+ color: "inherit"
4852
+ }));
4853
+ };
4813
4854
 
4814
- var _c = __read(React__default["default"].useState(null), 2),
4815
- tafDialogAction = _c[0],
4816
- setTafDialogAction = _c[1];
4855
+ var fromActionToStatus = function fromActionToStatus(tafAction) {
4856
+ switch (tafAction) {
4857
+ case 'DRAFT':
4858
+ return 'DRAFT';
4817
4859
 
4818
- var _d = __read(React__default["default"].useState(false), 2),
4819
- errorPostMessage = _d[0],
4820
- setErrorPostMessage = _d[1];
4860
+ case 'DRAFT_AMEND':
4861
+ return 'DRAFT_AMENDED';
4821
4862
 
4822
- var _e = __read(React__default["default"].useState(''), 2),
4823
- errorPostMessageText = _e[0],
4824
- setErrorPostMessageText = _e[1];
4863
+ case 'DRAFT_CORRECT':
4864
+ return 'DRAFT_CORRECTED';
4825
4865
 
4826
- var _f = __read(React__default["default"].useState(false), 2),
4827
- showSpinner = _f[0],
4828
- setSpinner = _f[1]; // clear error message for cancel after 10 seconds
4866
+ case 'PUBLISH':
4867
+ return 'PUBLISHED';
4829
4868
 
4869
+ case 'AMEND':
4870
+ return 'AMENDED';
4830
4871
 
4831
- var _g = __read(useTimeoutCancelError(), 2),
4832
- errorCancelTaf = _g[0],
4833
- setErrorCancelTaf = _g[1]; // Retrieve list of tafs
4872
+ case 'CORRECT':
4873
+ return 'CORRECTED';
4834
4874
 
4875
+ case 'CANCEL':
4876
+ return 'CANCELLED';
4835
4877
 
4836
- var _h = api.useApi(api$1.getTafList),
4837
- errorList = _h.error,
4838
- isLoadingList = _h.isLoading,
4839
- tafList = _h.result,
4840
- fetchNewTafList = _h.fetchApiData;
4878
+ default:
4879
+ return 'NEW';
4880
+ }
4881
+ };
4841
4882
 
4842
- var getNewTafList = function getNewTafList() {
4843
- fetchNewTafList({});
4844
- };
4883
+ var TafPanel = function TafPanel(_a) {
4884
+ var tafFromBackend = _a.tafFromBackend,
4885
+ activeTafIndex = _a.activeTafIndex,
4886
+ index = _a.index,
4887
+ _b = _a.onPostTaf,
4888
+ onPostTaf = _b === void 0 ? function () {} : _b;
4889
+ var api$1 = api.useApiContext().api;
4845
4890
 
4846
- shared.usePoller([tafList, errorList], getNewTafList);
4891
+ var _c = __read(React__default["default"].useState(false), 2),
4892
+ isLoading = _c[0],
4893
+ setLoading = _c[1];
4847
4894
 
4848
- var toggleTafDialog = function toggleTafDialog() {
4849
- // Refresh list on closing dialog
4850
- if (isTafDialogOpen === true) getNewTafList(); // Set error message back to false
4895
+ var _d = __read(React__default["default"].useState(null), 2),
4896
+ error = _d[0],
4897
+ setError = _d[1]; // removes cancelled error message
4851
4898
 
4852
- setErrorPostMessage(false);
4853
- setErrorPostMessageText('');
4854
- setTafDialogOpen(!isTafDialogOpen);
4855
- };
4856
4899
 
4857
4900
  React__default["default"].useEffect(function () {
4858
- if (selectedTafId) {
4859
- toggleTafDialog();
4860
- } // eslint-disable-next-line react-hooks/exhaustive-deps
4861
-
4862
- }, [selectedTafId]);
4863
-
4864
- var onClickTafActionButton = function onClickTafActionButton(action, tafUuid) {
4865
- if (action === 'CANCEL') {
4866
- confirmDialog({
4867
- title: 'Cancel TAF',
4868
- description: 'Are you sure you want to cancel this TAF?',
4869
- confirmLabel: 'Cancel'
4870
- }).then(function () {
4871
- var taf = getSelectedTaf(tafUuid, tafList).taf;
4872
- postTaf({
4873
- taf: taf,
4874
- changeStatusTo: 'CANCELLED'
4875
- });
4876
- });
4877
- } else if (selectedTafId === tafUuid) {
4878
- setTafDialogAction(action);
4879
- toggleTafDialog();
4880
- } else {
4881
- setTafDialogAction(action);
4882
- setselectedTafId(tafUuid);
4883
- }
4884
- };
4901
+ var cancelErrorTimeout = error && error.type === 'CANCELLED' ? setTimeout(function () {
4902
+ setError(null);
4903
+ }, 10000) : null;
4904
+ return function () {
4905
+ if (cancelErrorTimeout !== null) {
4906
+ clearTimeout(cancelErrorTimeout);
4907
+ }
4908
+ };
4909
+ }, [error]);
4885
4910
 
4886
4911
  var postTaf = function postTaf(data) {
4887
4912
  return __awaiter(void 0, void 0, void 0, function () {
4888
- var error_1;
4913
+ var error_1, newError;
4889
4914
  return __generator(this, function (_a) {
4890
4915
  switch (_a.label) {
4891
4916
  case 0:
4892
- setSpinner(true);
4893
- _a.label = 1;
4894
-
4895
- case 1:
4896
- _a.trys.push([1, 3,, 4]);
4917
+ _a.trys.push([0, 2,, 3]);
4897
4918
 
4919
+ setLoading(true);
4898
4920
  return [4
4899
4921
  /*yield*/
4900
4922
  , api$1.postTaf(data)];
4901
4923
 
4902
- case 2:
4924
+ case 1:
4903
4925
  _a.sent();
4904
4926
 
4905
- if (isTafDialogOpen) toggleTafDialog();
4906
- setSpinner(false); // fetch new taflist
4927
+ setLoading(false);
4928
+ setError(null); // callback
4907
4929
 
4908
- getNewTafList(); // If a post has succeeded remove error message
4909
-
4910
- setErrorCancelTaf([]);
4930
+ onPostTaf();
4911
4931
  return [3
4912
4932
  /*break*/
4913
- , 4];
4933
+ , 3];
4914
4934
 
4915
- case 3:
4935
+ case 2:
4916
4936
  error_1 = _a.sent();
4937
+ newError = data.changeStatusTo === 'CANCELLED' ? {
4938
+ type: 'CANCELLED',
4939
+ title: 'Cancelling this TAF failed, please try again'
4940
+ } : {
4941
+ type: 'SERVER',
4942
+ title: 'An error has occurred while saving, please try again',
4943
+ message: shared.getAxiosErrorMessage(error_1)
4944
+ };
4945
+ setError(newError);
4946
+ setLoading(false);
4947
+ throw error_1;
4948
+
4949
+ case 3:
4950
+ return [2
4951
+ /*return*/
4952
+ ];
4953
+ }
4954
+ });
4955
+ });
4956
+ };
4917
4957
 
4918
- if (data.changeStatusTo === 'CANCELLED') {
4919
- setErrorCancelTaf(__spreadArray(__spreadArray([], __read(errorCancelTaf)), [data.taf.uuid]));
4920
- } else {
4921
- setErrorPostMessage(true);
4958
+ var getViewMode = function getViewMode(status) {
4959
+ return status === 'NEW' || status === 'DRAFT' || status === 'DRAFT_AMENDED' || status === 'DRAFT_CORRECTED' ? 'edit' : 'view';
4960
+ };
4922
4961
 
4923
- if (shared.isAxiosError(error_1)) {
4924
- setErrorPostMessageText(shared.getAxiosErrorMessage(error_1));
4925
- }
4962
+ var onTafAction = function onTafAction(action, taf) {
4963
+ return __awaiter(void 0, void 0, void 0, function () {
4964
+ var _a;
4965
+
4966
+ return __generator(this, function (_b) {
4967
+ switch (_b.label) {
4968
+ case 0:
4969
+ _b.trys.push([0, 5,, 6]);
4970
+
4971
+ _a = action;
4972
+
4973
+ switch (_a) {
4974
+ case 'DRAFT':
4975
+ return [3
4976
+ /*break*/
4977
+ , 1];
4978
+
4979
+ case 'DRAFT_AMEND':
4980
+ return [3
4981
+ /*break*/
4982
+ , 1];
4983
+
4984
+ case 'DRAFT_CORRECT':
4985
+ return [3
4986
+ /*break*/
4987
+ , 1];
4988
+
4989
+ case 'PUBLISH':
4990
+ return [3
4991
+ /*break*/
4992
+ , 1];
4993
+
4994
+ case 'AMEND':
4995
+ return [3
4996
+ /*break*/
4997
+ , 1];
4998
+
4999
+ case 'CANCEL':
5000
+ return [3
5001
+ /*break*/
5002
+ , 1];
5003
+
5004
+ case 'CORRECT':
5005
+ return [3
5006
+ /*break*/
5007
+ , 1];
4926
5008
  }
4927
5009
 
4928
- setSpinner(false);
4929
5010
  return [3
4930
5011
  /*break*/
4931
- , 4];
5012
+ , 3];
5013
+
5014
+ case 1:
5015
+ // post taf
5016
+ return [4
5017
+ /*yield*/
5018
+ , postTaf({
5019
+ taf: taf,
5020
+ changeStatusTo: fromActionToStatus(action)
5021
+ })];
5022
+
5023
+ case 2:
5024
+ // post taf
5025
+ _b.sent();
5026
+
5027
+ return [2
5028
+ /*return*/
5029
+ , true];
5030
+
5031
+ case 3:
5032
+ return [2
5033
+ /*return*/
5034
+ , false];
4932
5035
 
4933
5036
  case 4:
5037
+ return [3
5038
+ /*break*/
5039
+ , 6];
5040
+
5041
+ case 5:
5042
+ _b.sent();
5043
+ return [2
5044
+ /*return*/
5045
+ , false];
5046
+
5047
+ case 6:
4934
5048
  return [2
4935
5049
  /*return*/
4936
5050
  ];
@@ -4939,97 +5053,273 @@
4939
5053
  });
4940
5054
  };
4941
5055
 
4942
- var fromActionToStatus = function fromActionToStatus(tafAction) {
4943
- switch (tafAction) {
4944
- case 'DRAFT':
4945
- return 'DRAFT';
4946
-
4947
- case 'DRAFT_AMEND':
4948
- return 'DRAFT_AMENDED';
5056
+ return /*#__PURE__*/React__default["default"].createElement(TabPanel, {
5057
+ value: activeTafIndex,
5058
+ index: index,
5059
+ "data-testid": "taf-panel" + (activeTafIndex === index ? '-active' : '')
5060
+ }, /*#__PURE__*/React__default["default"].createElement(TafHeader, {
5061
+ title: getTafStatusLabel(tafFromBackend.taf.status)
5062
+ }), isLoading && /*#__PURE__*/React__default["default"].createElement(Spinner, {
5063
+ "data-testid": "taf-loading",
5064
+ sx: {
5065
+ position: 'absolute',
5066
+ zIndex: 1,
5067
+ color: 'geowebColors.backdrops.white.fill'
5068
+ }
5069
+ }), error && /*#__PURE__*/React__default["default"].createElement(shared.AlertBanner, {
5070
+ severity: "error",
5071
+ title: error.title,
5072
+ info: error.message,
5073
+ dataTestId: "taf-error"
5074
+ }), /*#__PURE__*/React__default["default"].createElement(TafFormWrapper, {
5075
+ mode: getViewMode(tafFromBackend.taf.status),
5076
+ tafFromBackend: tafFromBackend,
5077
+ onFormAction: onTafAction
5078
+ }));
5079
+ };
4949
5080
 
4950
- case 'DRAFT_CORRECT':
4951
- return 'DRAFT_CORRECTED';
5081
+ var TafLayout = function TafLayout(_a) {
5082
+ var _b = _a.tafList,
5083
+ tafList = _b === void 0 ? [] : _b,
5084
+ _c = _a.onPostTaf,
5085
+ onPostTaf = _c === void 0 ? function () {} : _c;
5086
+
5087
+ var _d = __read(React__default["default"].useState(sortTafTimeSlots(tafList)), 2),
5088
+ _e = _d[0],
5089
+ upcoming = _e.upcoming,
5090
+ current = _e.current,
5091
+ expired = _e.expired,
5092
+ updateSortedTafs = _d[1];
5093
+
5094
+ var _f = __read(upcoming.slice(-1), 1),
5095
+ lastUpcomingTaf = _f[0];
5096
+
5097
+ var _g = __read(React__default["default"].useState('UPCOMING'), 2),
5098
+ timeSlot = _g[0],
5099
+ setTimeSlot = _g[1];
5100
+
5101
+ var _h = __read(React__default["default"].useState(upcoming), 2),
5102
+ locations = _h[0],
5103
+ setLocations = _h[1];
5104
+
5105
+ var _j = __read(React__default["default"].useState(0), 2),
5106
+ activeTafIndex = _j[0],
5107
+ setActiveTafIndex = _j[1];
5108
+
5109
+ var onChangeTimeSlot = function onChangeTimeSlot(newTimeSlot) {
5110
+ setTimeSlot(newTimeSlot);
5111
+ setLocations(newTimeSlot === 'ACTIVE' ? current : upcoming);
5112
+ setActiveTafIndex(0);
5113
+ };
4952
5114
 
4953
- case 'PUBLISH':
4954
- return 'PUBLISHED';
5115
+ React__default["default"].useEffect(function () {
5116
+ var newSortedTafs = sortTafTimeSlots(tafList);
5117
+ var updatedLocations = timeSlot === 'ACTIVE' ? newSortedTafs.current : newSortedTafs.upcoming;
5118
+ updateSortedTafs(sortTafTimeSlots(tafList));
5119
+ setLocations(updatedLocations); // update active index
4955
5120
 
4956
- case 'AMEND':
4957
- return 'AMENDED';
5121
+ var newActiveIndex = updatedLocations.findIndex(function (location) {
5122
+ return location.taf.previousId === locations[activeTafIndex].taf.uuid;
5123
+ });
5124
+ var newIndex = newActiveIndex !== -1 ? newActiveIndex : activeTafIndex;
5125
+ setActiveTafIndex(newIndex); // eslint-disable-next-line react-hooks/exhaustive-deps
5126
+ }, [tafList, setLocations]);
4958
5127
 
4959
- case 'CORRECT':
4960
- return 'CORRECTED';
5128
+ if (!tafList) {
5129
+ return null;
5130
+ }
4961
5131
 
4962
- default:
4963
- return 'NEW';
5132
+ var activeTaf = locations[activeTafIndex];
5133
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Box, {
5134
+ id: MODAL_DIALOG_ELEMENT,
5135
+ component: "div",
5136
+ sx: {
5137
+ width: '100%',
5138
+ height: '100%',
5139
+ position: 'absolute',
5140
+ overflow: 'hidden',
5141
+ pointerEvents: 'none'
4964
5142
  }
4965
- };
5143
+ }), /*#__PURE__*/React__default["default"].createElement(material.Box, {
5144
+ sx: {
5145
+ height: '100%',
5146
+ maxHeight: '100%'
5147
+ }
5148
+ }, /*#__PURE__*/React__default["default"].createElement(material.Box, {
5149
+ sx: {
5150
+ minWidth: 320,
5151
+ maxWidth: 1272,
5152
+ margin: 'auto',
5153
+ height: '100%',
5154
+ display: 'flex',
5155
+ flexDirection: 'column'
5156
+ }
5157
+ }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5158
+ container: true,
5159
+ spacing: 2,
5160
+ sx: {
5161
+ paddingLeft: 1,
5162
+ paddingRight: 1
5163
+ }
5164
+ }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5165
+ item: true,
5166
+ xs: 12,
5167
+ sm: 9
5168
+ }, /*#__PURE__*/React__default["default"].createElement(TopTabs, {
5169
+ tafFromBackend: lastUpcomingTaf,
5170
+ timeSlot: timeSlot,
5171
+ onChangeTimeSlot: onChangeTimeSlot
5172
+ }))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5173
+ container: true,
5174
+ flexGrow: 1,
5175
+ overflow: "hidden"
5176
+ }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5177
+ container: true,
5178
+ spacing: 2,
5179
+ sx: {
5180
+ height: '100%',
5181
+ paddingLeft: 1,
5182
+ paddingRight: 1,
5183
+ paddingTop: 2,
5184
+ overflow: 'auto'
5185
+ }
5186
+ }, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5187
+ item: true,
5188
+ xs: 3,
5189
+ sm: 1
5190
+ }, /*#__PURE__*/React__default["default"].createElement(LocationTabs, {
5191
+ tafList: locations,
5192
+ activeIndex: activeTafIndex,
5193
+ onChangeTab: setActiveTafIndex,
5194
+ timeSlot: timeSlot
5195
+ })), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5196
+ item: true,
5197
+ xs: true
5198
+ }, /*#__PURE__*/React__default["default"].createElement(material.Card, {
5199
+ variant: "outlined",
5200
+ sx: {
5201
+ padding: 1,
5202
+ paddingTop: 0,
5203
+ marginBottom: '12px',
5204
+ position: 'relative'
5205
+ }
5206
+ }, /*#__PURE__*/React__default["default"].createElement(TacOverviewMobile, {
5207
+ upcomingTafs: upcoming,
5208
+ currentTafs: current,
5209
+ expiredTafs: expired,
5210
+ activeTaf: activeTaf
5211
+ }), locations.map(function (tafFromBackend, index) {
5212
+ return /*#__PURE__*/React__default["default"].createElement(TafPanel, {
5213
+ key: tafFromBackend.taf.uuid,
5214
+ activeTafIndex: activeTafIndex,
5215
+ index: index,
5216
+ tafFromBackend: tafFromBackend,
5217
+ onPostTaf: onPostTaf
5218
+ });
5219
+ }))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
5220
+ item: true,
5221
+ xs: 3,
5222
+ sx: {
5223
+ height: '100%'
5224
+ },
5225
+ display: {
5226
+ xs: 'none',
5227
+ sm: 'block'
5228
+ }
5229
+ }, /*#__PURE__*/React__default["default"].createElement(TacOverview, {
5230
+ upcomingTafs: upcoming,
5231
+ currentTafs: current,
5232
+ expiredTafs: expired,
5233
+ activeTaf: activeTaf
5234
+ })))))));
5235
+ };
4966
5236
 
4967
- var onFormAction = function onFormAction(action, taf) {
4968
- // Add right actions and their follow up calls to the BE
4969
- switch (action) {
4970
- case 'CLOSE':
4971
- confirmDialog({
4972
- title: 'Closing TAF',
4973
- description: 'Are you sure you want to close this TAF? Any changes made will be lost.',
4974
- confirmLabel: 'Close'
4975
- }).then(function () {
4976
- toggleTafDialog();
4977
- });
4978
- break;
5237
+ var TafModule = function TafModule() {
5238
+ var api$1 = api.useApiContext().api;
4979
5239
 
4980
- case 'DRAFT':
4981
- case 'DRAFT_AMEND':
4982
- case 'DRAFT_CORRECT':
4983
- case 'PUBLISH':
4984
- case 'AMEND':
4985
- case 'CORRECT':
4986
- postTaf({
4987
- taf: taf,
4988
- changeStatusTo: fromActionToStatus(action)
4989
- });
4990
- break;
5240
+ var _a = __read(React__namespace.useState(false), 2),
5241
+ isLoading = _a[0],
5242
+ setLoading = _a[1];
4991
5243
 
4992
- default:
4993
- toggleTafDialog();
4994
- break;
4995
- }
5244
+ var _b = api.useApi(api$1.getTafList),
5245
+ getTafListError = _b.error,
5246
+ isFetchingInitial = _b.isLoading,
5247
+ tafList = _b.result,
5248
+ fetchNewTafList = _b.fetchApiData;
5249
+
5250
+ shared.usePoller([tafList, getTafListError], function () {
5251
+ return fetchNewTafList({});
5252
+ });
5253
+
5254
+ var reFetchNewTafList = function reFetchNewTafList() {
5255
+ return __awaiter(void 0, void 0, void 0, function () {
5256
+ return __generator(this, function (_a) {
5257
+ switch (_a.label) {
5258
+ case 0:
5259
+ _a.trys.push([0, 2,, 3]);
5260
+
5261
+ setLoading(true);
5262
+ return [4
5263
+ /*yield*/
5264
+ , fetchNewTafList({})];
5265
+
5266
+ case 1:
5267
+ _a.sent();
5268
+
5269
+ setLoading(false);
5270
+ return [3
5271
+ /*break*/
5272
+ , 3];
5273
+
5274
+ case 2:
5275
+ _a.sent();
5276
+ setLoading(false);
5277
+ return [3
5278
+ /*break*/
5279
+ , 3];
5280
+
5281
+ case 3:
5282
+ return [2
5283
+ /*return*/
5284
+ ];
5285
+ }
5286
+ });
5287
+ });
4996
5288
  };
4997
5289
 
4998
- var selectedTaf = getSelectedTaf(selectedTafId, tafList);
4999
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(TafList, {
5290
+ var hasTafListError = getTafListError !== null;
5291
+
5292
+ if (isFetchingInitial) {
5293
+ return /*#__PURE__*/React__namespace.createElement(LinearProgress__default["default"], {
5294
+ color: "secondary",
5295
+ "data-testid": "loading-bar"
5296
+ });
5297
+ }
5298
+
5299
+ return /*#__PURE__*/React__namespace.createElement(material.Box, {
5300
+ component: "div",
5301
+ id: "tafmodule",
5302
+ sx: {
5303
+ height: '100%'
5304
+ }
5305
+ }, isLoading && /*#__PURE__*/React__namespace.createElement(LinearProgress__default["default"], {
5306
+ "data-testid": "loading-bar",
5307
+ color: "secondary",
5308
+ sx: {
5309
+ marginBottom: '-4px'
5310
+ }
5311
+ }), hasTafListError && /*#__PURE__*/React__namespace.createElement(shared.AlertBanner, {
5312
+ severity: "error",
5313
+ title: "An error has occurred while retrieving the list",
5314
+ info: getTafListError.message
5315
+ }), /*#__PURE__*/React__namespace.createElement(TafLayout, {
5000
5316
  tafList: tafList,
5001
- isLoading: isLoadingList,
5002
- error: errorList,
5003
- onClickTafActionButton: onClickTafActionButton,
5004
- errorCancelTaf: errorCancelTaf
5005
- }), showSpinner && /*#__PURE__*/React__default["default"].createElement(Spinner, null), selectedTaf !== undefined && /*#__PURE__*/React__default["default"].createElement(TafFormDialog, {
5006
- open: isTafDialogOpen,
5007
- toggleFormDialog: toggleTafDialog,
5008
- tafFromBackend: selectedTaf,
5009
- alertBanner: errorPostMessage ? /*#__PURE__*/React__default["default"].createElement(shared.AlertBanner, {
5010
- severity: "error",
5011
- title: "An error has occurred while saving, please try again",
5012
- info: errorPostMessageText
5013
- }) : null,
5014
- onFormAction: onFormAction
5015
- }, /*#__PURE__*/React__default["default"].createElement(TafFormWrapper, {
5016
- mode: "edit",
5017
- tafFromBackend: selectedTaf,
5018
- tafAction: tafDialogAction,
5019
- onFormAction: onFormAction
5020
- }), showSpinner && /*#__PURE__*/React__default["default"].createElement(Spinner, null)));
5317
+ onPostTaf: reFetchNewTafList
5318
+ }));
5021
5319
  };
5022
- /**
5023
- * Shows the list of Tafs and allows to create, edit and view Tafs.
5024
- * Needs to be wrapped in the ApiProvider.
5025
- *
5026
- * @example
5027
- * ```<ApiProvider baseURL="http://test.com" appURL="http://app.com" auth={auth} onSetAuth={onSetAuth} createApi={createApi}> authTokenUrl="url/tokenrefresh"<TafWrapper /> </ApiProvider>```
5028
- */
5029
-
5030
5320
 
5031
- var ConfirmationWrapper = function ConfirmationWrapper() {
5032
- return /*#__PURE__*/React__default["default"].createElement(shared.ConfirmationServiceProvider, null, /*#__PURE__*/React__default["default"].createElement(TafWrapper, null));
5321
+ var Wrapper = function Wrapper() {
5322
+ return /*#__PURE__*/React__namespace.createElement(shared.ConfirmationServiceProvider, null, /*#__PURE__*/React__namespace.createElement(TafModule, null));
5033
5323
  };
5034
5324
 
5035
5325
  var createApi = function createApi(url, appUrl, auth, setAuth, authTokenUrl, authClientId) {
@@ -5048,13 +5338,8 @@
5048
5338
  };
5049
5339
  };
5050
5340
 
5051
- exports.ContentDialog = ContentDialog;
5052
- exports.TafFormDialog = TafFormDialog;
5053
5341
  exports.TafFormWrapper = TafFormWrapper;
5054
- exports.TafList = TafList;
5055
- exports.TafListRow = TafListRow;
5056
- exports.TafListSection = TafListSection;
5057
- exports.TafWrapper = ConfirmationWrapper;
5342
+ exports.TafModule = Wrapper;
5058
5343
  exports.createApi = createApi;
5059
5344
 
5060
5345
  Object.defineProperty(exports, '__esModule', { value: true });