@opengeoweb/soundings 19.6.1 → 20.0.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/dist/index.esm.js +185 -125
- package/dist/src/lib/components/Hodograph/Hodograph.d.ts +1 -0
- package/dist/src/lib/components/Hodograph/HodographCollection.d.ts +1 -0
- package/dist/src/lib/components/Soundings/Soundings.d.ts +1 -0
- package/dist/src/lib/components/SoundingsPanels/SoundingsPanels.d.ts +2 -1
- package/dist/src/lib/components/SoundingsTimeSlider/SoundingsTimeSlider.d.ts +3 -1
- package/dist/src/lib/components/SoundingsTimeSlider/SoundingsTimeSliderConnect.d.ts +2 -1
- package/package.json +55 -54
- package/dist/src/lib/components/SoundingPanelPlaceholder/SoundingPanelPlaceholder.d.ts +0 -5
- package/dist/src/lib/components/SoundingPanelPlaceholder/index.d.ts +0 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { Stack, Box, Tooltip, Typography, styled, Card, IconButton, Menu, ListSubheader, MenuItem, LinearProgress, List as List$1, ListItem, ListItemIcon, Checkbox, ListItemText, Grid, ListItemButton, Switch, ToggleButtonGroup, ToggleButton } from '@mui/material';
|
|
3
3
|
import { range, isEqual } from 'lodash';
|
|
4
|
-
import React, { useMemo, useRef, useEffect, useId, useState, Fragment as Fragment$1
|
|
4
|
+
import React, { useMemo, useRef, useEffect, useId, useCallback, useState, Fragment as Fragment$1 } from 'react';
|
|
5
5
|
import { useDispatch, useSelector, shallowEqual } from 'react-redux';
|
|
6
|
-
import { dateUtils, referenceTimeUtils, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, SwitchButton, CustomToggleButton, LegendToggleButton, CustomSlider, AlertBanner, ToolContainerDraggable, TooltipSelect, AlertIcon, useResizeObserver, SearchField, CustomAccordion } from '@opengeoweb/shared';
|
|
7
|
-
import { selectorMemoizationOptions, uiSelectors, uiTypes, uiActions, genericActions, useSyncgroupTimeState, useRegisterFeatureSyncSource, genericSelectors, mapSelectors, mapActions, useUpdateFeatureSyncLayers, layerActions, useSetupDialog, storeReducerMap, storeMiddlewares } from '@opengeoweb/store';
|
|
6
|
+
import { dateUtils, referenceTimeUtils, safelyInitI18nForTestsAndStories, sharedTranslations, SHARED_NAMESPACE, SwitchButton, CustomToggleButton, LegendToggleButton, useScrollingInIsolation, CustomSlider, AlertBanner, ToolContainerDraggable, TooltipSelect, AlertIcon, useResizeObserver, SearchField, CustomAccordion } from '@opengeoweb/shared';
|
|
7
|
+
import { selectorMemoizationOptions, uiSelectors, uiTypes, uiActions, syncGroupsSelectors, genericActions, useSyncgroupTimeState, useRegisterFeatureSyncSource, genericSelectors, mapSelectors, mapActions, useUpdateFeatureSyncLayers, layerActions, useSetupDialog, storeReducerMap, storeMiddlewares } from '@opengeoweb/store';
|
|
8
8
|
import { Layers, Sources, Location, Equalizer, ArrowDropDownDown, DragHandle, Close, Visibility, VisibilityOff } from '@opengeoweb/theme';
|
|
9
9
|
import { ParseISOTimeRangeDuration, parseISO8601IntervalToDateInterval, handleDateUtilsISOString, webmapUtils } from '@opengeoweb/webmap';
|
|
10
10
|
import { MapFeatureClass } from '@opengeoweb/webmap-react';
|
|
11
11
|
import * as d3 from 'd3';
|
|
12
12
|
import { queryOptions, useQueryClient, useQueries } from '@tanstack/react-query';
|
|
13
13
|
import { withJsonFormat, getHeaders, handleResponse } from '@opengeoweb/api';
|
|
14
|
+
import { authFetch } from '@opengeoweb/authentication';
|
|
14
15
|
import { createSlice, createSelector, combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
15
16
|
import i18n from 'i18next';
|
|
16
17
|
export { default as i18n } from 'i18next';
|
|
@@ -31,7 +32,6 @@ var en = {
|
|
|
31
32
|
"diagram-SKEWT": "Skew-T",
|
|
32
33
|
"diagram-BIJVOET": "Bijvoet",
|
|
33
34
|
"diagram-EMAGRAM": "Emagram",
|
|
34
|
-
"coming-soon": "Coming soon",
|
|
35
35
|
"soundings-time-mismatch-title": "Selected time in the sounding view does not match map view time.",
|
|
36
36
|
"soundings-toggle-location-markers-label": "Markers",
|
|
37
37
|
"soundings-toggle-location-markers-tooltip": "Show/hide location markers",
|
|
@@ -51,7 +51,6 @@ var no = {
|
|
|
51
51
|
"diagram-SKEWT": "Skew-T",
|
|
52
52
|
"diagram-BIJVOET": "Bijvoet",
|
|
53
53
|
"diagram-EMAGRAM": "Emagram",
|
|
54
|
-
"coming-soon": "Kommer snart",
|
|
55
54
|
"soundings-time-mismatch-title": "Selected time in the sounding view does not match map view time.",
|
|
56
55
|
"soundings-toggle-location-markers-label": "Lokasjoner",
|
|
57
56
|
"soundings-toggle-location-markers-tooltip": "Vis/skjul lokasjoner",
|
|
@@ -71,14 +70,13 @@ var nl = {
|
|
|
71
70
|
"diagram-SKEWT": "Skew-T",
|
|
72
71
|
"diagram-BIJVOET": "Bijvoet",
|
|
73
72
|
"diagram-EMAGRAM": "Emagram",
|
|
74
|
-
"
|
|
75
|
-
"soundings-time-mismatch-title": "Selected time in the sounding view does not match map view time.",
|
|
73
|
+
"soundings-time-mismatch-title": "Geselecteerde tijd in de sounding view komt niet overeen met de tijd in de kaart.",
|
|
76
74
|
"soundings-toggle-location-markers-label": "Kaart locaties",
|
|
77
75
|
"soundings-toggle-location-markers-tooltip": "Toon/Verberg locatie punten",
|
|
78
76
|
"soundings-legend": "Legenda",
|
|
79
77
|
"soundings-legend-tooltip-show": "Toon legenda",
|
|
80
78
|
"soundings-legend-tooltip-hide": "Verberg legenda",
|
|
81
|
-
"no-sounding-data-available": "
|
|
79
|
+
"no-sounding-data-available": "Geen sounding data beschikbaar"
|
|
82
80
|
};
|
|
83
81
|
var fi = {
|
|
84
82
|
sources: "Lähteet",
|
|
@@ -91,7 +89,6 @@ var fi = {
|
|
|
91
89
|
"diagram-SKEWT": "Skew-T",
|
|
92
90
|
"diagram-BIJVOET": "Bijvoet",
|
|
93
91
|
"diagram-EMAGRAM": "Emagram",
|
|
94
|
-
"coming-soon": "Tulossa pian",
|
|
95
92
|
"soundings-time-mismatch-title": "Valittu aika luotausnäytöllä ei vastaa karttanäytön aikaa",
|
|
96
93
|
"soundings-toggle-location-markers-label": "Kohdemerkit",
|
|
97
94
|
"soundings-toggle-location-markers-tooltip": "Näytä/piilota kohdemerkit",
|
|
@@ -1054,7 +1051,7 @@ var getCollectionLocations = /*#__PURE__*/function () {
|
|
|
1054
1051
|
return _regenerator().w(function (_context) {
|
|
1055
1052
|
while (1) switch (_context.n) {
|
|
1056
1053
|
case 0:
|
|
1057
|
-
return _context.a(2,
|
|
1054
|
+
return _context.a(2, authFetch(withJsonFormat(baseUrl + "/collections/" + collectionId + "/locations"), {
|
|
1058
1055
|
headers: getHeaders()
|
|
1059
1056
|
}).then(handleResponse));
|
|
1060
1057
|
}
|
|
@@ -1084,7 +1081,7 @@ var getCollectionInstances = /*#__PURE__*/function () {
|
|
|
1084
1081
|
return _regenerator().w(function (_context3) {
|
|
1085
1082
|
while (1) switch (_context3.n) {
|
|
1086
1083
|
case 0:
|
|
1087
|
-
return _context3.a(2,
|
|
1084
|
+
return _context3.a(2, authFetch(withJsonFormat(baseUrl + "/collections/" + collectionId + "/instances"), {
|
|
1088
1085
|
headers: getHeaders()
|
|
1089
1086
|
}).then(handleResponse));
|
|
1090
1087
|
}
|
|
@@ -1099,7 +1096,7 @@ var getCollectionDetails = /*#__PURE__*/function () {
|
|
|
1099
1096
|
return _regenerator().w(function (_context4) {
|
|
1100
1097
|
while (1) switch (_context4.n) {
|
|
1101
1098
|
case 0:
|
|
1102
|
-
return _context4.a(2,
|
|
1099
|
+
return _context4.a(2, authFetch(withJsonFormat(baseUrl + "/collections/" + collectionId), {
|
|
1103
1100
|
headers: getHeaders()
|
|
1104
1101
|
}).then(handleResponse));
|
|
1105
1102
|
}
|
|
@@ -1114,7 +1111,7 @@ var getInstanceDetails = /*#__PURE__*/function () {
|
|
|
1114
1111
|
return _regenerator().w(function (_context5) {
|
|
1115
1112
|
while (1) switch (_context5.n) {
|
|
1116
1113
|
case 0:
|
|
1117
|
-
return _context5.a(2,
|
|
1114
|
+
return _context5.a(2, authFetch(withJsonFormat(baseUrl + "/collections/" + collectionId + "/instances/" + instanceId), {
|
|
1118
1115
|
headers: getHeaders()
|
|
1119
1116
|
}).then(handleResponse));
|
|
1120
1117
|
}
|
|
@@ -1135,7 +1132,7 @@ var getEdrCollectionForLocation = /*#__PURE__*/function () {
|
|
|
1135
1132
|
url.searchParams.append('datetime', datetime);
|
|
1136
1133
|
url.searchParams.append('z', verticalRange);
|
|
1137
1134
|
url.searchParams.append('f', 'CoverageJSON');
|
|
1138
|
-
return _context6.a(2,
|
|
1135
|
+
return _context6.a(2, authFetch(url.toString(), {
|
|
1139
1136
|
headers: getHeaders()
|
|
1140
1137
|
}).then(handleResponse));
|
|
1141
1138
|
}
|
|
@@ -1159,7 +1156,7 @@ var getEdrCollectionForPosition = /*#__PURE__*/function () {
|
|
|
1159
1156
|
url.searchParams.append('z', verticalRange);
|
|
1160
1157
|
}
|
|
1161
1158
|
url.searchParams.append('f', 'CoverageJSON');
|
|
1162
|
-
return _context7.a(2,
|
|
1159
|
+
return _context7.a(2, authFetch(url.toString(), {
|
|
1163
1160
|
headers: getHeaders()
|
|
1164
1161
|
}).then(handleResponse));
|
|
1165
1162
|
}
|
|
@@ -1191,7 +1188,7 @@ var getEdrCollectionForRadius = /*#__PURE__*/function () {
|
|
|
1191
1188
|
url.searchParams.append('z', verticalRange);
|
|
1192
1189
|
}
|
|
1193
1190
|
url.searchParams.append('f', 'CoverageJSON');
|
|
1194
|
-
return _context8.a(2,
|
|
1191
|
+
return _context8.a(2, authFetch(url.toString(), {
|
|
1195
1192
|
headers: getHeaders()
|
|
1196
1193
|
}).then(handleResponse));
|
|
1197
1194
|
}
|
|
@@ -1524,7 +1521,7 @@ var getVerticalRangeFromInstance = function getVerticalRangeFromInstance(instanc
|
|
|
1524
1521
|
return '';
|
|
1525
1522
|
}
|
|
1526
1523
|
if (typeof interval[0] === 'string') {
|
|
1527
|
-
return interval.
|
|
1524
|
+
return interval.slice().sort(function (dimA, dimB) {
|
|
1528
1525
|
return dimA.localeCompare(dimB, undefined, {
|
|
1529
1526
|
numeric: true
|
|
1530
1527
|
});
|
|
@@ -1532,7 +1529,7 @@ var getVerticalRangeFromInstance = function getVerticalRangeFromInstance(instanc
|
|
|
1532
1529
|
}
|
|
1533
1530
|
var firstEl = interval[0][0];
|
|
1534
1531
|
var lastEl = interval[interval.length - 1][1];
|
|
1535
|
-
return [firstEl, lastEl].
|
|
1532
|
+
return [firstEl, lastEl].sort(function (dimA, dimB) {
|
|
1536
1533
|
return dimA.localeCompare(dimB, undefined, {
|
|
1537
1534
|
numeric: true
|
|
1538
1535
|
});
|
|
@@ -1563,7 +1560,7 @@ function extractGridPointsFromCoverage(response) {
|
|
|
1563
1560
|
}
|
|
1564
1561
|
|
|
1565
1562
|
var sortSoundingFeatures = function sortSoundingFeatures(data) {
|
|
1566
|
-
return data.sort(function (featureA, featureB) {
|
|
1563
|
+
return [].concat(data).sort(function (featureA, featureB) {
|
|
1567
1564
|
// Sort by date (ascending)
|
|
1568
1565
|
if (featureA.properties.time !== featureB.properties.time) {
|
|
1569
1566
|
return featureA.properties.time > featureB.properties.time ? 1 : -1;
|
|
@@ -1702,6 +1699,7 @@ var useMultipleSources = function useMultipleSources(sources, locations, datetim
|
|
|
1702
1699
|
}
|
|
1703
1700
|
}
|
|
1704
1701
|
return Object.assign({}, constructQueryParams(collectionId, url, instanceId, location, intervalDatetime, resolvedParamMappings, resolvedWindUnit, resolvedVerticalRange), {
|
|
1702
|
+
placeholderData: [],
|
|
1705
1703
|
select: function select(allFeatures) {
|
|
1706
1704
|
if (!timeToShow || allFeatures.length === 0) {
|
|
1707
1705
|
return [];
|
|
@@ -1724,7 +1722,9 @@ var useMultipleSources = function useMultipleSources(sources, locations, datetim
|
|
|
1724
1722
|
dateToUse = exactMatch || '';
|
|
1725
1723
|
}
|
|
1726
1724
|
}
|
|
1727
|
-
return constructQueryParams(collectionId, url, instanceId, location, dateToUse, resolvedParamMappings, resolvedWindUnit, resolvedVerticalRange)
|
|
1725
|
+
return Object.assign({}, constructQueryParams(collectionId, url, instanceId, location, dateToUse, resolvedParamMappings, resolvedWindUnit, resolvedVerticalRange), {
|
|
1726
|
+
placeholderData: []
|
|
1727
|
+
});
|
|
1728
1728
|
});
|
|
1729
1729
|
}, [datetime, locations, sources, timesteps]);
|
|
1730
1730
|
return useQueries({
|
|
@@ -1734,12 +1734,12 @@ var useMultipleSources = function useMultipleSources(sources, locations, datetim
|
|
|
1734
1734
|
var data = queryResults.map(function (result) {
|
|
1735
1735
|
return result.data || [];
|
|
1736
1736
|
});
|
|
1737
|
-
var isPending = timestepsPending || queryResults.some(function (result) {
|
|
1738
|
-
return result.isPending;
|
|
1739
|
-
});
|
|
1740
1737
|
var error = timestepsError || ((_queryResults$find = queryResults.find(function (result) {
|
|
1741
1738
|
return result == null ? void 0 : result.error;
|
|
1742
1739
|
})) == null ? void 0 : _queryResults$find.error);
|
|
1740
|
+
var isPending = !error && (timestepsPending || queryResults.some(function (result) {
|
|
1741
|
+
return result.isPending || result.isPlaceholderData && result.isFetching;
|
|
1742
|
+
}));
|
|
1743
1743
|
return {
|
|
1744
1744
|
data: data,
|
|
1745
1745
|
isPending: isPending,
|
|
@@ -3957,7 +3957,7 @@ var filterDomainRangeForHodograph = function filterDomainRangeForHodograph(press
|
|
|
3957
3957
|
});
|
|
3958
3958
|
// If first pressure value is smallest, reverse arrays to ensure we draw starting from surface
|
|
3959
3959
|
if (filteredPressureDomain[0] < filteredPressureDomain[filteredPressureDomain.length - 1]) {
|
|
3960
|
-
return [filteredPressureDomain.reverse(), filteredParameterDomain.reverse()];
|
|
3960
|
+
return [filteredPressureDomain.slice().reverse(), filteredParameterDomain.slice().reverse()];
|
|
3961
3961
|
}
|
|
3962
3962
|
return [filteredPressureDomain, filteredParameterDomain];
|
|
3963
3963
|
};
|
|
@@ -4059,7 +4059,8 @@ var plotHodograph = function plotHodograph(_ref3) {
|
|
|
4059
4059
|
};
|
|
4060
4060
|
|
|
4061
4061
|
var Hodograph = function Hodograph(_ref) {
|
|
4062
|
-
var data = _ref.data
|
|
4062
|
+
var data = _ref.data,
|
|
4063
|
+
isMouseWheelZoomEnabled = _ref.isMouseWheelZoomEnabled;
|
|
4063
4064
|
var svgRef = useRef(null);
|
|
4064
4065
|
var widthHeight = 400;
|
|
4065
4066
|
useEffect(function () {
|
|
@@ -4105,13 +4106,15 @@ var Hodograph = function Hodograph(_ref) {
|
|
|
4105
4106
|
var zoomBehavior = d3.zoom().scaleExtent([1, 7]).translateExtent([[0, 0], [widthHeight, widthHeight]]).on('zoom', function (event) {
|
|
4106
4107
|
svg.select('g.hodograph').attr('transform', event.transform);
|
|
4107
4108
|
});
|
|
4108
|
-
|
|
4109
|
+
if (isMouseWheelZoomEnabled) {
|
|
4110
|
+
svg.call(zoomBehavior);
|
|
4111
|
+
}
|
|
4109
4112
|
// eslint-disable-next-line consistent-return
|
|
4110
4113
|
return function () {
|
|
4111
|
-
svg.on('zoom', null);
|
|
4114
|
+
svg.on('.zoom', null);
|
|
4112
4115
|
svg.select('g.hodograph').selectAll('*').remove();
|
|
4113
4116
|
};
|
|
4114
|
-
}, [data, widthHeight]);
|
|
4117
|
+
}, [data, isMouseWheelZoomEnabled, widthHeight]);
|
|
4115
4118
|
return jsx("svg", {
|
|
4116
4119
|
height: "100%",
|
|
4117
4120
|
ref: svgRef,
|
|
@@ -4153,13 +4156,15 @@ var HodographLegend = function HodographLegend() {
|
|
|
4153
4156
|
};
|
|
4154
4157
|
|
|
4155
4158
|
var HodographCollection = function HodographCollection(_ref) {
|
|
4156
|
-
var data = _ref.data
|
|
4159
|
+
var data = _ref.data,
|
|
4160
|
+
isMouseWheelZoomEnabled = _ref.isMouseWheelZoomEnabled;
|
|
4157
4161
|
return jsxs(Box, {
|
|
4158
4162
|
sx: {
|
|
4159
4163
|
padding: '5px'
|
|
4160
4164
|
},
|
|
4161
4165
|
children: [jsx(Hodograph, {
|
|
4162
|
-
data: data
|
|
4166
|
+
data: data,
|
|
4167
|
+
isMouseWheelZoomEnabled: isMouseWheelZoomEnabled
|
|
4163
4168
|
}), jsx(HodographLegend, {})]
|
|
4164
4169
|
});
|
|
4165
4170
|
};
|
|
@@ -5314,7 +5319,8 @@ var Soundings = function Soundings(_ref) {
|
|
|
5314
5319
|
_ref$showTooltip = _ref.showTooltip,
|
|
5315
5320
|
showTooltip = _ref$showTooltip === void 0 ? true : _ref$showTooltip,
|
|
5316
5321
|
_ref$diagramType = _ref.diagramType,
|
|
5317
|
-
diagramType = _ref$diagramType === void 0 ? 'SKEWT' : _ref$diagramType
|
|
5322
|
+
diagramType = _ref$diagramType === void 0 ? 'SKEWT' : _ref$diagramType,
|
|
5323
|
+
isMouseWheelZoomEnabled = _ref.isMouseWheelZoomEnabled;
|
|
5318
5324
|
var instanceId = useId().replace(/:/g, '_');
|
|
5319
5325
|
var scopedGraphId = d3GraphId + "-" + instanceId;
|
|
5320
5326
|
var svgRef = useRef(null);
|
|
@@ -5496,7 +5502,9 @@ var Soundings = function Soundings(_ref) {
|
|
|
5496
5502
|
}
|
|
5497
5503
|
});
|
|
5498
5504
|
zoomBehaviorRef.current = zoomBehavior;
|
|
5499
|
-
|
|
5505
|
+
if (isMouseWheelZoomEnabled) {
|
|
5506
|
+
svg.call(zoomBehavior);
|
|
5507
|
+
}
|
|
5500
5508
|
var previousTransform = updateTransformToViewport(persistedZoomTransformRef.current, width, height);
|
|
5501
5509
|
var hasPersistedTransform = previousTransform.k > 1 || Math.abs(previousTransform.x) > 1e-3 || Math.abs(previousTransform.y) > 1e-3;
|
|
5502
5510
|
// Re-apply the previous transform after rebuilding the SVG so resize
|
|
@@ -5524,7 +5532,7 @@ var Soundings = function Soundings(_ref) {
|
|
|
5524
5532
|
zoomTargetRef.current = null;
|
|
5525
5533
|
root.selectAll('*').remove();
|
|
5526
5534
|
};
|
|
5527
|
-
}, [data, diagramType, width, height, scopedGraphId, margin, publishVerticalZoom, resetVerticalZoom]);
|
|
5535
|
+
}, [data, diagramType, width, height, scopedGraphId, margin, publishVerticalZoom, resetVerticalZoom, isMouseWheelZoomEnabled]);
|
|
5528
5536
|
useEffect(function () {
|
|
5529
5537
|
var _svgRectRef$current;
|
|
5530
5538
|
if (!showTooltip || !svgRef.current) {
|
|
@@ -5634,7 +5642,9 @@ var shouldHideLabel = function shouldHideLabel(nItems, index, maxLabelCount) {
|
|
|
5634
5642
|
var SoundingsTimeSlider = function SoundingsTimeSlider(_ref) {
|
|
5635
5643
|
var timesteps = _ref.timesteps,
|
|
5636
5644
|
selectedTime = _ref.selectedTime,
|
|
5637
|
-
updateSelectedTime = _ref.updateSelectedTime
|
|
5645
|
+
updateSelectedTime = _ref.updateSelectedTime,
|
|
5646
|
+
isTimeScrollingEnabled = _ref.isTimeScrollingEnabled,
|
|
5647
|
+
soundingsWindowRef = _ref.soundingsWindowRef;
|
|
5638
5648
|
var sliderRef = React.useRef(null);
|
|
5639
5649
|
var maxLabelCount = useMaxLabelCount(sliderRef);
|
|
5640
5650
|
var _useSoundingsTranslat = useSoundingsTranslation(),
|
|
@@ -5696,72 +5706,105 @@ var SoundingsTimeSlider = function SoundingsTimeSlider(_ref) {
|
|
|
5696
5706
|
var followingIndex = Math.min(currentTimeIndex + 1, timesteps.length - 1);
|
|
5697
5707
|
updateSelectedTime(timesteps[followingIndex]);
|
|
5698
5708
|
}, [currentTimeIndex, updateSelectedTime, timesteps]);
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
+
var onWheel = useCallback(function (event) {
|
|
5710
|
+
if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey || event.deltaY === 0) {
|
|
5711
|
+
return;
|
|
5712
|
+
}
|
|
5713
|
+
// Kind of "one frame debouncer", meant to dampen too fast slider movement
|
|
5714
|
+
requestAnimationFrame(function () {
|
|
5715
|
+
if (event.deltaY > 0) {
|
|
5716
|
+
onStepBackward();
|
|
5717
|
+
} else {
|
|
5718
|
+
onStepForward();
|
|
5719
|
+
}
|
|
5720
|
+
});
|
|
5721
|
+
}, [onStepBackward, onStepForward]);
|
|
5722
|
+
var scrollRef = useScrollingInIsolation({
|
|
5723
|
+
onWheel: onWheel
|
|
5724
|
+
});
|
|
5725
|
+
React.useEffect(function () {
|
|
5726
|
+
if (!isTimeScrollingEnabled || !(soundingsWindowRef != null && soundingsWindowRef.current)) {
|
|
5727
|
+
return undefined;
|
|
5728
|
+
}
|
|
5729
|
+
var handleWheel = function handleWheel(event) {
|
|
5730
|
+
event.preventDefault();
|
|
5731
|
+
onWheel(event);
|
|
5732
|
+
};
|
|
5733
|
+
var element = soundingsWindowRef.current;
|
|
5734
|
+
element.addEventListener('wheel', handleWheel);
|
|
5735
|
+
return function () {
|
|
5736
|
+
element.removeEventListener('wheel', handleWheel);
|
|
5737
|
+
};
|
|
5738
|
+
}, [isTimeScrollingEnabled, soundingsWindowRef, onWheel]);
|
|
5739
|
+
return jsx("div", {
|
|
5740
|
+
ref: scrollRef,
|
|
5741
|
+
children: jsxs("div", {
|
|
5742
|
+
ref: sliderRef,
|
|
5709
5743
|
style: {
|
|
5710
|
-
minWidth: '60px',
|
|
5711
|
-
marginTop: '2px',
|
|
5712
5744
|
display: 'flex',
|
|
5713
|
-
|
|
5745
|
+
paddingTop: '32px',
|
|
5746
|
+
marginRight: '80px',
|
|
5747
|
+
marginLeft: '24px',
|
|
5748
|
+
height: TIMESLIDER_HEIGHT + "px"
|
|
5714
5749
|
},
|
|
5715
|
-
children: [
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
},
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5743
|
-
},
|
|
5744
|
-
orientation: "horizontal",
|
|
5745
|
-
slotProps: {
|
|
5746
|
-
// Workaround for MUI bug where labels are just draggable area and clicking on one
|
|
5747
|
-
// does not necessarily select the described timestep
|
|
5748
|
-
markLabel: {
|
|
5749
|
-
onPointerDown: function onPointerDown(event) {
|
|
5750
|
-
event.preventDefault();
|
|
5751
|
-
var markIndex = event.currentTarget.getAttribute('data-index');
|
|
5752
|
-
var mark = marks[Number(markIndex)];
|
|
5753
|
-
var value = mark.value;
|
|
5754
|
-
updateSelectedTime(dateUtils.fromUnix(value).toISOString());
|
|
5750
|
+
children: [jsxs("div", {
|
|
5751
|
+
style: {
|
|
5752
|
+
minWidth: '60px',
|
|
5753
|
+
marginTop: '2px',
|
|
5754
|
+
display: 'flex',
|
|
5755
|
+
gap: '4px'
|
|
5756
|
+
},
|
|
5757
|
+
children: [jsx(BackwardForwardStepButton, {
|
|
5758
|
+
isDisabled: marks.length === 0,
|
|
5759
|
+
isForwardStep: false,
|
|
5760
|
+
onClickBFButton: onStepBackward
|
|
5761
|
+
}), jsx(BackwardForwardStepButton, {
|
|
5762
|
+
isDisabled: marks.length === 0,
|
|
5763
|
+
isForwardStep: true,
|
|
5764
|
+
onClickBFButton: onStepForward
|
|
5765
|
+
})]
|
|
5766
|
+
}), marks.length === 0 ? jsx(CustomSlider, {
|
|
5767
|
+
disabled: true,
|
|
5768
|
+
max: 1,
|
|
5769
|
+
min: 0,
|
|
5770
|
+
orientation: "horizontal",
|
|
5771
|
+
value: 0.5
|
|
5772
|
+
}) : jsx(CustomSlider, {
|
|
5773
|
+
extraStyles: {
|
|
5774
|
+
margin: '0px 20px 0px 20px',
|
|
5775
|
+
'.MuiSlider-markLabel': {
|
|
5776
|
+
transform: 'translate(-90%, 20px) rotate(-45deg)',
|
|
5777
|
+
transformOrigin: 'top center'
|
|
5755
5778
|
}
|
|
5779
|
+
},
|
|
5780
|
+
marks: marks,
|
|
5781
|
+
max: marks[marks.length - 1].value,
|
|
5782
|
+
min: marks[0].value,
|
|
5783
|
+
onChange: function onChange(_, value) {
|
|
5784
|
+
updateSelectedTime(dateUtils.fromUnix(value).toISOString());
|
|
5785
|
+
},
|
|
5786
|
+
orientation: "horizontal",
|
|
5787
|
+
slotProps: {
|
|
5788
|
+
// Workaround for MUI bug where labels are just draggable area and clicking on one
|
|
5789
|
+
// does not necessarily select the described timestep
|
|
5790
|
+
markLabel: {
|
|
5791
|
+
onPointerDown: function onPointerDown(event) {
|
|
5792
|
+
event.preventDefault();
|
|
5793
|
+
var markIndex = event.currentTarget.getAttribute('data-index');
|
|
5794
|
+
var mark = marks[Number(markIndex)];
|
|
5795
|
+
var value = mark.value;
|
|
5796
|
+
updateSelectedTime(dateUtils.fromUnix(value).toISOString());
|
|
5797
|
+
}
|
|
5798
|
+
}
|
|
5799
|
+
},
|
|
5800
|
+
step: null,
|
|
5801
|
+
value: dateUtils.unix(dateUtils.getUtcFromString(selectedTime)),
|
|
5802
|
+
valueLabelDisplay: "on",
|
|
5803
|
+
valueLabelFormat: function valueLabelFormat(value) {
|
|
5804
|
+
return dateUtils.dateToString(dateUtils.fromUnix(value), "yyyy iii dd MMM HH:mm 'UTC'", true, i18n.language);
|
|
5756
5805
|
}
|
|
5757
|
-
}
|
|
5758
|
-
|
|
5759
|
-
value: dateUtils.unix(dateUtils.getUtcFromString(selectedTime)),
|
|
5760
|
-
valueLabelDisplay: "on",
|
|
5761
|
-
valueLabelFormat: function valueLabelFormat(value) {
|
|
5762
|
-
return dateUtils.dateToString(dateUtils.fromUnix(value), "yyyy iii dd MMM HH:mm 'UTC'", true, i18n.language);
|
|
5763
|
-
}
|
|
5764
|
-
})]
|
|
5806
|
+
})]
|
|
5807
|
+
})
|
|
5765
5808
|
});
|
|
5766
5809
|
};
|
|
5767
5810
|
|
|
@@ -6296,7 +6339,8 @@ var SoundingsPanels = function SoundingsPanels(_ref) {
|
|
|
6296
6339
|
setChosenDiagramType = _ref.setChosenDiagramType,
|
|
6297
6340
|
onOrderChange = _ref.onOrderChange,
|
|
6298
6341
|
panelComponent = _ref.panelComponent,
|
|
6299
|
-
profileDataPreferences = _ref.profileDataPreferences
|
|
6342
|
+
profileDataPreferences = _ref.profileDataPreferences,
|
|
6343
|
+
isMouseWheelZoomEnabled = _ref.isMouseWheelZoomEnabled;
|
|
6300
6344
|
var soundingsContentRef = React.useRef(null);
|
|
6301
6345
|
var windBarbsContentRef = React.useRef(null);
|
|
6302
6346
|
var diagramSize = useSoundingsDiagramSize(soundingsContentRef);
|
|
@@ -6370,6 +6414,7 @@ var SoundingsPanels = function SoundingsPanels(_ref) {
|
|
|
6370
6414
|
d3GraphId: normalizedId,
|
|
6371
6415
|
data: data,
|
|
6372
6416
|
diagramType: chosenDiagramType,
|
|
6417
|
+
isMouseWheelZoomEnabled: isMouseWheelZoomEnabled,
|
|
6373
6418
|
svgDimensions: {
|
|
6374
6419
|
width: diagramSize,
|
|
6375
6420
|
height: diagramSize,
|
|
@@ -6417,7 +6462,8 @@ var SoundingsPanels = function SoundingsPanels(_ref) {
|
|
|
6417
6462
|
maxWidth: 500,
|
|
6418
6463
|
render: function render() {
|
|
6419
6464
|
return jsx(HodographCollection, {
|
|
6420
|
-
data: data
|
|
6465
|
+
data: data,
|
|
6466
|
+
isMouseWheelZoomEnabled: isMouseWheelZoomEnabled
|
|
6421
6467
|
});
|
|
6422
6468
|
}
|
|
6423
6469
|
}];
|
|
@@ -6451,7 +6497,8 @@ var SoundingsTimeSliderConnect = function SoundingsTimeSliderConnect(_ref) {
|
|
|
6451
6497
|
var viewId = _ref.viewId,
|
|
6452
6498
|
timeInUse = _ref.timeInUse,
|
|
6453
6499
|
_ref$syncEnabled = _ref.syncEnabled,
|
|
6454
|
-
syncEnabled = _ref$syncEnabled === void 0 ? false : _ref$syncEnabled
|
|
6500
|
+
syncEnabled = _ref$syncEnabled === void 0 ? false : _ref$syncEnabled,
|
|
6501
|
+
soundingsWindowRef = _ref.soundingsWindowRef;
|
|
6455
6502
|
var selectedTimeInStore = useSelector(function (state) {
|
|
6456
6503
|
return getSelectedTime(state, viewId);
|
|
6457
6504
|
});
|
|
@@ -6462,6 +6509,7 @@ var SoundingsTimeSliderConnect = function SoundingsTimeSliderConnect(_ref) {
|
|
|
6462
6509
|
var isTimeSliderVisible = useSelector(function (state) {
|
|
6463
6510
|
return getIsTimeSliderVisible(state, viewId);
|
|
6464
6511
|
});
|
|
6512
|
+
var isTimeScrollingEnabled = useSelector(syncGroupsSelectors.isTimeScrollingEnabled);
|
|
6465
6513
|
var dispatch = useDispatch();
|
|
6466
6514
|
var toggleTimeSliderVisibility = React.useCallback(function (nextIsVisible) {
|
|
6467
6515
|
dispatch(soundingsActions.toggleTimeSliderVisibility({
|
|
@@ -6503,37 +6551,36 @@ var SoundingsTimeSliderConnect = function SoundingsTimeSliderConnect(_ref) {
|
|
|
6503
6551
|
origin: SoundingsActionOrigin.soundingsComponent
|
|
6504
6552
|
}));
|
|
6505
6553
|
}, [dispatch, selectedTimeInStore, syncEnabled, validSelectedTime, viewId]);
|
|
6506
|
-
if (!isTimeSliderVisible) {
|
|
6507
|
-
return jsx(Box, {
|
|
6508
|
-
sx: {
|
|
6509
|
-
display: 'flex',
|
|
6510
|
-
justifyContent: 'flex-end',
|
|
6511
|
-
paddingRight: 1,
|
|
6512
|
-
paddingBottom: 1
|
|
6513
|
-
},
|
|
6514
|
-
children: jsx(HideSliderButton, {
|
|
6515
|
-
isVisible: false,
|
|
6516
|
-
toggleTimeSliderIsVisible: toggleTimeSliderVisibility
|
|
6517
|
-
})
|
|
6518
|
-
});
|
|
6519
|
-
}
|
|
6520
6554
|
return jsxs(Box, {
|
|
6521
6555
|
sx: {
|
|
6522
6556
|
position: 'relative'
|
|
6523
6557
|
},
|
|
6524
|
-
children: [jsx(
|
|
6525
|
-
selectedTime: selectedTime,
|
|
6526
|
-
timesteps: mergedTimesteps,
|
|
6527
|
-
updateSelectedTime: updateSelectedTime
|
|
6528
|
-
}), jsx(Box, {
|
|
6558
|
+
children: [jsx(Box, {
|
|
6529
6559
|
sx: {
|
|
6560
|
+
visibility: isTimeSliderVisible ? 'visible' : 'hidden',
|
|
6561
|
+
maxHeight: isTimeSliderVisible ? 'inherit' : '0px'
|
|
6562
|
+
},
|
|
6563
|
+
children: jsx(SoundingsTimeSlider, {
|
|
6564
|
+
isTimeScrollingEnabled: isTimeScrollingEnabled,
|
|
6565
|
+
selectedTime: selectedTime,
|
|
6566
|
+
soundingsWindowRef: soundingsWindowRef,
|
|
6567
|
+
timesteps: mergedTimesteps,
|
|
6568
|
+
updateSelectedTime: updateSelectedTime
|
|
6569
|
+
})
|
|
6570
|
+
}), jsx(Box, {
|
|
6571
|
+
sx: isTimeSliderVisible ? {
|
|
6530
6572
|
position: 'absolute',
|
|
6531
6573
|
right: 0,
|
|
6532
6574
|
bottom: 0,
|
|
6533
6575
|
padding: 1
|
|
6576
|
+
} : {
|
|
6577
|
+
display: 'flex',
|
|
6578
|
+
justifyContent: 'flex-end',
|
|
6579
|
+
paddingRight: 1,
|
|
6580
|
+
paddingBottom: 1
|
|
6534
6581
|
},
|
|
6535
6582
|
children: jsx(HideSliderButton, {
|
|
6536
|
-
isVisible:
|
|
6583
|
+
isVisible: isTimeSliderVisible,
|
|
6537
6584
|
toggleTimeSliderIsVisible: toggleTimeSliderVisibility
|
|
6538
6585
|
})
|
|
6539
6586
|
})]
|
|
@@ -6543,6 +6590,7 @@ var SoundingsTimeSliderConnect = function SoundingsTimeSliderConnect(_ref) {
|
|
|
6543
6590
|
var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
6544
6591
|
var viewId = _ref.viewId,
|
|
6545
6592
|
soundingsPreset = _ref.soundingsPreset;
|
|
6593
|
+
var soundingsRef = useRef(null);
|
|
6546
6594
|
var _useSoundingsTranslat = useSoundingsTranslation(),
|
|
6547
6595
|
t = _useSoundingsTranslat.t;
|
|
6548
6596
|
var geojsonLayerId = React.useRef(webmapUtils.generateLayerId()).current;
|
|
@@ -6570,6 +6618,7 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
6570
6618
|
var currentSoundingsPreset = useSelector(function (state) {
|
|
6571
6619
|
return getSoundingsPreset(state, viewId);
|
|
6572
6620
|
});
|
|
6621
|
+
var isTimeScrollingEnabled = useSelector(syncGroupsSelectors.isTimeScrollingEnabled);
|
|
6573
6622
|
React.useLayoutEffect(function () {
|
|
6574
6623
|
dispatch(soundingsActions.registerSoundingsView({
|
|
6575
6624
|
viewId: viewId
|
|
@@ -6882,11 +6931,13 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
6882
6931
|
// Compute target location from map pin or selected feature
|
|
6883
6932
|
var targetLocation = useMemo(function () {
|
|
6884
6933
|
var newLocation;
|
|
6934
|
+
var hasSelectedMapPinLocation = typeof (selectedMapPin == null ? void 0 : selectedMapPin.lon) === 'number' && typeof selectedMapPin.lat === 'number';
|
|
6935
|
+
var hasSelectedFeatureLocation = typeof (selectedFeature == null ? void 0 : selectedFeature.lon) === 'number' && typeof selectedFeature.lat === 'number';
|
|
6885
6936
|
// Prioritize selectedMapPin for target location if it has valid coordinates,
|
|
6886
6937
|
// otherwise fall back to selectedFeature
|
|
6887
|
-
if (
|
|
6938
|
+
if (hasSelectedMapPinLocation) {
|
|
6888
6939
|
newLocation = [selectedMapPin.lon, selectedMapPin.lat];
|
|
6889
|
-
} else if (
|
|
6940
|
+
} else if (hasSelectedFeatureLocation) {
|
|
6890
6941
|
newLocation = [selectedFeature.lon, selectedFeature.lat];
|
|
6891
6942
|
}
|
|
6892
6943
|
// Stabilize targetLocation reference
|
|
@@ -6907,8 +6958,9 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
6907
6958
|
// 1. selectedFeature doesn't have an id (not a named location marker), OR
|
|
6908
6959
|
// 2. selectedMapPin is a grid point marker (starts with 'grid-point-')
|
|
6909
6960
|
var isGridPointMarkerClick = typeof (selectedMapPin == null ? void 0 : selectedMapPin.id) === 'string' && selectedMapPin.id.startsWith('grid-point-');
|
|
6910
|
-
|
|
6911
|
-
|
|
6961
|
+
var isMapPinForSelectedFeature = !!(selectedMapPin != null && selectedMapPin.id) && selectedMapPin.id === (selectedFeature == null ? void 0 : selectedFeature.id) && selectedMapPin.lon === (selectedFeature == null ? void 0 : selectedFeature.lon) && selectedMapPin.lat === (selectedFeature == null ? void 0 : selectedFeature.lat);
|
|
6962
|
+
return !(selectedFeature != null && selectedFeature.id) || isGridPointMarkerClick || !isMapPinForSelectedFeature;
|
|
6963
|
+
}, [targetLocation, selectedMapPin == null ? void 0 : selectedMapPin.id, selectedMapPin == null ? void 0 : selectedMapPin.lon, selectedMapPin == null ? void 0 : selectedMapPin.lat, selectedFeature == null ? void 0 : selectedFeature.id, selectedFeature == null ? void 0 : selectedFeature.lon, selectedFeature == null ? void 0 : selectedFeature.lat]);
|
|
6912
6964
|
// Fetch grid points within radius for each source when user clicks on free position
|
|
6913
6965
|
var _useGridPointsFromRad = useGridPointsFromRadius(resolvedSourceSelections, radiusQuerySupportBySource, targetLocation, selectedTimeInUse, isFreePositionClick),
|
|
6914
6966
|
gridPointData = _useGridPointsFromRad.data;
|
|
@@ -7043,6 +7095,7 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
7043
7095
|
}
|
|
7044
7096
|
// Check if this source supports EDR position queries
|
|
7045
7097
|
var supportsPosition = (_positionQuerySupport = positionQuerySupportBySource[source.collectionId]) != null ? _positionQuerySupport : false;
|
|
7098
|
+
var currentLocation = locationSelectionsRef.current[source.collectionId];
|
|
7046
7099
|
// Detect if user clicked directly on a location marker owned by this source
|
|
7047
7100
|
// A direct click means selectedFeature has an id that matches a feature owned by this source
|
|
7048
7101
|
var isDirectClickOnOwnedMarker = !!(currentSelectedFeature != null && currentSelectedFeature.id) && (nearestOwnedFeature == null ? void 0 : nearestOwnedFeature.id) === (currentSelectedFeature == null ? void 0 : currentSelectedFeature.id);
|
|
@@ -7050,7 +7103,9 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
7050
7103
|
// so the sounding data comes from an actual model grid point rather than an arbitrary coordinate.
|
|
7051
7104
|
var supportsRadius = (_radiusQuerySupportBy = radiusQuerySupportBySource[source.collectionId]) != null ? _radiusQuerySupportBy : false;
|
|
7052
7105
|
var isGridPointMarkerClick = typeof (currentMapPin == null ? void 0 : currentMapPin.id) === 'string' && currentMapPin.id.startsWith('grid-point-');
|
|
7053
|
-
var
|
|
7106
|
+
var isMapPinForSelectedFeature = !!(currentMapPin != null && currentMapPin.id) && currentMapPin.id === (currentSelectedFeature == null ? void 0 : currentSelectedFeature.id) && currentMapPin.lon === (currentSelectedFeature == null ? void 0 : currentSelectedFeature.lon) && currentMapPin.lat === (currentSelectedFeature == null ? void 0 : currentSelectedFeature.lat);
|
|
7107
|
+
var isMapPinForCurrentLocation = typeof currentLocation === 'string' && (currentMapPin == null ? void 0 : currentMapPin.id) === currentLocation;
|
|
7108
|
+
var isLocalFreePositionClick = !isMapPinForCurrentLocation && (!(currentSelectedFeature != null && currentSelectedFeature.id) || isGridPointMarkerClick || !isMapPinForSelectedFeature);
|
|
7054
7109
|
var gridPoint = isLocalFreePositionClick && supportsRadius ? gridPointData == null || (_gridPointData$source = gridPointData[source.collectionId]) == null ? void 0 : _gridPointData$source.gridPoint : undefined;
|
|
7055
7110
|
var radiusPending = isLocalFreePositionClick && supportsRadius && !(gridPointData != null && gridPointData[source.collectionId]);
|
|
7056
7111
|
// Determine the location to use:
|
|
@@ -7072,10 +7127,12 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
7072
7127
|
} else if (nearestOwnedFeature) {
|
|
7073
7128
|
// Fall back to location query with nearest marker
|
|
7074
7129
|
newLocation = nearestOwnedFeature.id;
|
|
7130
|
+
} else if (isLocalFreePositionClick) {
|
|
7131
|
+
newLocation = undefined;
|
|
7075
7132
|
}
|
|
7076
|
-
var
|
|
7133
|
+
var hasInitialLocation = Object.hasOwn(initialLocationsRef.current, source.collectionId);
|
|
7077
7134
|
var initialLocation = initialLocationsRef.current[source.collectionId];
|
|
7078
|
-
if (!isEqual(currentLocation, newLocation) && !isEqual(initialLocation, newLocation)) {
|
|
7135
|
+
if (!isEqual(currentLocation, newLocation) && (!hasInitialLocation || !isEqual(initialLocation, newLocation))) {
|
|
7079
7136
|
dispatch(soundingsActions.updateSelectedLocation({
|
|
7080
7137
|
sourceId: source.collectionId,
|
|
7081
7138
|
location: newLocation,
|
|
@@ -7268,6 +7325,7 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
7268
7325
|
zIndex: 20
|
|
7269
7326
|
}
|
|
7270
7327
|
}), jsxs(Stack, {
|
|
7328
|
+
ref: soundingsRef,
|
|
7271
7329
|
sx: {
|
|
7272
7330
|
padding: '12px',
|
|
7273
7331
|
width: '100%',
|
|
@@ -7356,6 +7414,7 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
7356
7414
|
children: jsx(SoundingsPanels, {
|
|
7357
7415
|
chosenDiagramType: diagramType,
|
|
7358
7416
|
data: data,
|
|
7417
|
+
isMouseWheelZoomEnabled: !isTimeScrollingEnabled,
|
|
7359
7418
|
onOrderChange: changeOrder,
|
|
7360
7419
|
panelComponent: SoundingsPanelConnect,
|
|
7361
7420
|
profileDataPreferences: profileDataPreferences,
|
|
@@ -7370,6 +7429,7 @@ var SoundingsConnect = function SoundingsConnect(_ref) {
|
|
|
7370
7429
|
flex: '0 0 auto'
|
|
7371
7430
|
},
|
|
7372
7431
|
children: jsx(SoundingsTimeSliderConnect, {
|
|
7432
|
+
soundingsWindowRef: soundingsRef,
|
|
7373
7433
|
syncEnabled: isTimeSynced,
|
|
7374
7434
|
timeInUse: selectedTimeInUse,
|
|
7375
7435
|
viewId: viewId
|
|
@@ -2,5 +2,6 @@ import React from 'react';
|
|
|
2
2
|
import type { SoundingFeature } from '../../api/edr-api/types';
|
|
3
3
|
export interface HodographCollectionProps {
|
|
4
4
|
data: SoundingFeature[][];
|
|
5
|
+
isMouseWheelZoomEnabled: boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare const HodographCollection: React.FC<HodographCollectionProps>;
|
|
@@ -16,5 +16,6 @@ export interface SoundingsPanelsProps {
|
|
|
16
16
|
}[]) => void;
|
|
17
17
|
panelComponent?: ResizablePanelComponent;
|
|
18
18
|
profileDataPreferences?: SoundingsProfileDataPreferences;
|
|
19
|
+
isMouseWheelZoomEnabled: boolean;
|
|
19
20
|
}
|
|
20
|
-
export declare const SoundingsPanels: ({ viewId, soundingPanelsInOrder, data, chosenDiagramType, setChosenDiagramType, onOrderChange, panelComponent, profileDataPreferences, }: SoundingsPanelsProps) => React.ReactElement;
|
|
21
|
+
export declare const SoundingsPanels: ({ viewId, soundingPanelsInOrder, data, chosenDiagramType, setChosenDiagramType, onOrderChange, panelComponent, profileDataPreferences, isMouseWheelZoomEnabled, }: SoundingsPanelsProps) => React.ReactElement;
|
|
@@ -4,5 +4,7 @@ export interface SoundingsTimeSliderProps {
|
|
|
4
4
|
timesteps: string[];
|
|
5
5
|
selectedTime: string;
|
|
6
6
|
updateSelectedTime: (date: string) => void;
|
|
7
|
+
isTimeScrollingEnabled: boolean;
|
|
8
|
+
soundingsWindowRef?: React.RefObject<HTMLElement | null>;
|
|
7
9
|
}
|
|
8
|
-
export declare const SoundingsTimeSlider: ({ timesteps, selectedTime, updateSelectedTime, }: SoundingsTimeSliderProps) => React.ReactElement;
|
|
10
|
+
export declare const SoundingsTimeSlider: ({ timesteps, selectedTime, updateSelectedTime, isTimeScrollingEnabled, soundingsWindowRef, }: SoundingsTimeSliderProps) => React.ReactElement;
|
|
@@ -3,6 +3,7 @@ interface SoundingsTimeSliderConnectProps {
|
|
|
3
3
|
viewId: string;
|
|
4
4
|
timeInUse?: string;
|
|
5
5
|
syncEnabled?: boolean;
|
|
6
|
+
soundingsWindowRef?: React.RefObject<HTMLElement | null>;
|
|
6
7
|
}
|
|
7
|
-
export declare const SoundingsTimeSliderConnect: ({ viewId, timeInUse, syncEnabled, }: SoundingsTimeSliderConnectProps) => React.ReactElement;
|
|
8
|
+
export declare const SoundingsTimeSliderConnect: ({ viewId, timeInUse, syncEnabled, soundingsWindowRef, }: SoundingsTimeSliderConnectProps) => React.ReactElement;
|
|
8
9
|
export {};
|
package/package.json
CHANGED
|
@@ -1,55 +1,56 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
2
|
+
"name": "@opengeoweb/soundings",
|
|
3
|
+
"version": "20.0.0",
|
|
4
|
+
"description": "GeoWeb soundings library for the opengeoweb project",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git@gitlab.com:opengeoweb/opengeoweb.git"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/index.esm.js",
|
|
11
|
+
"module": "./dist/index.esm.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
"./package.json": "./package.json",
|
|
15
|
+
".": {
|
|
16
|
+
"@opengeoweb/source": "./src/index.ts",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"import": "./dist/index.esm.js",
|
|
19
|
+
"default": "./dist/index.esm.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@opengeoweb/api": "20.0.0",
|
|
24
|
+
"@opengeoweb/authentication": "20.0.0",
|
|
25
|
+
"@tanstack/react-query": "^5.85.5",
|
|
26
|
+
"d3": "^7.9.0",
|
|
27
|
+
"react-i18next": "^15.1.1",
|
|
28
|
+
"i18next": "^25.0.1",
|
|
29
|
+
"@opengeoweb/shared": "20.0.0",
|
|
30
|
+
"@mui/material": "^9.0.1",
|
|
31
|
+
"@opengeoweb/store": "20.0.0",
|
|
32
|
+
"react-redux": "^9.2.0",
|
|
33
|
+
"@opengeoweb/theme": "20.0.0",
|
|
34
|
+
"@reduxjs/toolkit": "^2.6.1",
|
|
35
|
+
"@opengeoweb/time-slider": "20.0.0",
|
|
36
|
+
"react-window": "^2.2.6",
|
|
37
|
+
"@opengeoweb/webmap": "20.0.0",
|
|
38
|
+
"lodash": "^4.18.1",
|
|
39
|
+
"@types/geojson": "^7946.0.14",
|
|
40
|
+
"@opengeoweb/webmap-react": "20.0.0",
|
|
41
|
+
"react-resizable-layout": "^0.7.3",
|
|
42
|
+
"react-sortablejs": "^6.1.4"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"eslint-plugin-storybook": "10.3.3"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"react": "19"
|
|
49
|
+
},
|
|
50
|
+
"files": [
|
|
51
|
+
"dist",
|
|
52
|
+
"!dist/package.json",
|
|
53
|
+
"README.md",
|
|
54
|
+
"package.json"
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './SoundingPanelPlaceholder';
|