@opengeoweb/data-explorer 20.0.0 → 20.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -4,7 +4,7 @@ import { useDispatch, useSelector } from 'react-redux';
4
4
  import { mapListener, serviceListener, layersListener, syncGroupsListener, genericListener, uiReducer, syncGroupsReducer, layerReducer, serviceReducer, mapReducer, uiSelectors, uiTypes, uiActions, layerActions, layerTypes, layerSelectors, useSetupDialog } from '@opengeoweb/store';
5
5
  import { Box, Typography, Autocomplete, TextField, useTheme, ListItem, ListItemButton, ListItemIcon, Checkbox, ListItemText, Switch, List, Grid, Tooltip, LinearProgress, Link, IconButton, Accordion, AccordionSummary, AccordionDetails } from '@mui/material';
6
6
  import { PROJECTION, useDebounce, CustomIconButton, CustomTooltip, CustomToggleButton, CustomAccordion, SearchField, SearchHighlight, renderCounter, useWheelStopPropagation, ToolContainerDraggable, AlertBanner, ErrorBoundary } from '@opengeoweb/shared';
7
- import { center } from '@turf/turf';
7
+ import { center, bbox } from '@turf/turf';
8
8
  import { debounce } from 'lodash';
9
9
  import { View } from 'ol';
10
10
  import GeoJSON from 'ol/format/GeoJSON';
