@opengeoweb/core 4.5.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.esm.js +610 -252
- package/index.umd.js +565 -195
- package/lib/components/MapWarning/MapWarningProperties.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSlider.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/AnimationLengthButton/AnimationLengthButton.d.ts +9 -0
- package/lib/components/TimeSlider/TimeSliderButtons/AnimationLengthButton/AnimationLengthButton.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/AnimationLengthButton/AnimationLengthButtonConnect.d.ts +6 -0
- package/lib/components/TimeSlider/TimeSliderButtons/AnimationLengthButton/AnimationLengthButtonConnect.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/OptionsMenuButton/OptionsMenu.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/OptionsMenuButton/OptionsMenuButton.d.ts +6 -0
- package/lib/components/TimeSlider/TimeSliderCurrentTimeBox/TimeSliderCurrentTimeBox.d.ts +3 -2
- package/lib/components/TimeSlider/TimeSliderCurrentTimeBox/TimeSliderCurrentTimeBoxConnect.d.ts +4 -0
- package/lib/components/TimeSlider/TimeSliderCurrentTimeBox/TimeSliderCurrentTimeBoxMouseEvents.d.ts +2 -2
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegend.d.ts +3 -0
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendConnect.d.ts +4 -0
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendUtils.d.ts +1 -0
- package/lib/hooks/useSetupDialog/useSetupDialog.d.ts +2 -0
- package/lib/index.d.ts +1 -3
- package/lib/store/mapStore/map/reducer.d.ts +4 -8
- package/lib/store/mapStore/map/selectors.d.ts +21 -40
- package/lib/store/mapStore/map/types.d.ts +15 -14
- package/lib/store/ui/reducer.d.ts +5 -1
- package/lib/store/ui/selectors.d.ts +24 -0
- package/lib/store/ui/types.d.ts +10 -0
- package/lib/utils/testUtils.d.ts +1 -0
- package/package.json +5 -5
package/index.esm.js
CHANGED
|
@@ -7,7 +7,7 @@ import _, { debounce, isEqual, groupBy, throttle, range } from 'lodash';
|
|
|
7
7
|
import { takeLatest, put, select, call, takeEvery, all, delay } from 'redux-saga/effects';
|
|
8
8
|
import { connect, useDispatch, useSelector, Provider } from 'react-redux';
|
|
9
9
|
import { CustomTooltip, ToolButton, ToolContainerDraggable, IS_JEST, TooltipSelect, AlertIcon, useControlledTooltip, tooltipContainerStyles, sliderHeaderStyle, CustomSlider, ToggleMenu, ManagerButton, CustomAccordion, EnableButton, ManagerDeleteButton, AlertBanner, calculateDialogSizeAndPosition, useIsMounted, CustomToggleButton, useMakeSureContainerStaysInsideWindow, withEggs } from '@opengeoweb/shared';
|
|
10
|
-
import { Pause, Play, Add, Copy,
|
|
10
|
+
import { Pause, Play, Add, Copy, Both, None, DragHandle as DragHandle$1, Cached, CollapseSmall, CollapseMedium, CollapseLarge, CollapseWindow, ExpandWindow, Filter, Search, Clear, Close, Info, DimensionsOther, DimensionsElevation, DimensionsRefTime, DimensionsTime, Edit, Visibility, Delete, Home, Minus, Layers, Equalizer, Link, LinkOff, AutoUpdateActive, AutoUpdateInActive, TextIcon, Speed, FastForward, Clock, Now, Animation, Options, StepForward, StepBackward, dragHandlePath, ChevronDown, ChevronUp, List as List$1, ChevronRight, ChevronLeft, Resize, ThemeWrapper, lightTheme } from '@opengeoweb/theme';
|
|
11
11
|
import { Paper, Box, Typography, IconButton, Grid, MenuItem, Button, Popper, FormControl, InputLabel, List, ListItem, ListItemText, CircularProgress, ListSubheader, Dialog, DialogTitle, DialogContent, DialogContentText, TextField, DialogActions, LinearProgress, InputAdornment, Backdrop, ListItemSecondaryAction, ListItemIcon, Checkbox, Switch, styled, Slider, Menu, useTheme, Snackbar } from '@mui/material';
|
|
12
12
|
import { legendImageStore, WMImageEventType, getLegendGraphicURLForLayer, WMGetServiceFromStore, LayerType as LayerType$1, clearImageCache, getMapImageStore, WMBBOX, debug, DebugType, WMJSMap, WMLayer } from '@opengeoweb/webmap';
|
|
13
13
|
import { ReactSortable } from 'react-sortablejs';
|
|
@@ -398,6 +398,19 @@ var Scale;
|
|
|
398
398
|
Scale[Scale["DataScale"] = 8] = "DataScale";
|
|
399
399
|
})(Scale || (Scale = {}));
|
|
400
400
|
|
|
401
|
+
var AnimationLength;
|
|
402
|
+
|
|
403
|
+
(function (AnimationLength) {
|
|
404
|
+
AnimationLength[AnimationLength["Minutes15"] = 15] = "Minutes15";
|
|
405
|
+
AnimationLength[AnimationLength["Minutes30"] = 30] = "Minutes30";
|
|
406
|
+
AnimationLength[AnimationLength["Hours1"] = 60] = "Hours1";
|
|
407
|
+
AnimationLength[AnimationLength["Hours2"] = 120] = "Hours2";
|
|
408
|
+
AnimationLength[AnimationLength["Hours3"] = 180] = "Hours3";
|
|
409
|
+
AnimationLength[AnimationLength["Hours6"] = 360] = "Hours6";
|
|
410
|
+
AnimationLength[AnimationLength["Hours12"] = 720] = "Hours12";
|
|
411
|
+
AnimationLength[AnimationLength["Hours24"] = 1440] = "Hours24";
|
|
412
|
+
})(AnimationLength || (AnimationLength = {}));
|
|
413
|
+
|
|
401
414
|
var MapActionOrigin;
|
|
402
415
|
|
|
403
416
|
(function (MapActionOrigin) {
|
|
@@ -591,6 +604,7 @@ var getLastTimeStepForLayerId = function getLastTimeStepForLayerId(layerId) {
|
|
|
591
604
|
var types$2 = /*#__PURE__*/Object.freeze({
|
|
592
605
|
__proto__: null,
|
|
593
606
|
get Scale () { return Scale; },
|
|
607
|
+
get AnimationLength () { return AnimationLength; },
|
|
594
608
|
get MapActionOrigin () { return MapActionOrigin; },
|
|
595
609
|
get LayerType () { return LayerType; },
|
|
596
610
|
get LayerStatus () { return LayerStatus; },
|
|
@@ -1964,7 +1978,9 @@ var createUIDialogElement = function createUIDialogElement(_ref) {
|
|
|
1964
1978
|
activeMapId: activeMapId,
|
|
1965
1979
|
isOpen: setOpen,
|
|
1966
1980
|
type: type,
|
|
1967
|
-
source: source
|
|
1981
|
+
source: source,
|
|
1982
|
+
isLoading: false,
|
|
1983
|
+
error: undefined
|
|
1968
1984
|
};
|
|
1969
1985
|
};
|
|
1970
1986
|
var initialState$4 = {
|
|
@@ -2047,6 +2063,18 @@ var slice$4 = createSlice({
|
|
|
2047
2063
|
setActiveWindowId: function setActiveWindowId(draft, action) {
|
|
2048
2064
|
var activeWindowId = action.payload.activeWindowId;
|
|
2049
2065
|
draft.activeWindowId = activeWindowId;
|
|
2066
|
+
},
|
|
2067
|
+
toggleIsLoadingDialog: function toggleIsLoadingDialog(draft, action) {
|
|
2068
|
+
var _action$payload3 = action.payload,
|
|
2069
|
+
isLoading = _action$payload3.isLoading,
|
|
2070
|
+
type = _action$payload3.type;
|
|
2071
|
+
draft.dialogs[type].isLoading = isLoading;
|
|
2072
|
+
},
|
|
2073
|
+
setErrorDialog: function setErrorDialog(draft, action) {
|
|
2074
|
+
var _action$payload4 = action.payload,
|
|
2075
|
+
error = _action$payload4.error,
|
|
2076
|
+
type = _action$payload4.type;
|
|
2077
|
+
draft.dialogs[type].error = error;
|
|
2050
2078
|
}
|
|
2051
2079
|
}
|
|
2052
2080
|
});
|
|
@@ -2255,50 +2283,50 @@ var slice$3 = createSlice({
|
|
|
2255
2283
|
|
|
2256
2284
|
draft.byId[mapId].animationDelay = animationDelay;
|
|
2257
2285
|
},
|
|
2258
|
-
|
|
2286
|
+
layerMoveLayer: function layerMoveLayer(draft, action) {
|
|
2259
2287
|
var _action$payload9 = action.payload,
|
|
2260
|
-
|
|
2261
|
-
|
|
2288
|
+
oldIndex = _action$payload9.oldIndex,
|
|
2289
|
+
newIndex = _action$payload9.newIndex,
|
|
2290
|
+
mapId = _action$payload9.mapId;
|
|
2262
2291
|
|
|
2263
2292
|
if (!draft.byId[mapId]) {
|
|
2264
2293
|
return;
|
|
2265
2294
|
}
|
|
2266
2295
|
|
|
2267
|
-
draft.byId[mapId].
|
|
2296
|
+
draft.byId[mapId].mapLayers = moveArrayElements(draft.byId[mapId].mapLayers, oldIndex, newIndex);
|
|
2268
2297
|
},
|
|
2269
|
-
|
|
2298
|
+
setActiveLayerId: function setActiveLayerId(draft, action) {
|
|
2270
2299
|
var _action$payload10 = action.payload,
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
mapId = _action$payload10.mapId;
|
|
2300
|
+
mapId = _action$payload10.mapId,
|
|
2301
|
+
layerId = _action$payload10.layerId;
|
|
2274
2302
|
|
|
2275
2303
|
if (!draft.byId[mapId]) {
|
|
2276
2304
|
return;
|
|
2277
2305
|
}
|
|
2278
2306
|
|
|
2279
|
-
draft.byId[mapId].
|
|
2307
|
+
draft.byId[mapId].activeLayerId = layerId;
|
|
2280
2308
|
},
|
|
2281
|
-
|
|
2309
|
+
setTimeSliderCenterTime: function setTimeSliderCenterTime(draft, action) {
|
|
2282
2310
|
var _action$payload11 = action.payload,
|
|
2283
2311
|
mapId = _action$payload11.mapId,
|
|
2284
|
-
|
|
2312
|
+
timeSliderCenterTime = _action$payload11.timeSliderCenterTime;
|
|
2285
2313
|
|
|
2286
2314
|
if (!draft.byId[mapId]) {
|
|
2287
2315
|
return;
|
|
2288
2316
|
}
|
|
2289
2317
|
|
|
2290
|
-
draft.byId[mapId].
|
|
2318
|
+
draft.byId[mapId].timeSliderCenterTime = timeSliderCenterTime;
|
|
2291
2319
|
},
|
|
2292
|
-
|
|
2320
|
+
setTimeSliderUnfilteredSelectedTime: function setTimeSliderUnfilteredSelectedTime(draft, action) {
|
|
2293
2321
|
var _action$payload12 = action.payload,
|
|
2294
2322
|
mapId = _action$payload12.mapId,
|
|
2295
|
-
|
|
2323
|
+
timeSliderUnfilteredSelectedTime = _action$payload12.timeSliderUnfilteredSelectedTime;
|
|
2296
2324
|
|
|
2297
2325
|
if (!draft.byId[mapId]) {
|
|
2298
2326
|
return;
|
|
2299
2327
|
}
|
|
2300
2328
|
|
|
2301
|
-
draft.byId[mapId].
|
|
2329
|
+
draft.byId[mapId].timeSliderUnfilteredSelectedTime = timeSliderUnfilteredSelectedTime;
|
|
2302
2330
|
},
|
|
2303
2331
|
setTimeSliderSecondsPerPx: function setTimeSliderSecondsPerPx(draft, action) {
|
|
2304
2332
|
var _action$payload13 = action.payload,
|
|
@@ -2424,21 +2452,10 @@ var slice$3 = createSlice({
|
|
|
2424
2452
|
|
|
2425
2453
|
draft.byId[mapId].activeMapPresetId = presetId;
|
|
2426
2454
|
},
|
|
2427
|
-
|
|
2455
|
+
setHasMapPresetChanges: function setHasMapPresetChanges(draft, action) {
|
|
2428
2456
|
var _action$payload24 = action.payload,
|
|
2429
2457
|
mapId = _action$payload24.mapId,
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
if (!draft.byId[mapId]) {
|
|
2433
|
-
return;
|
|
2434
|
-
}
|
|
2435
|
-
|
|
2436
|
-
draft.byId[mapId].isMapPresetLoading = isLoading;
|
|
2437
|
-
},
|
|
2438
|
-
setHasMapPresetChanges: function setHasMapPresetChanges(draft, action) {
|
|
2439
|
-
var _action$payload25 = action.payload,
|
|
2440
|
-
mapId = _action$payload25.mapId,
|
|
2441
|
-
hasChanges = _action$payload25.hasChanges;
|
|
2458
|
+
hasChanges = _action$payload24.hasChanges;
|
|
2442
2459
|
|
|
2443
2460
|
if (!draft.byId[mapId]) {
|
|
2444
2461
|
return;
|
|
@@ -2446,21 +2463,10 @@ var slice$3 = createSlice({
|
|
|
2446
2463
|
|
|
2447
2464
|
draft.byId[mapId].hasMapPresetChanges = hasChanges;
|
|
2448
2465
|
},
|
|
2449
|
-
setMapPresetError: function setMapPresetError(draft, action) {
|
|
2450
|
-
var _action$payload26 = action.payload,
|
|
2451
|
-
mapId = _action$payload26.mapId,
|
|
2452
|
-
error = _action$payload26.error;
|
|
2453
|
-
|
|
2454
|
-
if (!draft.byId[mapId]) {
|
|
2455
|
-
return;
|
|
2456
|
-
}
|
|
2457
|
-
|
|
2458
|
-
draft.byId[mapId].mapPresetError = error;
|
|
2459
|
-
},
|
|
2460
2466
|
toggleDockedLayerManager: function toggleDockedLayerManager(draft, action) {
|
|
2461
|
-
var _action$
|
|
2462
|
-
mapId = _action$
|
|
2463
|
-
openDockedLayerManager = _action$
|
|
2467
|
+
var _action$payload25 = action.payload,
|
|
2468
|
+
mapId = _action$payload25.mapId,
|
|
2469
|
+
openDockedLayerManager = _action$payload25.openDockedLayerManager;
|
|
2464
2470
|
|
|
2465
2471
|
if (!draft.byId[mapId]) {
|
|
2466
2472
|
return;
|
|
@@ -2473,9 +2479,9 @@ var slice$3 = createSlice({
|
|
|
2473
2479
|
},
|
|
2474
2480
|
extraReducers: function extraReducers(builder) {
|
|
2475
2481
|
builder.addCase(addLayer$1, function (draft, action) {
|
|
2476
|
-
var _action$
|
|
2477
|
-
layerId = _action$
|
|
2478
|
-
mapId = _action$
|
|
2482
|
+
var _action$payload26 = action.payload,
|
|
2483
|
+
layerId = _action$payload26.layerId,
|
|
2484
|
+
mapId = _action$payload26.mapId;
|
|
2479
2485
|
|
|
2480
2486
|
if (!draft.byId[mapId]) {
|
|
2481
2487
|
return;
|
|
@@ -2492,10 +2498,10 @@ var slice$3 = createSlice({
|
|
|
2492
2498
|
|
|
2493
2499
|
draft.byId[mapId].mapLayers.unshift(layerId);
|
|
2494
2500
|
}).addCase(addBaseLayer, function (draft, action) {
|
|
2495
|
-
var _action$
|
|
2496
|
-
layer = _action$
|
|
2497
|
-
layerId = _action$
|
|
2498
|
-
mapId = _action$
|
|
2501
|
+
var _action$payload27 = action.payload,
|
|
2502
|
+
layer = _action$payload27.layer,
|
|
2503
|
+
layerId = _action$payload27.layerId,
|
|
2504
|
+
mapId = _action$payload27.mapId;
|
|
2499
2505
|
|
|
2500
2506
|
if (!draft.byId[mapId]) {
|
|
2501
2507
|
return;
|
|
@@ -2545,9 +2551,9 @@ var slice$3 = createSlice({
|
|
|
2545
2551
|
}
|
|
2546
2552
|
}
|
|
2547
2553
|
}).addCase(setBaseLayers$1, function (draft, action) {
|
|
2548
|
-
var _action$
|
|
2549
|
-
layers = _action$
|
|
2550
|
-
mapId = _action$
|
|
2554
|
+
var _action$payload28 = action.payload,
|
|
2555
|
+
layers = _action$payload28.layers,
|
|
2556
|
+
mapId = _action$payload28.mapId; // Split into base and overlayers
|
|
2551
2557
|
|
|
2552
2558
|
var baseLayers = [];
|
|
2553
2559
|
var overLayers = [];
|
|
@@ -2574,9 +2580,9 @@ var slice$3 = createSlice({
|
|
|
2574
2580
|
if (overLayerIds.length !== 0) draft.byId[mapId].overLayers = overLayerIds;
|
|
2575
2581
|
}
|
|
2576
2582
|
}).addCase(layerDelete$1, function (draft, action) {
|
|
2577
|
-
var _action$
|
|
2578
|
-
mapId = _action$
|
|
2579
|
-
layerId = _action$
|
|
2583
|
+
var _action$payload29 = action.payload,
|
|
2584
|
+
mapId = _action$payload29.mapId,
|
|
2585
|
+
layerId = _action$payload29.layerId;
|
|
2580
2586
|
|
|
2581
2587
|
if (!draft.byId[mapId]) {
|
|
2582
2588
|
return;
|
|
@@ -2597,9 +2603,9 @@ var slice$3 = createSlice({
|
|
|
2597
2603
|
draft.byId[mapId].activeLayerId = '';
|
|
2598
2604
|
}
|
|
2599
2605
|
}).addCase(baseLayerDelete, function (draft, action) {
|
|
2600
|
-
var _action$
|
|
2601
|
-
mapId = _action$
|
|
2602
|
-
layerId = _action$
|
|
2606
|
+
var _action$payload30 = action.payload,
|
|
2607
|
+
mapId = _action$payload30.mapId,
|
|
2608
|
+
layerId = _action$payload30.layerId;
|
|
2603
2609
|
|
|
2604
2610
|
if (!draft.byId[mapId]) {
|
|
2605
2611
|
return;
|
|
@@ -2612,14 +2618,14 @@ var slice$3 = createSlice({
|
|
|
2612
2618
|
return id !== layerId;
|
|
2613
2619
|
});
|
|
2614
2620
|
}).addCase(layerChangeDimension$1, function (draft, action) {
|
|
2615
|
-
var _action$
|
|
2616
|
-
layerId = _action$
|
|
2617
|
-
dimension = _action$
|
|
2621
|
+
var _action$payload31 = action.payload,
|
|
2622
|
+
layerId = _action$payload31.layerId,
|
|
2623
|
+
dimension = _action$payload31.dimension;
|
|
2618
2624
|
produceDraftStateSetMapDimensionFromLayerChangeDimension(draft, layerId, dimension);
|
|
2619
2625
|
}).addCase(setTimeSync, function (draft, action) {
|
|
2620
|
-
var _action$
|
|
2621
|
-
targetsFromAction = _action$
|
|
2622
|
-
source = _action$
|
|
2626
|
+
var _action$payload32 = action.payload,
|
|
2627
|
+
targetsFromAction = _action$payload32.targets,
|
|
2628
|
+
source = _action$payload32.source;
|
|
2623
2629
|
/* Because we want backwards compatibility with the previous code, we also need to listen to the original source action */
|
|
2624
2630
|
|
|
2625
2631
|
var targets = [{
|
|
@@ -2643,9 +2649,9 @@ var slice$3 = createSlice({
|
|
|
2643
2649
|
}
|
|
2644
2650
|
});
|
|
2645
2651
|
}).addCase(setBboxSync, function (draft, action) {
|
|
2646
|
-
var _action$
|
|
2647
|
-
targetsFromAction = _action$
|
|
2648
|
-
source = _action$
|
|
2652
|
+
var _action$payload33 = action.payload,
|
|
2653
|
+
targetsFromAction = _action$payload33.targets,
|
|
2654
|
+
source = _action$payload33.source;
|
|
2649
2655
|
/* Because we want backwards compatibility with the previous code, we also need to listen to the original source action */
|
|
2650
2656
|
|
|
2651
2657
|
var targets = [{
|
|
@@ -2676,9 +2682,9 @@ var slice$3 = createSlice({
|
|
|
2676
2682
|
* These targets can be used as payloads in new Layer actions.
|
|
2677
2683
|
* These actions are here handled via the layer reducer, as it is the same logic
|
|
2678
2684
|
*/
|
|
2679
|
-
var _action$
|
|
2680
|
-
targets = _action$
|
|
2681
|
-
source = _action$
|
|
2685
|
+
var _action$payload34 = action.payload,
|
|
2686
|
+
targets = _action$payload34.targets,
|
|
2687
|
+
source = _action$payload34.source;
|
|
2682
2688
|
return targets.reduce(function (prevState, target) {
|
|
2683
2689
|
var action = {
|
|
2684
2690
|
payload: target,
|
|
@@ -2694,9 +2700,9 @@ var slice$3 = createSlice({
|
|
|
2694
2700
|
var mapAction = mapActions$1.mapUpdateAllMapDimensions(mapDimensions);
|
|
2695
2701
|
return reducer$3(draft, mapAction);
|
|
2696
2702
|
}).addCase(mapChangeDimension, function (draft, action) {
|
|
2697
|
-
var _action$
|
|
2698
|
-
mapId = _action$
|
|
2699
|
-
dimensionFromAction = _action$
|
|
2703
|
+
var _action$payload35 = action.payload,
|
|
2704
|
+
mapId = _action$payload35.mapId,
|
|
2705
|
+
dimensionFromAction = _action$payload35.dimension;
|
|
2700
2706
|
produceDraftStateSetWebMapDimension(draft, mapId, dimensionFromAction, true);
|
|
2701
2707
|
}).addCase(setMapPreset, function (draft, action) {
|
|
2702
2708
|
var mapId = action.payload.mapId;
|
|
@@ -2719,9 +2725,9 @@ var slice$3 = createSlice({
|
|
|
2719
2725
|
draft.byId[mapId].timeStep = defaultTimeStep;
|
|
2720
2726
|
draft.byId[mapId].animationDelay = defaultAnimationDelayAtStart;
|
|
2721
2727
|
}).addCase(uiActions.registerDialog, function (draft, action) {
|
|
2722
|
-
var _action$
|
|
2723
|
-
mapId = _action$
|
|
2724
|
-
type = _action$
|
|
2728
|
+
var _action$payload36 = action.payload,
|
|
2729
|
+
mapId = _action$payload36.mapId,
|
|
2730
|
+
type = _action$payload36.type;
|
|
2725
2731
|
|
|
2726
2732
|
if (!draft.byId[mapId]) {
|
|
2727
2733
|
return;
|
|
@@ -3150,6 +3156,12 @@ var getActiveWindowId = function getActiveWindowId(store) {
|
|
|
3150
3156
|
|
|
3151
3157
|
return (_a = store === null || store === void 0 ? void 0 : store.ui) === null || _a === void 0 ? void 0 : _a.activeWindowId;
|
|
3152
3158
|
};
|
|
3159
|
+
var getDialogIsLoading = createSelector(getDialogDetailsByType, function (details) {
|
|
3160
|
+
return details && details.isLoading || false;
|
|
3161
|
+
});
|
|
3162
|
+
var getDialogError = createSelector(getDialogDetailsByType, function (details) {
|
|
3163
|
+
return details && details.error || '';
|
|
3164
|
+
});
|
|
3153
3165
|
|
|
3154
3166
|
var selectors$1 = /*#__PURE__*/Object.freeze({
|
|
3155
3167
|
__proto__: null,
|
|
@@ -3160,7 +3172,9 @@ var selectors$1 = /*#__PURE__*/Object.freeze({
|
|
|
3160
3172
|
getDialogOrder: getDialogOrder,
|
|
3161
3173
|
getDialogIsOrderedOnTop: getDialogIsOrderedOnTop,
|
|
3162
3174
|
getDialogSource: getDialogSource,
|
|
3163
|
-
getActiveWindowId: getActiveWindowId
|
|
3175
|
+
getActiveWindowId: getActiveWindowId,
|
|
3176
|
+
getDialogIsLoading: getDialogIsLoading,
|
|
3177
|
+
getDialogError: getDialogError
|
|
3164
3178
|
});
|
|
3165
3179
|
|
|
3166
3180
|
/* *
|
|
@@ -3969,6 +3983,19 @@ var getMapAnimationDelay = createSelector(getMapById, function (store) {
|
|
|
3969
3983
|
var getMapTimeSliderCenterTime = createSelector(getMapById, function (store) {
|
|
3970
3984
|
return store ? store.timeSliderCenterTime : moment().unix();
|
|
3971
3985
|
});
|
|
3986
|
+
/**
|
|
3987
|
+
* Returns the unflitered selected time of time slider
|
|
3988
|
+
* This is not used to set the selected time itself, which is controlled by TimeBounds where values are rounded.
|
|
3989
|
+
*
|
|
3990
|
+
* Example: selectedTime = getTimeSliderUnfliteredSelectedTime(store, 'mapid_1')
|
|
3991
|
+
* @param {object} store store: object - store object
|
|
3992
|
+
* @param {string} mapId mapId: string - Id of the map
|
|
3993
|
+
* @returns {number} returnType: number - unfiltered selected time as a unix timestamp
|
|
3994
|
+
*/
|
|
3995
|
+
|
|
3996
|
+
var getTimeSliderUnfilteredSelectedTime = createSelector(getMapById, function (store) {
|
|
3997
|
+
return store ? store.timeSliderUnfilteredSelectedTime : null;
|
|
3998
|
+
});
|
|
3972
3999
|
/**
|
|
3973
4000
|
* Returns the number of seconds per pixel on the time slider
|
|
3974
4001
|
*
|
|
@@ -4275,18 +4302,6 @@ var getMapPreset = createSelector(getMapLayers, getMapBaseLayers, getMapOverLaye
|
|
|
4275
4302
|
shouldShowLegend: shouldShowLegend
|
|
4276
4303
|
});
|
|
4277
4304
|
}, selectorMemoizationOptions);
|
|
4278
|
-
/**
|
|
4279
|
-
* Returns the loading state of the map preset
|
|
4280
|
-
*
|
|
4281
|
-
* Example getIsMapPresetLoading(store, mapId);
|
|
4282
|
-
* @param {object} store store: object - store object
|
|
4283
|
-
* @param {string} mapId mapId: string - Id of the map
|
|
4284
|
-
* @returns {boolean} returnType: boolean
|
|
4285
|
-
*/
|
|
4286
|
-
|
|
4287
|
-
var getIsMapPresetLoading = createSelector(getMapById, function (store) {
|
|
4288
|
-
return store && store.isMapPresetLoading ? store.isMapPresetLoading : false;
|
|
4289
|
-
});
|
|
4290
4305
|
/**
|
|
4291
4306
|
* Returns the has changes state of the map preset
|
|
4292
4307
|
*
|
|
@@ -4299,18 +4314,6 @@ var getIsMapPresetLoading = createSelector(getMapById, function (store) {
|
|
|
4299
4314
|
var getHasMapPresetChanges = createSelector(getMapById, function (store) {
|
|
4300
4315
|
return store && store.hasMapPresetChanges ? store.hasMapPresetChanges : false;
|
|
4301
4316
|
});
|
|
4302
|
-
/**
|
|
4303
|
-
* Returns the error state of the map preset
|
|
4304
|
-
*
|
|
4305
|
-
* Example getMapPresetError(store, mapId);
|
|
4306
|
-
* @param {object} store store: object - store object
|
|
4307
|
-
* @param {string} mapId mapId: string - Id of the map
|
|
4308
|
-
* @returns {Error} returnType: string
|
|
4309
|
-
*/
|
|
4310
|
-
|
|
4311
|
-
var getMapPresetError = createSelector(getMapById, function (store) {
|
|
4312
|
-
return store === null || store === void 0 ? void 0 : store.mapPresetError;
|
|
4313
|
-
});
|
|
4314
4317
|
/**
|
|
4315
4318
|
* Returns whether the docked layer manager is open
|
|
4316
4319
|
*
|
|
@@ -4353,6 +4356,7 @@ var selectors = /*#__PURE__*/Object.freeze({
|
|
|
4353
4356
|
getMapTimeStep: getMapTimeStep,
|
|
4354
4357
|
getMapAnimationDelay: getMapAnimationDelay,
|
|
4355
4358
|
getMapTimeSliderCenterTime: getMapTimeSliderCenterTime,
|
|
4359
|
+
getTimeSliderUnfilteredSelectedTime: getTimeSliderUnfilteredSelectedTime,
|
|
4356
4360
|
getMapTimeSliderSecondsPerPx: getMapTimeSliderSecondsPerPx,
|
|
4357
4361
|
getMapTimeSliderDataScaleToSecondsPerPx: getMapTimeSliderDataScaleToSecondsPerPx,
|
|
4358
4362
|
isTimestepAuto: isTimestepAuto,
|
|
@@ -4372,9 +4376,7 @@ var selectors = /*#__PURE__*/Object.freeze({
|
|
|
4372
4376
|
getActiveMapPresetId: getActiveMapPresetId,
|
|
4373
4377
|
getLegendId: getLegendId,
|
|
4374
4378
|
getMapPreset: getMapPreset,
|
|
4375
|
-
getIsMapPresetLoading: getIsMapPresetLoading,
|
|
4376
4379
|
getHasMapPresetChanges: getHasMapPresetChanges,
|
|
4377
|
-
getMapPresetError: getMapPresetError,
|
|
4378
4380
|
getIsDockedLayerManagerOpen: getIsDockedLayerManagerOpen
|
|
4379
4381
|
});
|
|
4380
4382
|
|
|
@@ -8149,9 +8151,9 @@ function setMapPresetSaga(_ref6) {
|
|
|
8149
8151
|
}
|
|
8150
8152
|
|
|
8151
8153
|
_context8.next = 42;
|
|
8152
|
-
return put(mapActions$1.
|
|
8154
|
+
return put(mapActions$1.setTimeStep({
|
|
8153
8155
|
mapId: mapId,
|
|
8154
|
-
|
|
8156
|
+
timeStep: interval
|
|
8155
8157
|
}));
|
|
8156
8158
|
|
|
8157
8159
|
case 42:
|
|
@@ -9379,7 +9381,7 @@ var RenderLayers = function RenderLayers(_ref) {
|
|
|
9379
9381
|
}));
|
|
9380
9382
|
};
|
|
9381
9383
|
|
|
9382
|
-
var marks$
|
|
9384
|
+
var marks$3 = [{
|
|
9383
9385
|
value: 0,
|
|
9384
9386
|
label: '0 %'
|
|
9385
9387
|
}, {
|
|
@@ -9517,7 +9519,7 @@ var OpacitySelect = function OpacitySelect(_ref) {
|
|
|
9517
9519
|
step: 0.01,
|
|
9518
9520
|
max: 1,
|
|
9519
9521
|
min: 0,
|
|
9520
|
-
marks: marks$
|
|
9522
|
+
marks: marks$3,
|
|
9521
9523
|
onChange: function onChange(event, newValue) {
|
|
9522
9524
|
event.stopPropagation();
|
|
9523
9525
|
onLayerChangeOpacity(newValue);
|
|
@@ -9695,7 +9697,9 @@ var ActivateLayer = function ActivateLayer(_ref) {
|
|
|
9695
9697
|
return /*#__PURE__*/React.createElement(ManagerButton, {
|
|
9696
9698
|
tooltipTitle: tooltipTitle,
|
|
9697
9699
|
onClick: onClick,
|
|
9698
|
-
icon: /*#__PURE__*/React.createElement(
|
|
9700
|
+
icon: isActive ? /*#__PURE__*/React.createElement(Both, {
|
|
9701
|
+
sx: iconStyle
|
|
9702
|
+
}) : /*#__PURE__*/React.createElement(None, {
|
|
9699
9703
|
sx: iconStyle
|
|
9700
9704
|
}),
|
|
9701
9705
|
testId: id,
|
|
@@ -11767,6 +11771,9 @@ var HeaderOptions = function HeaderOptions(_ref) {
|
|
|
11767
11771
|
onClick: function onClick() {
|
|
11768
11772
|
return onChangeSize(sizeSmall);
|
|
11769
11773
|
},
|
|
11774
|
+
onTouchEnd: function onTouchEnd() {
|
|
11775
|
+
return onChangeSize(sizeSmall);
|
|
11776
|
+
},
|
|
11770
11777
|
sx: iconStyle,
|
|
11771
11778
|
className: "collapseSmall-btn"
|
|
11772
11779
|
}, /*#__PURE__*/React.createElement(CollapseSmall, null))), /*#__PURE__*/React.createElement(CustomTooltip, {
|
|
@@ -11777,6 +11784,9 @@ var HeaderOptions = function HeaderOptions(_ref) {
|
|
|
11777
11784
|
onClick: function onClick() {
|
|
11778
11785
|
return onChangeSize(sizeMedium);
|
|
11779
11786
|
},
|
|
11787
|
+
onTouchEnd: function onTouchEnd() {
|
|
11788
|
+
return onChangeSize(sizeMedium);
|
|
11789
|
+
},
|
|
11780
11790
|
sx: iconStyle,
|
|
11781
11791
|
className: "collapseMedium-btn"
|
|
11782
11792
|
}, /*#__PURE__*/React.createElement(CollapseMedium, null))), /*#__PURE__*/React.createElement(CustomTooltip, {
|
|
@@ -11787,6 +11797,9 @@ var HeaderOptions = function HeaderOptions(_ref) {
|
|
|
11787
11797
|
onClick: function onClick() {
|
|
11788
11798
|
return onChangeSize(sizeLarge);
|
|
11789
11799
|
},
|
|
11800
|
+
onTouchEnd: function onTouchEnd() {
|
|
11801
|
+
return onChangeSize(sizeLarge);
|
|
11802
|
+
},
|
|
11790
11803
|
sx: iconStyle,
|
|
11791
11804
|
className: "collapseLarge-btn"
|
|
11792
11805
|
}, /*#__PURE__*/React.createElement(CollapseLarge, null))), /*#__PURE__*/React.createElement(CustomTooltip, {
|
|
@@ -11798,6 +11811,9 @@ var HeaderOptions = function HeaderOptions(_ref) {
|
|
|
11798
11811
|
sx: iconStyle,
|
|
11799
11812
|
onClick: function onClick() {
|
|
11800
11813
|
return onClickDockButton();
|
|
11814
|
+
},
|
|
11815
|
+
onTouchEnd: function onTouchEnd() {
|
|
11816
|
+
return onClickDockButton();
|
|
11801
11817
|
}
|
|
11802
11818
|
}, isDockedLayerManager ? /*#__PURE__*/React.createElement(CollapseWindow, {
|
|
11803
11819
|
"data-testid": "dockedLayerManager-collapse"
|
|
@@ -11914,7 +11930,11 @@ var LayerManager = function LayerManager(_ref) {
|
|
|
11914
11930
|
setSize(dragSize);
|
|
11915
11931
|
}
|
|
11916
11932
|
}
|
|
11917
|
-
}, /*#__PURE__*/React.createElement(Box,
|
|
11933
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
11934
|
+
onKeyDown: function onKeyDown(event) {
|
|
11935
|
+
event.stopPropagation();
|
|
11936
|
+
}
|
|
11937
|
+
}, isLoading && /*#__PURE__*/React.createElement(LinearProgress, {
|
|
11918
11938
|
"data-testid": "loading-bar",
|
|
11919
11939
|
color: "secondary",
|
|
11920
11940
|
sx: {
|
|
@@ -12021,12 +12041,20 @@ var useSetupDialog = function useSetupDialog(dialogType) {
|
|
|
12021
12041
|
var isDialogOpen = useSelector(function (store) {
|
|
12022
12042
|
return getisDialogOpen(store, dialogType);
|
|
12023
12043
|
});
|
|
12044
|
+
var uiIsLoading = useSelector(function (store) {
|
|
12045
|
+
return getDialogIsLoading(store, dialogType);
|
|
12046
|
+
});
|
|
12047
|
+
var uiError = useSelector(function (store) {
|
|
12048
|
+
return getDialogError(store, dialogType);
|
|
12049
|
+
});
|
|
12024
12050
|
return {
|
|
12025
12051
|
setDialogOrder: setDialogOrder,
|
|
12026
12052
|
dialogOrder: dialogOrder,
|
|
12027
12053
|
onCloseDialog: onCloseDialog,
|
|
12028
12054
|
uiSource: uiSource,
|
|
12029
|
-
isDialogOpen: isDialogOpen
|
|
12055
|
+
isDialogOpen: isDialogOpen,
|
|
12056
|
+
uiIsLoading: uiIsLoading,
|
|
12057
|
+
uiError: uiError
|
|
12030
12058
|
};
|
|
12031
12059
|
};
|
|
12032
12060
|
|
|
@@ -12115,19 +12143,15 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
|
|
|
12115
12143
|
var mapId = useSelector(function (store) {
|
|
12116
12144
|
return getDialogMapId(store, dialogType);
|
|
12117
12145
|
});
|
|
12118
|
-
var isMapPresetLoading = useSelector(function (store) {
|
|
12119
|
-
return getIsMapPresetLoading(store, mapId);
|
|
12120
|
-
});
|
|
12121
|
-
var mapPresetError = useSelector(function (store) {
|
|
12122
|
-
return getMapPresetError(store, mapId);
|
|
12123
|
-
});
|
|
12124
12146
|
|
|
12125
12147
|
var _useSetupDialog = useSetupDialog(dialogType),
|
|
12126
12148
|
dialogOrder = _useSetupDialog.dialogOrder,
|
|
12127
12149
|
setDialogOrder = _useSetupDialog.setDialogOrder,
|
|
12128
12150
|
onCloseDialog = _useSetupDialog.onCloseDialog,
|
|
12129
12151
|
isDialogOpen = _useSetupDialog.isDialogOpen,
|
|
12130
|
-
uiSource = _useSetupDialog.uiSource
|
|
12152
|
+
uiSource = _useSetupDialog.uiSource,
|
|
12153
|
+
uiIsLoading = _useSetupDialog.uiIsLoading,
|
|
12154
|
+
uiError = _useSetupDialog.uiError;
|
|
12131
12155
|
|
|
12132
12156
|
useFetchServices(dialogType, preloadedMapServices);
|
|
12133
12157
|
|
|
@@ -12152,8 +12176,8 @@ var LayerManagerConnect = function LayerManagerConnect(_ref) {
|
|
|
12152
12176
|
order: dialogOrder,
|
|
12153
12177
|
source: uiSource,
|
|
12154
12178
|
leftHeaderComponent: leftHeaderComponent,
|
|
12155
|
-
isLoading:
|
|
12156
|
-
error:
|
|
12179
|
+
isLoading: uiIsLoading,
|
|
12180
|
+
error: uiError,
|
|
12157
12181
|
onToggleDock: onToggleDock
|
|
12158
12182
|
});
|
|
12159
12183
|
};
|
|
@@ -13776,6 +13800,7 @@ var LayerList = function LayerList(_ref) {
|
|
|
13776
13800
|
var rowMargin = 4;
|
|
13777
13801
|
var rowHeight = widthToRowHeight(layerSelectWidth);
|
|
13778
13802
|
var layerSelectFilterHeight = 155 + serviceListHeight;
|
|
13803
|
+
var minHeight = 400;
|
|
13779
13804
|
return /*#__PURE__*/React.createElement(Box, {
|
|
13780
13805
|
"data-testid": "layerList"
|
|
13781
13806
|
}, /*#__PURE__*/React.createElement(Box, {
|
|
@@ -13784,7 +13809,7 @@ var LayerList = function LayerList(_ref) {
|
|
|
13784
13809
|
fontSize: '12px'
|
|
13785
13810
|
}
|
|
13786
13811
|
}, filteredLayers.length, " results"), /*#__PURE__*/React.createElement(FixedSizeList, {
|
|
13787
|
-
height: layerSelectHeight - layerSelectFilterHeight,
|
|
13812
|
+
height: layerSelectHeight - layerSelectFilterHeight < minHeight ? minHeight : layerSelectHeight - layerSelectFilterHeight,
|
|
13788
13813
|
itemCount: filteredLayers.length,
|
|
13789
13814
|
itemSize: rowHeight + rowMargin
|
|
13790
13815
|
}, function (_ref2) {
|
|
@@ -14543,7 +14568,14 @@ var LayerSelect = function LayerSelect(_ref) {
|
|
|
14543
14568
|
left: 100
|
|
14544
14569
|
},
|
|
14545
14570
|
isOpen: isOpen,
|
|
14546
|
-
|
|
14571
|
+
onResizeStop: function onResizeStop(_event, _direction, node) {
|
|
14572
|
+
var width = node.offsetWidth,
|
|
14573
|
+
height = node.offsetHeight;
|
|
14574
|
+
onChangeSize({
|
|
14575
|
+
width: width,
|
|
14576
|
+
height: height
|
|
14577
|
+
});
|
|
14578
|
+
},
|
|
14547
14579
|
onClose: onClose,
|
|
14548
14580
|
headerSize: "small",
|
|
14549
14581
|
bounds: bounds,
|
|
@@ -15996,7 +16028,7 @@ var SpeedButton = function SpeedButton(_ref) {
|
|
|
15996
16028
|
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15997
16029
|
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
15998
16030
|
* */
|
|
15999
|
-
var marks$
|
|
16031
|
+
var marks$2 = [{
|
|
16000
16032
|
label: '1 min',
|
|
16001
16033
|
value: 1,
|
|
16002
16034
|
text: '1m'
|
|
@@ -16091,18 +16123,11 @@ var TimeStepButton = function TimeStepButton(_ref) {
|
|
|
16091
16123
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
16092
16124
|
_ref$isTimestepAuto = _ref.isTimestepAuto,
|
|
16093
16125
|
isTimestepAuto = _ref$isTimestepAuto === void 0 ? false : _ref$isTimestepAuto,
|
|
16094
|
-
timeDimension = _ref.timeDimension,
|
|
16095
16126
|
onChangeTimeStep = _ref.onChangeTimeStep,
|
|
16096
16127
|
_ref$onToggleTimestep = _ref.onToggleTimestepAuto,
|
|
16097
16128
|
onToggleTimestepAuto = _ref$onToggleTimestep === void 0 ? function () {} : _ref$onToggleTimestep,
|
|
16098
16129
|
_ref$isOpenByDefault = _ref.isOpenByDefault,
|
|
16099
16130
|
isOpenByDefault = _ref$isOpenByDefault === void 0 ? false : _ref$isOpenByDefault;
|
|
16100
|
-
var timeStepFromLayer = getActiveLayerTimeStep(timeDimension) || timeStep;
|
|
16101
|
-
React.useEffect(function () {
|
|
16102
|
-
if (isTimestepAuto) {
|
|
16103
|
-
onChangeTimeStep(timeStepFromLayer);
|
|
16104
|
-
}
|
|
16105
|
-
}, [timeStepFromLayer, isTimestepAuto, onChangeTimeStep]);
|
|
16106
16131
|
|
|
16107
16132
|
var handleMenuItemClick = function handleMenuItemClick(mark) {
|
|
16108
16133
|
if (isTimestepAuto) {
|
|
@@ -16115,7 +16140,7 @@ var TimeStepButton = function TimeStepButton(_ref) {
|
|
|
16115
16140
|
return /*#__PURE__*/React.createElement(TimeSliderMenu, {
|
|
16116
16141
|
title: timeStepTitle,
|
|
16117
16142
|
isOpenByDefault: isOpenByDefault,
|
|
16118
|
-
marks: marks$
|
|
16143
|
+
marks: marks$2,
|
|
16119
16144
|
value: timeStep,
|
|
16120
16145
|
handleMenuItemClick: handleMenuItemClick,
|
|
16121
16146
|
isDisabled: disabled,
|
|
@@ -16142,7 +16167,7 @@ var TimeStepButton = function TimeStepButton(_ref) {
|
|
|
16142
16167
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
16143
16168
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
16144
16169
|
* */
|
|
16145
|
-
var marks = [{
|
|
16170
|
+
var marks$1 = [{
|
|
16146
16171
|
label: '5 min',
|
|
16147
16172
|
value: Scale.Minutes5,
|
|
16148
16173
|
text: '5m'
|
|
@@ -16193,7 +16218,7 @@ var TimeScaleButton = function TimeScaleButton(_ref) {
|
|
|
16193
16218
|
var onChangeSliderValue = function onChangeSliderValue(mark) {
|
|
16194
16219
|
var newSliderValue = mark.value;
|
|
16195
16220
|
var newValue = newSliderValue ? Math.round(newSliderValue) : 0;
|
|
16196
|
-
var newScale = marks.find(function (el) {
|
|
16221
|
+
var newScale = marks$1.find(function (el) {
|
|
16197
16222
|
return el.value === newValue;
|
|
16198
16223
|
}).value;
|
|
16199
16224
|
var scaleToSecPerPx = newScale === Scale.DataScale ? getScaleToSecondsPerPxForDataScale(layers) : scaleToSecondsPerPx[newScale];
|
|
@@ -16204,7 +16229,7 @@ var TimeScaleButton = function TimeScaleButton(_ref) {
|
|
|
16204
16229
|
return /*#__PURE__*/React.createElement(TimeSliderMenu, {
|
|
16205
16230
|
handleMenuItemClick: onChangeSliderValue,
|
|
16206
16231
|
icon: /*#__PURE__*/React.createElement(Clock, null),
|
|
16207
|
-
marks: marks,
|
|
16232
|
+
marks: marks$1,
|
|
16208
16233
|
title: "Time scale",
|
|
16209
16234
|
value: timeSliderScale,
|
|
16210
16235
|
onChangeMouseWheel: onChangeSliderValue
|
|
@@ -16227,7 +16252,7 @@ var TimeScaleButton = function TimeScaleButton(_ref) {
|
|
|
16227
16252
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
16228
16253
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
16229
16254
|
* */
|
|
16230
|
-
var title = 'Now';
|
|
16255
|
+
var title$1 = 'Now';
|
|
16231
16256
|
|
|
16232
16257
|
var NowButton = function NowButton(_ref) {
|
|
16233
16258
|
var _ref$onSetNow = _ref.onSetNow,
|
|
@@ -16235,7 +16260,7 @@ var NowButton = function NowButton(_ref) {
|
|
|
16235
16260
|
_ref$disabled = _ref.disabled,
|
|
16236
16261
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
|
|
16237
16262
|
return /*#__PURE__*/React.createElement(CustomTooltip, {
|
|
16238
|
-
title: title,
|
|
16263
|
+
title: title$1,
|
|
16239
16264
|
"data-testid": "nowButtonTooltip"
|
|
16240
16265
|
}, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(ToolButton, {
|
|
16241
16266
|
disabled: disabled,
|
|
@@ -16248,6 +16273,86 @@ var NowButton = function NowButton(_ref) {
|
|
|
16248
16273
|
}))));
|
|
16249
16274
|
};
|
|
16250
16275
|
|
|
16276
|
+
/* *
|
|
16277
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16278
|
+
* you may not use this file except in compliance with the License.
|
|
16279
|
+
* You may obtain a copy of the License at
|
|
16280
|
+
*
|
|
16281
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16282
|
+
*
|
|
16283
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16284
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16285
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16286
|
+
* See the License for the specific language governing permissions and
|
|
16287
|
+
* limitations under the License.
|
|
16288
|
+
*
|
|
16289
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
16290
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
16291
|
+
* */
|
|
16292
|
+
var title = 'Animation';
|
|
16293
|
+
var marks = [{
|
|
16294
|
+
label: '15 min',
|
|
16295
|
+
value: AnimationLength.Minutes15,
|
|
16296
|
+
text: '15m'
|
|
16297
|
+
}, {
|
|
16298
|
+
label: '30 min',
|
|
16299
|
+
value: AnimationLength.Minutes30,
|
|
16300
|
+
text: '30m'
|
|
16301
|
+
}, {
|
|
16302
|
+
label: '1 h',
|
|
16303
|
+
value: AnimationLength.Hours1,
|
|
16304
|
+
text: '1h'
|
|
16305
|
+
}, {
|
|
16306
|
+
label: '2 h',
|
|
16307
|
+
value: AnimationLength.Hours2,
|
|
16308
|
+
text: '2h'
|
|
16309
|
+
}, {
|
|
16310
|
+
label: '3 h',
|
|
16311
|
+
value: AnimationLength.Hours3,
|
|
16312
|
+
text: '3h'
|
|
16313
|
+
}, {
|
|
16314
|
+
label: '6 h',
|
|
16315
|
+
value: AnimationLength.Hours6,
|
|
16316
|
+
text: '6h'
|
|
16317
|
+
}, {
|
|
16318
|
+
label: '12 h',
|
|
16319
|
+
value: AnimationLength.Hours12,
|
|
16320
|
+
text: '12h'
|
|
16321
|
+
}, {
|
|
16322
|
+
label: '24 h',
|
|
16323
|
+
value: AnimationLength.Hours24,
|
|
16324
|
+
text: '24h'
|
|
16325
|
+
}].sort(function (a, b) {
|
|
16326
|
+
return b.value - a.value;
|
|
16327
|
+
});
|
|
16328
|
+
|
|
16329
|
+
var AnimationLengthButton = function AnimationLengthButton(_ref) {
|
|
16330
|
+
var _ref$disabled = _ref.disabled,
|
|
16331
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
16332
|
+
_ref$animationLength = _ref.animationLength,
|
|
16333
|
+
animationLength = _ref$animationLength === void 0 ? AnimationLength.Hours1 : _ref$animationLength,
|
|
16334
|
+
onChangeAnimationLength = _ref.onChangeAnimationLength;
|
|
16335
|
+
|
|
16336
|
+
var onChangeSliderValue = function onChangeSliderValue(mark) {
|
|
16337
|
+
var newSliderValue = mark.value;
|
|
16338
|
+
var newValue = newSliderValue ? Math.round(newSliderValue) : 0;
|
|
16339
|
+
var newLength = marks.find(function (el) {
|
|
16340
|
+
return el.value === newValue;
|
|
16341
|
+
}).value;
|
|
16342
|
+
onChangeAnimationLength(newLength);
|
|
16343
|
+
};
|
|
16344
|
+
|
|
16345
|
+
return /*#__PURE__*/React.createElement(TimeSliderMenu, {
|
|
16346
|
+
handleMenuItemClick: onChangeSliderValue,
|
|
16347
|
+
icon: /*#__PURE__*/React.createElement(Animation, null),
|
|
16348
|
+
marks: marks,
|
|
16349
|
+
title: title,
|
|
16350
|
+
isDisabled: disabled,
|
|
16351
|
+
value: animationLength,
|
|
16352
|
+
onChangeMouseWheel: onChangeSliderValue
|
|
16353
|
+
});
|
|
16354
|
+
};
|
|
16355
|
+
|
|
16251
16356
|
/* *
|
|
16252
16357
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16253
16358
|
* you may not use this file except in compliance with the License.
|
|
@@ -16269,7 +16374,8 @@ var OptionsMenu = function OptionsMenu(_ref) {
|
|
|
16269
16374
|
nowBtn = _ref.nowBtn,
|
|
16270
16375
|
speedBtn = _ref.speedBtn,
|
|
16271
16376
|
timeScaleBtn = _ref.timeScaleBtn,
|
|
16272
|
-
timeStepBtn = _ref.timeStepBtn
|
|
16377
|
+
timeStepBtn = _ref.timeStepBtn,
|
|
16378
|
+
animationLengthBtn = _ref.animationLengthBtn;
|
|
16273
16379
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Grid, {
|
|
16274
16380
|
item: true,
|
|
16275
16381
|
xs: "auto"
|
|
@@ -16285,6 +16391,11 @@ var OptionsMenu = function OptionsMenu(_ref) {
|
|
|
16285
16391
|
})), /*#__PURE__*/React__default.createElement(Grid, {
|
|
16286
16392
|
item: true,
|
|
16287
16393
|
xs: "auto"
|
|
16394
|
+
}, animationLengthBtn || /*#__PURE__*/React__default.createElement(AnimationLengthButton, {
|
|
16395
|
+
onChangeAnimationLength: function onChangeAnimationLength() {}
|
|
16396
|
+
})), /*#__PURE__*/React__default.createElement(Grid, {
|
|
16397
|
+
item: true,
|
|
16398
|
+
xs: "auto"
|
|
16288
16399
|
}, timeStepBtn || /*#__PURE__*/React__default.createElement(TimeStepButton, {
|
|
16289
16400
|
timeStep: 0,
|
|
16290
16401
|
onChangeTimeStep: function onChangeTimeStep() {}
|
|
@@ -16306,8 +16417,14 @@ var OptionsMenuButton = function OptionsMenuButton(_ref) {
|
|
|
16306
16417
|
speedBtn = _ref.speedBtn,
|
|
16307
16418
|
timeStepBtn = _ref.timeStepBtn,
|
|
16308
16419
|
timeScaleBtn = _ref.timeScaleBtn,
|
|
16420
|
+
animationLengthBtn = _ref.animationLengthBtn,
|
|
16309
16421
|
_ref$isOpenByDefault = _ref.isOpenByDefault,
|
|
16310
|
-
isOpenByDefault = _ref$isOpenByDefault === void 0 ? false : _ref$isOpenByDefault
|
|
16422
|
+
isOpenByDefault = _ref$isOpenByDefault === void 0 ? false : _ref$isOpenByDefault,
|
|
16423
|
+
timeStep = _ref.timeStep,
|
|
16424
|
+
timeDimension = _ref.timeDimension,
|
|
16425
|
+
onChangeTimeStep = _ref.onChangeTimeStep,
|
|
16426
|
+
_ref$isTimestepAuto = _ref.isTimestepAuto,
|
|
16427
|
+
isTimestepAuto = _ref$isTimestepAuto === void 0 ? false : _ref$isTimestepAuto;
|
|
16311
16428
|
|
|
16312
16429
|
var _useState = useState(null),
|
|
16313
16430
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -16324,6 +16441,12 @@ var OptionsMenuButton = function OptionsMenuButton(_ref) {
|
|
|
16324
16441
|
setOpen(true);
|
|
16325
16442
|
}
|
|
16326
16443
|
}, [anchorEl, isOpenByDefault]);
|
|
16444
|
+
var timeStepFromLayer = getActiveLayerTimeStep(timeDimension) || timeStep;
|
|
16445
|
+
React__default.useEffect(function () {
|
|
16446
|
+
if (isTimestepAuto) {
|
|
16447
|
+
onChangeTimeStep(timeStepFromLayer);
|
|
16448
|
+
}
|
|
16449
|
+
}, [timeStepFromLayer, isTimestepAuto, onChangeTimeStep]);
|
|
16327
16450
|
return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(CustomTooltip, {
|
|
16328
16451
|
title: "Animation options",
|
|
16329
16452
|
placement: "bottom"
|
|
@@ -16359,6 +16482,7 @@ var OptionsMenuButton = function OptionsMenuButton(_ref) {
|
|
|
16359
16482
|
timeScaleBtn: timeScaleBtn,
|
|
16360
16483
|
timeStepBtn: timeStepBtn,
|
|
16361
16484
|
speedBtn: speedBtn,
|
|
16485
|
+
animationLengthBtn: animationLengthBtn,
|
|
16362
16486
|
autoUpdateBtn: autoUpdateBtn
|
|
16363
16487
|
})))));
|
|
16364
16488
|
};
|
|
@@ -16625,11 +16749,12 @@ var drawStepPxLine = function drawStepPxLine(ctx, theme, stepPx, height, scale,
|
|
|
16625
16749
|
var drawTimeText = function drawTimeText(ctx, theme, stepPx, height, timeText, scale) {
|
|
16626
16750
|
var ctx2 = ctx;
|
|
16627
16751
|
var _theme$palette$geoweb = theme.palette.geowebColors.timeSlider.timelineText,
|
|
16752
|
+
fontSize = _theme$palette$geoweb.fontSize,
|
|
16628
16753
|
fontFamily = _theme$palette$geoweb.fontFamily,
|
|
16629
16754
|
color = _theme$palette$geoweb.color;
|
|
16630
16755
|
ctx2.fillStyle = color; // time text has smaller font than other timeline text
|
|
16631
16756
|
|
|
16632
|
-
ctx2.font = "
|
|
16757
|
+
ctx2.font = "".concat(fontSize, "px ").concat(fontFamily);
|
|
16633
16758
|
ctx2.textAlign = 'left';
|
|
16634
16759
|
|
|
16635
16760
|
if (scale === Scale.Year || scale === Scale.Month || scale === Scale.Week || scale === Scale.Day) {
|
|
@@ -16661,7 +16786,7 @@ var drawYearScaleText = function drawYearScaleText(ctx, theme, newDate, stepPx,
|
|
|
16661
16786
|
ctx2.fillStyle = color;
|
|
16662
16787
|
ctx2.font = "".concat(fontSize, "px ").concat(fontFamily);
|
|
16663
16788
|
ctx2.textAlign = 'left';
|
|
16664
|
-
ctx2.fillText(newDate, stepPx + 2, height -
|
|
16789
|
+
ctx2.fillText(newDate, stepPx + 2, height - 10);
|
|
16665
16790
|
};
|
|
16666
16791
|
|
|
16667
16792
|
var drawLeftSideDateText = function drawLeftSideDateText(ctx, theme, newDate, height) {
|
|
@@ -17127,9 +17252,9 @@ var drawBackground = function drawBackground(context, theme, visibleTimeStart, v
|
|
|
17127
17252
|
drawDefaultBackground();
|
|
17128
17253
|
drawObservedData();
|
|
17129
17254
|
drawForecastData();
|
|
17255
|
+
drawNightOrAlternateTime();
|
|
17130
17256
|
drawAnimationArea();
|
|
17131
17257
|
drawDraggableIcons();
|
|
17132
|
-
drawNightOrAlternateTime();
|
|
17133
17258
|
|
|
17134
17259
|
function drawDefaultBackground() {
|
|
17135
17260
|
ctx.fillStyle = legendNoDataBackground.rgba;
|
|
@@ -17152,18 +17277,23 @@ var drawBackground = function drawBackground(context, theme, visibleTimeStart, v
|
|
|
17152
17277
|
|
|
17153
17278
|
function drawAnimationArea() {
|
|
17154
17279
|
ctx.fillStyle = theme.palette.geowebColors.timeSlider.timelineSelectionBackground.rgba;
|
|
17155
|
-
ctx.
|
|
17280
|
+
ctx.strokeStyle = theme.palette.geowebColors.timeSlider.timelineSelectionOutline.rgba;
|
|
17281
|
+
ctx.lineWidth = 3;
|
|
17282
|
+
ctx.rect(animationStartPx, y, Math.max(animationEndPx - animationStartPx, y), height);
|
|
17283
|
+
ctx.fill();
|
|
17284
|
+
ctx.stroke();
|
|
17156
17285
|
}
|
|
17157
17286
|
|
|
17158
17287
|
function drawDraggableIcons() {
|
|
17159
17288
|
ctx.save();
|
|
17160
17289
|
var path = new Path2D(dragHandlePath);
|
|
17161
17290
|
ctx.translate(animationStartPx, y);
|
|
17162
|
-
ctx.fillStyle = theme.palette.geowebColors.timeSlider.
|
|
17291
|
+
ctx.fillStyle = theme.palette.geowebColors.timeSlider.timelineTimeScale.fill;
|
|
17163
17292
|
ctx.fill(path);
|
|
17164
17293
|
ctx.restore();
|
|
17165
17294
|
ctx.save();
|
|
17166
17295
|
ctx.translate(animationEndPx - 24, y);
|
|
17296
|
+
ctx.fillStyle = theme.palette.geowebColors.timeSlider.timelineTimeScale.fill;
|
|
17167
17297
|
ctx.fill(path);
|
|
17168
17298
|
ctx.restore();
|
|
17169
17299
|
}
|
|
@@ -17301,6 +17431,11 @@ var isSelectedTimeIconArea = function isSelectedTimeIconArea(x, selectedTimePx,
|
|
|
17301
17431
|
var isRightAnimationIconArea = function isRightAnimationIconArea(x, rightMarkerPx, width) {
|
|
17302
17432
|
return x >= rightMarkerPx - width && x <= rightMarkerPx;
|
|
17303
17433
|
};
|
|
17434
|
+
var isInsideAnimationArea = function isInsideAnimationArea(x, leftMarkerPx, rightMarkerPx) {
|
|
17435
|
+
var isInsideOnLeftSide = x >= leftMarkerPx;
|
|
17436
|
+
var isInsideOnRightSide = x <= rightMarkerPx;
|
|
17437
|
+
return isInsideOnLeftSide && isInsideOnRightSide;
|
|
17438
|
+
};
|
|
17304
17439
|
/**
|
|
17305
17440
|
* @param x The pin location
|
|
17306
17441
|
* @param selectedTimePx The selected px
|
|
@@ -17315,7 +17450,8 @@ var isLeftAnimationIconArea = function isLeftAnimationIconArea(x, leftMarkerPx,
|
|
|
17315
17450
|
var DRAG_AREA_WIDTH = 24;
|
|
17316
17451
|
|
|
17317
17452
|
var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
17318
|
-
var
|
|
17453
|
+
var mapId = _ref.mapId,
|
|
17454
|
+
centerTime = _ref.centerTime,
|
|
17319
17455
|
secondsPerPx = _ref.secondsPerPx,
|
|
17320
17456
|
_ref$dataScaleToSecon = _ref.dataScaleToSecondsPerPx,
|
|
17321
17457
|
dataScaleToSecondsPerPx = _ref$dataScaleToSecon === void 0 ? defaultDataScaleToSecondsPerPx : _ref$dataScaleToSecon,
|
|
@@ -17327,10 +17463,11 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17327
17463
|
dataEndTime = _ref.dataEndTime,
|
|
17328
17464
|
animationStartTime = _ref.animationStartTime,
|
|
17329
17465
|
animationEndTime = _ref.animationEndTime,
|
|
17330
|
-
isTimeSliderHoverOn = _ref.isTimeSliderHoverOn,
|
|
17331
17466
|
timeStep = _ref.timeStep,
|
|
17332
17467
|
_ref$mapIsActive = _ref.mapIsActive,
|
|
17333
17468
|
mapIsActive = _ref$mapIsActive === void 0 ? true : _ref$mapIsActive,
|
|
17469
|
+
unfilteredSelectedTime = _ref.unfilteredSelectedTime,
|
|
17470
|
+
setUnfilteredSelectedTime = _ref.setUnfilteredSelectedTime,
|
|
17334
17471
|
onSetNewDate = _ref.onSetNewDate,
|
|
17335
17472
|
onSetCenterTime = _ref.onSetCenterTime,
|
|
17336
17473
|
onSetAnimationStartTime = _ref.onSetAnimationStartTime,
|
|
@@ -17367,26 +17504,45 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17367
17504
|
|
|
17368
17505
|
var _React$useState11 = React.useState(false),
|
|
17369
17506
|
_React$useState12 = _slicedToArray(_React$useState11, 2),
|
|
17370
|
-
|
|
17371
|
-
|
|
17507
|
+
dragTooltipOpen = _React$useState12[0],
|
|
17508
|
+
setDragTooltipOpen = _React$useState12[1];
|
|
17372
17509
|
|
|
17373
|
-
var _React$useState13 = React.useState(
|
|
17510
|
+
var _React$useState13 = React.useState(false),
|
|
17374
17511
|
_React$useState14 = _slicedToArray(_React$useState13, 2),
|
|
17375
|
-
|
|
17376
|
-
|
|
17512
|
+
mouseDownInLegend = _React$useState14[0],
|
|
17513
|
+
setMouseDownInLegend = _React$useState14[1];
|
|
17377
17514
|
|
|
17378
|
-
var _React$useState15 = React.useState(
|
|
17515
|
+
var _React$useState15 = React.useState(animationStartTime && moment.utc(animationStartTime).unix()),
|
|
17379
17516
|
_React$useState16 = _slicedToArray(_React$useState15, 2),
|
|
17380
|
-
|
|
17381
|
-
|
|
17517
|
+
localAnimationStartTime = _React$useState16[0],
|
|
17518
|
+
setLocalAnimationStartTime = _React$useState16[1];
|
|
17382
17519
|
|
|
17383
|
-
var
|
|
17384
|
-
var pixelsToLeft = elem === null || elem === void 0 ? void 0 : elem.getBoundingClientRect()['left']; // we need to subtract the left padding so event.x start within the canvas.
|
|
17385
|
-
|
|
17386
|
-
var _React$useState17 = React.useState('auto'),
|
|
17520
|
+
var _React$useState17 = React.useState(animationEndTime && moment.utc(animationEndTime).unix()),
|
|
17387
17521
|
_React$useState18 = _slicedToArray(_React$useState17, 2),
|
|
17388
|
-
|
|
17389
|
-
|
|
17522
|
+
localAnimationEndTime = _React$useState18[0],
|
|
17523
|
+
setLocalAnimationEndTime = _React$useState18[1];
|
|
17524
|
+
|
|
17525
|
+
var _React$useState19 = React.useState(moment.utc(0)),
|
|
17526
|
+
_React$useState20 = _slicedToArray(_React$useState19, 2),
|
|
17527
|
+
tooltipTime = _React$useState20[0],
|
|
17528
|
+
setTooltipTime = _React$useState20[1];
|
|
17529
|
+
|
|
17530
|
+
var _React$useState21 = React.useState(false),
|
|
17531
|
+
_React$useState22 = _slicedToArray(_React$useState21, 2),
|
|
17532
|
+
animationAreaDragging = _React$useState22[0],
|
|
17533
|
+
setAnimationAreaDragging = _React$useState22[1];
|
|
17534
|
+
|
|
17535
|
+
var animationDiff = React.useRef();
|
|
17536
|
+
var isClickOrDrag = React.useRef();
|
|
17537
|
+
var pixelsMovedSinceStartDragging = React.useRef(0);
|
|
17538
|
+
var elem = document.querySelector(".timeSliderLegend_".concat(mapId));
|
|
17539
|
+
var pixelsToLeft = elem === null || elem === void 0 ? void 0 : elem.getBoundingClientRect()['left'];
|
|
17540
|
+
var pixelsToTop = elem === null || elem === void 0 ? void 0 : elem.getBoundingClientRect()['top'];
|
|
17541
|
+
|
|
17542
|
+
var _React$useState23 = React.useState('auto'),
|
|
17543
|
+
_React$useState24 = _slicedToArray(_React$useState23, 2),
|
|
17544
|
+
cursorStyle = _React$useState24[0],
|
|
17545
|
+
setCursorStyle = _React$useState24[1];
|
|
17390
17546
|
|
|
17391
17547
|
var curTime = selectedTime !== undefined ? moment.unix(selectedTime).toISOString() : moment.utc().toISOString();
|
|
17392
17548
|
React.useEffect(function () {
|
|
@@ -17416,7 +17572,7 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17416
17572
|
return function () {
|
|
17417
17573
|
document.removeEventListener('keydown', handleKeyDown);
|
|
17418
17574
|
};
|
|
17419
|
-
}, [
|
|
17575
|
+
}, [curTime, currentTime, dataEndTime, dataStartTime, mapIsActive, onSetCenterTime, onSetNewDate, timeStep]);
|
|
17420
17576
|
/**
|
|
17421
17577
|
* remove active drag. can happen outside canvas.
|
|
17422
17578
|
*/
|
|
@@ -17429,13 +17585,18 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17429
17585
|
setRightMarkerDragging(false);
|
|
17430
17586
|
setMouseDownInLegend(false);
|
|
17431
17587
|
setCenterTimeDragging(false);
|
|
17588
|
+
setDragTooltipOpen(false);
|
|
17589
|
+
setAnimationAreaDragging(false);
|
|
17590
|
+
startDraggingPosition.current = 0;
|
|
17591
|
+
pixelsMovedSinceStartDragging.current = 0;
|
|
17592
|
+
animationDiff.current = undefined;
|
|
17432
17593
|
};
|
|
17433
17594
|
|
|
17434
17595
|
document.addEventListener('mouseup', handleMouseUp);
|
|
17435
17596
|
return function () {
|
|
17436
17597
|
document.removeEventListener('mouseup', handleMouseUp);
|
|
17437
17598
|
};
|
|
17438
|
-
});
|
|
17599
|
+
}, [centerTimeDragging]);
|
|
17439
17600
|
var onMouseTouchMoveActions = useCallback(function (x) {
|
|
17440
17601
|
if (!localAnimationStartTime || !localAnimationEndTime) return;
|
|
17441
17602
|
|
|
@@ -17447,44 +17608,80 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17447
17608
|
rightMarkerPx = _map2[1];
|
|
17448
17609
|
|
|
17449
17610
|
if (leftMarkerDragging) {
|
|
17611
|
+
var mousePosition = leftMarkerPx + x;
|
|
17612
|
+
var rightAnimationPosition = rightMarkerPx - DRAG_AREA_WIDTH * 2; // update tooltip position while dragging
|
|
17450
17613
|
// Prevent dragging if it would cause markers to cross over, except if the markers
|
|
17451
17614
|
// are moved away from being crossed over
|
|
17452
|
-
if (x >= rightMarkerPx - DRAG_AREA_WIDTH * 2 || x <= 0) return; // change local time bounds according to either dragged marker
|
|
17453
17615
|
|
|
17454
|
-
|
|
17616
|
+
if (mousePosition >= rightAnimationPosition || mousePosition <= 0) return; // set animation drag info dialog location
|
|
17617
|
+
|
|
17618
|
+
dragTooltipPosition.current = pixelsToLeft ? mousePosition + pixelsToLeft : mousePosition; // change local time bounds according to either dragged marker
|
|
17619
|
+
|
|
17620
|
+
var mouseTimeUnix = pixelToTimestamp(mousePosition, // lets us drag on the marker
|
|
17455
17621
|
centerTime, canvasWidth, secondsPerPx);
|
|
17456
17622
|
setLocalAnimationStartTime(mouseTimeUnix);
|
|
17623
|
+
setTooltipTime(moment.unix(mouseTimeUnix));
|
|
17457
17624
|
return;
|
|
17458
17625
|
}
|
|
17459
17626
|
|
|
17460
17627
|
if (rightMarkerDragging) {
|
|
17461
|
-
|
|
17462
|
-
|
|
17628
|
+
var _mousePosition = rightMarkerPx + x;
|
|
17629
|
+
|
|
17630
|
+
var leftAnimationPosition = leftMarkerPx + DRAG_AREA_WIDTH * 2; // Similar condition for other marker
|
|
17631
|
+
|
|
17632
|
+
if (leftAnimationPosition >= _mousePosition || _mousePosition >= canvasWidth) return; // set animation drag info dialog location
|
|
17463
17633
|
|
|
17464
|
-
|
|
17634
|
+
dragTooltipPosition.current = pixelsToLeft ? _mousePosition + pixelsToLeft : _mousePosition; // change local time bounds according to either dragged marker
|
|
17635
|
+
|
|
17636
|
+
var _mouseTimeUnix = pixelToTimestamp(_mousePosition, // lets us drag on the marker
|
|
17465
17637
|
centerTime, canvasWidth, secondsPerPx);
|
|
17466
17638
|
|
|
17467
17639
|
setLocalAnimationEndTime(_mouseTimeUnix);
|
|
17640
|
+
setTooltipTime(moment.unix(_mouseTimeUnix));
|
|
17641
|
+
return;
|
|
17642
|
+
}
|
|
17643
|
+
|
|
17644
|
+
if (animationAreaDragging) {
|
|
17645
|
+
if (animationDiff.current === undefined) {
|
|
17646
|
+
var startDraggingPositionTimestamp = pixelToTimestamp(startDraggingPosition.current, centerTime, canvasWidth, secondsPerPx);
|
|
17647
|
+
var diffLeftAnimationToStartDraggingPosition = startDraggingPositionTimestamp - localAnimationStartTime;
|
|
17648
|
+
var diffRightAnimationToStartDraggingPosition = localAnimationEndTime - startDraggingPositionTimestamp;
|
|
17649
|
+
animationDiff.current = {
|
|
17650
|
+
diffStartToRight: diffRightAnimationToStartDraggingPosition,
|
|
17651
|
+
diffStartToLeft: diffLeftAnimationToStartDraggingPosition
|
|
17652
|
+
};
|
|
17653
|
+
return;
|
|
17654
|
+
}
|
|
17655
|
+
|
|
17656
|
+
pixelsMovedSinceStartDragging.current += x;
|
|
17657
|
+
var currentPositionTimestamp = pixelToTimestamp(startDraggingPosition.current + pixelsMovedSinceStartDragging.current, centerTime, canvasWidth, secondsPerPx);
|
|
17658
|
+
var _animationDiff$curren = animationDiff.current,
|
|
17659
|
+
diffStartToRight = _animationDiff$curren.diffStartToRight,
|
|
17660
|
+
diffStartToLeft = _animationDiff$curren.diffStartToLeft;
|
|
17661
|
+
var startTime = currentPositionTimestamp - diffStartToLeft;
|
|
17662
|
+
var endTime = currentPositionTimestamp + diffStartToRight;
|
|
17663
|
+
setLocalAnimationStartTime(startTime);
|
|
17664
|
+
setLocalAnimationEndTime(endTime);
|
|
17468
17665
|
}
|
|
17469
|
-
}, [
|
|
17666
|
+
}, [localAnimationStartTime, localAnimationEndTime, leftMarkerDragging, rightMarkerDragging, animationAreaDragging, centerTime, canvasWidth, secondsPerPx, pixelsToLeft, animationDiff]);
|
|
17470
17667
|
var setSelectedTime = useCallback(function (x) {
|
|
17471
|
-
|
|
17472
|
-
|
|
17668
|
+
var unfliteredSelectedTimePx = timestampToPixel(unfilteredSelectedTime, centerTime, canvasWidth, secondsPerPx) + x;
|
|
17669
|
+
setUnfilteredSelectedTime(pixelToTimestamp(unfliteredSelectedTimePx, centerTime, canvasWidth, secondsPerPx));
|
|
17670
|
+
setNewRoundedTime(unfliteredSelectedTimePx, centerTime, canvasWidth, secondsPerPx, timeStep, dataStartTime, dataEndTime, onSetNewDate);
|
|
17671
|
+
}, [canvasWidth, centerTime, dataEndTime, dataStartTime, onSetNewDate, secondsPerPx, setUnfilteredSelectedTime, timeStep, unfilteredSelectedTime]);
|
|
17473
17672
|
React.useEffect(function () {
|
|
17474
17673
|
var handleMouseMove = function handleMouseMove(event) {
|
|
17674
|
+
if (event.movementX === 0) return;
|
|
17675
|
+
|
|
17475
17676
|
if (mouseDownInLegend) {
|
|
17476
17677
|
setCenterTimeDragging(true);
|
|
17477
17678
|
var dragDistanceTime = event.movementX * secondsPerPx;
|
|
17478
17679
|
var newCenterTime = centerTime - dragDistanceTime;
|
|
17479
17680
|
onSetCenterTime && onSetCenterTime(newCenterTime);
|
|
17480
|
-
} else {
|
|
17481
|
-
|
|
17482
|
-
|
|
17483
|
-
|
|
17484
|
-
onMouseTouchMoveActions(event.clientX - pixelsToLeft);
|
|
17485
|
-
} else if (selectedTimeDragging) {
|
|
17486
|
-
setSelectedTime(event.clientX - pixelsToLeft);
|
|
17487
|
-
}
|
|
17681
|
+
} else if (leftMarkerDragging || rightMarkerDragging || animationAreaDragging) {
|
|
17682
|
+
onMouseTouchMoveActions(event.movementX);
|
|
17683
|
+
} else if (selectedTimeDragging) {
|
|
17684
|
+
setSelectedTime(event.movementX);
|
|
17488
17685
|
}
|
|
17489
17686
|
};
|
|
17490
17687
|
|
|
@@ -17492,10 +17689,14 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17492
17689
|
return function () {
|
|
17493
17690
|
document.removeEventListener('mousemove', handleMouseMove);
|
|
17494
17691
|
};
|
|
17495
|
-
}, [
|
|
17692
|
+
}, [animationAreaDragging, centerTime, leftMarkerDragging, mouseDownInLegend, onMouseTouchMoveActions, onSetCenterTime, rightMarkerDragging, secondsPerPx, selectedTimeDragging, setSelectedTime]);
|
|
17496
17693
|
var theme = useTheme();
|
|
17694
|
+
var startDraggingPosition = React.useRef(0);
|
|
17497
17695
|
|
|
17498
17696
|
var onMouseDown = function onMouseDown(x, y, width) {
|
|
17697
|
+
isClickOrDrag.current = 'click';
|
|
17698
|
+
startDraggingPosition.current = x;
|
|
17699
|
+
|
|
17499
17700
|
var _map3 = [localAnimationStartTime, localAnimationEndTime, selectedTime].map(function (timestamp) {
|
|
17500
17701
|
return timestampToPixel(timestamp, centerTime, width, secondsPerPx);
|
|
17501
17702
|
}),
|
|
@@ -17512,16 +17713,27 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17512
17713
|
}
|
|
17513
17714
|
|
|
17514
17715
|
if (animationStartTime && animationEndTime && onSetAnimationStartTime && onSetAnimationEndTime) {
|
|
17515
|
-
// start dragging either marker
|
|
17716
|
+
dragTooltipPosition.current = pixelsToLeft ? x + pixelsToLeft : x; // start dragging either marker
|
|
17717
|
+
|
|
17516
17718
|
if (isLeftAnimationIconArea(x, leftMarkerPx, DRAG_AREA_WIDTH) && !rightMarkerDragging) {
|
|
17517
17719
|
setCursorStyle('grabbing');
|
|
17518
17720
|
setLeftMarkerDragging(true);
|
|
17721
|
+
setTooltipTime(moment.utc(animationStartTime));
|
|
17722
|
+
setDragTooltipOpen(true);
|
|
17519
17723
|
return;
|
|
17520
17724
|
}
|
|
17521
17725
|
|
|
17522
17726
|
if (isRightAnimationIconArea(x, rightMarkerPx, DRAG_AREA_WIDTH) && !leftMarkerDragging) {
|
|
17523
17727
|
setCursorStyle('grabbing');
|
|
17524
17728
|
setRightMarkerDragging(true);
|
|
17729
|
+
setTooltipTime(moment.utc(animationEndTime));
|
|
17730
|
+
setDragTooltipOpen(true);
|
|
17731
|
+
return;
|
|
17732
|
+
}
|
|
17733
|
+
|
|
17734
|
+
if (isInsideAnimationArea(x, leftMarkerPx, rightMarkerPx) && !animationAreaDragging) {
|
|
17735
|
+
setCursorStyle('grabbing');
|
|
17736
|
+
setAnimationAreaDragging(true);
|
|
17525
17737
|
return;
|
|
17526
17738
|
}
|
|
17527
17739
|
} // clicking the timeslider
|
|
@@ -17530,18 +17742,36 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17530
17742
|
setMouseDownInLegend(true);
|
|
17531
17743
|
};
|
|
17532
17744
|
|
|
17745
|
+
React.useEffect(function () {
|
|
17746
|
+
var stoppedDragging = !leftMarkerDragging && !rightMarkerDragging && !animationAreaDragging;
|
|
17747
|
+
|
|
17748
|
+
if (stoppedDragging) {
|
|
17749
|
+
if (localAnimationStartTime !== convertStringTimeToUnix(animationStartTime)) {
|
|
17750
|
+
onSetAnimationStartTime(moment.utc(localAnimationStartTime * 1000).format(dateFormat));
|
|
17751
|
+
}
|
|
17752
|
+
|
|
17753
|
+
if (localAnimationEndTime !== convertStringTimeToUnix(animationEndTime)) {
|
|
17754
|
+
onSetAnimationEndTime(moment.utc(localAnimationEndTime * 1000).format(dateFormat));
|
|
17755
|
+
}
|
|
17756
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17757
|
+
|
|
17758
|
+
}, [leftMarkerDragging, rightMarkerDragging, animationAreaDragging]);
|
|
17759
|
+
|
|
17533
17760
|
var onMouseUpTouchEnd = function onMouseUpTouchEnd(x) {
|
|
17534
|
-
|
|
17535
|
-
|
|
17536
|
-
|
|
17537
|
-
|
|
17538
|
-
onSetAnimationEndTime(moment.utc(localAnimationEndTime * 1000).format(dateFormat));
|
|
17539
|
-
} else if (!selectedTimeDragging && !centerTimeDragging) {
|
|
17540
|
-
setSelectedTime(x);
|
|
17761
|
+
if (isClickOrDrag.current === 'click') {
|
|
17762
|
+
// we need to set the unfiltered time, so the timebox will update accordingly
|
|
17763
|
+
setUnfilteredSelectedTime(pixelToTimestamp(x, centerTime, canvasWidth, secondsPerPx));
|
|
17764
|
+
setNewRoundedTime(x, centerTime, canvasWidth, secondsPerPx, timeStep, dataStartTime, dataEndTime, onSetNewDate);
|
|
17541
17765
|
}
|
|
17766
|
+
|
|
17767
|
+
isClickOrDrag.current = undefined;
|
|
17542
17768
|
};
|
|
17543
17769
|
|
|
17544
17770
|
var onMouseMove = function onMouseMove(x, y, event, width) {
|
|
17771
|
+
if (isClickOrDrag.current === 'click') {
|
|
17772
|
+
isClickOrDrag.current = 'drag';
|
|
17773
|
+
}
|
|
17774
|
+
|
|
17545
17775
|
if (selectedTimeDragging || leftMarkerDragging || rightMarkerDragging) return;
|
|
17546
17776
|
|
|
17547
17777
|
var _map5 = [localAnimationStartTime, localAnimationEndTime, selectedTime].map(function (timestamp) {
|
|
@@ -17556,18 +17786,41 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17556
17786
|
var leftAnimationIconArea = isLeftAnimationIconArea(x, leftMarkerPx, DRAG_AREA_WIDTH);
|
|
17557
17787
|
var rightAnimationIconArea = isRightAnimationIconArea(x, rightMarkerPx, DRAG_AREA_WIDTH);
|
|
17558
17788
|
var selectedTimeArea = isSelectedTimeIconArea(x, selectedTimePx, DRAG_AREA_WIDTH);
|
|
17789
|
+
var insideAnimationArea = isInsideAnimationArea(x, leftMarkerPx, rightMarkerPx);
|
|
17559
17790
|
var hoveringLegendHandles = leftAnimationIconArea || rightAnimationIconArea || selectedTimeArea || mouseDownInLegend;
|
|
17560
17791
|
|
|
17561
17792
|
if (hoveringLegendHandles) {
|
|
17562
17793
|
setCursorStyle('ew-resize');
|
|
17794
|
+
} else if (insideAnimationArea && !animationAreaDragging) {
|
|
17795
|
+
setCursorStyle('grab');
|
|
17796
|
+
} else if (insideAnimationArea && animationAreaDragging) {
|
|
17797
|
+
setCursorStyle('grabbing');
|
|
17563
17798
|
} else {
|
|
17564
17799
|
setCursorStyle('auto');
|
|
17565
17800
|
}
|
|
17566
17801
|
};
|
|
17567
17802
|
|
|
17568
|
-
|
|
17803
|
+
var dragTooltipPosition = React.useRef();
|
|
17804
|
+
var popperRef = React.useRef(null);
|
|
17805
|
+
|
|
17806
|
+
var setTooltipPosition = function setTooltipPosition() {
|
|
17807
|
+
var tooltipX = dragTooltipPosition.current;
|
|
17808
|
+
var tooltipY = pixelsToTop && pixelsToTop - TIME_SLIDER_LEGEND_HEIGHT * 2.5;
|
|
17809
|
+
return new DOMRect(tooltipX, tooltipY, 0, 0);
|
|
17810
|
+
};
|
|
17811
|
+
|
|
17812
|
+
return /*#__PURE__*/React.createElement(CustomTooltip, {
|
|
17813
|
+
title: tooltipTime.format('HH:mm'),
|
|
17814
|
+
open: dragTooltipOpen,
|
|
17815
|
+
PopperProps: {
|
|
17816
|
+
popperRef: popperRef,
|
|
17817
|
+
anchorEl: {
|
|
17818
|
+
getBoundingClientRect: setTooltipPosition
|
|
17819
|
+
}
|
|
17820
|
+
}
|
|
17821
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
17569
17822
|
"data-testid": "timeSliderLegend",
|
|
17570
|
-
className: "
|
|
17823
|
+
className: "timeSliderLegend_".concat(mapId),
|
|
17571
17824
|
sx: {
|
|
17572
17825
|
height: "".concat(TIME_SLIDER_LEGEND_HEIGHT, "px"),
|
|
17573
17826
|
borderRadius: '4.5px',
|
|
@@ -17589,9 +17842,13 @@ var TimeSliderLegend = function TimeSliderLegend(_ref) {
|
|
|
17589
17842
|
setCanvasWidth(width);
|
|
17590
17843
|
drawTimeSliderLegend(ctx, theme, width, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTime, scale, currentTime, localAnimationStartTime, localAnimationEndTime, dataStartTime, dataEndTime);
|
|
17591
17844
|
}
|
|
17592
|
-
}));
|
|
17845
|
+
})));
|
|
17593
17846
|
};
|
|
17594
17847
|
|
|
17848
|
+
function convertStringTimeToUnix(time) {
|
|
17849
|
+
return time ? moment.utc(time).unix() : undefined;
|
|
17850
|
+
}
|
|
17851
|
+
|
|
17595
17852
|
var TIME_SLIDER_LEGEND_HEIGHT = 24;
|
|
17596
17853
|
|
|
17597
17854
|
/* *
|
|
@@ -17643,7 +17900,7 @@ var HideSliderButton = function HideSliderButton(_ref) {
|
|
|
17643
17900
|
* */
|
|
17644
17901
|
var onMouseMove = function onMouseMove(x, width, selectedTime, centerTime, secondsPerPx, mouseDownInTimeBox, isTimeBoxArea, setCursorStyle) {
|
|
17645
17902
|
if (!selectedTime || mouseDownInTimeBox) return;
|
|
17646
|
-
var selectedTimePx = timestampToPixel(selectedTime
|
|
17903
|
+
var selectedTimePx = timestampToPixel(selectedTime, centerTime, width, secondsPerPx);
|
|
17647
17904
|
|
|
17648
17905
|
if (isTimeBoxArea(x, selectedTimePx)) {
|
|
17649
17906
|
setCursorStyle('grab');
|
|
@@ -17653,7 +17910,7 @@ var onMouseMove = function onMouseMove(x, width, selectedTime, centerTime, secon
|
|
|
17653
17910
|
};
|
|
17654
17911
|
var onMouseDown = function onMouseDown(x, width, selectedTime, centerTime, secondsPerPx, isTimeBoxArea, setCursorStyle, setMouseDownInTimeBox) {
|
|
17655
17912
|
if (!selectedTime) return;
|
|
17656
|
-
var selectedTimePx = timestampToPixel(selectedTime
|
|
17913
|
+
var selectedTimePx = timestampToPixel(selectedTime, centerTime, width, secondsPerPx);
|
|
17657
17914
|
|
|
17658
17915
|
if (isTimeBoxArea(x, selectedTimePx)) {
|
|
17659
17916
|
setCursorStyle('grabbing');
|
|
@@ -17735,7 +17992,9 @@ var TimeSliderCurrentTimeBox = function TimeSliderCurrentTimeBox(_ref) {
|
|
|
17735
17992
|
timeStep = _ref.timeStep,
|
|
17736
17993
|
dataStartTime = _ref.dataStartTime,
|
|
17737
17994
|
dataEndTime = _ref.dataEndTime,
|
|
17738
|
-
|
|
17995
|
+
unfilteredSelectedTime = _ref.unfilteredSelectedTime,
|
|
17996
|
+
onSetNewDate = _ref.onSetNewDate,
|
|
17997
|
+
setUnfilteredSelectedTime = _ref.setUnfilteredSelectedTime;
|
|
17739
17998
|
var TIME_BOX_WIDTH = 140;
|
|
17740
17999
|
var theme = useTheme();
|
|
17741
18000
|
|
|
@@ -17780,11 +18039,9 @@ var TimeSliderCurrentTimeBox = function TimeSliderCurrentTimeBox(_ref) {
|
|
|
17780
18039
|
React__default.useEffect(function () {
|
|
17781
18040
|
var handleMouseMove = function handleMouseMove(event) {
|
|
17782
18041
|
if (mouseDownInTimeBox) {
|
|
17783
|
-
var
|
|
17784
|
-
|
|
17785
|
-
|
|
17786
|
-
if (!rect) return;
|
|
17787
|
-
setNewRoundedTime(event.clientX - rect['left'], centerTime, canvasWidth, secondsPerPx, timeStep, dataStartTime, dataEndTime, onSetNewDate);
|
|
18042
|
+
var localSelectedTimePx = timestampToPixel(unfilteredSelectedTime, centerTime, canvasWidth, secondsPerPx) + event.movementX;
|
|
18043
|
+
setUnfilteredSelectedTime(pixelToTimestamp(localSelectedTimePx, centerTime, canvasWidth, secondsPerPx));
|
|
18044
|
+
setNewRoundedTime(localSelectedTimePx, centerTime, canvasWidth, secondsPerPx, timeStep, dataStartTime, dataEndTime, onSetNewDate);
|
|
17788
18045
|
}
|
|
17789
18046
|
};
|
|
17790
18047
|
|
|
@@ -17792,7 +18049,7 @@ var TimeSliderCurrentTimeBox = function TimeSliderCurrentTimeBox(_ref) {
|
|
|
17792
18049
|
return function () {
|
|
17793
18050
|
document.removeEventListener('mousemove', handleMouseMove);
|
|
17794
18051
|
};
|
|
17795
|
-
});
|
|
18052
|
+
}, [canvasWidth, centerTime, dataEndTime, dataStartTime, mouseDownInTimeBox, onSetNewDate, secondsPerPx, setUnfilteredSelectedTime, timeStep, unfilteredSelectedTime]);
|
|
17796
18053
|
return /*#__PURE__*/React__default.createElement(Box$2, {
|
|
17797
18054
|
"data-testid": "timeSliderTimeBox",
|
|
17798
18055
|
className: "timeSliderTimeBox",
|
|
@@ -17813,32 +18070,18 @@ var TimeSliderCurrentTimeBox = function TimeSliderCurrentTimeBox(_ref) {
|
|
|
17813
18070
|
onMouseDown(x, width, selectedTime, centerTime, secondsPerPx, isTimeBoxArea, setCursorStyle, setMouseDownInTimeBox);
|
|
17814
18071
|
},
|
|
17815
18072
|
onMouseUp: function onMouseUp(x) {
|
|
17816
|
-
|
|
18073
|
+
if (mouseDownInTimeBox) {
|
|
18074
|
+
setUnfilteredSelectedTime(pixelToTimestamp(x, centerTime, canvasWidth, secondsPerPx));
|
|
18075
|
+
setNewRoundedTime(x, centerTime, canvasWidth, secondsPerPx, timeStep, dataStartTime, dataEndTime, onSetNewDate);
|
|
18076
|
+
}
|
|
17817
18077
|
},
|
|
17818
18078
|
onRenderCanvas: function onRenderCanvas(ctx, width, height) {
|
|
17819
18079
|
setCanvasWidth(width);
|
|
17820
|
-
renderTimeSliderCurrentTimeBox(ctx, theme, width, height, centerTime, selectedTime
|
|
18080
|
+
renderTimeSliderCurrentTimeBox(ctx, theme, width, height, centerTime, selectedTime, secondsPerPx, scale);
|
|
17821
18081
|
}
|
|
17822
18082
|
}));
|
|
17823
18083
|
};
|
|
17824
18084
|
|
|
17825
|
-
/* *
|
|
17826
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17827
|
-
* you may not use this file except in compliance with the License.
|
|
17828
|
-
* You may obtain a copy of the License at
|
|
17829
|
-
*
|
|
17830
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17831
|
-
*
|
|
17832
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
17833
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
17834
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17835
|
-
* See the License for the specific language governing permissions and
|
|
17836
|
-
* limitations under the License.
|
|
17837
|
-
*
|
|
17838
|
-
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
17839
|
-
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
17840
|
-
* */
|
|
17841
|
-
|
|
17842
18085
|
var useTimeSliderKeyBoardControl = function useTimeSliderKeyBoardControl(mapIsActive, isVisible, onToggleTimeSlider) {
|
|
17843
18086
|
React.useEffect(function () {
|
|
17844
18087
|
var handleKeyDown = function handleKeyDown(event) {
|
|
@@ -17859,12 +18102,13 @@ var useTimeSliderKeyBoardControl = function useTimeSliderKeyBoardControl(mapIsAc
|
|
|
17859
18102
|
var defaultProps = {
|
|
17860
18103
|
centerTime: moment.utc().startOf('day').hours(12).unix(),
|
|
17861
18104
|
secondsPerPx: 5,
|
|
17862
|
-
selectedTime: moment.utc().startOf('day').hours(12),
|
|
18105
|
+
selectedTime: moment.utc().startOf('day').hours(12).unix(),
|
|
17863
18106
|
dataScaleToSecondsPerPx: defaultDataScaleToSecondsPerPx
|
|
17864
18107
|
};
|
|
17865
18108
|
|
|
17866
18109
|
var TimeSlider = function TimeSlider(_ref) {
|
|
17867
|
-
var
|
|
18110
|
+
var mapId = _ref.mapId,
|
|
18111
|
+
buttons = _ref.buttons,
|
|
17868
18112
|
timeBox = _ref.timeBox,
|
|
17869
18113
|
legend = _ref.legend,
|
|
17870
18114
|
_ref$mapIsActive = _ref.mapIsActive,
|
|
@@ -17874,6 +18118,12 @@ var TimeSlider = function TimeSlider(_ref) {
|
|
|
17874
18118
|
_ref$onToggleTimeSlid = _ref.onToggleTimeSlider,
|
|
17875
18119
|
onToggleTimeSlider = _ref$onToggleTimeSlid === void 0 ? function () {} : _ref$onToggleTimeSlid;
|
|
17876
18120
|
useTimeSliderKeyBoardControl(mapIsActive, isVisible, onToggleTimeSlider);
|
|
18121
|
+
|
|
18122
|
+
var _React$useState = React.useState(defaultProps.selectedTime),
|
|
18123
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
18124
|
+
unfilteredSelectedTime = _React$useState2[0],
|
|
18125
|
+
setUnfilteredSelectedTime = _React$useState2[1];
|
|
18126
|
+
|
|
17877
18127
|
var visibilityState = isVisible ? 'visible' : 'hidden';
|
|
17878
18128
|
return isVisible ? /*#__PURE__*/React.createElement(Grid, {
|
|
17879
18129
|
style: {
|
|
@@ -17898,7 +18148,8 @@ var TimeSlider = function TimeSlider(_ref) {
|
|
|
17898
18148
|
zIndex: 99
|
|
17899
18149
|
}
|
|
17900
18150
|
}, timeBox || /*#__PURE__*/React.createElement(TimeSliderCurrentTimeBox, Object.assign({}, defaultProps, {
|
|
17901
|
-
|
|
18151
|
+
unfilteredSelectedTime: unfilteredSelectedTime,
|
|
18152
|
+
setUnfilteredSelectedTime: setUnfilteredSelectedTime
|
|
17902
18153
|
}))), /*#__PURE__*/React.createElement(Grid, {
|
|
17903
18154
|
item: true
|
|
17904
18155
|
}), /*#__PURE__*/React.createElement(Grid, {
|
|
@@ -17906,8 +18157,10 @@ var TimeSlider = function TimeSlider(_ref) {
|
|
|
17906
18157
|
}, buttons || /*#__PURE__*/React.createElement(TimeSliderButtons, null)), /*#__PURE__*/React.createElement(Grid, {
|
|
17907
18158
|
item: true
|
|
17908
18159
|
}, legend || /*#__PURE__*/React.createElement(TimeSliderLegend, Object.assign({}, defaultProps, {
|
|
17909
|
-
|
|
17910
|
-
mapIsActive: mapIsActive
|
|
18160
|
+
mapId: mapId,
|
|
18161
|
+
mapIsActive: mapIsActive,
|
|
18162
|
+
unfilteredSelectedTime: unfilteredSelectedTime,
|
|
18163
|
+
setUnfilteredSelectedTime: setUnfilteredSelectedTime
|
|
17911
18164
|
})), ' '), /*#__PURE__*/React.createElement(Grid, {
|
|
17912
18165
|
item: true,
|
|
17913
18166
|
sx: {
|
|
@@ -18041,12 +18294,6 @@ var TimeStepButtonComponent = function TimeStepButtonComponent(_ref) {
|
|
|
18041
18294
|
var isTimestepAuto$1 = useSelector(function (store) {
|
|
18042
18295
|
return isTimestepAuto(store, mapId);
|
|
18043
18296
|
});
|
|
18044
|
-
var activeLayerId = useSelector(function (store) {
|
|
18045
|
-
return getActiveLayerId(store, mapId);
|
|
18046
|
-
});
|
|
18047
|
-
var activeLayerTimeDimension = useSelector(function (store) {
|
|
18048
|
-
return getLayerTimeDimension(store, activeLayerId);
|
|
18049
|
-
});
|
|
18050
18297
|
var onToggleTimestepAuto = React.useCallback(function () {
|
|
18051
18298
|
dispatch(mapActions$1.toggleTimestepAuto({
|
|
18052
18299
|
mapId: mapId,
|
|
@@ -18066,9 +18313,7 @@ var TimeStepButtonComponent = function TimeStepButtonComponent(_ref) {
|
|
|
18066
18313
|
timeStep: timeStep,
|
|
18067
18314
|
onChangeTimeStep: onSetTimeStep,
|
|
18068
18315
|
disabled: isAnimating$1,
|
|
18069
|
-
|
|
18070
|
-
onToggleTimestepAuto: onToggleTimestepAuto,
|
|
18071
|
-
timeDimension: activeLayerTimeDimension
|
|
18316
|
+
onToggleTimestepAuto: onToggleTimestepAuto
|
|
18072
18317
|
});
|
|
18073
18318
|
};
|
|
18074
18319
|
|
|
@@ -18188,6 +18433,57 @@ var NowButtonConnect = function NowButtonConnect(_ref) {
|
|
|
18188
18433
|
});
|
|
18189
18434
|
};
|
|
18190
18435
|
|
|
18436
|
+
/* *
|
|
18437
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18438
|
+
* you may not use this file except in compliance with the License.
|
|
18439
|
+
* You may obtain a copy of the License at
|
|
18440
|
+
*
|
|
18441
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18442
|
+
*
|
|
18443
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18444
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18445
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18446
|
+
* See the License for the specific language governing permissions and
|
|
18447
|
+
* limitations under the License.
|
|
18448
|
+
*
|
|
18449
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
18450
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
18451
|
+
* */
|
|
18452
|
+
|
|
18453
|
+
var AnimationLengthButtonConnect = function AnimationLengthButtonConnect(_ref) {
|
|
18454
|
+
var mapId = _ref.mapId;
|
|
18455
|
+
var dispatch = useDispatch();
|
|
18456
|
+
var isAnimating$1 = useSelector(function (store) {
|
|
18457
|
+
return isAnimating(store, mapId);
|
|
18458
|
+
});
|
|
18459
|
+
var animationStartTime = useSelector(function (store) {
|
|
18460
|
+
return getAnimationStartTime(store, mapId);
|
|
18461
|
+
});
|
|
18462
|
+
var animationEndTime = useSelector(function (store) {
|
|
18463
|
+
return getAnimationEndTime(store, mapId);
|
|
18464
|
+
});
|
|
18465
|
+
var currentDiffInMinutes = moment(animationEndTime).diff(moment(animationStartTime), 'minutes');
|
|
18466
|
+
var currentLength = Object.values(AnimationLength).map(function (val) {
|
|
18467
|
+
return Number(val);
|
|
18468
|
+
}).find(function (val) {
|
|
18469
|
+
return val >= currentDiffInMinutes;
|
|
18470
|
+
});
|
|
18471
|
+
|
|
18472
|
+
var handlechangeAnimationLength = function handlechangeAnimationLength(length) {
|
|
18473
|
+
var animationEndTime = moment(animationStartTime).add(length, 'minutes').toISOString();
|
|
18474
|
+
dispatch(mapActions$1.setAnimationEndTime({
|
|
18475
|
+
mapId: mapId,
|
|
18476
|
+
animationEndTime: animationEndTime
|
|
18477
|
+
}));
|
|
18478
|
+
};
|
|
18479
|
+
|
|
18480
|
+
return /*#__PURE__*/React.createElement(AnimationLengthButton, {
|
|
18481
|
+
disabled: isAnimating$1,
|
|
18482
|
+
animationLength: currentLength || Number(AnimationLength.Hours24),
|
|
18483
|
+
onChangeAnimationLength: handlechangeAnimationLength
|
|
18484
|
+
});
|
|
18485
|
+
};
|
|
18486
|
+
|
|
18191
18487
|
/* *
|
|
18192
18488
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18193
18489
|
* you may not use this file except in compliance with the License.
|
|
@@ -18216,11 +18512,35 @@ var NowButtonConnect = function NowButtonConnect(_ref) {
|
|
|
18216
18512
|
var OptionsMenuButtonConnect = function OptionsMenuButtonConnect(_ref) {
|
|
18217
18513
|
var sourceId = _ref.sourceId,
|
|
18218
18514
|
mapId = _ref.mapId;
|
|
18515
|
+
var dispatch = useDispatch();
|
|
18516
|
+
var isTimestepAuto$1 = useSelector(function (store) {
|
|
18517
|
+
return isTimestepAuto(store, mapId);
|
|
18518
|
+
});
|
|
18519
|
+
var timeStep = useSelector(function (store) {
|
|
18520
|
+
return getMapTimeStep(store, mapId);
|
|
18521
|
+
});
|
|
18522
|
+
var activeLayerId = useSelector(function (store) {
|
|
18523
|
+
return getActiveLayerId(store, mapId);
|
|
18524
|
+
});
|
|
18525
|
+
var activeLayerTimeDimension = useSelector(function (store) {
|
|
18526
|
+
return getLayerTimeDimension(store, activeLayerId);
|
|
18527
|
+
});
|
|
18528
|
+
var onSetTimeStep = React.useCallback(function (timeStep, origin) {
|
|
18529
|
+
dispatch(mapActions$1.setTimeStep(Object.assign({
|
|
18530
|
+
mapId: mapId,
|
|
18531
|
+
timeStep: timeStep
|
|
18532
|
+
}, origin && {
|
|
18533
|
+
origin: origin
|
|
18534
|
+
})));
|
|
18535
|
+
}, [dispatch, mapId]);
|
|
18219
18536
|
return /*#__PURE__*/React.createElement(OptionsMenuButton, {
|
|
18220
18537
|
nowBtn: /*#__PURE__*/React.createElement(NowButtonConnect, {
|
|
18221
18538
|
mapId: mapId,
|
|
18222
18539
|
sourceId: sourceId
|
|
18223
18540
|
}),
|
|
18541
|
+
animationLengthBtn: /*#__PURE__*/React.createElement(AnimationLengthButtonConnect, {
|
|
18542
|
+
mapId: mapId
|
|
18543
|
+
}),
|
|
18224
18544
|
autoUpdateBtn: /*#__PURE__*/React.createElement(AutoUpdateButtonConnect, {
|
|
18225
18545
|
mapId: mapId
|
|
18226
18546
|
}),
|
|
@@ -18232,7 +18552,11 @@ var OptionsMenuButtonConnect = function OptionsMenuButtonConnect(_ref) {
|
|
|
18232
18552
|
}),
|
|
18233
18553
|
timeScaleBtn: /*#__PURE__*/React.createElement(TimeScaleButtonConnect, {
|
|
18234
18554
|
mapId: mapId
|
|
18235
|
-
})
|
|
18555
|
+
}),
|
|
18556
|
+
timeStep: timeStep,
|
|
18557
|
+
isTimestepAuto: isTimestepAuto$1,
|
|
18558
|
+
onChangeTimeStep: onSetTimeStep,
|
|
18559
|
+
timeDimension: activeLayerTimeDimension
|
|
18236
18560
|
});
|
|
18237
18561
|
};
|
|
18238
18562
|
|
|
@@ -18354,9 +18678,11 @@ var connectRedux$2 = connect(function (store, props) {
|
|
|
18354
18678
|
timeValue: getTime(getSynchronizationGroupStore(store), props.sourceId),
|
|
18355
18679
|
animationStartTime: getAnimationStartTime(store, props.mapId),
|
|
18356
18680
|
animationEndTime: getAnimationEndTime(store, props.mapId),
|
|
18357
|
-
activeWindowId: getActiveWindowId(store)
|
|
18681
|
+
activeWindowId: getActiveWindowId(store),
|
|
18682
|
+
unfilteredSelectedTime: getTimeSliderUnfilteredSelectedTime(store, props.mapId)
|
|
18358
18683
|
};
|
|
18359
18684
|
}, {
|
|
18685
|
+
setTimeSliderUnfilteredSelectedTime: mapActions$1.setTimeSliderUnfilteredSelectedTime,
|
|
18360
18686
|
stopMapAnimation: mapActions$1.mapStopAnimation,
|
|
18361
18687
|
setTime: genericActions.setTime,
|
|
18362
18688
|
mapSetTimeSliderCenterTime: mapActions$1.setTimeSliderCenterTime,
|
|
@@ -18385,7 +18711,9 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
|
|
|
18385
18711
|
mapSetTimeSliderCenterTime = _ref.mapSetTimeSliderCenterTime,
|
|
18386
18712
|
mapSetTimeSliderSecondsPerPx = _ref.mapSetTimeSliderSecondsPerPx,
|
|
18387
18713
|
setAnimationStartTime = _ref.setAnimationStartTime,
|
|
18388
|
-
setAnimationEndTime = _ref.setAnimationEndTime
|
|
18714
|
+
setAnimationEndTime = _ref.setAnimationEndTime,
|
|
18715
|
+
unfilteredSelectedTime = _ref.unfilteredSelectedTime,
|
|
18716
|
+
setTimeSliderUnfilteredSelectedTime = _ref.setTimeSliderUnfilteredSelectedTime;
|
|
18389
18717
|
|
|
18390
18718
|
var _getTimeBounds = getTimeBounds(dimensions),
|
|
18391
18719
|
selectedTime = _getTimeBounds.selectedTime;
|
|
@@ -18399,6 +18727,7 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
|
|
|
18399
18727
|
|
|
18400
18728
|
var mapIsActive = mapId === activeWindowId;
|
|
18401
18729
|
return /*#__PURE__*/React.createElement(TimeSliderLegend, {
|
|
18730
|
+
mapId: mapId,
|
|
18402
18731
|
centerTime: centerTime,
|
|
18403
18732
|
secondsPerPx: secondsPerPx,
|
|
18404
18733
|
dataScaleToSecondsPerPx: dataScaleToSecondsPerPx,
|
|
@@ -18412,6 +18741,13 @@ var TimeSliderLegendConnect = function TimeSliderLegendConnect(_ref) {
|
|
|
18412
18741
|
animationEndTime: animationEndTime,
|
|
18413
18742
|
timeStep: timeStep,
|
|
18414
18743
|
mapIsActive: mapIsActive,
|
|
18744
|
+
unfilteredSelectedTime: unfilteredSelectedTime || selectedTime,
|
|
18745
|
+
setUnfilteredSelectedTime: function setUnfilteredSelectedTime(timeSliderUnfilteredSelectedTime) {
|
|
18746
|
+
if (setTimeSliderUnfilteredSelectedTime) setTimeSliderUnfilteredSelectedTime({
|
|
18747
|
+
timeSliderUnfilteredSelectedTime: timeSliderUnfilteredSelectedTime,
|
|
18748
|
+
mapId: mapId
|
|
18749
|
+
});
|
|
18750
|
+
},
|
|
18415
18751
|
onSetNewDate: function onSetNewDate(newDate) {
|
|
18416
18752
|
if (isAnimating) {
|
|
18417
18753
|
stopMapAnimation({
|
|
@@ -18475,9 +18811,11 @@ var connectRedux$1 = connect(function (store, props) {
|
|
|
18475
18811
|
secondsPerPx: getMapTimeSliderSecondsPerPx(store, props.mapId),
|
|
18476
18812
|
scale: getMapTimeSliderScale(store, props.mapId),
|
|
18477
18813
|
timeStep: getMapTimeStep(store, props.mapId),
|
|
18478
|
-
isAnimating: isAnimating(store, props.mapId)
|
|
18814
|
+
isAnimating: isAnimating(store, props.mapId),
|
|
18815
|
+
unfilteredSelectedTime: getTimeSliderUnfilteredSelectedTime(store, props.mapId)
|
|
18479
18816
|
};
|
|
18480
18817
|
}, {
|
|
18818
|
+
setTimeSliderUnfilteredSelectedTime: mapActions$1.setTimeSliderUnfilteredSelectedTime,
|
|
18481
18819
|
stopMapAnimation: mapActions$1.mapStopAnimation,
|
|
18482
18820
|
setTime: genericActions.setTime
|
|
18483
18821
|
});
|
|
@@ -18493,10 +18831,12 @@ var TimeSliderCurrentTimeBoxConnectComponent = function TimeSliderCurrentTimeBox
|
|
|
18493
18831
|
timeStep = _ref.timeStep,
|
|
18494
18832
|
isAnimating = _ref.isAnimating,
|
|
18495
18833
|
stopMapAnimation = _ref.stopMapAnimation,
|
|
18834
|
+
unfilteredSelectedTime = _ref.unfilteredSelectedTime,
|
|
18835
|
+
setTimeSliderUnfilteredSelectedTime = _ref.setTimeSliderUnfilteredSelectedTime,
|
|
18496
18836
|
setTime = _ref.setTime;
|
|
18497
18837
|
|
|
18498
|
-
var
|
|
18499
|
-
selectedTime =
|
|
18838
|
+
var _getTimeBounds = getTimeBounds(dimensions),
|
|
18839
|
+
selectedTime = _getTimeBounds.selectedTime;
|
|
18500
18840
|
|
|
18501
18841
|
var _getDataLimitsFromLay = getDataLimitsFromLayers(layers),
|
|
18502
18842
|
_getDataLimitsFromLay2 = _slicedToArray(_getDataLimitsFromLay, 2),
|
|
@@ -18511,6 +18851,13 @@ var TimeSliderCurrentTimeBoxConnectComponent = function TimeSliderCurrentTimeBox
|
|
|
18511
18851
|
dataStartTime: dataStartTime,
|
|
18512
18852
|
dataEndTime: dataEndTime,
|
|
18513
18853
|
timeStep: timeStep,
|
|
18854
|
+
unfilteredSelectedTime: unfilteredSelectedTime || selectedTime,
|
|
18855
|
+
setUnfilteredSelectedTime: function setUnfilteredSelectedTime(timeSliderUnfilteredSelectedTime) {
|
|
18856
|
+
if (setTimeSliderUnfilteredSelectedTime) setTimeSliderUnfilteredSelectedTime({
|
|
18857
|
+
timeSliderUnfilteredSelectedTime: timeSliderUnfilteredSelectedTime,
|
|
18858
|
+
mapId: mapId
|
|
18859
|
+
});
|
|
18860
|
+
},
|
|
18514
18861
|
onSetNewDate: function onSetNewDate(newDate) {
|
|
18515
18862
|
if (isAnimating) {
|
|
18516
18863
|
stopMapAnimation({
|
|
@@ -18595,6 +18942,7 @@ var ConnectedTimeSlider = function ConnectedTimeSlider(_ref) {
|
|
|
18595
18942
|
};
|
|
18596
18943
|
|
|
18597
18944
|
return /*#__PURE__*/React.createElement(TimeSlider, {
|
|
18945
|
+
mapId: mapId,
|
|
18598
18946
|
buttons: /*#__PURE__*/React.createElement(TimeSliderButtonsConnect, {
|
|
18599
18947
|
mapId: mapId,
|
|
18600
18948
|
sourceId: sourceId
|
|
@@ -22749,12 +23097,11 @@ var useKeyboardZoomAndPan = function useKeyboardZoomAndPan(mapIsActive, mapId) {
|
|
|
22749
23097
|
var handleKeyPress = function handleKeyPress(event) {
|
|
22750
23098
|
var target = event.target;
|
|
22751
23099
|
var map = getWMJSMapById(mapId);
|
|
23100
|
+
var key = event.key,
|
|
23101
|
+
type = event.type;
|
|
23102
|
+
keysPressedDown[key] = type === 'keydown';
|
|
22752
23103
|
|
|
22753
23104
|
if (map && target.tagName !== 'INPUT' && mapIsActive) {
|
|
22754
|
-
var key = event.key,
|
|
22755
|
-
type = event.type;
|
|
22756
|
-
keysPressedDown[key] = type === 'keydown';
|
|
22757
|
-
|
|
22758
23105
|
if (keysPressedDown['+']) {
|
|
22759
23106
|
map.zoomIn(1);
|
|
22760
23107
|
} else if (keysPressedDown['-']) {
|
|
@@ -23131,6 +23478,9 @@ var OptionsMenuConnect = function OptionsMenuConnect(_ref) {
|
|
|
23131
23478
|
mapId: mapId,
|
|
23132
23479
|
sourceId: sourceId
|
|
23133
23480
|
}),
|
|
23481
|
+
animationLengthBtn: /*#__PURE__*/React__default.createElement(AnimationLengthButtonConnect, {
|
|
23482
|
+
mapId: mapId
|
|
23483
|
+
}),
|
|
23134
23484
|
autoUpdateBtn: /*#__PURE__*/React__default.createElement(AutoUpdateButtonConnect, {
|
|
23135
23485
|
mapId: mapId
|
|
23136
23486
|
}),
|
|
@@ -24735,21 +25085,29 @@ var CoreThemeStoreProvider = function CoreThemeStoreProvider(_ref3) {
|
|
|
24735
25085
|
* */
|
|
24736
25086
|
var MapWarningProperties = function MapWarningProperties(_ref) {
|
|
24737
25087
|
var selectedFeatureProperties = _ref.selectedFeatureProperties,
|
|
24738
|
-
languageIndex = _ref.languageIndex
|
|
25088
|
+
languageIndex = _ref.languageIndex,
|
|
25089
|
+
parentSize = _ref.parentSize;
|
|
24739
25090
|
var language = languageIndex || 0;
|
|
25091
|
+
var newWidth = parentSize ? parentSize - 100 : 350;
|
|
24740
25092
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
25093
|
+
style: {
|
|
25094
|
+
position: 'fixed',
|
|
25095
|
+
width: "".concat(newWidth, "px"),
|
|
25096
|
+
height: '1px',
|
|
25097
|
+
display: 'flex',
|
|
25098
|
+
justifyContent: 'center',
|
|
25099
|
+
left: '50px'
|
|
25100
|
+
}
|
|
25101
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
24741
25102
|
"data-testid": "map-warning-properties",
|
|
24742
25103
|
style: {
|
|
24743
|
-
|
|
24744
|
-
|
|
24745
|
-
|
|
24746
|
-
marginLeft: '100px',
|
|
24747
|
-
position: 'relative',
|
|
24748
|
-
zIndex: 10000,
|
|
24749
|
-
backgroundColor: '#CCCCCCC0',
|
|
25104
|
+
marginTop: '50px',
|
|
25105
|
+
width: '350px',
|
|
25106
|
+
height: '190px',
|
|
24750
25107
|
padding: '0px 20px 20px',
|
|
24751
25108
|
overflow: 'auto',
|
|
24752
|
-
fontSize: '11px'
|
|
25109
|
+
fontSize: '11px',
|
|
25110
|
+
backgroundColor: '#CCCCCCC0'
|
|
24753
25111
|
}
|
|
24754
25112
|
}, /*#__PURE__*/React__default.createElement("h1", {
|
|
24755
25113
|
"data-testid": "map-warning-properties-title"
|
|
@@ -24763,7 +25121,7 @@ var MapWarningProperties = function MapWarningProperties(_ref) {
|
|
|
24763
25121
|
"data-testid": "map-warning-properties-row"
|
|
24764
25122
|
}, "Sender: ", selectedFeatureProperties.languages[language].senderName), selectedFeatureProperties.identifier && /*#__PURE__*/React__default.createElement("pre", {
|
|
24765
25123
|
"data-testid": "map-warning-properties-row"
|
|
24766
|
-
}, "Identifier: ", selectedFeatureProperties.identifier));
|
|
25124
|
+
}, "Identifier: ", selectedFeatureProperties.identifier)));
|
|
24767
25125
|
};
|
|
24768
25126
|
|
|
24769
25127
|
/* *
|