@opengeoweb/taf 2.2.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.
- package/README.md +2 -2
- package/index.d.ts +1 -3
- package/index.esm.js +1661 -1359
- package/index.umd.js +1778 -1368
- package/lib/TafDemo.stories.d.ts +2 -2
- package/lib/components/IssuesPane/IssuesButton.d.ts +8 -2
- package/lib/components/IssuesPane/IssuesPane.d.ts +5 -0
- package/lib/components/IssuesPane/IssuesPane.stories.d.ts +12 -3
- package/lib/components/Spinner/Spinner.d.ts +2 -1
- package/lib/components/StatusIcon/StatusIcon.d.ts +8 -0
- package/lib/components/{ContentDialog/ContentDialog.spec.d.ts → StatusIcon/StatusIcon.spec.d.ts} +0 -0
- package/lib/components/TabPanel/TabPanel.d.ts +8 -0
- package/lib/components/{TafForm/TafFormDialog/TafFormDialog.spec.d.ts → TabPanel/TabPanel.spec.d.ts} +0 -0
- package/lib/components/TabPanel/index.d.ts +1 -0
- package/lib/components/TafForm/TafForm.d.ts +3 -20
- package/lib/components/TafForm/TafFormButtons/TafFormButtons.d.ts +5 -9
- package/lib/components/TafForm/TafFormButtons/TafFormOptionsButton.d.ts +11 -0
- package/lib/components/TafForm/{TafFormRow/change.spec.d.ts → TafFormButtons/TafFormOptionsButton.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/types.d.ts +3 -2
- package/lib/components/TafForm/TafFormRow/{change.d.ts → validations/change.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{clouds.spec.d.ts → validations/change.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{clouds.d.ts → validations/clouds.d.ts} +1 -1
- package/lib/components/TafForm/TafFormRow/{probability.spec.d.ts → validations/clouds.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{probability.d.ts → validations/probability.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{utils.spec.d.ts → validations/probability.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{utils.d.ts → validations/utils.d.ts} +0 -0
- package/lib/components/{TafList → TafForm/TafFormRow/validations}/utils.spec.d.ts +0 -0
- package/lib/components/TafForm/TafFormRow/{validField.d.ts → validations/validField.d.ts} +1 -1
- package/lib/components/TafForm/TafFormRow/{validField.spec.d.ts → validations/validField.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{visibility.d.ts → validations/visibility.d.ts} +1 -1
- package/lib/components/TafForm/TafFormRow/{visibility.spec.d.ts → validations/visibility.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{weather.d.ts → validations/weather.d.ts} +1 -1
- package/lib/components/TafForm/TafFormRow/{weather.spec.d.ts → validations/weather.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormRow/{wind.d.ts → validations/wind.d.ts} +1 -1
- package/lib/components/TafForm/TafFormRow/{wind.spec.d.ts → validations/wind.spec.d.ts} +0 -0
- package/lib/components/TafForm/TafFormWrapper.d.ts +3 -6
- package/lib/components/TafForm/TafFormWrapper.stories.d.ts +20 -0
- package/lib/components/TafForm/index.d.ts +0 -1
- package/lib/components/TafForm/utils.d.ts +25 -2
- package/lib/components/TafHeader/TafHeader.d.ts +6 -0
- package/lib/components/{TafList/TafList.spec.d.ts → TafHeader/TafHeader.spec.d.ts} +0 -0
- package/lib/components/TafLayout/LocationTabs/LocationTabs.d.ts +10 -0
- package/lib/components/{TafList/TafListAccordion.spec.d.ts → TafLayout/LocationTabs/LocationTabs.spec.d.ts} +0 -0
- package/lib/components/TafLayout/LocationTabs/LocationTabs.stories.d.ts +13 -0
- package/lib/components/TafLayout/LocationTabs/index.d.ts +1 -0
- package/lib/components/TafLayout/TacOverview/TacContainer.d.ts +8 -0
- package/lib/components/{TafList/TafListButtons.spec.d.ts → TafLayout/TacOverview/TacContainer.spec.d.ts} +0 -0
- package/lib/components/TafLayout/TacOverview/TacOverview.d.ts +11 -0
- package/lib/components/{TafList/TafListRow.spec.d.ts → TafLayout/TacOverview/TacOverview.spec.d.ts} +0 -0
- package/lib/components/TafLayout/TacOverview/TacOverview.stories.d.ts +15 -0
- package/lib/components/TafLayout/TacOverview/TacOverviewMobile.d.ts +11 -0
- package/lib/components/{TafList/TafListSection.spec.d.ts → TafLayout/TacOverview/TacOverviewMobile.spec.d.ts} +0 -0
- package/lib/components/TafLayout/TacOverview/TacOverviewMobile.stories.d.ts +23 -0
- package/lib/components/TafLayout/TacOverview/index.d.ts +2 -0
- package/lib/components/TafLayout/TafLayout.d.ts +8 -0
- package/lib/components/{TafWrapper/TafWrapper.spec.d.ts → TafLayout/TafLayout.spec.d.ts} +0 -0
- package/lib/components/TafLayout/TafLayout.stories.d.ts +7 -0
- package/lib/components/TafLayout/TafPanel/TafPanel.d.ts +10 -0
- package/lib/components/TafLayout/TafPanel/TafPanel.spec.d.ts +1 -0
- package/lib/components/TafLayout/TafPanel/index.d.ts +1 -0
- package/lib/components/TafLayout/TopTabs/TopTabs.d.ts +11 -0
- package/lib/components/TafLayout/TopTabs/TopTabs.spec.d.ts +1 -0
- package/lib/components/TafLayout/TopTabs/TopTabs.stories.d.ts +13 -0
- package/lib/components/TafLayout/TopTabs/index.d.ts +1 -0
- package/lib/components/TafLayout/utils.d.ts +18 -0
- package/lib/components/TafLayout/utils.spec.d.ts +1 -0
- package/lib/components/TafModule/TafModule.d.ts +3 -0
- package/lib/components/TafModule/TafModule.spec.d.ts +1 -0
- package/lib/components/TafModule/TafModule.stories.d.ts +9 -0
- package/lib/components/TafModule/index.d.ts +1 -0
- package/lib/types.d.ts +17 -1
- package/lib/utils/__mocks__/api.d.ts +1 -0
- package/lib/utils/fakeApi.d.ts +1 -1
- package/lib/utils/mockdata/fakeTafList.d.ts +1 -0
- package/lib/utils/testUtils.d.ts +4 -5
- package/package.json +7 -6
- package/lib/components/ContentDialog/ContentDialog.d.ts +0 -14
- package/lib/components/ContentDialog/ContentDialog.stories.d.ts +0 -7
- package/lib/components/ContentDialog/index.d.ts +0 -1
- package/lib/components/IssuesPane/IssuesPane.styles.d.ts +0 -1
- package/lib/components/TafForm/TafForm.styles.d.ts +0 -1
- package/lib/components/TafForm/TafFormDialog/TafFormDialog.d.ts +0 -12
- package/lib/components/TafForm/TafFormDialog/TafFormDialog.stories.d.ts +0 -9
- package/lib/components/TafList/TafList.d.ts +0 -11
- package/lib/components/TafList/TafList.stories.d.ts +0 -8
- package/lib/components/TafList/TafListAccordion.d.ts +0 -11
- package/lib/components/TafList/TafListButtons.d.ts +0 -9
- package/lib/components/TafList/TafListRow.d.ts +0 -12
- package/lib/components/TafList/TafListSection.d.ts +0 -12
- package/lib/components/TafList/TafListSection.stories.d.ts +0 -18
- package/lib/components/TafList/index.d.ts +0 -3
- package/lib/components/TafList/utils.d.ts +0 -4
- package/lib/components/TafWrapper/TafWrapper.d.ts +0 -13
- package/lib/components/TafWrapper/index.d.ts +0 -1
- 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('@
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'react', '@mui/material', '@
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Taf = {}, global.React, global.material, global.
|
|
5
|
-
})(this, (function (exports, React, material,
|
|
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,62 +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
|
-
},
|
|
177
|
-
EHRD: {
|
|
178
|
-
validity_duration: 30,
|
|
179
|
-
activity_period: 6
|
|
180
|
-
},
|
|
181
|
-
EHGG: {
|
|
182
|
-
validity_duration: 30,
|
|
183
|
-
activity_period: 6
|
|
184
|
-
},
|
|
185
|
-
EHBK: {
|
|
186
|
-
validity_duration: 30,
|
|
187
|
-
activity_period: 6
|
|
188
|
-
},
|
|
189
|
-
EHLE: {
|
|
190
|
-
validity_duration: 30,
|
|
191
|
-
activity_period: 6
|
|
192
|
-
},
|
|
193
|
-
TNCB: {
|
|
194
|
-
validity_duration: 30,
|
|
195
|
-
activity_period: 6
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
var tafConfig = {
|
|
199
|
-
location_indicator_mwo: location_indicator_mwo,
|
|
200
|
-
locations: locations
|
|
201
|
-
};
|
|
202
|
-
|
|
203
139
|
function _typeof(obj) {
|
|
204
140
|
"@babel/helpers - typeof";
|
|
205
141
|
|
|
@@ -2458,13 +2394,26 @@
|
|
|
2458
2394
|
if (action === 'PUBLISH') return 'Publish';
|
|
2459
2395
|
if (action === 'AMEND') return 'This TAF is an amendment';
|
|
2460
2396
|
if (action === 'CORRECT') return 'This TAF is a correction';
|
|
2397
|
+
if (action === 'CANCEL') return 'Cancel TAF';
|
|
2461
2398
|
return 'Cancel TAF';
|
|
2399
|
+
}; // Check if the amended/corrected TAF has been changed. Only compare the fields users are able to fill in
|
|
2400
|
+
// (i.e. exclude baseforecast valid time as that gets updated when doing an amendment automatically outside of the users influence)
|
|
2401
|
+
|
|
2402
|
+
var isTafAmendedCorrectedChanged = function isTafAmendedCorrectedChanged(isFormDirty, originalTaf, currentTaf) {
|
|
2403
|
+
var originalBaseF = originalTaf.baseForecast,
|
|
2404
|
+
originalChG = originalTaf.changeGroups;
|
|
2405
|
+
var currentBaseF = currentTaf.baseForecast,
|
|
2406
|
+
currentChG = currentTaf.changeGroups;
|
|
2407
|
+
|
|
2408
|
+
originalBaseF.valid;
|
|
2409
|
+
var originalNoValid = __rest(originalBaseF, ["valid"]);
|
|
2410
|
+
|
|
2411
|
+
currentBaseF.valid;
|
|
2412
|
+
var currentNoValid = __rest(currentBaseF, ["valid"]);
|
|
2413
|
+
|
|
2414
|
+
return isFormDirty && (!lodash.isEqual(originalNoValid, currentNoValid) || !lodash.isEqual(originalChG, currentChG));
|
|
2462
2415
|
};
|
|
2463
2416
|
var getConfirmationDialogContent = function getConfirmationDialogContent(action, isFormDirty) {
|
|
2464
|
-
if (isFormDirty === void 0) {
|
|
2465
|
-
isFormDirty = true;
|
|
2466
|
-
}
|
|
2467
|
-
|
|
2468
2417
|
switch (action) {
|
|
2469
2418
|
case 'DISCARD':
|
|
2470
2419
|
return 'Are you sure you would like to discard this TAF? Any changes made will be lost';
|
|
@@ -2474,7 +2423,7 @@
|
|
|
2474
2423
|
|
|
2475
2424
|
case 'AMEND':
|
|
2476
2425
|
case 'CORRECT':
|
|
2477
|
-
return isFormDirty ? 'Do you want to publish it?' : 'Are you sure you want to publish the TAF? You did not make any changes!';
|
|
2426
|
+
return isFormDirty() ? 'Do you want to publish it?' : 'Are you sure you want to publish the TAF? You did not make any changes!';
|
|
2478
2427
|
|
|
2479
2428
|
default:
|
|
2480
2429
|
return 'Are you sure you want to cancel this TAF?';
|
|
@@ -2487,89 +2436,150 @@
|
|
|
2487
2436
|
return 'Discard';
|
|
2488
2437
|
}
|
|
2489
2438
|
|
|
2439
|
+
case 'CANCEL':
|
|
2440
|
+
return 'Cancel';
|
|
2441
|
+
|
|
2490
2442
|
default:
|
|
2491
2443
|
{
|
|
2492
2444
|
return 'Publish';
|
|
2493
2445
|
}
|
|
2494
2446
|
}
|
|
2495
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';
|
|
2470
|
+
|
|
2471
|
+
case 'DRAFT_CORRECTED':
|
|
2472
|
+
return 'draft corrected';
|
|
2473
|
+
|
|
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
|
+
}
|
|
2486
|
+
|
|
2487
|
+
return taf.messageType;
|
|
2488
|
+
}; // For corrections and amendment we need to add the previousValidStart and End for the TAC converter
|
|
2489
|
+
|
|
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
|
+
});
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2511
|
+
return __assign(__assign({}, taf), {
|
|
2512
|
+
previousValidDateStart: previousValidDateStart,
|
|
2513
|
+
previousValidDateEnd: previousValidDateEnd
|
|
2514
|
+
});
|
|
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
|
|
2521
|
+
|
|
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
|
+
});
|
|
2532
|
+
};
|
|
2496
2533
|
|
|
2497
|
-
var
|
|
2534
|
+
var textFieldStyle = function textFieldStyle(theme) {
|
|
2498
2535
|
return {
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2536
|
+
// input
|
|
2537
|
+
marginRight: '2px',
|
|
2538
|
+
marginBottom: '4px',
|
|
2539
|
+
width: 56,
|
|
2540
|
+
height: 46,
|
|
2541
|
+
input: {
|
|
2542
|
+
textAlign: 'center',
|
|
2543
|
+
fontSize: 10,
|
|
2544
|
+
fontWeight: 500,
|
|
2545
|
+
paddingLeft: 0,
|
|
2546
|
+
paddingRight: 0,
|
|
2547
|
+
'&.Mui-disabled': {
|
|
2548
|
+
color: 'geowebColors.typographyAndIcons.text',
|
|
2549
|
+
WebkitTextFillColor: theme.palette.geowebColors.typographyAndIcons.text
|
|
2505
2550
|
},
|
|
2506
|
-
|
|
2507
|
-
|
|
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
|
+
|
|
2508
2555
|
}
|
|
2509
2556
|
},
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
WebkitTextFillColor: '#051039',
|
|
2557
|
+
label: {
|
|
2558
|
+
transformOrigin: 'center top',
|
|
2559
|
+
right: 0,
|
|
2560
|
+
textAlign: 'center',
|
|
2561
|
+
fontSize: '10px',
|
|
2516
2562
|
'&.Mui-disabled': {
|
|
2517
|
-
|
|
2518
|
-
}
|
|
2519
|
-
},
|
|
2520
|
-
textFieldLabel: {
|
|
2521
|
-
fontSize: '14px'
|
|
2522
|
-
},
|
|
2523
|
-
textFieldLabelShrink: {
|
|
2524
|
-
transform: 'translate(2px, 10px) scale(0.75) !important'
|
|
2525
|
-
},
|
|
2526
|
-
formRow: {
|
|
2527
|
-
marginTop: 8,
|
|
2528
|
-
backgroundColor: theme.palette.common.white,
|
|
2529
|
-
position: 'relative',
|
|
2530
|
-
'&.sortable-chosen': {
|
|
2531
|
-
boxShadow: theme.shadows[1]
|
|
2563
|
+
color: 'geowebColors.captions.captionStatus.rgba'
|
|
2532
2564
|
},
|
|
2533
|
-
'
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
},
|
|
2537
|
-
tacTitle: {
|
|
2538
|
-
fontSize: '20px',
|
|
2539
|
-
fontWeight: 500
|
|
2540
|
-
},
|
|
2541
|
-
tacText: {
|
|
2542
|
-
fontSize: '14px',
|
|
2543
|
-
color: '#000000'
|
|
2544
|
-
},
|
|
2545
|
-
tacLine: {
|
|
2546
|
-
margin: '0',
|
|
2547
|
-
padding: '.1em .1em .1em 0.8em',
|
|
2548
|
-
textIndent: '-0.7em',
|
|
2549
|
-
borderRadius: '3px'
|
|
2550
|
-
},
|
|
2551
|
-
addButton: {
|
|
2552
|
-
marginRight: '48px'
|
|
2553
|
-
},
|
|
2554
|
-
lifecycleButtons: {
|
|
2555
|
-
marginTop: '40px',
|
|
2556
|
-
marginBottom: '16px'
|
|
2557
|
-
},
|
|
2558
|
-
actionButton: {
|
|
2559
|
-
marginRight: '16px'
|
|
2565
|
+
whiteSpace: 'nowrap',
|
|
2566
|
+
maxWidth: '100%',
|
|
2567
|
+
transform: 'translate(0px, 16px) scale(1)'
|
|
2560
2568
|
},
|
|
2561
|
-
|
|
2562
|
-
|
|
2569
|
+
// shrink
|
|
2570
|
+
' .MuiInputLabel-shrink': {
|
|
2571
|
+
transform: 'translate(2px, 10px) scale(0.75) !important',
|
|
2572
|
+
letterSpacing: '0.33px',
|
|
2573
|
+
textAlign: 'left'
|
|
2563
2574
|
},
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
minWidth: 96
|
|
2575
|
+
// root
|
|
2576
|
+
'&': {
|
|
2577
|
+
'.Mui-disabled:before': {
|
|
2578
|
+
borderColor: 'transparent'
|
|
2579
|
+
}
|
|
2570
2580
|
}
|
|
2571
2581
|
};
|
|
2572
|
-
}
|
|
2582
|
+
};
|
|
2573
2583
|
|
|
2574
2584
|
var getTafErrors = function getTafErrors(name, errors) {
|
|
2575
2585
|
var nameAsArray = name.split('.');
|
|
@@ -2592,25 +2602,13 @@
|
|
|
2592
2602
|
return disabled && !value ? '-' : value;
|
|
2593
2603
|
};
|
|
2594
2604
|
var BaseTextField = /*#__PURE__*/React__default["default"].memo(function (props) {
|
|
2595
|
-
var classes = useStyles$9();
|
|
2596
2605
|
return /*#__PURE__*/React__default["default"].createElement(material.TextField, __assign({
|
|
2597
2606
|
type: "text",
|
|
2598
2607
|
variant: "filled",
|
|
2599
|
-
|
|
2600
|
-
classes: {
|
|
2601
|
-
input: classes.textFieldInput,
|
|
2602
|
-
root: classes.textFieldRoot
|
|
2603
|
-
}
|
|
2604
|
-
},
|
|
2605
|
-
InputLabelProps: {
|
|
2606
|
-
classes: {
|
|
2607
|
-
root: classes.textFieldLabel,
|
|
2608
|
-
shrink: classes.textFieldLabelShrink
|
|
2609
|
-
}
|
|
2610
|
-
}
|
|
2608
|
+
sx: textFieldStyle
|
|
2611
2609
|
}, props));
|
|
2612
2610
|
}, function (prevProps, nextProps) {
|
|
2613
|
-
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;
|
|
2614
2612
|
});
|
|
2615
2613
|
|
|
2616
2614
|
var TafFormTextField = function TafFormTextField(_a) {
|
|
@@ -2632,7 +2630,6 @@
|
|
|
2632
2630
|
autoComplete = _h === void 0 ? [] : _h,
|
|
2633
2631
|
_j = _a.autoFocus,
|
|
2634
2632
|
autoFocus = _j === void 0 ? false : _j;
|
|
2635
|
-
var classes = useStyles$9();
|
|
2636
2633
|
|
|
2637
2634
|
var _k = reactHookForm.useFormContext(),
|
|
2638
2635
|
control = _k.control,
|
|
@@ -2688,11 +2685,7 @@
|
|
|
2688
2685
|
inputRef.current.disabled = false;
|
|
2689
2686
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
2690
2687
|
}, []);
|
|
2691
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
2692
|
-
item: true,
|
|
2693
|
-
xs: true,
|
|
2694
|
-
className: classes.textFieldGridItem
|
|
2695
|
-
}, /*#__PURE__*/React__default["default"].createElement(reactHookForm.Controller, {
|
|
2688
|
+
return /*#__PURE__*/React__default["default"].createElement(reactHookForm.Controller, {
|
|
2696
2689
|
render: function render(_props) {
|
|
2697
2690
|
var displayValue = formatter ? formatter(_props.value) : getDisplayValue(_props.value, disabled);
|
|
2698
2691
|
return /*#__PURE__*/React__default["default"].createElement(BaseTextField, {
|
|
@@ -2720,7 +2713,7 @@
|
|
|
2720
2713
|
defaultValue: defaultValue,
|
|
2721
2714
|
rules: rules,
|
|
2722
2715
|
onFocus: onFocusField
|
|
2723
|
-
})
|
|
2716
|
+
});
|
|
2724
2717
|
};
|
|
2725
2718
|
|
|
2726
2719
|
/* *
|
|
@@ -2784,6 +2777,71 @@
|
|
|
2784
2777
|
return isValid ? true : invalidProbabilityMessage;
|
|
2785
2778
|
};
|
|
2786
2779
|
|
|
2780
|
+
/* *
|
|
2781
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
2782
|
+
* you may not use this file except in compliance with the License.
|
|
2783
|
+
* You may obtain a copy of the License at
|
|
2784
|
+
*
|
|
2785
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
2786
|
+
*
|
|
2787
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2788
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
2789
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2790
|
+
* See the License for the specific language governing permissions and
|
|
2791
|
+
* limitations under the License.
|
|
2792
|
+
*
|
|
2793
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
2794
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
2795
|
+
* */
|
|
2796
|
+
var AddIcon = /*#__PURE__*/React__namespace.createElement(material.SvgIcon, null, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2797
|
+
d: "M10.647 10.647h6.82a1.276 1.276 0 1 0 0-2.552h-6.82v-6.82a1.276 1.276 0 1 0-2.552 0v6.82h-6.82a1.276 1.276 0 1 0 0 2.552h6.82v6.82a1.274 1.274 0 0 0 1.276 1.275c.705 0 1.276-.571 1.276-1.276v-6.82z"
|
|
2798
|
+
}));
|
|
2799
|
+
var DeleteIcon = /*#__PURE__*/React__namespace.createElement(material.SvgIcon, null, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2800
|
+
d: "M17.504 8.228c.588 0 1.027.48.973 1.066l-.876 9.64A1.197 1.197 0 0 1 16.434 20H8.41c-.59 0-1.115-.48-1.167-1.066l-.877-9.64a.962.962 0 0 1 .973-1.066zm-2.115 1.228a.82.82 0 0 0-.819.82v7.674a.818.818 0 0 0 1.638 0v-7.675a.819.819 0 0 0-.819-.819zm-2.968 0a.819.819 0 0 0-.819.82v7.674a.818.818 0 1 0 1.638 0v-7.675a.82.82 0 0 0-.82-.819zm-2.968 0a.819.819 0 0 0-.818.82v7.674a.818.818 0 1 0 1.637 0v-7.675a.82.82 0 0 0-.82-.819zM13.432 4c.21 0 .404.168.436.376l.107.758 3.256-.01a1.606 1.606 0 0 1 1.61 1.6l.001.535-12.841.038L6 6.76a1.605 1.605 0 0 1 1.6-1.61l3.262-.008.103-.758a.454.454 0 0 1 .434-.38z"
|
|
2801
|
+
}));
|
|
2802
|
+
var CrossIcon = /*#__PURE__*/React__namespace.createElement(material.SvgIcon, null, /*#__PURE__*/React__namespace.createElement("path", {
|
|
2803
|
+
d: "m13.805 12 4.821-4.822a1.276 1.276 0 1 0-1.804-1.804L12 10.195 7.178 5.374a1.276 1.276 0 1 0-1.804 1.804L10.196 12l-4.822 4.822a1.276 1.276 0 1 0 1.804 1.805L12 13.805l4.822 4.822a1.274 1.274 0 0 0 1.804 0c.499-.5.499-1.306 0-1.805L13.805 12z"
|
|
2804
|
+
}));
|
|
2805
|
+
|
|
2806
|
+
var TafFormOptionsButton = function TafFormOptionsButton(_a) {
|
|
2807
|
+
var isChangeGroup = _a.isChangeGroup,
|
|
2808
|
+
addChangeGroupBelow = _a.addChangeGroupBelow,
|
|
2809
|
+
addChangeGroupAbove = _a.addChangeGroupAbove,
|
|
2810
|
+
removeChangeGroup = _a.removeChangeGroup,
|
|
2811
|
+
clearRow = _a.clearRow,
|
|
2812
|
+
index = _a.index;
|
|
2813
|
+
var insertAbove = {
|
|
2814
|
+
text: 'Insert 1 row above',
|
|
2815
|
+
icon: AddIcon,
|
|
2816
|
+
action: addChangeGroupAbove
|
|
2817
|
+
};
|
|
2818
|
+
var insertBelow = {
|
|
2819
|
+
text: 'Insert 1 row below',
|
|
2820
|
+
icon: AddIcon,
|
|
2821
|
+
action: addChangeGroupBelow
|
|
2822
|
+
};
|
|
2823
|
+
var deleteRow = {
|
|
2824
|
+
text: 'Delete row',
|
|
2825
|
+
icon: DeleteIcon,
|
|
2826
|
+
action: removeChangeGroup
|
|
2827
|
+
};
|
|
2828
|
+
var clear = {
|
|
2829
|
+
text: 'Clear row',
|
|
2830
|
+
icon: CrossIcon,
|
|
2831
|
+
action: clearRow
|
|
2832
|
+
};
|
|
2833
|
+
var menuItemsBaseForecast = [insertBelow, clear];
|
|
2834
|
+
var menuItemsChangeGroup = [insertAbove, insertBelow, deleteRow, clear];
|
|
2835
|
+
return /*#__PURE__*/React__namespace.createElement(shared.ToggleMenu, {
|
|
2836
|
+
buttonTestId: "tafFormOptions[" + index + "]",
|
|
2837
|
+
buttonSx: {
|
|
2838
|
+
marginTop: '10px',
|
|
2839
|
+
marginLeft: '4px'
|
|
2840
|
+
},
|
|
2841
|
+
menuItems: isChangeGroup ? menuItemsChangeGroup : menuItemsBaseForecast
|
|
2842
|
+
});
|
|
2843
|
+
};
|
|
2844
|
+
|
|
2787
2845
|
var getDefaultValue = function getDefaultValue(fieldName, data) {
|
|
2788
2846
|
if (!data) {
|
|
2789
2847
|
return '';
|
|
@@ -2804,30 +2862,29 @@
|
|
|
2804
2862
|
disabled = _c === void 0 ? false : _c,
|
|
2805
2863
|
_d = _a.index,
|
|
2806
2864
|
index = _d === void 0 ? -1 : _d,
|
|
2807
|
-
_e = _a.lastRow,
|
|
2808
|
-
lastRow = _e === void 0 ? false : _e,
|
|
2809
2865
|
onRemoveChangeGroup = _a.onRemoveChangeGroup,
|
|
2810
|
-
|
|
2811
|
-
field =
|
|
2812
|
-
|
|
2813
|
-
dragHandle =
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2866
|
+
_e = _a.field,
|
|
2867
|
+
field = _e === void 0 ? null : _e,
|
|
2868
|
+
_f = _a.dragHandle,
|
|
2869
|
+
dragHandle = _f === void 0 ? null : _f,
|
|
2870
|
+
onAddChangeGroupBelow = _a.onAddChangeGroupBelow,
|
|
2871
|
+
onAddChangeGroupAbove = _a.onAddChangeGroupAbove,
|
|
2872
|
+
onClearRow = _a.onClearRow,
|
|
2873
|
+
props = __rest(_a, ["isChangeGroup", "disabled", "index", "onRemoveChangeGroup", "field", "dragHandle", "onAddChangeGroupBelow", "onAddChangeGroupAbove", "onClearRow"]);
|
|
2874
|
+
|
|
2818
2875
|
var namePrefix = !isChangeGroup ? 'baseForecast' : "changeGroups[" + index + "]";
|
|
2819
2876
|
var fieldNames = getFieldNames(isChangeGroup, index);
|
|
2820
2877
|
|
|
2821
|
-
var
|
|
2822
|
-
getValues =
|
|
2823
|
-
trigger =
|
|
2878
|
+
var _g = reactHookForm.useFormContext(),
|
|
2879
|
+
getValues = _g.getValues,
|
|
2880
|
+
trigger = _g.trigger;
|
|
2824
2881
|
|
|
2825
2882
|
var isNotRequiredForAction = shared.useDraftFormHelpers().isRequired; // cross-field required validation
|
|
2826
2883
|
|
|
2827
|
-
var
|
|
2828
|
-
mainFields =
|
|
2829
|
-
mainOptionalFields =
|
|
2830
|
-
subFields =
|
|
2884
|
+
var _h = __read(getRequiredCrossFields(fieldNames), 3),
|
|
2885
|
+
mainFields = _h[0],
|
|
2886
|
+
mainOptionalFields = _h[1],
|
|
2887
|
+
subFields = _h[2];
|
|
2831
2888
|
|
|
2832
2889
|
var hasFieldsValue = function hasFieldsValue(fields) {
|
|
2833
2890
|
return fields.map(getValues).find(function (field) {
|
|
@@ -2925,14 +2982,39 @@
|
|
|
2925
2982
|
return validFields;
|
|
2926
2983
|
};
|
|
2927
2984
|
|
|
2928
|
-
var
|
|
2929
|
-
|
|
2930
|
-
}, [
|
|
2985
|
+
var addChangeGroupBelow = React__default["default"].useCallback(function () {
|
|
2986
|
+
onAddChangeGroupBelow(index);
|
|
2987
|
+
}, [onAddChangeGroupBelow, index]);
|
|
2988
|
+
var addChangeGroupAbove = React__default["default"].useCallback(function () {
|
|
2989
|
+
onAddChangeGroupAbove(index);
|
|
2990
|
+
}, [onAddChangeGroupAbove, index]);
|
|
2991
|
+
var clearRow = React__default["default"].useCallback(function () {
|
|
2992
|
+
onClearRow(index);
|
|
2993
|
+
}, [onClearRow, index]);
|
|
2931
2994
|
return /*#__PURE__*/React__default["default"].createElement(material.Grid, __assign({
|
|
2995
|
+
sx: {
|
|
2996
|
+
marginTop: '8px',
|
|
2997
|
+
backgroundColor: 'geowebColors.cards.cardContainer',
|
|
2998
|
+
position: 'relative',
|
|
2999
|
+
'&.sortable-chosen': {
|
|
3000
|
+
boxShadow: 1
|
|
3001
|
+
},
|
|
3002
|
+
'&.sortable-ghost': {
|
|
3003
|
+
opacity: 0.5
|
|
3004
|
+
}
|
|
3005
|
+
},
|
|
3006
|
+
justifyContent: "flex-start",
|
|
2932
3007
|
"data-testid": "row-" + namePrefix,
|
|
2933
3008
|
container: true,
|
|
2934
|
-
ref: ref
|
|
2935
|
-
|
|
3009
|
+
ref: ref,
|
|
3010
|
+
columns: 24
|
|
3011
|
+
}, props), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
3012
|
+
item: true,
|
|
3013
|
+
container: true,
|
|
3014
|
+
justifyContent: "flex-end",
|
|
3015
|
+
xs: 24,
|
|
3016
|
+
sm: 23
|
|
3017
|
+
}, !isChangeGroup && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(TafFormTextField, {
|
|
2936
3018
|
label: "Type",
|
|
2937
3019
|
name: fieldNames.messageType,
|
|
2938
3020
|
disabled: true
|
|
@@ -2945,13 +3027,12 @@
|
|
|
2945
3027
|
label: "Issue time",
|
|
2946
3028
|
name: "issueDate",
|
|
2947
3029
|
disabled: true
|
|
2948
|
-
})), isChangeGroup && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
display: 'flex'
|
|
3030
|
+
})), isChangeGroup && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
3031
|
+
sx: {
|
|
3032
|
+
width: 56,
|
|
3033
|
+
marginRight: '2px'
|
|
2953
3034
|
}
|
|
2954
|
-
}, dragHandle), /*#__PURE__*/React__default["default"].createElement(TafFormTextField, {
|
|
3035
|
+
}, !disabled && dragHandle), /*#__PURE__*/React__default["default"].createElement(TafFormTextField, {
|
|
2955
3036
|
label: "Prob",
|
|
2956
3037
|
name: fieldNames.probability,
|
|
2957
3038
|
disabled: disabled,
|
|
@@ -3189,83 +3270,222 @@
|
|
|
3189
3270
|
}
|
|
3190
3271
|
}
|
|
3191
3272
|
}
|
|
3192
|
-
}),
|
|
3193
|
-
className: classes.emptyButtonContainer,
|
|
3273
|
+
})), !disabled && /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
3194
3274
|
item: true,
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
item: true
|
|
3203
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.IconButton, {
|
|
3204
|
-
"aria-label": "add",
|
|
3205
|
-
"data-testid": "add-changeGroup",
|
|
3206
|
-
onClick: addChangeGroup,
|
|
3207
|
-
size: "large"
|
|
3208
|
-
}, /*#__PURE__*/React__default["default"].createElement(iconsMaterial.Add, null)), /*#__PURE__*/React__default["default"].createElement(material.IconButton, __assign({
|
|
3209
|
-
"aria-label": "delete",
|
|
3210
|
-
"data-testid": "remove-changeGroup",
|
|
3211
|
-
onClick: function onClick() {
|
|
3212
|
-
return onRemoveChangeGroup(index);
|
|
3275
|
+
container: true,
|
|
3276
|
+
justifyContent: "flex-end",
|
|
3277
|
+
alignItems: "flex-end",
|
|
3278
|
+
xs: 24,
|
|
3279
|
+
sm: 1,
|
|
3280
|
+
sx: {
|
|
3281
|
+
marginBottom: '16px'
|
|
3213
3282
|
}
|
|
3214
|
-
},
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3283
|
+
}, /*#__PURE__*/React__default["default"].createElement(TafFormOptionsButton, {
|
|
3284
|
+
isChangeGroup: isChangeGroup,
|
|
3285
|
+
addChangeGroupBelow: addChangeGroupBelow,
|
|
3286
|
+
addChangeGroupAbove: addChangeGroupAbove,
|
|
3287
|
+
removeChangeGroup: function removeChangeGroup() {
|
|
3288
|
+
return onRemoveChangeGroup(index);
|
|
3289
|
+
},
|
|
3290
|
+
clearRow: clearRow,
|
|
3291
|
+
index: index
|
|
3292
|
+
})));
|
|
3219
3293
|
});
|
|
3220
3294
|
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3295
|
+
/* *
|
|
3296
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3297
|
+
* you may not use this file except in compliance with the License.
|
|
3298
|
+
* You may obtain a copy of the License at
|
|
3299
|
+
*
|
|
3300
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3301
|
+
*
|
|
3302
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3303
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3304
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3305
|
+
* See the License for the specific language governing permissions and
|
|
3306
|
+
* limitations under the License.
|
|
3307
|
+
*
|
|
3308
|
+
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
3309
|
+
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
3310
|
+
* */
|
|
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
|
|
3231
3327
|
}
|
|
3232
3328
|
};
|
|
3233
3329
|
|
|
3234
|
-
var
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
width: '74px',
|
|
3243
|
-
color: '#ffffff',
|
|
3244
|
-
backgroundColor: buttonColor,
|
|
3245
|
-
'&:hover': {
|
|
3246
|
-
backgroundColor: buttonColor
|
|
3247
|
-
},
|
|
3248
|
-
'&:focus': {
|
|
3249
|
-
backgroundColor: buttonColor
|
|
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');
|
|
3250
3338
|
}
|
|
3251
|
-
}
|
|
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"));
|
|
3252
3352
|
};
|
|
3253
3353
|
|
|
3254
|
-
var
|
|
3255
|
-
var
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
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
|
|
3266
3440
|
}));
|
|
3267
3441
|
};
|
|
3268
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
|
+
|
|
3269
3489
|
var ThumbsUp = function ThumbsUp(props) {
|
|
3270
3490
|
return /*#__PURE__*/React__default["default"].createElement(material.SvgIcon, __assign({
|
|
3271
3491
|
fontSize: "inherit",
|
|
@@ -3287,32 +3507,6 @@
|
|
|
3287
3507
|
})));
|
|
3288
3508
|
};
|
|
3289
3509
|
|
|
3290
|
-
/* *
|
|
3291
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3292
|
-
* you may not use this file except in compliance with the License.
|
|
3293
|
-
* You may obtain a copy of the License at
|
|
3294
|
-
*
|
|
3295
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3296
|
-
*
|
|
3297
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
3298
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3299
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3300
|
-
* See the License for the specific language governing permissions and
|
|
3301
|
-
* limitations under the License.
|
|
3302
|
-
*
|
|
3303
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
3304
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
3305
|
-
* */
|
|
3306
|
-
var useStyles$8 = makeStyles__default["default"]({
|
|
3307
|
-
paneContent: {
|
|
3308
|
-
marginTop: '16px',
|
|
3309
|
-
marginLeft: '24px'
|
|
3310
|
-
},
|
|
3311
|
-
image: {
|
|
3312
|
-
fontSize: '4rem'
|
|
3313
|
-
}
|
|
3314
|
-
});
|
|
3315
|
-
|
|
3316
3510
|
var getPaneTitle = function getPaneTitle(sumOfErrors) {
|
|
3317
3511
|
switch (sumOfErrors) {
|
|
3318
3512
|
case 0:
|
|
@@ -3351,7 +3545,7 @@
|
|
|
3351
3545
|
var nameWithoutBrackets = nameAsString.replace(/[[\]']+/g, '');
|
|
3352
3546
|
var nameLowerCase = nameWithoutBrackets.toLowerCase();
|
|
3353
3547
|
|
|
3354
|
-
var _a = __read(nameLowerCase.split(/([0-9]+)/) // split
|
|
3548
|
+
var _a = __read(nameLowerCase.split(/([0-9]+)/) // split num bers from field and build array
|
|
3355
3549
|
.filter(function (s) {
|
|
3356
3550
|
return s.length;
|
|
3357
3551
|
}), 2),
|
|
@@ -3377,33 +3571,43 @@
|
|
|
3377
3571
|
var fieldErrorTitle = humanizeErrorMessage(firstNamePart);
|
|
3378
3572
|
return index + 1 + ". " + fieldErrorTitle + ": " + getErrorDefaultMessage(error);
|
|
3379
3573
|
};
|
|
3574
|
+
var MODAL_DIALOG_ELEMENT = 'modal-dialog';
|
|
3380
3575
|
|
|
3381
3576
|
var IssuesPane = function IssuesPane(_a) {
|
|
3382
3577
|
var isOpen = _a.isOpen,
|
|
3383
3578
|
handleClose = _a.handleClose,
|
|
3384
3579
|
_b = _a.errorList,
|
|
3385
|
-
errorList = _b === void 0 ? [] : _b
|
|
3386
|
-
|
|
3387
|
-
|
|
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, {
|
|
3388
3588
|
startSize: {
|
|
3389
3589
|
width: '577px',
|
|
3390
3590
|
height: '200px'
|
|
3391
3591
|
},
|
|
3392
|
-
startPosition:
|
|
3393
|
-
left: 370,
|
|
3394
|
-
top: 570
|
|
3395
|
-
},
|
|
3592
|
+
startPosition: startPosition,
|
|
3396
3593
|
minWidth: 300,
|
|
3397
3594
|
onClose: handleClose,
|
|
3398
3595
|
title: getPaneTitle(errorList.length),
|
|
3399
3596
|
headerSize: "xs",
|
|
3400
3597
|
isOpen: isOpen,
|
|
3401
3598
|
"data-testid": "moveable-issues-pane",
|
|
3402
|
-
bounds: "
|
|
3403
|
-
}, /*#__PURE__*/React__namespace.createElement(
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
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
|
+
},
|
|
3407
3611
|
"data-testid": "zeroIssuesImage"
|
|
3408
3612
|
}, /*#__PURE__*/React__namespace.createElement(ThumbsUp, null)), errorList.length > 0 && errorList.map(function (error, index) {
|
|
3409
3613
|
return /*#__PURE__*/React__namespace.createElement(material.Typography // eslint-disable-next-line react/no-array-index-key
|
|
@@ -3413,7 +3617,7 @@
|
|
|
3413
3617
|
variant: "body1",
|
|
3414
3618
|
"data-testid": "errorMessage"
|
|
3415
3619
|
}, getErrorMessage(error, index));
|
|
3416
|
-
})));
|
|
3620
|
+
}))), rootElement);
|
|
3417
3621
|
};
|
|
3418
3622
|
|
|
3419
3623
|
var getCustomError = function getCustomError(error) {
|
|
@@ -3427,6 +3631,19 @@
|
|
|
3427
3631
|
});
|
|
3428
3632
|
};
|
|
3429
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
|
+
|
|
3430
3647
|
var getErrorValues = function getErrorValues(fieldErrors) {
|
|
3431
3648
|
if (!fieldErrors) return [];
|
|
3432
3649
|
return Object.keys(fieldErrors).reduce(function (list, key) {
|
|
@@ -3440,22 +3657,6 @@
|
|
|
3440
3657
|
}, []);
|
|
3441
3658
|
};
|
|
3442
3659
|
|
|
3443
|
-
var getErrors = function getErrors(errors) {
|
|
3444
|
-
var errorList = Object.keys(errors).reduce(function (list, key) {
|
|
3445
|
-
var errorValue = errors[key];
|
|
3446
|
-
|
|
3447
|
-
if (Array.isArray(errorValue)) {
|
|
3448
|
-
var errorValues = errorValue.reduce(function (l, i) {
|
|
3449
|
-
return l.concat(getErrorValues(i));
|
|
3450
|
-
}, []);
|
|
3451
|
-
return list.concat.apply(list, __spreadArray([], __read(errorValues)));
|
|
3452
|
-
}
|
|
3453
|
-
|
|
3454
|
-
return list.concat(getErrorValues(errorValue));
|
|
3455
|
-
}, []);
|
|
3456
|
-
return errorList;
|
|
3457
|
-
};
|
|
3458
|
-
|
|
3459
3660
|
var filterDuplicateErrors = function filterDuplicateErrors(errors) {
|
|
3460
3661
|
return errors.reduce(function (list, error) {
|
|
3461
3662
|
// check on type validateRequiredSub and validateRequiredMainOptional since these are giving 'duplicates'
|
|
@@ -3477,216 +3678,146 @@
|
|
|
3477
3678
|
}, []);
|
|
3478
3679
|
};
|
|
3479
3680
|
|
|
3480
|
-
var
|
|
3481
|
-
var
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
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;
|
|
3485
3700
|
var errorList = filterDuplicateErrors(getErrors(errors));
|
|
3701
|
+
var totalErrors = errorList.length;
|
|
3702
|
+
var errorStatus = totalErrors > 0 ? 'error' : 'success';
|
|
3703
|
+
var buttonColor = "geowebColors.functional." + errorStatus;
|
|
3486
3704
|
|
|
3487
|
-
var
|
|
3488
|
-
isIssuesPaneOpen =
|
|
3489
|
-
setIsIssuesPaneOpen =
|
|
3705
|
+
var _c = __read(React__namespace.useState(false), 2),
|
|
3706
|
+
isIssuesPaneOpen = _c[0],
|
|
3707
|
+
setIsIssuesPaneOpen = _c[1];
|
|
3490
3708
|
|
|
3491
3709
|
var toggleIssuesPane = function toggleIssuesPane() {
|
|
3492
3710
|
return setIsIssuesPaneOpen(!isIssuesPaneOpen);
|
|
3493
3711
|
};
|
|
3494
3712
|
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
item: true
|
|
3502
|
-
}, /*#__PURE__*/React__default["default"].createElement(IssuesButton, {
|
|
3503
|
-
sumOfErrors: errorList.length,
|
|
3504
|
-
togglePane: toggleIssuesPane
|
|
3505
|
-
})), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
3506
|
-
item: true
|
|
3507
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Button, {
|
|
3508
|
-
"data-testid": "discardtaf",
|
|
3509
|
-
variant: "outlined",
|
|
3510
|
-
color: "secondary",
|
|
3511
|
-
type: "button",
|
|
3512
|
-
className: classes.actionButton,
|
|
3513
|
-
onClick: function onClick() {
|
|
3514
|
-
// Simply discard the changes and close the dialog.
|
|
3515
|
-
onTafFormButtonPress('DISCARD');
|
|
3516
|
-
}
|
|
3517
|
-
}, "Discard"), /*#__PURE__*/React__default["default"].createElement(material.Button, {
|
|
3518
|
-
"data-testid": "savedrafttaf",
|
|
3519
|
-
variant: "outlined",
|
|
3520
|
-
color: "secondary",
|
|
3521
|
-
type: "button",
|
|
3522
|
-
className: classes.actionButton,
|
|
3523
|
-
onClick: function onClick() {
|
|
3524
|
-
/* Save the TAF as draft:
|
|
3525
|
-
if action NEW or DRAFT - new status will be DRAFT -- default
|
|
3526
|
-
if action AMEND - new status will be DRAFT_AMENDED
|
|
3527
|
-
if action CORRECT - new status will be DRAFT_CORRECTED
|
|
3528
|
-
if action DRAFT_AMEND - new status will be DRAFT_AMENDED
|
|
3529
|
-
if action DRAFT_CORRECT - new status will be DRAFT_CORRECTED
|
|
3530
|
-
*/
|
|
3531
|
-
switch (tafAction) {
|
|
3532
|
-
case 'AMEND':
|
|
3533
|
-
case 'DRAFT_AMEND':
|
|
3534
|
-
onTafFormButtonPress('DRAFT_AMEND');
|
|
3535
|
-
break;
|
|
3713
|
+
var _d = __read(React__namespace.useState({
|
|
3714
|
+
left: 0,
|
|
3715
|
+
top: 0
|
|
3716
|
+
}), 2),
|
|
3717
|
+
startPosition = _d[0],
|
|
3718
|
+
setStartPosition = _d[1];
|
|
3536
3719
|
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
onTafFormButtonPress('DRAFT_CORRECT');
|
|
3540
|
-
break;
|
|
3720
|
+
var onClickButton = function onClickButton(event) {
|
|
3721
|
+
var _a;
|
|
3541
3722
|
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
}
|
|
3546
|
-
}
|
|
3547
|
-
}, "Save"), /*#__PURE__*/React__default["default"].createElement(material.Button, {
|
|
3548
|
-
"data-testid": "publishtaf",
|
|
3549
|
-
variant: "outlined",
|
|
3550
|
-
color: "secondary",
|
|
3551
|
-
type: "button",
|
|
3552
|
-
className: classes.lastButton,
|
|
3553
|
-
onClick: function onClick() {
|
|
3554
|
-
/* Publish the TAF:
|
|
3555
|
-
if action NEW or DRAFT - new status will be PUBLISHED -- default
|
|
3556
|
-
if action AMEND - new status will be AMENDED
|
|
3557
|
-
if action CORRECT - new status will be CORRECTED
|
|
3558
|
-
if action DRAFT_AMEND - new status will be AMENDED
|
|
3559
|
-
if action DRAFT_CORRECT - new status will be CORRECTED
|
|
3560
|
-
*/
|
|
3561
|
-
switch (tafAction) {
|
|
3562
|
-
case 'AMEND':
|
|
3563
|
-
case 'DRAFT_AMEND':
|
|
3564
|
-
onTafFormButtonPress('AMEND');
|
|
3565
|
-
break;
|
|
3723
|
+
var _b = event.currentTarget.getBoundingClientRect(),
|
|
3724
|
+
left = _b.left,
|
|
3725
|
+
top = _b.top;
|
|
3566
3726
|
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
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
|
+
};
|
|
3571
3738
|
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
/* *
|
|
3585
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3586
|
-
* you may not use this file except in compliance with the License.
|
|
3587
|
-
* You may obtain a copy of the License at
|
|
3588
|
-
*
|
|
3589
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3590
|
-
*
|
|
3591
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
3592
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3593
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3594
|
-
* See the License for the specific language governing permissions and
|
|
3595
|
-
* limitations under the License.
|
|
3596
|
-
*
|
|
3597
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
3598
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
3599
|
-
* */
|
|
3600
|
-
var useStyles$7 = makeStyles__default["default"](function () {
|
|
3601
|
-
return {
|
|
3602
|
-
dragHandle: {
|
|
3603
|
-
backgroundColor: 'transparent',
|
|
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,
|
|
3604
3751
|
'&:hover': {
|
|
3605
|
-
backgroundColor:
|
|
3752
|
+
backgroundColor: buttonColor
|
|
3606
3753
|
},
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
}
|
|
3754
|
+
'&:focus': {
|
|
3755
|
+
backgroundColor: buttonColor
|
|
3756
|
+
},
|
|
3757
|
+
fontSize: 12
|
|
3610
3758
|
}
|
|
3611
|
-
}
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
_c = _a.isDisabled,
|
|
3618
|
-
isDisabled = _c === void 0 ? false : _c,
|
|
3619
|
-
index = _a.index;
|
|
3620
|
-
var classes = useStyles$7(isSorting);
|
|
3621
|
-
return /*#__PURE__*/React__default["default"].createElement(material.IconButton, {
|
|
3622
|
-
className: classes.dragHandle + " handle",
|
|
3623
|
-
"data-testid": "dragHandle-" + index,
|
|
3624
|
-
disableRipple: true,
|
|
3625
|
-
disabled: isDisabled,
|
|
3626
|
-
size: "large"
|
|
3627
|
-
}, /*#__PURE__*/React__default["default"].createElement(iconsMaterial.DragIndicator, null));
|
|
3759
|
+
})), /*#__PURE__*/React__namespace.createElement(IssuesPane, {
|
|
3760
|
+
errorList: errorList,
|
|
3761
|
+
handleClose: toggleIssuesPane,
|
|
3762
|
+
isOpen: isIssuesPaneOpen,
|
|
3763
|
+
startPosition: startPosition
|
|
3764
|
+
}));
|
|
3628
3765
|
};
|
|
3629
3766
|
|
|
3630
3767
|
var noop = function noop() {};
|
|
3631
3768
|
|
|
3632
|
-
var emptyChangegroup = {
|
|
3633
|
-
valid: '',
|
|
3634
|
-
wind: '',
|
|
3635
|
-
visibility: '',
|
|
3636
|
-
weather: {
|
|
3637
|
-
weather1: null,
|
|
3638
|
-
weather2: null,
|
|
3639
|
-
weather3: null
|
|
3640
|
-
},
|
|
3641
|
-
cloud: {
|
|
3642
|
-
cloud1: null,
|
|
3643
|
-
cloud2: null,
|
|
3644
|
-
cloud3: null,
|
|
3645
|
-
cloud4: null
|
|
3646
|
-
},
|
|
3647
|
-
change: null,
|
|
3648
|
-
probability: null
|
|
3649
|
-
};
|
|
3650
|
-
|
|
3651
3769
|
var TafForm = function TafForm(_a) {
|
|
3652
|
-
var
|
|
3653
|
-
|
|
3770
|
+
var // can be removed after old TAF is gone
|
|
3771
|
+
defaultTafAction = _a.tafAction,
|
|
3772
|
+
isDefaultDisabled = _a.isDisabled,
|
|
3654
3773
|
_b = _a.staticTAC,
|
|
3655
3774
|
staticTAC = _b === void 0 ? '' : _b,
|
|
3775
|
+
tafFromBackend = _a.tafFromBackend,
|
|
3656
3776
|
_c = _a.onFormAction,
|
|
3657
3777
|
onFormAction = _c === void 0 ? function () {
|
|
3658
3778
|
return null;
|
|
3659
3779
|
} : _c;
|
|
3660
|
-
var
|
|
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
|
+
|
|
3661
3790
|
var confirmDialog = shared.useConfirmationDialog();
|
|
3662
3791
|
|
|
3663
|
-
var
|
|
3664
|
-
toggleIsDraft =
|
|
3665
|
-
DraftFieldHelper =
|
|
3792
|
+
var _f = shared.useDraftFormHelpers(),
|
|
3793
|
+
toggleIsDraft = _f.toggleIsDraft,
|
|
3794
|
+
DraftFieldHelper = _f.DraftFieldHelper;
|
|
3666
3795
|
|
|
3667
3796
|
var api$1 = api.useApiContext().api;
|
|
3668
3797
|
var isMounted = shared.useIsMounted().isMounted;
|
|
3669
3798
|
|
|
3670
|
-
var
|
|
3671
|
-
control =
|
|
3672
|
-
handleSubmit =
|
|
3673
|
-
watch =
|
|
3674
|
-
trigger =
|
|
3675
|
-
formState =
|
|
3676
|
-
getValues =
|
|
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;
|
|
3677
3808
|
|
|
3678
3809
|
var isFormDirty = formState.isDirty,
|
|
3679
3810
|
errors = formState.errors;
|
|
3680
3811
|
shared.usePreventBrowserClose(isFormDirty && !isDisabled);
|
|
3681
3812
|
var hiddenInputFields = ['baseTime', 'issueDate', 'type', 'uuid', 'validDateStart', 'validDateEnd', 'status', 'previousId', 'previousValidDateStart', 'previousValidDateEnd'];
|
|
3682
3813
|
|
|
3683
|
-
var
|
|
3684
|
-
delayedFormValues =
|
|
3685
|
-
setDelayedFormValues =
|
|
3814
|
+
var _h = __read(React__default["default"].useState(watch()), 2),
|
|
3815
|
+
delayedFormValues = _h[0],
|
|
3816
|
+
setDelayedFormValues = _h[1];
|
|
3686
3817
|
|
|
3687
|
-
var
|
|
3688
|
-
TAC =
|
|
3689
|
-
updateTAC =
|
|
3818
|
+
var _j = __read(useTACGenerator(convertTafValuesToObject(delayedFormValues), api$1.getTAC, staticTAC), 2),
|
|
3819
|
+
TAC = _j[0],
|
|
3820
|
+
updateTAC = _j[1];
|
|
3690
3821
|
|
|
3691
3822
|
var hasErrors = Object.keys(errors).length;
|
|
3692
3823
|
|
|
@@ -3717,12 +3848,34 @@
|
|
|
3717
3848
|
var showConfirmDialog = function showConfirmDialog(action) {
|
|
3718
3849
|
return confirmDialog({
|
|
3719
3850
|
title: getConfirmationDialogTitle(action),
|
|
3720
|
-
description: getConfirmationDialogContent(action,
|
|
3851
|
+
description: getConfirmationDialogContent(action, function () {
|
|
3852
|
+
return isTafAmendedCorrectedChanged(isFormDirty, originalTaf, convertTafValuesToObject(getValues()));
|
|
3853
|
+
}),
|
|
3721
3854
|
confirmLabel: getConfirmationDialogButtonLabel(action)
|
|
3722
3855
|
});
|
|
3723
3856
|
};
|
|
3724
3857
|
|
|
3725
|
-
var
|
|
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) {
|
|
3726
3879
|
switch (action) {
|
|
3727
3880
|
case 'DRAFT':
|
|
3728
3881
|
case 'DRAFT_AMEND':
|
|
@@ -3736,10 +3889,10 @@
|
|
|
3736
3889
|
case 'DISCARD':
|
|
3737
3890
|
if (isFormDirty) {
|
|
3738
3891
|
showConfirmDialog(action).then(function () {
|
|
3739
|
-
|
|
3892
|
+
resetForm(undefined, isDefaultDisabled);
|
|
3740
3893
|
});
|
|
3741
3894
|
} else {
|
|
3742
|
-
|
|
3895
|
+
resetForm(undefined, isDefaultDisabled);
|
|
3743
3896
|
}
|
|
3744
3897
|
|
|
3745
3898
|
break;
|
|
@@ -3749,8 +3902,36 @@
|
|
|
3749
3902
|
case 'PUBLISH':
|
|
3750
3903
|
toggleIsDraft(false);
|
|
3751
3904
|
handleSubmit(function (data) {
|
|
3752
|
-
|
|
3753
|
-
|
|
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
|
+
});
|
|
3754
3935
|
});
|
|
3755
3936
|
})();
|
|
3756
3937
|
break;
|
|
@@ -3761,19 +3942,33 @@
|
|
|
3761
3942
|
}
|
|
3762
3943
|
};
|
|
3763
3944
|
|
|
3764
|
-
var
|
|
3945
|
+
var onTafViewModeButtonPress = function onTafViewModeButtonPress(action) {
|
|
3946
|
+
switch (action) {
|
|
3947
|
+
case 'CANCEL':
|
|
3948
|
+
showConfirmDialog(action).then(function () {
|
|
3949
|
+
onFormAction(action, tafFromBackend.taf);
|
|
3950
|
+
});
|
|
3951
|
+
break;
|
|
3952
|
+
|
|
3953
|
+
default:
|
|
3954
|
+
resetForm(action, false);
|
|
3955
|
+
break;
|
|
3956
|
+
}
|
|
3957
|
+
};
|
|
3958
|
+
|
|
3959
|
+
var _k = reactHookForm.useFieldArray({
|
|
3765
3960
|
control: control,
|
|
3766
3961
|
name: 'changeGroups'
|
|
3767
3962
|
}),
|
|
3768
|
-
fields =
|
|
3769
|
-
insert =
|
|
3770
|
-
remove =
|
|
3771
|
-
move =
|
|
3963
|
+
fields = _k.fields,
|
|
3964
|
+
insert = _k.insert,
|
|
3965
|
+
remove = _k.remove,
|
|
3966
|
+
move = _k.move;
|
|
3772
3967
|
|
|
3773
|
-
var
|
|
3774
|
-
onChangeOrder =
|
|
3775
|
-
onStartDrag =
|
|
3776
|
-
activeDraggingIndex =
|
|
3968
|
+
var _l = useDragOrder(trigger, move, onFormBlur),
|
|
3969
|
+
onChangeOrder = _l.onChangeOrder,
|
|
3970
|
+
onStartDrag = _l.onStartDrag,
|
|
3971
|
+
activeDraggingIndex = _l.activeDraggingIndex;
|
|
3777
3972
|
|
|
3778
3973
|
var onRemoverow = function onRemoverow(index) {
|
|
3779
3974
|
confirmDialog({
|
|
@@ -3790,25 +3985,68 @@
|
|
|
3790
3985
|
|
|
3791
3986
|
|
|
3792
3987
|
var focusFirstInput = function focusFirstInput(rowIndex) {
|
|
3793
|
-
var
|
|
3988
|
+
var selector = rowIndex === -1 ? "[name=\"baseForecast.wind\"]" : "[name=\"changeGroups[" + rowIndex + "].probability\"]";
|
|
3989
|
+
var nextRowFirstInput = document.querySelector(selector);
|
|
3794
3990
|
|
|
3795
3991
|
if (nextRowFirstInput) {
|
|
3796
3992
|
nextRowFirstInput.focus();
|
|
3797
3993
|
}
|
|
3994
|
+
}; // adding rows and validation don't work well combined, with always skipping validation of fields of rows above the one the inserted row. A setTimeout prevents this issue
|
|
3995
|
+
|
|
3996
|
+
|
|
3997
|
+
var setFocusAndValidate = function setFocusAndValidate(rowIndex) {
|
|
3998
|
+
return setTimeout(function () {
|
|
3999
|
+
focusFirstInput(rowIndex);
|
|
4000
|
+
trigger(); // trigger all fields validation
|
|
4001
|
+
}, 0);
|
|
3798
4002
|
};
|
|
3799
4003
|
|
|
3800
|
-
var onAddRow = function onAddRow(rowIndex) {
|
|
4004
|
+
var onAddRow = function onAddRow(rowIndex, above) {
|
|
3801
4005
|
if (rowIndex === void 0) {
|
|
3802
4006
|
rowIndex = -1;
|
|
3803
4007
|
}
|
|
3804
4008
|
|
|
3805
|
-
|
|
3806
|
-
|
|
4009
|
+
if (above === void 0) {
|
|
4010
|
+
above = false;
|
|
4011
|
+
}
|
|
3807
4012
|
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
4013
|
+
var newRowIndex = above ? rowIndex : rowIndex + 1;
|
|
4014
|
+
insert(newRowIndex, emptyChangegroup, false);
|
|
4015
|
+
setFocusAndValidate(newRowIndex);
|
|
4016
|
+
};
|
|
4017
|
+
|
|
4018
|
+
var _onClearRow = function onClearRow(rowIndex, isChangeGroup) {
|
|
4019
|
+
if (rowIndex === void 0) {
|
|
4020
|
+
rowIndex = -1;
|
|
4021
|
+
}
|
|
4022
|
+
|
|
4023
|
+
if (isChangeGroup === void 0) {
|
|
4024
|
+
isChangeGroup = false;
|
|
4025
|
+
}
|
|
4026
|
+
|
|
4027
|
+
confirmDialog({
|
|
4028
|
+
title: 'Clear row',
|
|
4029
|
+
description: 'Are you sure you want to clear this row?',
|
|
4030
|
+
confirmLabel: 'Yes'
|
|
4031
|
+
}).then(function () {
|
|
4032
|
+
if (isChangeGroup) {
|
|
4033
|
+
remove(rowIndex);
|
|
4034
|
+
insert(rowIndex, emptyChangegroup, false);
|
|
4035
|
+
} else {
|
|
4036
|
+
var baseForecastFields = getFieldNames(false, -1);
|
|
4037
|
+
setValue(baseForecastFields.wind, '');
|
|
4038
|
+
setValue(baseForecastFields.visibility, '');
|
|
4039
|
+
setValue(baseForecastFields.weather1, '');
|
|
4040
|
+
setValue(baseForecastFields.weather2, '');
|
|
4041
|
+
setValue(baseForecastFields.weather3, '');
|
|
4042
|
+
setValue(baseForecastFields.cloud1, '');
|
|
4043
|
+
setValue(baseForecastFields.cloud2, '');
|
|
4044
|
+
setValue(baseForecastFields.cloud3, '');
|
|
4045
|
+
setValue(baseForecastFields.cloud4, '');
|
|
4046
|
+
}
|
|
4047
|
+
|
|
4048
|
+
setFocusAndValidate(rowIndex);
|
|
4049
|
+
});
|
|
3812
4050
|
};
|
|
3813
4051
|
|
|
3814
4052
|
React__default["default"].useEffect(function () {
|
|
@@ -3822,22 +4060,36 @@
|
|
|
3822
4060
|
|
|
3823
4061
|
}, []);
|
|
3824
4062
|
return /*#__PURE__*/React__default["default"].createElement("form", {
|
|
4063
|
+
"data-testid": "taf-form",
|
|
3825
4064
|
onSubmit: handleSubmit(onSubmit),
|
|
3826
4065
|
onBlur: onFormBlur
|
|
3827
4066
|
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
3828
|
-
|
|
4067
|
+
sx: {
|
|
4068
|
+
fontSize: '20px',
|
|
4069
|
+
fontWeight: 500,
|
|
4070
|
+
height: '24px'
|
|
4071
|
+
}
|
|
3829
4072
|
}, "TAC"), /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
3830
|
-
|
|
3831
|
-
|
|
4073
|
+
sx: {
|
|
4074
|
+
fontSize: '14px',
|
|
4075
|
+
margin: '8px 0px'
|
|
4076
|
+
},
|
|
4077
|
+
"data-testid": "form-tac-message"
|
|
3832
4078
|
}, TAC.split('\n').map(function (line) {
|
|
3833
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
4079
|
+
return /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
4080
|
+
component: "span",
|
|
3834
4081
|
key: line,
|
|
3835
|
-
|
|
3836
|
-
|
|
4082
|
+
"data-testid": "tafform-tac-message-line",
|
|
4083
|
+
sx: {
|
|
4084
|
+
textIndent: '-0.7em',
|
|
4085
|
+
borderRadius: '3px',
|
|
4086
|
+
paddingRight: '0.7em'
|
|
4087
|
+
}
|
|
3837
4088
|
}, line);
|
|
3838
4089
|
})), /*#__PURE__*/React__default["default"].createElement(TafFormRow, {
|
|
3839
4090
|
disabled: isDisabled,
|
|
3840
|
-
|
|
4091
|
+
onAddChangeGroupBelow: onAddRow,
|
|
4092
|
+
onClearRow: _onClearRow
|
|
3841
4093
|
}), /*#__PURE__*/React__default["default"].createElement(reactSortablejs.ReactSortable, {
|
|
3842
4094
|
tag: "div",
|
|
3843
4095
|
list: fields,
|
|
@@ -3855,13 +4107,17 @@
|
|
|
3855
4107
|
}, fields.map(function (item, index) {
|
|
3856
4108
|
return /*#__PURE__*/React__default["default"].createElement(TafFormRow, {
|
|
3857
4109
|
field: item,
|
|
3858
|
-
className: classes.formRow,
|
|
3859
4110
|
key: item.id,
|
|
3860
4111
|
index: index,
|
|
3861
|
-
lastRow: fields.length === index + 1,
|
|
3862
4112
|
disabled: isDisabled,
|
|
3863
4113
|
onRemoveChangeGroup: onRemoverow,
|
|
3864
|
-
|
|
4114
|
+
onAddChangeGroupBelow: onAddRow,
|
|
4115
|
+
onAddChangeGroupAbove: function onAddChangeGroupAbove() {
|
|
4116
|
+
return onAddRow(index, true);
|
|
4117
|
+
},
|
|
4118
|
+
onClearRow: function onClearRow() {
|
|
4119
|
+
return _onClearRow(index, true);
|
|
4120
|
+
},
|
|
3865
4121
|
isChangeGroup: true,
|
|
3866
4122
|
dragHandle: /*#__PURE__*/React__default["default"].createElement(DragHandle, {
|
|
3867
4123
|
isDisabled: fields.length === 1 || isDisabled,
|
|
@@ -3869,9 +4125,24 @@
|
|
|
3869
4125
|
index: index
|
|
3870
4126
|
})
|
|
3871
4127
|
});
|
|
3872
|
-
})), !isDisabled && /*#__PURE__*/React__default["default"].createElement(
|
|
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,
|
|
3873
4142
|
tafAction: tafAction,
|
|
3874
|
-
|
|
4143
|
+
canBe: tafFromBackend.canbe,
|
|
4144
|
+
onTafEditModeButtonPress: onTafEditModeButtonPress,
|
|
4145
|
+
onTafViewModeButtonPress: onTafViewModeButtonPress
|
|
3875
4146
|
}), hiddenInputFields.map(function (field) {
|
|
3876
4147
|
return /*#__PURE__*/React__default["default"].createElement(formFields.ReactHookFormHiddenInput, {
|
|
3877
4148
|
name: field,
|
|
@@ -3880,72 +4151,33 @@
|
|
|
3880
4151
|
}), /*#__PURE__*/React__default["default"].createElement(DraftFieldHelper, null));
|
|
3881
4152
|
};
|
|
3882
4153
|
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
|
|
3900
|
-
if ((tafAction === 'AMEND' || tafAction === 'DRAFT_AMEND') && moment__default["default"].utc() >= moment__default["default"].utc(taf.validDateStart)) {
|
|
3901
|
-
var now = moment__default["default"].utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
3902
|
-
var validObj = {
|
|
3903
|
-
start: now,
|
|
3904
|
-
end: taf.baseForecast.valid.end
|
|
3905
|
-
};
|
|
3906
|
-
return __assign(__assign({}, taf), {
|
|
3907
|
-
previousValidDateStart: previousValidDateStart,
|
|
3908
|
-
previousValidDateEnd: previousValidDateEnd,
|
|
3909
|
-
validDateStart: now,
|
|
3910
|
-
baseForecast: __assign(__assign({}, taf.baseForecast), {
|
|
3911
|
-
valid: validObj
|
|
3912
|
-
})
|
|
3913
|
-
});
|
|
3914
|
-
}
|
|
3915
|
-
|
|
3916
|
-
return __assign(__assign({}, taf), {
|
|
3917
|
-
previousValidDateStart: previousValidDateStart,
|
|
3918
|
-
previousValidDateEnd: previousValidDateEnd
|
|
3919
|
-
});
|
|
3920
|
-
};
|
|
3921
|
-
var prepareTafValues = function prepareTafValues(_taf, tafAction, addEmptyChangeGroup) {
|
|
3922
|
-
if (addEmptyChangeGroup === void 0) {
|
|
3923
|
-
addEmptyChangeGroup = false;
|
|
3924
|
-
} // If action is AMEND/CORRECT/DRAFT_AMEND/DRAFT_CORRECTION - add previous valid start and end
|
|
3925
|
-
// If action is AMEND/DRAFT_AMEND - update validity start time to current time
|
|
3926
|
-
|
|
3927
|
-
|
|
3928
|
-
var taf = tafAction === 'AMEND' || tafAction === 'DRAFT_AMEND' || tafAction === 'CORRECT' || tafAction === 'DRAFT_CORRECT' ? getAmendedCorrectedTafTimes(_taf, tafAction) : _taf;
|
|
3929
|
-
return __assign(__assign(__assign(__assign({}, taf), {
|
|
3930
|
-
messageType: getMessageType(taf, tafAction),
|
|
3931
|
-
baseForecast: formatFormValues(taf.baseForecast)
|
|
3932
|
-
}), taf.changeGroups && {
|
|
3933
|
-
changeGroups: taf.changeGroups.map(formatFormValues)
|
|
3934
|
-
}), addEmptyChangeGroup && {
|
|
3935
|
-
changeGroups: [emptyChangegroup]
|
|
3936
|
-
});
|
|
3937
|
-
};
|
|
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
|
+
* */
|
|
3938
4170
|
|
|
3939
4171
|
var TafFormWrapper = function TafFormWrapper(_a) {
|
|
3940
4172
|
var tafFromBackend = _a.tafFromBackend,
|
|
3941
4173
|
mode = _a.mode,
|
|
3942
|
-
tafAction = _a.tafAction,
|
|
3943
4174
|
_b = _a.TAC,
|
|
3944
4175
|
TAC = _b === void 0 ? '' : _b,
|
|
3945
|
-
onFormAction = _a.onFormAction
|
|
4176
|
+
onFormAction = _a.onFormAction,
|
|
4177
|
+
tafAction = _a.tafAction;
|
|
3946
4178
|
var taf = tafFromBackend.taf;
|
|
3947
4179
|
var isDisabled = mode === 'view';
|
|
3948
|
-
var defaultValues = prepareTafValues(taf,
|
|
4180
|
+
var defaultValues = prepareTafValues(taf, undefined, !isDisabled && !taf.changeGroups);
|
|
3949
4181
|
var options = {
|
|
3950
4182
|
defaultValues: defaultValues,
|
|
3951
4183
|
mode: 'onTouched',
|
|
@@ -3956,83 +4188,13 @@
|
|
|
3956
4188
|
options: options
|
|
3957
4189
|
}, /*#__PURE__*/React__default["default"].createElement(TafForm, {
|
|
3958
4190
|
isDisabled: isDisabled,
|
|
3959
|
-
tafAction: tafAction,
|
|
3960
4191
|
staticTAC: TAC,
|
|
3961
|
-
onFormAction: onFormAction
|
|
4192
|
+
onFormAction: onFormAction,
|
|
4193
|
+
tafFromBackend: tafFromBackend,
|
|
4194
|
+
tafAction: tafAction
|
|
3962
4195
|
}));
|
|
3963
4196
|
};
|
|
3964
4197
|
|
|
3965
|
-
var useStyles$6 = makeStyles__default["default"]({
|
|
3966
|
-
dialogHeader: {
|
|
3967
|
-
borderRadius: '3px',
|
|
3968
|
-
border: 'solid 1px #f6f5f5',
|
|
3969
|
-
zIndex: 1,
|
|
3970
|
-
padding: '16px 20px'
|
|
3971
|
-
},
|
|
3972
|
-
dialogTitle: {
|
|
3973
|
-
display: 'flex',
|
|
3974
|
-
alignItems: 'center'
|
|
3975
|
-
},
|
|
3976
|
-
dialogCloseButton: {
|
|
3977
|
-
display: 'flex',
|
|
3978
|
-
justifyContent: 'flex-end'
|
|
3979
|
-
},
|
|
3980
|
-
dialogChildren: {
|
|
3981
|
-
display: 'flex',
|
|
3982
|
-
padding: 20,
|
|
3983
|
-
minHeight: 200,
|
|
3984
|
-
minWidth: 400,
|
|
3985
|
-
height: '100%'
|
|
3986
|
-
}
|
|
3987
|
-
});
|
|
3988
|
-
|
|
3989
|
-
var ContentDialog = function ContentDialog(_a) {
|
|
3990
|
-
var open = _a.open;
|
|
3991
|
-
_a.toggleDialogStatus;
|
|
3992
|
-
var titleComponent = _a.titleComponent,
|
|
3993
|
-
children = _a.children;
|
|
3994
|
-
_a.onClose;
|
|
3995
|
-
var _b = _a.alertBanner,
|
|
3996
|
-
alertBanner = _b === void 0 ? null : _b,
|
|
3997
|
-
onFormAction = _a.onFormAction,
|
|
3998
|
-
other = __rest(_a, ["open", "toggleDialogStatus", "titleComponent", "children", "onClose", "alertBanner", "onFormAction"]);
|
|
3999
|
-
|
|
4000
|
-
var classes = useStyles$6();
|
|
4001
|
-
return /*#__PURE__*/React__namespace.createElement(material.Dialog, __assign({
|
|
4002
|
-
"data-testid": "contentDialog",
|
|
4003
|
-
open: open,
|
|
4004
|
-
onClose: function onClose() {
|
|
4005
|
-
return onFormAction('CLOSE');
|
|
4006
|
-
},
|
|
4007
|
-
maxWidth: other.maxWidth ? other.maxWidth : 'lg',
|
|
4008
|
-
PaperProps: {
|
|
4009
|
-
style: {
|
|
4010
|
-
position: 'inherit'
|
|
4011
|
-
}
|
|
4012
|
-
}
|
|
4013
|
-
}, other), /*#__PURE__*/React__namespace.createElement(material.DialogTitle, {
|
|
4014
|
-
className: classes.dialogHeader
|
|
4015
|
-
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
4016
|
-
container: true
|
|
4017
|
-
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
4018
|
-
item: true,
|
|
4019
|
-
xs: 11,
|
|
4020
|
-
className: classes.dialogTitle
|
|
4021
|
-
}, titleComponent), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
4022
|
-
item: true,
|
|
4023
|
-
xs: true,
|
|
4024
|
-
className: classes.dialogCloseButton
|
|
4025
|
-
}, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
|
|
4026
|
-
"data-testid": "closeDialog",
|
|
4027
|
-
size: "small",
|
|
4028
|
-
onClick: function onClick() {
|
|
4029
|
-
return onFormAction('CLOSE');
|
|
4030
|
-
}
|
|
4031
|
-
}, /*#__PURE__*/React__namespace.createElement(iconsMaterial.Close, null))))), alertBanner !== null && alertBanner, /*#__PURE__*/React__namespace.createElement(material.DialogContent, {
|
|
4032
|
-
className: classes.dialogChildren
|
|
4033
|
-
}, children));
|
|
4034
|
-
};
|
|
4035
|
-
|
|
4036
4198
|
/* *
|
|
4037
4199
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4038
4200
|
* you may not use this file except in compliance with the License.
|
|
@@ -4046,248 +4208,236 @@
|
|
|
4046
4208
|
* See the License for the specific language governing permissions and
|
|
4047
4209
|
* limitations under the License.
|
|
4048
4210
|
*
|
|
4049
|
-
* Copyright
|
|
4050
|
-
* Copyright
|
|
4211
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4212
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
4051
4213
|
* */
|
|
4052
4214
|
|
|
4053
|
-
var
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
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);
|
|
4063
4228
|
};
|
|
4064
4229
|
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4230
|
+
/* *
|
|
4231
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4232
|
+
* you may not use this file except in compliance with the License.
|
|
4233
|
+
* You may obtain a copy of the License at
|
|
4234
|
+
*
|
|
4235
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4236
|
+
*
|
|
4237
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4238
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4239
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4240
|
+
* See the License for the specific language governing permissions and
|
|
4241
|
+
* limitations under the License.
|
|
4242
|
+
*
|
|
4243
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4244
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
4245
|
+
* */
|
|
4075
4246
|
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
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);
|
|
4080
4257
|
};
|
|
4081
4258
|
|
|
4082
|
-
var
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
|
|
4095
|
-
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
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;
|
|
4109
4314
|
}
|
|
4110
|
-
});
|
|
4111
4315
|
|
|
4112
|
-
|
|
4113
|
-
var taf = _a.taf,
|
|
4114
|
-
listType = _a.listType,
|
|
4115
|
-
_b = _a.TAC,
|
|
4116
|
-
TAC = _b === void 0 ? '' : _b,
|
|
4117
|
-
_c = _a.showTac,
|
|
4118
|
-
showTac = _c === void 0 ? false : _c;
|
|
4119
|
-
var classes = useStyles$5();
|
|
4120
|
-
var validTimeDate = moment__default["default"].utc(taf.validDateStart).format('DD MMM');
|
|
4121
|
-
var baseTime = moment__default["default"].utc(taf.baseTime).format('HH:mm');
|
|
4122
|
-
return /*#__PURE__*/React__default["default"].createElement(material.Card, {
|
|
4123
|
-
elevation: 0,
|
|
4124
|
-
className: classes.cardWrapper
|
|
4125
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4126
|
-
container: true,
|
|
4127
|
-
alignItems: "center",
|
|
4128
|
-
spacing: 1
|
|
4129
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4130
|
-
item: true,
|
|
4131
|
-
xs: 3,
|
|
4132
|
-
sm: 2,
|
|
4133
|
-
md: 1
|
|
4134
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
4135
|
-
variant: "subtitle2",
|
|
4136
|
-
noWrap: true,
|
|
4137
|
-
className: classes.font
|
|
4138
|
-
}, taf.location)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4139
|
-
item: true,
|
|
4140
|
-
xs: 3,
|
|
4141
|
-
sm: 3,
|
|
4142
|
-
md: 1,
|
|
4143
|
-
container: true
|
|
4144
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4145
|
-
item: true,
|
|
4146
|
-
xs: 3,
|
|
4147
|
-
sm: 3,
|
|
4148
|
-
md: 3,
|
|
4149
|
-
className: classes.alignIcon
|
|
4150
|
-
}, showTac && /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
|
|
4151
|
-
"data-testid": "taflistrow-tactooltip",
|
|
4152
|
-
title: /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4153
|
-
style: {
|
|
4154
|
-
whiteSpace: 'pre-line'
|
|
4155
|
-
}
|
|
4156
|
-
}, TAC),
|
|
4157
|
-
placement: "bottom-start"
|
|
4158
|
-
}, /*#__PURE__*/React__default["default"].createElement(iconsMaterial.InfoOutlined, {
|
|
4159
|
-
"data-testid": "taflistrow-tacicon",
|
|
4160
|
-
color: "secondary",
|
|
4161
|
-
fontSize: "small"
|
|
4162
|
-
}))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4163
|
-
item: true,
|
|
4164
|
-
xs: 9,
|
|
4165
|
-
sm: 9,
|
|
4166
|
-
md: 9
|
|
4167
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
4168
|
-
variant: "subtitle2",
|
|
4169
|
-
className: classes.font,
|
|
4170
|
-
"data-testid": "baseTime"
|
|
4171
|
-
}, baseTime))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4172
|
-
item: true,
|
|
4173
|
-
xs: 3,
|
|
4174
|
-
sm: 2,
|
|
4175
|
-
md: 1
|
|
4176
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
4177
|
-
variant: "subtitle2",
|
|
4178
|
-
className: classes.font,
|
|
4179
|
-
"data-testid": "validTimeDate"
|
|
4180
|
-
}, validTimeDate)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4181
|
-
item: true,
|
|
4182
|
-
xs: 3,
|
|
4183
|
-
sm: 3,
|
|
4184
|
-
md: 6
|
|
4185
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
4186
|
-
variant: "subtitle2",
|
|
4187
|
-
className: classes.font,
|
|
4188
|
-
"data-testid": "validTimeSlot"
|
|
4189
|
-
}, formatValidToString({
|
|
4190
|
-
start: taf.validDateStart,
|
|
4191
|
-
end: taf.validDateEnd
|
|
4192
|
-
}))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4193
|
-
item: true,
|
|
4194
|
-
xs: 12,
|
|
4195
|
-
sm: 4,
|
|
4196
|
-
md: 3
|
|
4197
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4198
|
-
container: true,
|
|
4199
|
-
justifyContent: "flex-start",
|
|
4200
|
-
spacing: 2
|
|
4201
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4202
|
-
item: true,
|
|
4203
|
-
xs: 8,
|
|
4204
|
-
container: true,
|
|
4205
|
-
justifyContent: "flex-end"
|
|
4206
|
-
}, taf.status === 'DRAFT' || taf.status === 'DRAFT_CORRECTED' || taf.status === 'DRAFT_AMENDED' ? /*#__PURE__*/React__default["default"].createElement(material.Button, {
|
|
4207
|
-
color: "secondary",
|
|
4208
|
-
size: "small",
|
|
4209
|
-
"data-testid": "tafRow-draft",
|
|
4210
|
-
startIcon: /*#__PURE__*/React__default["default"].createElement(iconsMaterial.Create, {
|
|
4211
|
-
fontSize: "small",
|
|
4212
|
-
color: "secondary"
|
|
4213
|
-
})
|
|
4214
|
-
}, getDraftTitle(taf.status)) : getStatusTagList(taf)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4215
|
-
item: true,
|
|
4216
|
-
className: classes.alignIcon
|
|
4217
|
-
}, taf.status !== 'NEW' && taf.status !== 'DRAFT' && taf.status !== 'DRAFT_CORRECTED' && taf.status !== 'DRAFT_AMENDED' && taf.status !== 'CANCELLED' && listType !== 'EXPIRED' && getActiveStatus(listType, classes.activeStatus))))));
|
|
4316
|
+
return locationSettings[location];
|
|
4218
4317
|
};
|
|
4318
|
+
var sortTafsOnLocation = function sortTafsOnLocation(tafList, locationOrder) {
|
|
4319
|
+
if (locationOrder === void 0) {
|
|
4320
|
+
locationOrder = tafSettings.locationOrder;
|
|
4321
|
+
}
|
|
4219
4322
|
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4223
|
-
|
|
4224
|
-
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4235
|
-
|
|
4236
|
-
var
|
|
4237
|
-
if (!taf) return null;
|
|
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) {
|
|
4238
4340
|
var now = moment__default["default"].utc();
|
|
4239
|
-
var baseTime = moment__default["default"].utc(taf.baseTime);
|
|
4240
|
-
var activityPeriod = locationSettings[taf.location].activity_period;
|
|
4241
|
-
var nextBaseTime = moment__default["default"].utc(taf.baseTime).add(activityPeriod, 'hours');
|
|
4242
4341
|
|
|
4243
|
-
|
|
4342
|
+
var _a = getBaseTime(baseTime, location),
|
|
4343
|
+
currentBaseTime = _a.currentBaseTime,
|
|
4344
|
+
nextBaseTime = _a.nextBaseTime;
|
|
4345
|
+
|
|
4346
|
+
if (status === 'EXPIRED') {
|
|
4244
4347
|
return 'EXPIRED';
|
|
4245
4348
|
}
|
|
4246
4349
|
|
|
4247
|
-
if (
|
|
4350
|
+
if (currentBaseTime < now && nextBaseTime > now) {
|
|
4248
4351
|
return 'ACTIVE';
|
|
4249
4352
|
}
|
|
4250
4353
|
|
|
4251
4354
|
return 'UPCOMING';
|
|
4252
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
|
+
}
|
|
4253
4369
|
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4268
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
4269
|
-
* */
|
|
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
|
+
};
|
|
4382
|
+
};
|
|
4270
4383
|
|
|
4271
|
-
var
|
|
4272
|
-
var
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4287
|
-
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
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
|
+
};
|
|
4392
|
+
|
|
4393
|
+
var StatusIcon = function StatusIcon(_a) {
|
|
4394
|
+
var timeSlot = _a.timeSlot,
|
|
4395
|
+
status = _a.status;
|
|
4396
|
+
|
|
4397
|
+
if (status === 'NEW') {
|
|
4398
|
+
return null;
|
|
4399
|
+
}
|
|
4400
|
+
|
|
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
|
+
}
|
|
4411
|
+
|
|
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
|
+
}
|
|
4421
|
+
|
|
4422
|
+
if (status === 'DRAFT' || status === 'DRAFT_CORRECTED' || status === 'DRAFT_AMENDED') {
|
|
4423
|
+
return /*#__PURE__*/React__namespace.createElement(EditIcon, {
|
|
4424
|
+
"data-testid": "status-draft"
|
|
4425
|
+
});
|
|
4426
|
+
}
|
|
4427
|
+
|
|
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'
|
|
4433
|
+
}
|
|
4434
|
+
}) : /*#__PURE__*/React__namespace.createElement(iconsMaterial.Schedule, {
|
|
4435
|
+
"data-testid": "status-upcoming",
|
|
4436
|
+
fontSize: "small",
|
|
4437
|
+
sx: {
|
|
4438
|
+
color: 'geowebColors.functional.success'
|
|
4439
|
+
}
|
|
4440
|
+
});
|
|
4291
4441
|
};
|
|
4292
4442
|
|
|
4293
4443
|
/* *
|
|
@@ -4303,311 +4453,319 @@
|
|
|
4303
4453
|
* See the License for the specific language governing permissions and
|
|
4304
4454
|
* limitations under the License.
|
|
4305
4455
|
*
|
|
4306
|
-
* Copyright
|
|
4307
|
-
* Copyright
|
|
4456
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4457
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
4308
4458
|
* */
|
|
4309
|
-
var useStyles$4 = makeStyles__default["default"]({
|
|
4310
|
-
actionButtons: {
|
|
4311
|
-
paddingRight: '98px',
|
|
4312
|
-
paddingTop: '40px',
|
|
4313
|
-
paddingBottom: '16px'
|
|
4314
|
-
}
|
|
4315
|
-
});
|
|
4316
4459
|
|
|
4317
|
-
var
|
|
4318
|
-
var
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
var
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
onClick: function onClick() {
|
|
4336
|
-
return onClickTafActionButton(uuid, 'CANCEL');
|
|
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);
|
|
4337
4478
|
}
|
|
4338
|
-
},
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
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'
|
|
4346
4491
|
}
|
|
4347
|
-
},
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
onClick: function onClick() {
|
|
4354
|
-
return onClickTafActionButton(uuid, 'AMEND');
|
|
4492
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
4493
|
+
sx: {
|
|
4494
|
+
width: 20,
|
|
4495
|
+
height: 20,
|
|
4496
|
+
display: 'flex',
|
|
4497
|
+
marginRight: '6px'
|
|
4355
4498
|
}
|
|
4356
|
-
}, "
|
|
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
|
+
})));
|
|
4357
4548
|
};
|
|
4358
4549
|
|
|
4359
|
-
var
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
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;
|
|
4370
4575
|
|
|
4371
|
-
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
return 'DRAFT';
|
|
4576
|
+
var isActiveLocation = function isActiveLocation(location) {
|
|
4577
|
+
return location === activeLocation;
|
|
4578
|
+
};
|
|
4375
4579
|
|
|
4376
|
-
|
|
4377
|
-
|
|
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
|
+
};
|
|
4378
4592
|
|
|
4379
|
-
|
|
4380
|
-
|
|
4593
|
+
var onChangeTab = function onChangeTab(_event, newValue) {
|
|
4594
|
+
setActiveTab(newValue);
|
|
4595
|
+
resetScrollPosition();
|
|
4596
|
+
};
|
|
4381
4597
|
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
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
|
+
}));
|
|
4659
|
+
})));
|
|
4385
4660
|
};
|
|
4386
4661
|
|
|
4387
|
-
var
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
_b = _a.errorCancelTaf,
|
|
4391
|
-
errorCancelTaf = _b === void 0 ? [] : _b,
|
|
4392
|
-
onClickTafActionButton = _a.onClickTafActionButton;
|
|
4393
|
-
var classes = useStyles$3();
|
|
4394
|
-
var status = tafListItem.taf.status;
|
|
4395
|
-
var api$1 = api.useApiContext().api;
|
|
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
|
+
}));
|
|
4396
4665
|
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
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;
|
|
4400
4673
|
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
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
|
+
};
|
|
4406
4681
|
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
return /*#__PURE__*/React__default["default"].createElement(material.Accordion, __assign({
|
|
4410
|
-
"data-testid": "tafListItem",
|
|
4411
|
-
className: classes.accordion
|
|
4412
|
-
}, popOut ? {
|
|
4413
|
-
expanded: false
|
|
4414
|
-
} : {}, {
|
|
4682
|
+
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
|
|
4683
|
+
active: isOpen,
|
|
4415
4684
|
onClick: function onClick() {
|
|
4416
|
-
|
|
4417
|
-
onClickTafActionButton(tafListItem.taf.uuid, fromStatusToAction(tafListItem.taf.status));
|
|
4418
|
-
}
|
|
4685
|
+
return toggleOpen(true);
|
|
4419
4686
|
},
|
|
4420
|
-
|
|
4421
|
-
|
|
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'
|
|
4422
4696
|
}
|
|
4423
|
-
}), /*#__PURE__*/
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
})
|
|
4446
|
-
severity: "error",
|
|
4447
|
-
title: "Cancelling this TAF failed, please try again",
|
|
4448
|
-
dataTestId: "tafList-cancelAlert"
|
|
4449
|
-
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4450
|
-
className: classes.formPadding
|
|
4451
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4452
|
-
item: true
|
|
4453
|
-
}, /*#__PURE__*/React__default["default"].createElement(TafFormWrapper, {
|
|
4454
|
-
tafFromBackend: tafListItem,
|
|
4455
|
-
mode: "view",
|
|
4456
|
-
TAC: TAC
|
|
4457
|
-
})), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
4458
|
-
item: true
|
|
4459
|
-
}, /*#__PURE__*/React__default["default"].createElement(TafListButtons, {
|
|
4460
|
-
canBe: tafListItem.canbe,
|
|
4461
|
-
uuid: tafListItem.taf.uuid,
|
|
4462
|
-
onClickTafActionButton: onClickTafActionButton
|
|
4463
|
-
}))))));
|
|
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
|
+
})));
|
|
4464
4720
|
};
|
|
4465
4721
|
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
* you may not use this file except in compliance with the License.
|
|
4469
|
-
* You may obtain a copy of the License at
|
|
4470
|
-
*
|
|
4471
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4472
|
-
*
|
|
4473
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
4474
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4475
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4476
|
-
* See the License for the specific language governing permissions and
|
|
4477
|
-
* limitations under the License.
|
|
4478
|
-
*
|
|
4479
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4480
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
4481
|
-
* */
|
|
4482
|
-
var useStyles$2 = makeStyles__default["default"]({
|
|
4483
|
-
listHeaders: {
|
|
4484
|
-
color: '#9d9d9d'
|
|
4485
|
-
},
|
|
4486
|
-
formPadding: {
|
|
4487
|
-
padding: '8px'
|
|
4488
|
-
},
|
|
4489
|
-
paperButton: {
|
|
4490
|
-
width: '100%'
|
|
4491
|
-
}
|
|
4492
|
-
});
|
|
4493
|
-
|
|
4494
|
-
var TafListSection = function TafListSection(_a) {
|
|
4495
|
-
var tafList = _a.tafList,
|
|
4496
|
-
title = _a.title,
|
|
4497
|
-
listType = _a.listType,
|
|
4498
|
-
_b = _a.errorCancelTaf,
|
|
4499
|
-
errorCancelTaf = _b === void 0 ? [] : _b,
|
|
4500
|
-
onClickTafActionButton = _a.onClickTafActionButton;
|
|
4501
|
-
var classes = useStyles$2();
|
|
4502
|
-
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
4503
|
-
variant: "subtitle2",
|
|
4504
|
-
className: classes.listHeaders
|
|
4505
|
-
}, title), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
4506
|
-
"data-testid": "tafList" + listType
|
|
4507
|
-
}, tafList.map(function (tafListItem) {
|
|
4508
|
-
return /*#__PURE__*/React__default["default"].createElement(TafListAccordion, {
|
|
4509
|
-
key: tafListItem.taf.uuid + "-" + tafListItem.taf.status,
|
|
4510
|
-
tafListItem: tafListItem,
|
|
4511
|
-
listType: listType,
|
|
4512
|
-
errorCancelTaf: errorCancelTaf,
|
|
4513
|
-
onClickTafActionButton: onClickTafActionButton
|
|
4514
|
-
});
|
|
4515
|
-
})));
|
|
4722
|
+
var formatBaseTime = function formatBaseTime(time) {
|
|
4723
|
+
return time.format('HH:mm DD MMM');
|
|
4516
4724
|
};
|
|
4517
4725
|
|
|
4518
|
-
var
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
|
|
4526
|
-
width: '100%',
|
|
4527
|
-
minHeight: '600px'
|
|
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;
|
|
4528
4734
|
}
|
|
4529
|
-
});
|
|
4530
4735
|
|
|
4531
|
-
|
|
4532
|
-
var e_1, _b;
|
|
4736
|
+
var activeTab = timeSlot === 'UPCOMING' ? 0 : 1;
|
|
4533
4737
|
|
|
4534
|
-
var
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
_c = _a.errorCancelTaf,
|
|
4538
|
-
errorCancelTaf = _c === void 0 ? [] : _c,
|
|
4539
|
-
onClickTafActionButton = _a.onClickTafActionButton;
|
|
4540
|
-
var classes = useStyles$1();
|
|
4541
|
-
var locationSettings = useTafSettings(tafConfig).locations;
|
|
4542
|
-
var upcomingTafs = [];
|
|
4543
|
-
var currentTafs = [];
|
|
4544
|
-
var expiredTafs = [];
|
|
4545
|
-
|
|
4546
|
-
if (tafList) {
|
|
4547
|
-
try {
|
|
4548
|
-
for (var tafList_1 = __values(tafList), tafList_1_1 = tafList_1.next(); !tafList_1_1.done; tafList_1_1 = tafList_1.next()) {
|
|
4549
|
-
var taf = tafList_1_1.value;
|
|
4550
|
-
var now = moment__default["default"].utc();
|
|
4551
|
-
var baseTime = moment__default["default"].utc(taf.taf.baseTime);
|
|
4552
|
-
var activityPeriod = locationSettings[taf.taf.location].activity_period;
|
|
4553
|
-
var nextBaseTime = moment__default["default"].utc(taf.taf.baseTime).add(activityPeriod, 'hours');
|
|
4554
|
-
|
|
4555
|
-
if (taf.taf.status === 'EXPIRED') {
|
|
4556
|
-
expiredTafs.push(taf);
|
|
4557
|
-
} else if (baseTime < now && nextBaseTime > now) {
|
|
4558
|
-
currentTafs.push(taf);
|
|
4559
|
-
} else {
|
|
4560
|
-
upcomingTafs.push(taf);
|
|
4561
|
-
}
|
|
4562
|
-
}
|
|
4563
|
-
} catch (e_1_1) {
|
|
4564
|
-
e_1 = {
|
|
4565
|
-
error: e_1_1
|
|
4566
|
-
};
|
|
4567
|
-
} finally {
|
|
4568
|
-
try {
|
|
4569
|
-
if (tafList_1_1 && !tafList_1_1.done && (_b = tafList_1["return"])) _b.call(tafList_1);
|
|
4570
|
-
} finally {
|
|
4571
|
-
if (e_1) throw e_1.error;
|
|
4572
|
-
}
|
|
4573
|
-
}
|
|
4574
|
-
}
|
|
4738
|
+
var _c = getBaseTime(tafFromBackend.taf.baseTime, tafFromBackend.taf.location),
|
|
4739
|
+
currentBaseTime = _c.currentBaseTime,
|
|
4740
|
+
nextBaseTime = _c.nextBaseTime;
|
|
4575
4741
|
|
|
4576
|
-
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4603
|
-
tafList: expiredTafs,
|
|
4604
|
-
errorCancelTaf: errorCancelTaf,
|
|
4605
|
-
onClickTafActionButton: onClickTafActionButton
|
|
4606
|
-
})), isLoading && /*#__PURE__*/React__default["default"].createElement(material.Skeleton, {
|
|
4607
|
-
"data-testid": "tafList-skeleton",
|
|
4608
|
-
variant: "rectangular",
|
|
4609
|
-
height: "660px"
|
|
4610
|
-
})));
|
|
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
|
+
}));
|
|
4611
4769
|
};
|
|
4612
4770
|
|
|
4613
4771
|
/* *
|
|
@@ -4623,189 +4781,270 @@
|
|
|
4623
4781
|
* See the License for the specific language governing permissions and
|
|
4624
4782
|
* limitations under the License.
|
|
4625
4783
|
*
|
|
4626
|
-
* Copyright
|
|
4627
|
-
* Copyright
|
|
4784
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4785
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
4628
4786
|
* */
|
|
4629
|
-
var useStyles = makeStyles__default["default"]({
|
|
4630
|
-
backdrop: {
|
|
4631
|
-
zIndex: 1500,
|
|
4632
|
-
color: '#fff'
|
|
4633
|
-
}
|
|
4634
|
-
});
|
|
4635
|
-
|
|
4636
|
-
var Spinner = function Spinner() {
|
|
4637
|
-
var classes = useStyles();
|
|
4638
|
-
return /*#__PURE__*/React__default["default"].createElement(material.Backdrop, {
|
|
4639
|
-
open: true,
|
|
4640
|
-
className: classes.backdrop
|
|
4641
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.CircularProgress, {
|
|
4642
|
-
"data-testid": "spinner",
|
|
4643
|
-
color: "inherit"
|
|
4644
|
-
}));
|
|
4645
|
-
};
|
|
4646
4787
|
|
|
4647
|
-
var
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
|
|
4651
|
-
|
|
4652
|
-
|
|
4653
|
-
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
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);
|
|
4660
4825
|
}
|
|
4661
|
-
},
|
|
4662
|
-
|
|
4663
|
-
|
|
4664
|
-
|
|
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
|
+
}
|
|
4665
4838
|
}
|
|
4666
|
-
}
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
|
|
4670
|
-
|
|
4671
|
-
if (tafList === null) return undefined;
|
|
4672
|
-
return tafList.find(function (element) {
|
|
4673
|
-
return element.taf.uuid === selectedTafId;
|
|
4674
|
-
});
|
|
4839
|
+
}, taf.location), /*#__PURE__*/React__namespace.createElement(StatusIcon, {
|
|
4840
|
+
timeSlot: timeSlot,
|
|
4841
|
+
status: taf.status
|
|
4842
|
+
}));
|
|
4843
|
+
}));
|
|
4675
4844
|
};
|
|
4676
4845
|
|
|
4677
|
-
var
|
|
4678
|
-
|
|
4679
|
-
|
|
4680
|
-
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
var _b = __read(React__default["default"].useState(null), 2),
|
|
4686
|
-
selectedTafId = _b[0],
|
|
4687
|
-
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
|
+
};
|
|
4688
4854
|
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
|
|
4855
|
+
var fromActionToStatus = function fromActionToStatus(tafAction) {
|
|
4856
|
+
switch (tafAction) {
|
|
4857
|
+
case 'DRAFT':
|
|
4858
|
+
return 'DRAFT';
|
|
4692
4859
|
|
|
4693
|
-
|
|
4694
|
-
|
|
4695
|
-
setErrorPostMessage = _d[1];
|
|
4860
|
+
case 'DRAFT_AMEND':
|
|
4861
|
+
return 'DRAFT_AMENDED';
|
|
4696
4862
|
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
setErrorPostMessageText = _e[1];
|
|
4863
|
+
case 'DRAFT_CORRECT':
|
|
4864
|
+
return 'DRAFT_CORRECTED';
|
|
4700
4865
|
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
setSpinner = _f[1]; // clear error message for cancel after 10 seconds
|
|
4866
|
+
case 'PUBLISH':
|
|
4867
|
+
return 'PUBLISHED';
|
|
4704
4868
|
|
|
4869
|
+
case 'AMEND':
|
|
4870
|
+
return 'AMENDED';
|
|
4705
4871
|
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
setErrorCancelTaf = _g[1]; // Retrieve list of tafs
|
|
4872
|
+
case 'CORRECT':
|
|
4873
|
+
return 'CORRECTED';
|
|
4709
4874
|
|
|
4875
|
+
case 'CANCEL':
|
|
4876
|
+
return 'CANCELLED';
|
|
4710
4877
|
|
|
4711
|
-
|
|
4712
|
-
|
|
4713
|
-
|
|
4714
|
-
|
|
4715
|
-
fetchNewTafList = _h.fetchApiData;
|
|
4878
|
+
default:
|
|
4879
|
+
return 'NEW';
|
|
4880
|
+
}
|
|
4881
|
+
};
|
|
4716
4882
|
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
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;
|
|
4720
4890
|
|
|
4721
|
-
|
|
4891
|
+
var _c = __read(React__default["default"].useState(false), 2),
|
|
4892
|
+
isLoading = _c[0],
|
|
4893
|
+
setLoading = _c[1];
|
|
4722
4894
|
|
|
4723
|
-
var
|
|
4724
|
-
|
|
4725
|
-
|
|
4895
|
+
var _d = __read(React__default["default"].useState(null), 2),
|
|
4896
|
+
error = _d[0],
|
|
4897
|
+
setError = _d[1]; // removes cancelled error message
|
|
4726
4898
|
|
|
4727
|
-
setErrorPostMessage(false);
|
|
4728
|
-
setErrorPostMessageText('');
|
|
4729
|
-
setTafDialogOpen(!isTafDialogOpen);
|
|
4730
|
-
};
|
|
4731
4899
|
|
|
4732
4900
|
React__default["default"].useEffect(function () {
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
}
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
title: 'Cancel TAF',
|
|
4743
|
-
description: 'Are you sure you want to cancel this TAF?',
|
|
4744
|
-
confirmLabel: 'Cancel'
|
|
4745
|
-
}).then(function () {
|
|
4746
|
-
var taf = getSelectedTaf(tafUuid, tafList).taf;
|
|
4747
|
-
postTaf({
|
|
4748
|
-
taf: taf,
|
|
4749
|
-
changeStatusTo: 'CANCELLED'
|
|
4750
|
-
});
|
|
4751
|
-
});
|
|
4752
|
-
} else if (selectedTafId === tafUuid) {
|
|
4753
|
-
setTafDialogAction(action);
|
|
4754
|
-
toggleTafDialog();
|
|
4755
|
-
} else {
|
|
4756
|
-
setTafDialogAction(action);
|
|
4757
|
-
setselectedTafId(tafUuid);
|
|
4758
|
-
}
|
|
4759
|
-
};
|
|
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]);
|
|
4760
4910
|
|
|
4761
4911
|
var postTaf = function postTaf(data) {
|
|
4762
4912
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
4763
|
-
var error_1;
|
|
4913
|
+
var error_1, newError;
|
|
4764
4914
|
return __generator(this, function (_a) {
|
|
4765
4915
|
switch (_a.label) {
|
|
4766
4916
|
case 0:
|
|
4767
|
-
|
|
4768
|
-
_a.label = 1;
|
|
4769
|
-
|
|
4770
|
-
case 1:
|
|
4771
|
-
_a.trys.push([1, 3,, 4]);
|
|
4917
|
+
_a.trys.push([0, 2,, 3]);
|
|
4772
4918
|
|
|
4919
|
+
setLoading(true);
|
|
4773
4920
|
return [4
|
|
4774
4921
|
/*yield*/
|
|
4775
4922
|
, api$1.postTaf(data)];
|
|
4776
4923
|
|
|
4777
|
-
case
|
|
4924
|
+
case 1:
|
|
4778
4925
|
_a.sent();
|
|
4779
4926
|
|
|
4780
|
-
|
|
4781
|
-
|
|
4927
|
+
setLoading(false);
|
|
4928
|
+
setError(null); // callback
|
|
4782
4929
|
|
|
4783
|
-
|
|
4784
|
-
|
|
4785
|
-
setErrorCancelTaf([]);
|
|
4930
|
+
onPostTaf();
|
|
4786
4931
|
return [3
|
|
4787
4932
|
/*break*/
|
|
4788
|
-
,
|
|
4933
|
+
, 3];
|
|
4789
4934
|
|
|
4790
|
-
case
|
|
4935
|
+
case 2:
|
|
4791
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
|
+
};
|
|
4792
4957
|
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
setErrorPostMessage(true);
|
|
4958
|
+
var getViewMode = function getViewMode(status) {
|
|
4959
|
+
return status === 'NEW' || status === 'DRAFT' || status === 'DRAFT_AMENDED' || status === 'DRAFT_CORRECTED' ? 'edit' : 'view';
|
|
4960
|
+
};
|
|
4797
4961
|
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
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];
|
|
4801
5008
|
}
|
|
4802
5009
|
|
|
4803
|
-
setSpinner(false);
|
|
4804
5010
|
return [3
|
|
4805
5011
|
/*break*/
|
|
4806
|
-
,
|
|
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];
|
|
4807
5035
|
|
|
4808
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:
|
|
4809
5048
|
return [2
|
|
4810
5049
|
/*return*/
|
|
4811
5050
|
];
|
|
@@ -4814,97 +5053,273 @@
|
|
|
4814
5053
|
});
|
|
4815
5054
|
};
|
|
4816
5055
|
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
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
|
+
};
|
|
4824
5080
|
|
|
4825
|
-
|
|
4826
|
-
|
|
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
|
+
};
|
|
4827
5114
|
|
|
4828
|
-
|
|
4829
|
-
|
|
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
|
|
4830
5120
|
|
|
4831
|
-
|
|
4832
|
-
|
|
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]);
|
|
4833
5127
|
|
|
4834
|
-
|
|
4835
|
-
|
|
5128
|
+
if (!tafList) {
|
|
5129
|
+
return null;
|
|
5130
|
+
}
|
|
4836
5131
|
|
|
4837
|
-
|
|
4838
|
-
|
|
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'
|
|
4839
5142
|
}
|
|
4840
|
-
}
|
|
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
|
+
};
|
|
4841
5236
|
|
|
4842
|
-
|
|
4843
|
-
|
|
4844
|
-
switch (action) {
|
|
4845
|
-
case 'CLOSE':
|
|
4846
|
-
confirmDialog({
|
|
4847
|
-
title: 'Closing TAF',
|
|
4848
|
-
description: 'Are you sure you want to close this TAF? Any changes made will be lost.',
|
|
4849
|
-
confirmLabel: 'Close'
|
|
4850
|
-
}).then(function () {
|
|
4851
|
-
toggleTafDialog();
|
|
4852
|
-
});
|
|
4853
|
-
break;
|
|
5237
|
+
var TafModule = function TafModule() {
|
|
5238
|
+
var api$1 = api.useApiContext().api;
|
|
4854
5239
|
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
case 'PUBLISH':
|
|
4859
|
-
case 'AMEND':
|
|
4860
|
-
case 'CORRECT':
|
|
4861
|
-
postTaf({
|
|
4862
|
-
taf: taf,
|
|
4863
|
-
changeStatusTo: fromActionToStatus(action)
|
|
4864
|
-
});
|
|
4865
|
-
break;
|
|
5240
|
+
var _a = __read(React__namespace.useState(false), 2),
|
|
5241
|
+
isLoading = _a[0],
|
|
5242
|
+
setLoading = _a[1];
|
|
4866
5243
|
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
|
|
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
|
+
});
|
|
4871
5288
|
};
|
|
4872
5289
|
|
|
4873
|
-
var
|
|
4874
|
-
|
|
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, {
|
|
4875
5316
|
tafList: tafList,
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
onClickTafActionButton: onClickTafActionButton,
|
|
4879
|
-
errorCancelTaf: errorCancelTaf
|
|
4880
|
-
}), showSpinner && /*#__PURE__*/React__default["default"].createElement(Spinner, null), selectedTaf !== undefined && /*#__PURE__*/React__default["default"].createElement(TafFormDialog, {
|
|
4881
|
-
open: isTafDialogOpen,
|
|
4882
|
-
toggleFormDialog: toggleTafDialog,
|
|
4883
|
-
tafFromBackend: selectedTaf,
|
|
4884
|
-
alertBanner: errorPostMessage ? /*#__PURE__*/React__default["default"].createElement(shared.AlertBanner, {
|
|
4885
|
-
severity: "error",
|
|
4886
|
-
title: "An error has occurred while saving, please try again",
|
|
4887
|
-
info: errorPostMessageText
|
|
4888
|
-
}) : null,
|
|
4889
|
-
onFormAction: onFormAction
|
|
4890
|
-
}, /*#__PURE__*/React__default["default"].createElement(TafFormWrapper, {
|
|
4891
|
-
mode: "edit",
|
|
4892
|
-
tafFromBackend: selectedTaf,
|
|
4893
|
-
tafAction: tafDialogAction,
|
|
4894
|
-
onFormAction: onFormAction
|
|
4895
|
-
}), showSpinner && /*#__PURE__*/React__default["default"].createElement(Spinner, null)));
|
|
5317
|
+
onPostTaf: reFetchNewTafList
|
|
5318
|
+
}));
|
|
4896
5319
|
};
|
|
4897
|
-
/**
|
|
4898
|
-
* Shows the list of Tafs and allows to create, edit and view Tafs.
|
|
4899
|
-
* Needs to be wrapped in the ApiProvider.
|
|
4900
|
-
*
|
|
4901
|
-
* @example
|
|
4902
|
-
* ```<ApiProvider baseURL="http://test.com" appURL="http://app.com" auth={auth} onSetAuth={onSetAuth} createApi={createApi}> authTokenUrl="url/tokenrefresh"<TafWrapper /> </ApiProvider>```
|
|
4903
|
-
*/
|
|
4904
|
-
|
|
4905
5320
|
|
|
4906
|
-
var
|
|
4907
|
-
return /*#__PURE__*/
|
|
5321
|
+
var Wrapper = function Wrapper() {
|
|
5322
|
+
return /*#__PURE__*/React__namespace.createElement(shared.ConfirmationServiceProvider, null, /*#__PURE__*/React__namespace.createElement(TafModule, null));
|
|
4908
5323
|
};
|
|
4909
5324
|
|
|
4910
5325
|
var createApi = function createApi(url, appUrl, auth, setAuth, authTokenUrl, authClientId) {
|
|
@@ -4923,13 +5338,8 @@
|
|
|
4923
5338
|
};
|
|
4924
5339
|
};
|
|
4925
5340
|
|
|
4926
|
-
exports.ContentDialog = ContentDialog;
|
|
4927
|
-
exports.TafFormDialog = TafFormDialog;
|
|
4928
5341
|
exports.TafFormWrapper = TafFormWrapper;
|
|
4929
|
-
exports.
|
|
4930
|
-
exports.TafListRow = TafListRow;
|
|
4931
|
-
exports.TafListSection = TafListSection;
|
|
4932
|
-
exports.TafWrapper = ConfirmationWrapper;
|
|
5342
|
+
exports.TafModule = Wrapper;
|
|
4933
5343
|
exports.createApi = createApi;
|
|
4934
5344
|
|
|
4935
5345
|
Object.defineProperty(exports, '__esModule', { value: true });
|