@@ -2827,7 +2827,8 @@ createSelector(getDataExplorerState, store => (store == null ? void 0 : store.fi
2827
2827
  const getBbox = createSelector(getDataExplorerState, store => (store == null ? void 0 : store.filters.bbox) || []);
2828
2828
  const getAreaFilterTileURL = createSelector(getDataExplorerState, store => (store == null ? void 0 : store.areaFilterTileURL) || '');
2829
2829
  const getAreaFilterTileLicense = createSelector(getDataExplorerState, store => (store == null ? void 0 : store.areaFilterTileLicense) || '');
2830
- const getMeteogateOnly = createSelector(getDataExplorerState, store => Boolean(store == null ? void 0 : store.filters.meteogateOnly));
2830
+ const getMeteogateOnly = createSelector(getDataExplorerState, store => (store == null ? void 0 : store.showMeteoGateBranding) !== false && Boolean(store == null ? void 0 : store.filters.meteogateOnly));
2831
+ const getShowMeteoGateBranding = createSelector(getDataExplorerState, store => (store == null ? void 0 : store.showMeteoGateBranding) !== false);
2831
2832
 
2832
2833
  /* *
2833
2834
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3657,6 +3658,7 @@ $$r({ target: 'String', proto: true, forced: !correctIsRegExpLogic$1('includes')
3657
3658
  });
3658
3659
 
3659
3660
  const initialState = {
3661
+ showMeteoGateBranding: true,
3660
3662
  filters: {
3661
3663
  searchFilter: '',
3662
3664
  queryables: [],
@@ -3735,12 +3737,17 @@ const slice = createSlice({
3735
3737
  setDataExplorerConfiguration: (draft, action) => {
3736
3738
  const {
3737
3739
  discoveryCatalogueURL,
3740
+ showMeteoGateBranding,
3738
3741
  concepts,
3739
3742
  queryables,
3740
3743
  areaFilterTileURL,
3741
3744
  areaFilterTileLicense
3742
3745
  } = action.payload;
3743
3746
  draft.discoveryCatalogueURL = discoveryCatalogueURL;
3747
+ draft.showMeteoGateBranding = showMeteoGateBranding != null ? showMeteoGateBranding : true;
3748
+ if (!draft.showMeteoGateBranding) {
3749
+ draft.filters.meteogateOnly = false;
3750
+ }
3744
3751
  draft.areaFilterTileURL = areaFilterTileURL;
3745
3752
  draft.areaFilterTileLicense = areaFilterTileLicense;
3746
3753
  draft.filters.concepts = [{
@@ -6173,6 +6180,7 @@ const DataExplorerFilterOption = ({
6173
6180
  const DataExplorerFilters = ({
6174
6181
  filters,
6175
6182
  meteoGateOnly,
6183
+ showMeteoGateBranding: _showMeteoGateBranding = true,
6176
6184
  onSetFilterValue,
6177
6185
  onToggleMeteoGateOnly
6178
6186
  }) => {
@@ -6186,7 +6194,7 @@ const DataExplorerFilters = ({
6186
6194
  onToggleMeteoGateOnly(event.target.checked);
6187
6195
  };
6188
6196
  return jsxs(Box, {
6189
- children: [jsxs(Box, {
6197
+ children: [_showMeteoGateBranding ? jsxs(Box, {
6190
6198
  sx: {
6191
6199
  marginLeft: '12px'
6192
6200
  },
@@ -6198,7 +6206,7 @@ const DataExplorerFilters = ({
6198
6206
  variant: "caption",
6199
6207
  children: t('dataexplorer-meteogate-only')
6200
6208
  })]
6201
- }), jsx(Typography, {
6209
+ }) : null, jsx(Typography, {
6202
6210
  color: "textSecondary",
6203
6211
  sx: {
6204
6212
  marginLeft: '24px'
@@ -6239,6 +6247,7 @@ const DataExplorerFiltersConnect = () => {
6239
6247
  const searchText = useSelector(store => getSearchFilter(store));
6240
6248
  const concepts = useSelector(store => getConcepts(store));
6241
6249
  const meteogateOnly = useSelector(store => getMeteogateOnly(store));
6250
+ const showMeteoGateBranding = useSelector(store => getShowMeteoGateBranding(store));
6242
6251
  const {
6243
6252
  data: filteringDatasets
6244
6253
  } = useFetchItems(baseUrl, searchText, [], concepts, undefined, meteogateOnly);
@@ -6281,7 +6290,8 @@ const DataExplorerFiltersConnect = () => {
6281
6290
  filters: filters,
6282
6291
  meteoGateOnly: meteogateOnly,
6283
6292
  onSetFilterValue: setFilterValue,
6284
- onToggleMeteoGateOnly: handleMeteoGateToggle
6293
+ onToggleMeteoGateOnly: handleMeteoGateToggle,
6294
+ showMeteoGateBranding: showMeteoGateBranding
6285
6295
  });
6286
6296
  };
6287
6297
  // Go through datasets to get the possible values for the queryable filter
@@ -8642,6 +8652,7 @@ const DatasetRow = ({
8642
8652
  const {
8643
8653
  t
8644
8654
  } = useDataExplorerTranslation();
8655
+ const title = feature.properties.title || feature.properties.identifier || feature.id;
8645
8656
  if (!feature) {
8646
8657
  return null;
8647
8658
  }
@@ -8685,9 +8696,9 @@ const DatasetRow = ({
8685
8696
  whiteSpace: 'normal'
8686
8697
  }
8687
8698
  },
8688
- children: !!feature.properties.title && jsx(SearchHighlight, {
8699
+ children: !!title && jsx(SearchHighlight, {
8689
8700
  search: searchFilter,
8690
- text: feature.properties.title
8701
+ text: title
8691
8702
  })
8692
8703
  })
8693
8704
  }), jsx(Grid, {
@@ -8986,7 +8997,8 @@ const DataExplorer = ({
8986
8997
  headerSize: _headerSize = 'medium',
8987
8998
  loading: _loading = false,
8988
8999
  error: _error = false,
8989
- compact: _compact = false
9000
+ compact: _compact = false,
9001
+ showMeteoGateBranding: _showMeteoGateBranding = true
8990
9002
  }) => {
8991
9003
  const {
8992
9004
  t
@@ -8996,7 +9008,7 @@ const DataExplorer = ({
8996
9008
  height: 300
8997
9009
  };
8998
9010
  renderCounter.count(DataExplorer.name);
8999
- const title = 'MeteoGate Data Explorer';
9011
+ const title = _showMeteoGateBranding ? 'MeteoGate Data Explorer' : 'Data Explorer';
9000
9012
  const stopWheelEventPropagationRef = useWheelStopPropagation();
9001
9013
  return jsx(ToolContainerDraggable, {
9002
9014
  bounds: bounds,
@@ -9094,6 +9106,7 @@ const InfoDialogBaseInfo = ({
9094
9106
  datasetLink,
9095
9107
  id
9096
9108
  }) => {
9109
+ var _properties$formats;
9097
9110
  const {
9098
9111
  t
9099
9112
  } = useDataExplorerTranslation();
@@ -9161,7 +9174,7 @@ const InfoDialogBaseInfo = ({
9161
9174
  })
9162
9175
  }), jsx(Grid, {
9163
9176
  children: jsx(Typography, {
9164
- children: properties.title
9177
+ children: properties.title || properties.identifier || id
9165
9178
  })
9166
9179
  })]
9167
9180
  }), !!properties.updated && jsxs(Grid, {
@@ -9182,7 +9195,7 @@ const InfoDialogBaseInfo = ({
9182
9195
  children: formatDateTime(properties.updated)
9183
9196
  })
9184
9197
  })]
9185
- }), jsxs(Grid, {
9198
+ }), !!properties.description && jsxs(Grid, {
9186
9199
  container: true,
9187
9200
  spacing: 0,
9188
9201
  sx: {
@@ -9218,7 +9231,7 @@ const InfoDialogBaseInfo = ({
9218
9231
  children: formatLanguage(properties.language)
9219
9232
  })
9220
9233
  })]
9221
- }), jsxs(Grid, {
9234
+ }), !!properties['wmo:dataPolicy'] && jsxs(Grid, {
9222
9235
  container: true,
9223
9236
  spacing: 0,
9224
9237
  sx: {
@@ -9235,7 +9248,7 @@ const InfoDialogBaseInfo = ({
9235
9248
  children: properties['wmo:dataPolicy'].charAt(0).toUpperCase() + properties['wmo:dataPolicy'].slice(1)
9236
9249
  })
9237
9250
  })]
9238
- }), !!properties.formats && jsxs(Grid, {
9251
+ }), !!((_properties$formats = properties.formats) != null && _properties$formats.length) && jsxs(Grid, {
9239
9252
  container: true,
9240
9253
  spacing: 0,
9241
9254
  sx: {
@@ -10062,77 +10075,13 @@ const DiscoveryCatalogueInfo = ({
10062
10075
  });
10063
10076
  };
10064
10077
 
10065
- /* *
10066
- * Licensed under the Apache License, Version 2.0 (the "License");
10067
- * you may not use this file except in compliance with the License.
10068
- * You may obtain a copy of the License at
10069
- *
10070
- * http://www.apache.org/licenses/LICENSE-2.0
10071
- *
10072
- * Unless required by applicable law or agreed to in writing, software
10073
- * distributed under the License is distributed on an "AS IS" BASIS,
10074
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10075
- * See the License for the specific language governing permissions and
10076
- * limitations under the License.
10077
- *
10078
- * Copyright 2025 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
10079
- * Copyright 2025 - Finnish Meteorological Institute (FMI)
10080
- * Copyright 2025 - The Norwegian Meteorological Institute (MET Norway)
10081
- * */
10082
- // Multipolygon coordinates
10083
- const findSmallestMultiPolygonFirstChild = multiPolygons => {
10084
- const smallestValues = multiPolygons.map(polygon => {
10085
- const smallFirsts = polygon.map(pairs => Math.min(...pairs.map(([first]) => first)));
10086
- return Math.min(...smallFirsts);
10087
- });
10088
- return Math.min(...smallestValues);
10089
- };
10090
- const findLargestMultiPolygonFirstChild = multiPolygons => {
10091
- const largestValues = multiPolygons.map(polygon => {
10092
- const largeFirsts = polygon.map(pairs => Math.max(...pairs.map(([first]) => first)));
10093
- return Math.max(...largeFirsts);
10094
- });
10095
- return Math.max(...largestValues);
10096
- };
10097
- const findSmallestMultiPolygonLastChild = multiPolygons => {
10098
- const smallestValues = multiPolygons.map(polygon => {
10099
- const smallFirsts = polygon.map(pairs => Math.min(...pairs.map(([, last]) => last)));
10100
- return Math.min(...smallFirsts);
10101
- });
10102
- return Math.min(...smallestValues);
10103
- };
10104
- const findLargestMultiPolygonLastChild = multiPolygons => {
10105
- const largestValues = multiPolygons.map(polygon => {
10106
- const largeFirsts = polygon.map(pairs => Math.max(...pairs.map(([, last]) => last)));
10107
- return Math.max(...largeFirsts);
10108
- });
10109
- return Math.max(...largestValues);
10110
- };
10111
- // Polygon coordinates
10112
- const findSmallestPolygonFirstChild = pairs => {
10113
- return Math.min(...pairs[0].map(([first]) => first));
10114
- };
10115
- const findLargestPolygonFirstChild = pairs => {
10116
- return Math.max(...pairs[0].map(([first]) => first));
10117
- };
10118
- const findSmallestPolygonLastChild = pairs => {
10119
- return Math.min(...pairs[0].map(([, last]) => last));
10120
- };
10121
- const findLargestPolygonLastChild = pairs => {
10122
- return Math.max(...pairs[0].map(([, last]) => last));
10123
- };
10124
-
10125
10078
  const InfoDialogGeographicalCoverage = ({
10126
- coordinates,
10127
- type
10079
+ geometry
10128
10080
  }) => {
10129
10081
  const {
10130
10082
  t
10131
10083
  } = useDataExplorerTranslation();
10132
- // Get the coordinates from geometry
10133
- const isMultiPolygon = type === 'multipolygon' || type === 'MultiPolygon';
10134
- const polygon = coordinates;
10135
- const multiPolygons = coordinates;
10084
+ const [west, south, east, north] = bbox(geometry);
10136
10085
  return jsxs(Grid, {
10137
10086
  container: true,
10138
10087
  "data-testid": "infoDialogGeographicalCoverage",
@@ -10155,7 +10104,7 @@ const InfoDialogGeographicalCoverage = ({
10155
10104
  }), jsx(Grid, {
10156
10105
  children: jsxs(Typography, {
10157
10106
  "data-testid": "infoDialogGeographicalCoverageWesternmost",
10158
- children: [isMultiPolygon ? findSmallestMultiPolygonFirstChild(multiPolygons) : findSmallestPolygonFirstChild(polygon), "\u00B0"]
10107
+ children: [west, "\u00B0"]
10159
10108
  })
10160
10109
  })]
10161
10110
  }), jsxs(Grid, {
@@ -10173,7 +10122,7 @@ const InfoDialogGeographicalCoverage = ({
10173
10122
  }), jsx(Grid, {
10174
10123
  children: jsxs(Typography, {
10175
10124
  "data-testid": "infoDialogGeographicalCoverageEasternmost",
10176
- children: [isMultiPolygon ? findLargestMultiPolygonFirstChild(multiPolygons) : findLargestPolygonFirstChild(polygon), "\u00B0"]
10125
+ children: [east, "\u00B0"]
10177
10126
  })
10178
10127
  })]
10179
10128
  }), jsxs(Grid, {
@@ -10191,7 +10140,7 @@ const InfoDialogGeographicalCoverage = ({
10191
10140
  }), jsx(Grid, {
10192
10141
  children: jsxs(Typography, {
10193
10142
  "data-testid": "infoDialogGeographicalCoverageNorthernmost",
10194
- children: [isMultiPolygon ? findLargestMultiPolygonLastChild(multiPolygons) : findLargestPolygonLastChild(polygon), "\u00B0"]
10143
+ children: [north, "\u00B0"]
10195
10144
  })
10196
10145
  })]
10197
10146
  }), jsxs(Grid, {
@@ -10209,7 +10158,7 @@ const InfoDialogGeographicalCoverage = ({
10209
10158
  }), jsx(Grid, {
10210
10159
  children: jsxs(Typography, {
10211
10160
  "data-testid": "infoDialogGeographicalCoverageSouthernmost",
10212
- children: [isMultiPolygon ? findSmallestMultiPolygonLastChild(multiPolygons) : findSmallestPolygonLastChild(polygon), "\u00B0"]
10161
+ children: [south, "\u00B0"]
10213
10162
  })
10214
10163
  })]
10215
10164
  })]
