@opengeoweb/warnings 9.10.2 → 9.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.esm.js CHANGED
@@ -10,8 +10,8 @@ import { snackbarActions } from '@opengeoweb/snackbar';
10
10
  import { styled, Box, Typography, ListItem, Grid, Paper, ListItemButton, Stack, LinearProgress, Button, FormHelperText, MenuItem, Tabs, Tab, FormControl, Card, CardContent, ListItemIcon, CircularProgress, List } from '@mui/material';
11
11
  import { VariableSizeList } from 'react-window';
12
12
  import AutoSizer from 'react-virtualized-auto-sizer';
13
+ import { DATE_FORMAT_FNS, ReactHookFormProvider, defaultFormOptions, ReactHookFormHiddenInput, isValidGeoJsonCoordinates, ReactHookFormSelect, ReactHookFormTextField, useDraftFormHelpers, errorMessages, ReactHookFormDateTime, isValidDate, isXHoursBefore, isXHoursAfter, isEmpty } from '@opengeoweb/form-fields';
13
14
  import { getApi, createApiInstance, createNonAuthApiInstance, createFakeApiInstance, ApiProvider } from '@opengeoweb/api';
14
- import { ReactHookFormProvider, defaultFormOptions, ReactHookFormHiddenInput, isValidGeoJsonCoordinates, ReactHookFormSelect, ReactHookFormTextField, useDraftFormHelpers, errorMessages, ReactHookFormDateTime, isValidDate, isXHoursBefore, isXHoursAfter, isEmpty } from '@opengeoweb/form-fields';
15
15
  import { useFormContext } from 'react-hook-form';
16
16
  import { clamp } from 'lodash';
17
17
  import { useAuthenticationContext } from '@opengeoweb/authentication';
@@ -951,10 +951,7 @@ var ObjectManagerMapButtonConnect = function ObjectManagerMapButtonConnect(_ref)
951
951
  * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
952
952
  * Copyright 2023 - Finnish Meteorological Institute (FMI)
953
953
  * */
954
- var DATE_FORMAT = 'dd/MM/yyyy HH:mm';
955
- var DATE_FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ss'Z'";
956
954
  var DATE_FORMAT_HEADER = 'EEEE, MMMM dd';
957
- var DATE_FORMAT_DATE_FIELDS = 'DD/MM/YYYY HH:mm'; // TODO: should be 'ddd DD MMM HH:mm' https://gitlab.com/opengeoweb/opengeoweb/-/issues/4484
958
955
  var DATE_FORMAT_LASTUPDATEDTIME = 'HH:mm';
959
956
 
960
957
  var DEFAULT_ADD_BUTTON_HEIGHT = 80;
@@ -1207,7 +1204,7 @@ var Objects = function Objects(_ref2) {
1207
1204
  maxHeight: '32px',
1208
1205
  overflow: 'hidden'
1209
1206
  }
1210
- }, object.scope === 'global' && 'Global: ', "".concat(dateUtils.dateToString(dateUtils.utc(object.lastUpdatedTime), DATE_FORMAT), " UTC")))))));
1207
+ }, object.scope === 'global' && 'Global: ', "".concat(dateUtils.dateToString(dateUtils.utc(object.lastUpdatedTime), DATE_FORMAT_FNS), " UTC")))))));
1211
1208
  })));
1212
1209
  });
1213
1210
  };
