@opengeoweb/data-explorer 20.0.0 → 20.0.1-nightly-20261003
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 +49 -106
- package/dist/src/lib/components/DataExplorer.d.ts +1 -0
- package/dist/src/lib/components/DataExplorerFilters/DataExplorerFilters.d.ts +1 -0
- package/dist/src/lib/components/DataExplorerInfo/InfoDialogGeographicalCoverage.d.ts +3 -1
- package/dist/src/lib/components/DataExplorerInfo/InfoDialogWMSMap.d.ts +2 -4
- package/dist/src/lib/components/DataExplorerInfo/InfoDialogWMSMapConnect.d.ts +3 -5
- package/dist/src/lib/store/selectors.d.ts +21 -0
- package/dist/src/lib/store/types.d.ts +13 -13
- package/dist/src/lib/utils/storyUtils.d.ts +1 -0
- package/package.json +9 -9
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: !!
|
|
8699
|
+
children: !!title && jsx(SearchHighlight, {
|
|
8689
8700
|
search: searchFilter,
|
|
8690
|
-
text:
|
|
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
|
-
|
|
10127
|
-
type
|
|
10079
|
+
geometry
|
|
10128
10080
|
}) => {
|
|
10129
10081
|
const {
|
|
10130
10082
|
t
|
|
10131
10083
|
} = useDataExplorerTranslation();
|
|
10132
|
-
|
|
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: [
|
|
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: [
|
|
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: [
|
|
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: [
|
|
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
|
-
|
|
10711
|
-
|
|
10712
|
-
|
|
10713
|
-
|
|
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,
|
|
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 };
|
|
@@ -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<
|
|
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
|
|
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
|
|
4
|
+
conformsTo?: string[];
|
|
4
5
|
type: string;
|
|
5
|
-
geometry:
|
|
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
|
|
22
|
+
contacts?: InfoDialogContactsProps[];
|
|
22
23
|
keywords?: string[];
|
|
23
|
-
'wmo:dataPolicy'
|
|
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
|
|
45
|
+
contacts?: InfoDialogContactsProps[];
|
|
45
46
|
keywords?: string[];
|
|
46
|
-
'wmo:dataPolicy'
|
|
47
|
+
'wmo:dataPolicy'?: string;
|
|
47
48
|
};
|
|
48
49
|
datasetLink: string;
|
|
49
50
|
id: string;
|
|
50
51
|
}
|
|
51
|
-
export
|
|
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
|
|
73
|
-
type
|
|
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
|
|
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.
|
|
3
|
+
"version": "20.0.1-nightly-20261003",
|
|
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.
|
|
23
|
-
"@opengeoweb/core": "20.0.
|
|
24
|
-
"@opengeoweb/shared": "20.0.
|
|
25
|
-
"@opengeoweb/snackbar": "20.0.
|
|
26
|
-
"@opengeoweb/store": "20.0.
|
|
27
|
-
"@opengeoweb/theme": "20.0.
|
|
28
|
-
"@opengeoweb/webmap": "20.0.
|
|
29
|
-
"@opengeoweb/webmap-react": "20.0.
|
|
22
|
+
"@opengeoweb/api": "20.0.1-nightly-20261003",
|
|
23
|
+
"@opengeoweb/core": "20.0.1-nightly-20261003",
|
|
24
|
+
"@opengeoweb/shared": "20.0.1-nightly-20261003",
|
|
25
|
+
"@opengeoweb/snackbar": "20.0.1-nightly-20261003",
|
|
26
|
+
"@opengeoweb/store": "20.0.1-nightly-20261003",
|
|
27
|
+
"@opengeoweb/theme": "20.0.1-nightly-20261003",
|
|
28
|
+
"@opengeoweb/webmap": "20.0.1-nightly-20261003",
|
|
29
|
+
"@opengeoweb/webmap-react": "20.0.1-nightly-20261003",
|
|
30
30
|
"@reduxjs/toolkit": "^2.6.1",
|
|
31
31
|
"@tanstack/query-core": "^5.69.2",
|
|
32
32
|
"@tanstack/react-query": "^5.85.5",
|