@@ -10707,21 +10656,10 @@ const InfoDialogWMSMap = ({
10707
10656
  return '';
10708
10657
  };
10709
10658
  useEffect(() => {
10710
- if (geometry.coordinates) {
10711
- if (geometry.type === 'multipolygon') {
10712
- const smallestFirst = findSmallestMultiPolygonFirstChild(geometry.coordinates);
10713
- const smallestLast = findSmallestMultiPolygonLastChild(geometry.coordinates);
10714
- const largestFirst = findLargestMultiPolygonFirstChild(geometry.coordinates);
10715
- const largestLast = findLargestMultiPolygonLastChild(geometry.coordinates);
10716
- const coord1 = fromLonLat([smallestFirst, smallestLast], 'EPSG:3857');
10717
- const coord2 = fromLonLat([largestFirst, largestLast], 'EPSG:3857');
10718
- setExtent(boundingExtent([coord1, coord2]));
10719
- } else {
10720
- const coord1 = fromLonLat(geometry.coordinates[0][0], 'EPSG:3857');
10721
- const coord2 = fromLonLat(geometry.coordinates[0][2], 'EPSG:3857');
10722
- setExtent(boundingExtent([coord1, coord2]));
10723
- }
10724
- }
10659
+ const [west, south, east, north] = bbox(geometry);
10660
+ const southwest = fromLonLat([west, south], PROJECTION.EPSG_3857.value);
10661
+ const northeast = fromLonLat([east, north], PROJECTION.EPSG_3857.value);
10662
+ setExtent(boundingExtent([southwest, northeast]));
10725
10663
  }, [geometry]);
10726
10664
  useEffect(() => {
10727
10665
  if (mapSize && extent) {
@@ -10840,6 +10778,7 @@ const InfoDialogWMSMapConnect = ({
10840
10778
  });
10841
10779
  };
10842
10780
 
10781
+ const isPolygonalGeometry = geometry => (geometry == null ? void 0 : geometry.type) === 'Polygon' || (geometry == null ? void 0 : geometry.type) === 'MultiPolygon';
10843
10782
  const DataExplorerInfo = ({
10844
10783
  onClose,
10845
10784
  isOpen,
@@ -10853,7 +10792,7 @@ const DataExplorerInfo = ({
10853
10792
  featureInfo,
10854
10793
  datasetLink
10855
10794
  }) => {
10856
- var _featureInfo$time, _featureInfo$time2;
10795
+ var _featureInfo$time, _featureInfo$time2, _featureInfo$properti, _featureInfo$properti2, _featureInfo$links, _featureInfo$properti3;
10857
10796
  const minSize = {
10858
10797
  width: 100,
10859
10798
  height: 126
@@ -10882,7 +10821,7 @@ const DataExplorerInfo = ({
10882
10821
  width: 720,
10883
10822
  height: 600
10884
10823
  },
10885
- title: featureInfo == null ? void 0 : featureInfo.properties.title,
10824
+ title: (featureInfo == null ? void 0 : featureInfo.properties.title) || (featureInfo == null ? void 0 : featureInfo.properties.identifier) || (featureInfo == null ? void 0 : featureInfo.id),
10886
10825
  children: featureInfo ? jsxs(Box, {
10887
10826
  "data-testid": "dataExplorerInfoBox",
10888
10827
  onKeyDown: event => {
@@ -10896,7 +10835,7 @@ const DataExplorerInfo = ({
10896
10835
  datasetLink: datasetLink,
10897
10836
  id: featureInfo.id,
10898
10837
  properties: featureInfo.properties
10899
- }), !!featureInfo.properties.formats && isWmsFormat(featureInfo.properties.formats) && featureInfo.geometry && featureInfo.links ? jsx(InfoDialogWMSMapConnect, {
10838
+ }), !!featureInfo.properties.formats && isWmsFormat(featureInfo.properties.formats) && isPolygonalGeometry(featureInfo.geometry) && featureInfo.links ? jsx(InfoDialogWMSMapConnect, {
10900
10839
  geometry: featureInfo.geometry,
10901
10840
  links: featureInfo.links
10902
10841
  }) : null, !!featureInfo.geometry && jsxs(Accordion, {
@@ -10924,7 +10863,9 @@ const DataExplorerInfo = ({
10924
10863
  style: {
10925
10864
  marginTop: 5
10926
10865
  },
10927
- children: jsx(InfoDialogGeographicalCoverage, Object.assign({}, featureInfo.geometry))
10866
+ children: jsx(InfoDialogGeographicalCoverage, {
10867
+ geometry: featureInfo.geometry
10868
+ })
10928
10869
  })]
10929
10870
  }), (!!((_featureInfo$time = featureInfo.time) != null && _featureInfo$time.interval) && featureInfo.time.interval.length > 0 || !!((_featureInfo$time2 = featureInfo.time) != null && _featureInfo$time2.resolution)) && jsxs(Accordion, {
10930
10871
  defaultExpanded: true,
@@ -10950,7 +10891,7 @@ const DataExplorerInfo = ({
10950
10891
  },
10951
10892
  children: jsx(InfoDialogTime, Object.assign({}, featureInfo.time))
10952
10893
  })]
10953
- }), jsxs(Accordion, {
10894
+ }), (!!((_featureInfo$properti = featureInfo.properties.themes) != null && _featureInfo$properti.length) || !!((_featureInfo$properti2 = featureInfo.properties.keywords) != null && _featureInfo$properti2.length)) && jsxs(Accordion, {
10954
10895
  defaultExpanded: true,
10955
10896
  disableGutters: true,
10956
10897
  onClick: e => e.stopPropagation(),
@@ -10977,7 +10918,7 @@ const DataExplorerInfo = ({
10977
10918
  themes: featureInfo.properties.themes
10978
10919
  })
10979
10920
  })]
10980
- }), !!featureInfo.links && jsxs(Accordion, {
10921
+ }), !!((_featureInfo$links = featureInfo.links) != null && _featureInfo$links.length) && jsxs(Accordion, {
10981
10922
  defaultExpanded: true,
10982
10923
  disableGutters: true,
10983
10924
  onClick: e => e.stopPropagation(),
@@ -11001,7 +10942,7 @@ const DataExplorerInfo = ({
11001
10942
  },
11002
10943
  children: featureInfo.links.map(link => jsx(InfoDialogLinks, Object.assign({}, link), link.href))
11003
10944
  })]
11004
- }), jsxs(Accordion, {
10945
+ }), !!((_featureInfo$properti3 = featureInfo.properties.contacts) != null && _featureInfo$properti3.length) && jsxs(Accordion, {
11005
10946
  defaultExpanded: true,
11006
10947
  disableGutters: true,
11007
10948
  onClick: e => e.stopPropagation(),
@@ -11089,6 +11030,7 @@ const DataExplorerConnect = ({
11089
11030
  const concepts = useSelector(store => getConcepts(store));
11090
11031
  const bbox = useSelector(store => getBbox(store));
11091
11032
  const meteogateOnly = useSelector(store => getMeteogateOnly(store));
11033
+ const showMeteoGateBranding = useSelector(store => getShowMeteoGateBranding(store));
11092
11034
  const {
11093
11035
  isFetching: loading,
11094
11036
  error
@@ -11108,6 +11050,7 @@ const DataExplorerConnect = ({
11108
11050
  onClose: onCloseDialog,
11109
11051
  onMouseDown: setDialogOrder,
11110
11052
  order: dialogOrder,
11053
+ showMeteoGateBranding: showMeteoGateBranding,
11111
11054
  source: uiSource,
11112
11055
  startPosition: {
11113
11056
  top: 85,
@@ -11115,7 +11058,7 @@ const DataExplorerConnect = ({
11115
11058
  }
11116
11059
  }), jsx(DataExplorerInfoConnect, {})]
11117
11060
  });
11118
- }, [dialogOrder, isDialogOpen, onCloseDialog, setDialogOrder, uiSource, loading, error]);
11061
+ }, [dialogOrder, isDialogOpen, onCloseDialog, setDialogOrder, uiSource, loading, error, showMeteoGateBranding]);
11119
11062
  };
11120
11063
 
11121
11064
  export { DATA_EXPLORER_NAMESPACE, DataExplorerConnect, types as DataExplorerTypes, dataExplorerMiddlewares, dataExplorerReducersMap, dataexplorerTranslations as dataExplorerTranslations };
@@ -13,6 +13,7 @@ interface DataExplorerProps {
13
13
  loading?: boolean;
14
14
  error?: boolean;
15
15
  compact?: boolean;
16
+ showMeteoGateBranding?: boolean;
16
17
  }
17
18
  declare const DataExplorer: React.FC<DataExplorerProps>;
18
19
  export default DataExplorer;
@@ -3,6 +3,7 @@ import type { Queryable } from '../../store/types';
3
3
  interface DataExplorerFiltersProps {
4
4
  filters: Queryable[];
5
5
  meteoGateOnly: boolean;
6
+ showMeteoGateBranding?: boolean;
6
7
  onSetFilterValue: (filter: string, value: string, checked: boolean) => void;
7
8
  onToggleMeteoGateOnly: (enabled: boolean) => void;
8
9
  }
@@ -1,4 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { InfoDialogGeographicalCoverageProps } from '../../store/types';
3
- declare const InfoDialogGeographicalCoverage: React.FC<InfoDialogGeographicalCoverageProps>;
3
+ declare const InfoDialogGeographicalCoverage: React.FC<{
4
+ geometry: InfoDialogGeographicalCoverageProps;
5
+ }>;
4
6
  export default InfoDialogGeographicalCoverage;
@@ -1,12 +1,10 @@
1
+ import type { MultiPolygon, Polygon } from 'geojson';
1
2
  import type { View } from 'ol';
2
3
  import React from 'react';
3
4
  import type { OGCWMSWMTSGetCapabilities } from '@opengeoweb/webmap';
4
5
  interface InfoDialogWMSMapProps {
5
6
  view: View;
6
- geometry: {
7
- type: string;
8
- coordinates: number[][][] | number[][][][];
9
- };
7
+ geometry: Polygon | MultiPolygon;
10
8
  dataLink: string;
11
9
  getCapabilitiesJSON: OGCWMSWMTSGetCapabilities;
12
10
  }
@@ -1,14 +1,12 @@
1
+ import type { MultiPolygon, Polygon } from 'geojson';
1
2
  import React from 'react';
2
3
  interface InfoDialogWMSMapConnectProps {
3
- geometry: {
4
- type: string;
5
- coordinates: number[][][] | number[][][][];
6
- };
4
+ geometry: Polygon | MultiPolygon;
7
5
  links: {
8
6
  href: string;
9
7
  rel: string;
10
8
  title?: string;
11
- type: string;
9
+ type?: string;
12
10
  }[];
13
11
  }
14
12
  declare const InfoDialogWMSMapConnect: React.FC<InfoDialogWMSMapConnectProps>;
@@ -231,3 +231,24 @@ export declare const getMeteogateOnly: ((state: DataExplorerModuleState) => bool
231
231
  argsMemoize: typeof import("reselect").weakMapMemoize;
232
232
  memoize: typeof import("reselect").weakMapMemoize;
233
233
  };
234
+ export declare const getShowMeteoGateBranding: ((state: DataExplorerModuleState) => boolean) & {
235
+ clearCache: () => void;
236
+ resultsCount: () => number;
237
+ resetResultsCount: () => void;
238
+ } & {
239
+ resultFunc: (resultFuncArgs_0: DataExplorerStoreType | undefined) => boolean;
240
+ memoizedResultFunc: ((resultFuncArgs_0: DataExplorerStoreType | undefined) => boolean) & {
241
+ clearCache: () => void;
242
+ resultsCount: () => number;
243
+ resetResultsCount: () => void;
244
+ };
245
+ lastResult: () => boolean;
246
+ dependencies: [(state: DataExplorerModuleState) => DataExplorerStoreType | undefined];
247
+ recomputations: () => number;
248
+ resetRecomputations: () => void;
249
+ dependencyRecomputations: () => number;
250
+ resetDependencyRecomputations: () => void;
251
+ } & {
252
+ argsMemoize: typeof import("reselect").weakMapMemoize;
253
+ memoize: typeof import("reselect").weakMapMemoize;
254
+ };
@@ -1,8 +1,9 @@
1
+ import type { Geometry } from 'geojson';
1
2
  export interface DiscoveryMetadataFeature {
2
3
  id: string;
3
- conformsTo: string[];
4
+ conformsTo?: string[];
4
5
  type: string;
5
- geometry: InfoDialogGeographicalCoverageProps;
6
+ geometry: Geometry | null;
6
7
  properties: {
7
8
  identifier?: string;
8
9
  title?: string;
@@ -18,9 +19,9 @@ export interface DiscoveryMetadataFeature {
18
19
  updated?: string;
19
20
  created?: string;
20
21
  rights?: string;
21
- contacts: InfoDialogContactsProps[];
22
+ contacts?: InfoDialogContactsProps[];
22
23
  keywords?: string[];
23
- 'wmo:dataPolicy': string;
24
+ 'wmo:dataPolicy'?: string;
24
25
  };
25
26
  links: InfoDialogLinksProps[];
26
27
  time?: InfoDialogTimeProps;
@@ -41,17 +42,14 @@ export interface InfoDialogBaseInfoProps {
41
42
  updated?: string;
42
43
  created?: string;
43
44
  rights?: string;
44
- contacts: InfoDialogContactsProps[];
45
+ contacts?: InfoDialogContactsProps[];
45
46
  keywords?: string[];
46
- 'wmo:dataPolicy': string;
47
+ 'wmo:dataPolicy'?: string;
47
48
  };
48
49
  datasetLink: string;
49
50
  id: string;
50
51
  }
51
- export interface InfoDialogGeographicalCoverageProps {
52
- type: string;
53
- coordinates: number[][][] | number[][][][];
54
- }
52
+ export type InfoDialogGeographicalCoverageProps = Geometry;
55
53
  export interface InfoDialogTimeProps {
56
54
  interval?: string[];
57
55
  resolution?: string;
@@ -69,8 +67,8 @@ export interface InfoDialogThemesProps {
69
67
  export interface InfoDialogLinksProps {
70
68
  href: string;
71
69
  rel: string;
72
- title: string;
73
- type: string;
70
+ title?: string;
71
+ type?: string;
74
72
  }
75
73
  export interface InfoDialogContactsProps {
76
74
  addresses?: {
@@ -104,7 +102,7 @@ export interface DiscoveryMetadataItems {
104
102
  numberMatched: number;
105
103
  numberReturned: number;
106
104
  links: object[];
107
- timeStamp: string;
105
+ timeStamp?: string;
108
106
  }
109
107
  export interface DataExplorerWMSState {
110
108
  geometry: {
@@ -120,6 +118,7 @@ export interface DataExplorerWMSState {
120
118
  }
121
119
  export interface DataExplorerStoreType {
122
120
  discoveryCatalogueURL: string;
121
+ showMeteoGateBranding?: boolean;
123
122
  filters: {
124
123
  searchFilter: string;
125
124
  queryables: Queryable[];
@@ -201,6 +200,7 @@ export interface QueryableConfiguration {
201
200
  }
202
201
  export interface DataExplorerPresets {
203
202
  discoveryCatalogueURL: string;
203
+ showMeteoGateBranding?: boolean;
204
204
  concepts: ConceptConfiguration[];
205
205
  queryables: QueryableConfiguration[];
206
206
  areaFilterTileURL?: string;
@@ -8,3 +8,4 @@ export declare const InfoDialogGeographicalCoveragePolygonMock: InfoDialogGeogra
8
8
  export declare const InfoDialogGeographicalCoverageMultipolygonMock: InfoDialogGeographicalCoverageProps;
9
9
  export declare const InfoDialogBaseInfoMock: InfoDialogBaseInfoProps;
10
10
  export declare const featureInfoMock: DiscoveryMetadataFeature;
11
+ export declare const supersiteFeatureInfoMock: DiscoveryMetadataFeature;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/data-explorer",
3
- "version": "20.0.0",
3
+ "version": "20.0.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@gitlab.com:opengeoweb/opengeoweb.git"
@@ -19,14 +19,14 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@mui/material": "^9.0.1",
22
- "@opengeoweb/api": "20.0.0",
23
- "@opengeoweb/core": "20.0.0",
24
- "@opengeoweb/shared": "20.0.0",
25
- "@opengeoweb/snackbar": "20.0.0",
26
- "@opengeoweb/store": "20.0.0",
27
- "@opengeoweb/theme": "20.0.0",
28
- "@opengeoweb/webmap": "20.0.0",
29
- "@opengeoweb/webmap-react": "20.0.0",
22
+ "@opengeoweb/api": "20.0.1",
23
+ "@opengeoweb/core": "20.0.1",
24
+ "@opengeoweb/shared": "20.0.1",
25
+ "@opengeoweb/snackbar": "20.0.1",
26
+ "@opengeoweb/store": "20.0.1",
27
+ "@opengeoweb/theme": "20.0.1",
28
+ "@opengeoweb/webmap": "20.0.1",
29
+ "@opengeoweb/webmap-react": "20.0.1",
30
30
  "@reduxjs/toolkit": "^2.6.1",
31
31
  "@tanstack/query-core": "^5.69.2",
32
32
  "@tanstack/react-query": "^5.85.5",