@@ -4185,7 +4182,7 @@ var useFormDirty = function useFormDirty(_ref) {
4185
4182
 
4186
4183
  var opacityOptions = [100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 0];
4187
4184
  var getObjectName$1 = function getObjectName(objectName) {
4188
- return objectName || "".concat(dateUtils.dateToString(new Date(), DATE_FORMAT, true), " UTC");
4185
+ return objectName || "".concat(dateUtils.dateToString(new Date(), DATE_FORMAT_FNS, true), " UTC");
4189
4186
  };
4190
4187
  var SAVE_OBJECT_BUTTON = 'Save new object';
4191
4188
  var UPDATE_OBJECT_BUTTON = 'Update object';
@@ -4928,7 +4925,7 @@ var OBJECTS_MENU = 'Object options';
4928
4925
  var NO_OBJECT = '(no object selected)';
4929
4926
  var OBJECT_SELECTED = 'object selected';
4930
4927
  var formatDate = function formatDate(lastUpdatedTime) {
4931
- return dateUtils.dateToString(dateUtils.isoStringToDate(lastUpdatedTime), "".concat(DATE_FORMAT, " 'UTC'"));
4928
+ return dateUtils.dateToString(dateUtils.isoStringToDate(lastUpdatedTime), "".concat(DATE_FORMAT_FNS, " 'UTC'"));
4932
4929
  };
4933
4930
  var getObjectName = function getObjectName(geoJSON, objectName) {
4934
4931
  if (geoJSON) {
@@ -5266,7 +5263,6 @@ var ValidFrom = function ValidFrom(_ref) {
5266
5263
  }
5267
5264
  },
5268
5265
  label: LABEL_VALID_FROM,
5269
- format: DATE_FORMAT_DATE_FIELDS,
5270
5266
  disablePast: true,
5271
5267
  disabled: isDisabled || isReadOnly,
5272
5268
  isReadOnly: isReadOnly,
@@ -5333,7 +5329,6 @@ var ValidUntil = function ValidUntil(_ref) {
5333
5329
  }
5334
5330
  },
5335
5331
  label: LABEL_VALID_UNTIL,
5336
- format: DATE_FORMAT_DATE_FIELDS,
5337
5332
  disablePast: true,
5338
5333
  disabled: isDisabled || isReadOnly,
5339
5334
  isReadOnly: isReadOnly
@@ -5352,8 +5347,8 @@ var getEmptyPublicWarning = function getEmptyPublicWarning() {
5352
5347
  return {
5353
5348
  id: '',
5354
5349
  phenomenon: '',
5355
- validFrom: dateUtils.dateToString(validFromTime, DATE_FORMAT_UTC, true),
5356
- validUntil: dateUtils.dateToString(validUntilTime, DATE_FORMAT_UTC, true),
5350
+ validFrom: dateUtils.dateToString(validFromTime),
5351
+ validUntil: dateUtils.dateToString(validUntilTime),
5357
5352
  level: '',
5358
5353
  probability: 30,
5359
5354
  descriptionOriginal: '',
@@ -5822,8 +5817,17 @@ var PublicWarningsFormConnect = function PublicWarningsFormConnect() {
5822
5817
  isFormDirty: isFormDirty
5823
5818
  }));
5824
5819
  };
5820
+ var getIsReadOnly = function getIsReadOnly() {
5821
+ if (publicWarningFormAction === 'readonly') {
5822
+ return true;
5823
+ }
5824
+ if ((publicWarning === null || publicWarning === void 0 ? void 0 : publicWarning.status) === 'TODO' && publicWarningFormAction === '') {
5825
+ return false;
5826
+ }
5827
+ return !isEditor && (publicWarning === null || publicWarning === void 0 ? void 0 : publicWarning.status) !== undefined;
5828
+ };
5825
5829
  // Readonly also in case you are not creating a new warning and you are not set as the editor
5826
- var isReadOnly = publicWarningFormAction === 'readonly' || !isEditor && (publicWarning === null || publicWarning === void 0 ? void 0 : publicWarning.status) !== undefined;
5830
+ var isReadOnly = getIsReadOnly();
5827
5831
  return /*#__PURE__*/React.createElement(PublicWarningsForm, {
5828
5832
  object: publicWarningObject,
5829
5833
  publicWarningDetails: publicWarning === null || publicWarning === void 0 ? void 0 : publicWarning.warningDetail,
@@ -6037,22 +6041,6 @@ var PublicWarningsFormDialogConnect = function PublicWarningsFormDialogConnect(_
6037
6041
  }, /*#__PURE__*/React__default.createElement(PublicWarningsFormConnect, null));
6038
6042
  };
6039
6043
 
6040
- /* *
6041
- * Licensed under the Apache License, Version 2.0 (the "License");
6042
- * you may not use this file except in compliance with the License.
6043
- * You may obtain a copy of the License at
6044
- *
6045
- * http://www.apache.org/licenses/LICENSE-2.0
6046
- *
6047
- * Unless required by applicable law or agreed to in writing, software
6048
- * distributed under the License is distributed on an "AS IS" BASIS,
6049
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6050
- * See the License for the specific language governing permissions and
6051
- * limitations under the License.
6052
- *
6053
- * Copyright 2023 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
6054
- * Copyright 2023 - Finnish Meteorological Institute (FMI)
6055
- * */
6056
6044
  var getStatus = function getStatus(status) {
6057
6045
  switch (status) {
6058
6046
  case 'DRAFT':
@@ -6060,7 +6048,7 @@ var getStatus = function getStatus(status) {
6060
6048
  case 'PUBLISHED':
6061
6049
  return 'Published';
6062
6050
  case 'TODO':
6063
- return 'To do';
6051
+ return 'Reviews';
6064
6052
  default:
6065
6053
  return 'Expired (last 24 hours)';
6066
6054
  }
@@ -6068,6 +6056,7 @@ var getStatus = function getStatus(status) {
6068
6056
  var CREATE_WARNING = 'Create a warning';
6069
6057
  var BUTTON_EDIT = 'Edit';
6070
6058
  var BUTTON_DELETE = 'Delete';
6059
+ var BUTTON_USE = 'Use';
6071
6060
  var BUTTON_OPTIONS = 'Options';
6072
6061
  var sortWarningsOnStatus = function sortWarningsOnStatus(warnings) {
6073
6062
  return warnings.reduce(function (allWarnings, warning) {
@@ -6099,6 +6088,16 @@ var sortWarningsOnStatus = function sortWarningsOnStatus(warnings) {
6099
6088
  expired: []
6100
6089
  });
6101
6090
  };
6091
+ var getWarningWithoutId = function getWarningWithoutId(warning) {
6092
+ warning.id;
6093
+ var warningDetail = warning.warningDetail,
6094
+ fullWarning = __rest(warning, ["id", "warningDetail"]);
6095
+ warningDetail.id;
6096
+ var cleanWarningDetail = __rest(warningDetail, ["id"]);
6097
+ return Object.assign(Object.assign({}, fullWarning), {
6098
+ warningDetail: cleanWarningDetail
6099
+ });
6100
+ };
6102
6101
  var WarningListColumnContent = function WarningListColumnContent(_a) {
6103
6102
  var title = _a.title,
6104
6103
  status = _a.status,
@@ -6154,6 +6153,32 @@ var WarningsOnStatus = function WarningsOnStatus(_ref) {
6154
6153
  return onDeleteWarning(warningId);
6155
6154
  };
6156
6155
  };
6156
+ var onClickUseWarning = function onClickUseWarning(warning) {
6157
+ return function () {
6158
+ onEditWarning(getWarningWithoutId(warning));
6159
+ };
6160
+ };
6161
+ var getMenuItems = function getMenuItems(warning) {
6162
+ if (status === 'DRAFT') {
6163
+ return [{
6164
+ text: BUTTON_EDIT,
6165
+ action: onClickEditWarning(warning),
6166
+ icon: /*#__PURE__*/React__default.createElement(Edit, null)
6167
+ }, {
6168
+ text: BUTTON_DELETE,
6169
+ action: onClickDeleteWarning(warning.id),
6170
+ icon: /*#__PURE__*/React__default.createElement(Delete, null)
6171
+ }];
6172
+ }
6173
+ if (status === 'TODO') {
6174
+ return [{
6175
+ text: BUTTON_USE,
6176
+ action: onClickUseWarning(warning),
6177
+ icon: /*#__PURE__*/React__default.createElement(Edit, null)
6178
+ }];
6179
+ }
6180
+ return [];
6181
+ };
6157
6182
  return /*#__PURE__*/React__default.createElement(Box, {
6158
6183
  sx: {
6159
6184
  paddingBottom: 2
@@ -6183,40 +6208,44 @@ var WarningsOnStatus = function WarningsOnStatus(_ref) {
6183
6208
  borderColor: status === 'EXPIRED' ? 'geowebColors.cards.cardContainerDisabledBorder' : 'geowebColors.cards.cardContainerBorder',
6184
6209
  borderRadius: 1,
6185
6210
  borderWidth: activeWarningId === warning.id ? '1px' : '1px',
6186
- borderStyle: 'solid'
6211
+ borderStyle: 'solid',
6212
+ containerType: 'inline-size'
6187
6213
  },
6188
- secondaryAction: status !== 'EXPIRED' && ( /*#__PURE__*/React__default.createElement(ToggleMenu, {
6214
+ secondaryAction: status !== 'EXPIRED' ? ( /*#__PURE__*/React__default.createElement(ToggleMenu, {
6189
6215
  menuTitle: BUTTON_OPTIONS,
6190
6216
  tooltipTitle: BUTTON_OPTIONS,
6191
6217
  menuPosition: "bottom",
6192
6218
  "aria-label": BUTTON_OPTIONS,
6193
- menuItems: status === 'DRAFT' ? [{
6194
- text: BUTTON_EDIT,
6195
- action: onClickEditWarning(warning),
6196
- icon: /*#__PURE__*/React__default.createElement(Edit, null)
6197
- }, {
6198
- text: BUTTON_DELETE,
6199
- action: onClickDeleteWarning(warning.id),
6200
- icon: /*#__PURE__*/React__default.createElement(Delete, null)
6201
- }] : [],
6219
+ menuItems: getMenuItems(warning),
6202
6220
  buttonIcon: /*#__PURE__*/React__default.createElement(Options, null)
6221
+ })) : ( /*#__PURE__*/React__default.createElement(Box, {
6222
+ sx: {
6223
+ width: 24
6224
+ }
6203
6225
  }))
6204
6226
  }, /*#__PURE__*/React__default.createElement(ListItemButton, {
6205
- sx: {
6227
+ sx: _defineProperty({
6206
6228
  height: '100%',
6207
6229
  minHeight: '48px',
6208
- padding: 1
6209
- },
6230
+ padding: 1,
6231
+ '.warning-list': {
6232
+ justifyContent: 'left'
6233
+ }
6234
+ }, "@container (min-width: ".concat(breakpoints.desktop, "px)"), {
6235
+ '.warning-list': {
6236
+ justifyContent: 'space-between'
6237
+ }
6238
+ }),
6210
6239
  onClick: onClickWarning(warning),
6211
6240
  "aria-label": "warning item for ".concat(warning.id),
6212
6241
  selected: activeWarningId === warning.id
6213
6242
  }, /*#__PURE__*/React__default.createElement(Grid, {
6243
+ className: "warning-list",
6214
6244
  container: true,
6215
6245
  item: true,
6216
6246
  xs: true,
6217
6247
  rowSpacing: 0,
6218
6248
  columnSpacing: 2,
6219
- justifyContent: "left",
6220
6249
  alignItems: "center"
6221
6250
  }, /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
6222
6251
  title: "Incident",
@@ -6226,15 +6255,15 @@ var WarningsOnStatus = function WarningsOnStatus(_ref) {
6226
6255
  title: "Last update",
6227
6256
  status: status,
6228
6257
  width: 142
6229
- }, warning.lastUpdatedTime && "".concat(dateUtils.dateToString(dateUtils.utc(warning.lastUpdatedTime), DATE_FORMAT), " UTC")), /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
6258
+ }, warning.lastUpdatedTime && "".concat(dateUtils.dateToString(dateUtils.utc(warning.lastUpdatedTime), DATE_FORMAT_FNS), " UTC")), /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
6230
6259
  title: "Start time",
6231
6260
  status: status,
6232
6261
  width: 142
6233
- }, warning.warningDetail.validFrom && "".concat(dateUtils.dateToString(dateUtils.utc(warning.warningDetail.validFrom), DATE_FORMAT), " UTC")), /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
6262
+ }, warning.warningDetail.validFrom && "".concat(dateUtils.dateToString(dateUtils.utc(warning.warningDetail.validFrom), DATE_FORMAT_FNS), " UTC")), /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
6234
6263
  title: "End time",
6235
6264
  status: status,
6236
6265
  width: 142
6237
- }, warning.warningDetail.validUntil && "".concat(dateUtils.dateToString(dateUtils.utc(warning.warningDetail.validUntil), DATE_FORMAT), " UTC")), /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
6266
+ }, warning.warningDetail.validUntil && "".concat(dateUtils.dateToString(dateUtils.utc(warning.warningDetail.validUntil), DATE_FORMAT_FNS), " UTC")), /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
6238
6267
  title: "Domain",
6239
6268
  status: status
6240
6269
  }, warning.warningDetail.domain), /*#__PURE__*/React__default.createElement(WarningListColumnContent, {
@@ -6267,7 +6296,8 @@ var WarningsOnStatus = function WarningsOnStatus(_ref) {
6267
6296
  status: status
6268
6297
  }, status === 'DRAFT' ? ( /*#__PURE__*/React__default.createElement(Box, {
6269
6298
  sx: {
6270
- position: 'relative'
6299
+ position: 'relative',
6300
+ right: 12
6271
6301
  }
6272
6302
  }, warning.editor && ( /*#__PURE__*/React__default.createElement(Box, {
6273
6303
  sx: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/warnings",
3
- "version": "9.10.2",
3
+ "version": "9.11.0",
4
4
  "description": "GeoWeb warinings library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -4,7 +4,9 @@ import { PublicWarning, PublicWarningStatus } from '../../store/publicWarningFor
4
4
  export declare const CREATE_WARNING = "Create a warning";
5
5
  export declare const BUTTON_EDIT = "Edit";
6
6
  export declare const BUTTON_DELETE = "Delete";
7
+ export declare const BUTTON_USE = "Use";
7
8
  export declare const BUTTON_OPTIONS = "Options";
9
+ export declare const getWarningWithoutId: (warning: PublicWarning) => PublicWarning;
8
10
  export declare const WarningListColumnContent: React.FC<GridProps & {
9
11
  title?: string;
10
12
  status: PublicWarningStatus;
@@ -1,5 +1,5 @@
1
1
  export interface PublicWarningDetail {
2
- id: string;
2
+ id?: string;
3
3
  phenomenon: string;
4
4
  geoJSON: GeoJSON.FeatureCollection;
5
5
  validFrom: string;
@@ -1,5 +1,2 @@
1
- export declare const DATE_FORMAT = "dd/MM/yyyy HH:mm";
2
- export declare const DATE_FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ss'Z'";
3
1
  export declare const DATE_FORMAT_HEADER = "EEEE, MMMM dd";
4
- export declare const DATE_FORMAT_DATE_FIELDS = "DD/MM/YYYY HH:mm";
5
2
  export declare const DATE_FORMAT_LASTUPDATEDTIME = "HH:mm";