@opengeoweb/core 4.2.0 → 4.4.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 +2047 -1262
- package/index.umd.js +2057 -1207
- package/lib/components/CanvasComponent/CanvasComponent.d.ts +7 -6
- package/lib/components/ConfigurableMap/ConfigurableMapConnect.d.ts +1 -0
- package/lib/components/LayerManager/LayerContainerRow/LayerRow/RenderLayers/RenderLayers.d.ts +1 -1
- package/lib/components/LayerManager/LayerContainerRow/LayerRow/RenderStyles/RenderStyles.d.ts +1 -1
- package/lib/components/LayerManager/LayerSelect/KeywordFilterResults/KeywordFilterResults.stories.d.ts +12 -16
- package/lib/components/LayerManager/LayerSelect/LayerInfo/LayerInfoLegend.d.ts +10 -0
- package/lib/components/{TimeSlider/TimeSliderScaleSlider/TimeSliderScaleSlider.spec.d.ts → LayerManager/LayerSelect/LayerInfo/LayerInfoLegend.spec.d.ts} +0 -0
- package/lib/components/LayerManager/LayerSelect/LayerInfo/LayerInfoList.d.ts +6 -5
- package/lib/components/LayerManager/LayerSelect/LayerInfo/LayerInfoText.d.ts +9 -0
- package/lib/components/LayerManager/LayerSelect/LayerInfo/LayerInfoUtils.d.ts +7 -1
- package/lib/components/LayerManager/LayerSelect/LayerList/LayerList.d.ts +4 -5
- package/lib/components/LayerManager/LayerSelect/LayerList/LayerListConnect.d.ts +1 -0
- package/lib/components/LayerManager/LayerSelect/LayerList/LayerListDimensions.d.ts +7 -0
- package/lib/components/LayerManager/LayerSelect/LayerList/LayerListRow.d.ts +1 -0
- package/lib/components/LayerManager/LayerSelect/LayerSelect.d.ts +4 -0
- package/lib/components/LayerManager/LayerSelect/LayerSelect.stories.d.ts +8 -0
- package/lib/components/LayerManager/LayerSelect/LayerSelectUtils.d.ts +75 -0
- package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialog.d.ts +2 -0
- package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialog.stories.d.ts +12 -16
- package/lib/components/LayerManager/LayerSelect/ServiceOptionsDialog/ServiceOptionsDialogConnect.d.ts +2 -0
- package/lib/components/LayerManager/LayerSelect/ServicePopup/ServicePopup.stories.d.ts +24 -32
- package/lib/components/LayerManager/LayerSelect/ServicePopup/utils.d.ts +2 -0
- package/lib/components/LayerManager/useFetchServices.d.ts +1 -1
- package/lib/components/Legend/LegendLayout.d.ts +13 -0
- package/lib/components/{TimeSlider/TimeSliderScaleSlider/TimeSliderScaleSliderConnect.spec.d.ts → Legend/LegendLayout.spec.d.ts} +0 -0
- package/lib/components/MapControls/MapControlButton.d.ts +1 -1
- package/lib/components/MultiMapView/ModelRunInterval/ModelRunInterval.d.ts +6 -0
- package/lib/components/MultiMapView/MultiMapViewConnect.d.ts +1 -0
- package/lib/components/ReactMapView/AdagucMapDraw.d.ts +1 -1
- package/lib/components/ReactMapView/AdagucMapDrawTools.d.ts +1 -1
- package/lib/components/ReactMapView/ReactMapView.d.ts +7 -6
- package/lib/components/ReactMapView/ReactMapViewParseLayer.d.ts +3 -3
- package/lib/components/SyncGroups/SimpleTimeSliderConnect.d.ts +9 -1
- package/lib/components/SyncGroups/selector.d.ts +6 -6
- package/lib/components/TimeSlider/TimeSlider.d.ts +0 -1
- package/lib/components/TimeSlider/TimeSlider.stories.d.ts +15 -0
- package/lib/components/TimeSlider/TimeSliderButtons/AutoUpdateButton/AutoUpdateButtonConnect.d.ts +13 -1
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButton.d.ts +10 -0
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButton.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButtonConnect.d.ts +6 -0
- package/lib/components/TimeSlider/TimeSliderButtons/BackwardForwardStepButton/BackwardForwardStepButtonConnect.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/HideSliderButton/HideSliderButton.d.ts +7 -0
- package/lib/components/TimeSlider/TimeSliderButtons/HideSliderButton/HideSliderButton.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/NowButton/NowButton.d.ts +8 -0
- package/lib/components/TimeSlider/TimeSliderButtons/NowButton/NowButton.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/NowButton/NowButtonConnect.d.ts +9 -0
- package/lib/components/TimeSlider/TimeSliderButtons/NowButton/NowButtonConnect.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/OptionsMenuButton/OptionsMenuButton.d.ts +4 -1
- package/lib/components/TimeSlider/TimeSliderButtons/OptionsMenuButton/OptionsMenuButton.stories.d.ts +24 -0
- package/lib/components/TimeSlider/TimeSliderButtons/OptionsMenuButton/OptionsMenuButtonConnect.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/PlayButton/PlayButtonConnect.d.ts +19 -18
- package/lib/components/TimeSlider/TimeSliderButtons/TimeScaleButton/TimeScaleButton.d.ts +11 -0
- package/lib/components/TimeSlider/TimeSliderButtons/TimeScaleButton/TimeScaleButton.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/TimeScaleButton/TimeScaleButtonConnect.d.ts +4 -0
- package/lib/components/TimeSlider/TimeSliderButtons/TimeScaleButton/TimeScaleButtonConnect.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/TimeSliderButtons.d.ts +2 -0
- package/lib/components/TimeSlider/TimeSliderButtons/TimeSliderButtons.stories.d.ts +6 -0
- package/lib/components/TimeSlider/TimeSliderButtons/TimeSliderButtonsConnect.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderButtons/TimeSliderMenu/TimeSliderMenu.stories.d.ts +12 -16
- package/lib/components/TimeSlider/TimeSliderButtons/TimeStepButton/TimeStepButton.stories.d.ts +10 -16
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClock.d.ts +5 -0
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClock.stories.d.ts +24 -0
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClockConnect.d.ts +4 -0
- package/lib/components/TimeSlider/TimeSliderClock/TimeSliderClockConnect.spec.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderConnect.d.ts +12 -1
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegend.d.ts +1 -0
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendConnect.d.ts +22 -3
- package/lib/components/TimeSlider/TimeSliderLegend/TimeSliderLegendRenderFunctions.d.ts +1 -1
- package/lib/components/TimeSlider/TimeSliderRail/TimeSliderRailConnect.d.ts +22 -3
- package/lib/components/TimeSlider/TimeSliderRail/TimeSliderRailRenderFunctions.d.ts +1 -1
- package/lib/components/TimeSlider/TimeSliderUtils.d.ts +9 -1
- package/lib/components/WMSLoader/WMSLayerTree/WMSLayerTreeConnect.d.ts +11 -1
- package/lib/components/WMSLoader/services.d.ts +2 -1
- package/lib/index.d.ts +52 -52
- package/lib/store/coreModuleConfig.d.ts +1 -1
- package/lib/store/generic/actions.d.ts +2 -2
- package/lib/store/generic/config.d.ts +3 -2
- package/lib/store/generic/index.d.ts +10 -10
- package/lib/store/generic/selectors.d.ts +7 -7
- package/lib/store/generic/synchronizationGroups/reducer.d.ts +2 -2
- package/lib/store/generic/synchronizationGroups/selectors.d.ts +15 -15
- package/lib/store/layerSelect/config.d.ts +3 -2
- package/lib/store/layerSelect/reducer.d.ts +1 -1
- package/lib/store/layerSelect/sagas.d.ts +3 -1
- package/lib/store/layerSelect/selectors.d.ts +66 -48
- package/lib/store/layerSelect/types.d.ts +3 -3
- package/lib/store/mapStore/config.d.ts +3 -2
- package/lib/store/mapStore/layers/reducer.d.ts +1 -1
- package/lib/store/mapStore/layers/selectors.d.ts +129 -109
- package/lib/store/mapStore/layers/types.d.ts +2 -1
- package/lib/store/mapStore/map/actions.d.ts +2 -2
- package/lib/store/mapStore/map/reducer.d.ts +33 -33
- package/lib/store/mapStore/map/sagas.d.ts +3 -2
- package/lib/store/mapStore/map/selectors.d.ts +297 -297
- package/lib/store/mapStore/service/reducer.d.ts +1 -1
- package/lib/store/mapStore/service/selectors.d.ts +36 -63
- package/lib/store/mapStore/service/types.d.ts +10 -2
- package/lib/store/snackbar/config.d.ts +3 -2
- package/lib/store/snackbar/reducer.d.ts +1 -1
- package/lib/store/snackbar/selectors.d.ts +2 -2
- package/lib/store/ui/config.d.ts +3 -2
- package/lib/store/ui/reducer.d.ts +1 -1
- package/lib/store/ui/selectors.d.ts +35 -35
- package/lib/store/ui/types.d.ts +11 -3
- package/lib/store/utils.d.ts +2 -0
- package/lib/storybookUtils/store.d.ts +1 -1
- package/lib/utils/__mocks__/getCapabilities.d.ts +26 -36
- package/lib/utils/defaultConfigurations.d.ts +2 -2
- package/lib/utils/defaultTestSettings.d.ts +4 -2
- package/lib/utils/testUtils.d.ts +1 -1
- package/package.json +16 -13
- package/lib/components/TimeSlider/TimeSliderScaleSlider/TimeSliderScaleSlider.d.ts +0 -12
- package/lib/components/TimeSlider/TimeSliderScaleSlider/TimeSliderScaleSlider.stories.d.ts +0 -13
- package/lib/components/TimeSlider/TimeSliderScaleSlider/TimeSliderScaleSliderConnect.d.ts +0 -24
package/index.umd.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@mui/material'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('@opengeoweb/form-fields'), require('react-hook-form'), require('react-window'), require('@mui/material/Box'), require('@mui/material/Typography'), require('@mui/material/Grid'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@mui/material', '@opengeoweb/shared', '@opengeoweb/theme', '@opengeoweb/webmap', 'react-sortablejs', '@opengeoweb/form-fields', 'react-hook-form', 'react-window', '@mui/material/Box', '@mui/material/Typography', '@mui/material/Grid', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', '
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.material, global.shared, global.theme, global.webmap, global.reactSortablejs, global.formFields, global.reactHookForm, global.reactWindow, global.Box, global.Typography, global.Grid, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.
|
|
5
|
-
})(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, material, shared, theme, webmap, reactSortablejs, formFields, reactHookForm, reactWindow, Box, Typography, Grid, throttleDebounce, cloneDeep, proj4, turf,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@reduxjs/toolkit'), require('immer'), require('moment'), require('react'), require('lodash'), require('redux-saga/effects'), require('react-redux'), require('@mui/material'), require('@opengeoweb/shared'), require('@opengeoweb/theme'), require('@opengeoweb/webmap'), require('react-sortablejs'), require('sortablejs'), require('@opengeoweb/form-fields'), require('react-hook-form'), require('react-window'), require('@mui/material/Box'), require('@mui/material/Typography'), require('@mui/material/Grid'), require('@mui/material/Tooltip'), require('throttle-debounce'), require('lodash.clonedeep'), require('proj4'), require('@turf/turf'), require('@mui/system'), require('react-draggable'), require('re-resizable'), require('@redux-eggs/redux-toolkit'), require('@redux-eggs/saga-extension')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@reduxjs/toolkit', 'immer', 'moment', 'react', 'lodash', 'redux-saga/effects', 'react-redux', '@mui/material', '@opengeoweb/shared', '@opengeoweb/theme', '@opengeoweb/webmap', 'react-sortablejs', 'sortablejs', '@opengeoweb/form-fields', 'react-hook-form', 'react-window', '@mui/material/Box', '@mui/material/Typography', '@mui/material/Grid', '@mui/material/Tooltip', 'throttle-debounce', 'lodash.clonedeep', 'proj4', '@turf/turf', '@mui/system', 'react-draggable', 're-resizable', '@redux-eggs/redux-toolkit', '@redux-eggs/saga-extension'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Core = {}, global.toolkit, global.produce, global.moment, global.React, global._, global.effects, global.reactRedux, global.material, global.shared, global.theme, global.webmap, global.reactSortablejs, global.Sortable, global.formFields, global.reactHookForm, global.reactWindow, global.Box, global.Typography, global.Grid, global.Tooltip, global.throttleDebounce, global.cloneDeep, global.proj4, global.turf, global.system, global.Draggable, global.reResizable, global.reduxToolkit, global.sagaExtension));
|
|
5
|
+
})(this, (function (exports, toolkit, produce, moment, React, _, effects, reactRedux, material, shared, theme, webmap, reactSortablejs, Sortable, formFields, reactHookForm, reactWindow, Box, Typography, Grid, Tooltip, throttleDebounce, cloneDeep, proj4, turf, system, Draggable, reResizable, reduxToolkit, sagaExtension) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -29,12 +29,15 @@
|
|
|
29
29
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
30
30
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
31
31
|
var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
|
|
32
|
+
var Sortable__default = /*#__PURE__*/_interopDefaultLegacy(Sortable);
|
|
32
33
|
var Box__default = /*#__PURE__*/_interopDefaultLegacy(Box);
|
|
33
34
|
var Typography__default = /*#__PURE__*/_interopDefaultLegacy(Typography);
|
|
34
35
|
var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
|
|
36
|
+
var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
|
|
35
37
|
var cloneDeep__default = /*#__PURE__*/_interopDefaultLegacy(cloneDeep);
|
|
36
38
|
var proj4__default = /*#__PURE__*/_interopDefaultLegacy(proj4);
|
|
37
39
|
var turf__namespace = /*#__PURE__*/_interopNamespace(turf);
|
|
40
|
+
var Draggable__default = /*#__PURE__*/_interopDefaultLegacy(Draggable);
|
|
38
41
|
|
|
39
42
|
/*! *****************************************************************************
|
|
40
43
|
Copyright (c) Microsoft Corporation.
|
|
@@ -206,6 +209,7 @@
|
|
|
206
209
|
LayerActionOrigin["ReactMapViewParseLayer"] = "ReactMapViewParseLayer";
|
|
207
210
|
LayerActionOrigin["setLayerDimensionSaga"] = "setLayerDimensionSaga";
|
|
208
211
|
LayerActionOrigin["toggleAutoUpdateSaga"] = "toggleAutoUpdateSaga";
|
|
212
|
+
LayerActionOrigin["unregisterMapSaga"] = "unregisterMapSaga";
|
|
209
213
|
})(LayerActionOrigin || (LayerActionOrigin = {}));
|
|
210
214
|
|
|
211
215
|
/* *
|
|
@@ -437,6 +441,7 @@
|
|
|
437
441
|
get LayerActionOrigin () { return LayerActionOrigin; }
|
|
438
442
|
});
|
|
439
443
|
|
|
444
|
+
var millisecondsInSecond = 1000;
|
|
440
445
|
var defaultAnimationDelayAtStart = 250;
|
|
441
446
|
var defaultDelay = 1000; // [ms]
|
|
442
447
|
|
|
@@ -453,6 +458,11 @@
|
|
|
453
458
|
var getSpeedFactor = function getSpeedFactor(speedDelay) {
|
|
454
459
|
return defaultDelay / speedDelay;
|
|
455
460
|
};
|
|
461
|
+
var getSelectedTime = function getSelectedTime(timeDimension) {
|
|
462
|
+
var currentValueIsValid = timeDimension && timeDimension.currentValue && moment__default["default"].utc(timeDimension.currentValue).isValid();
|
|
463
|
+
var selectedTime = currentValueIsValid && timeDimension ? moment__default["default"].utc(timeDimension.currentValue).unix() : moment__default["default"].utc().unix();
|
|
464
|
+
return selectedTime;
|
|
465
|
+
};
|
|
456
466
|
/**
|
|
457
467
|
* Returns time bounds from the given dimension. If no time dimension given, current time is returned as default
|
|
458
468
|
*/
|
|
@@ -462,13 +472,12 @@
|
|
|
462
472
|
second: 0,
|
|
463
473
|
millisecond: 0
|
|
464
474
|
}).unix();
|
|
465
|
-
var timeDimension = dimensions ? dimensions.find(function (dim) {
|
|
475
|
+
var timeDimension = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dim) {
|
|
466
476
|
return dim.name === 'time';
|
|
467
|
-
})
|
|
477
|
+
});
|
|
468
478
|
var startTime = timeDimension && timeDimension.minValue ? moment__default["default"].utc(timeDimension.minValue).unix() : defaultStartEnd;
|
|
469
479
|
var endTime = timeDimension && timeDimension.maxValue ? moment__default["default"].utc(timeDimension.maxValue).unix() : defaultStartEnd;
|
|
470
|
-
var
|
|
471
|
-
var selectedTime = currentValueIsValid ? moment__default["default"].utc(timeDimension.currentValue).unix() : moment__default["default"].utc().unix();
|
|
480
|
+
var selectedTime = getSelectedTime(timeDimension);
|
|
472
481
|
return {
|
|
473
482
|
selectedTime: selectedTime,
|
|
474
483
|
startTime: startTime,
|
|
@@ -503,22 +512,12 @@
|
|
|
503
512
|
var pixelToTimestamp = function pixelToTimestamp(timePx, centerTime, widthPx, secondsPerPx) {
|
|
504
513
|
return centerTime - (widthPx / 2 - timePx) * secondsPerPx;
|
|
505
514
|
};
|
|
506
|
-
var onSetNewDateDebouncer;
|
|
507
515
|
var onsetNewDateDebounced = function onsetNewDateDebounced(dateToSet, onSetNewDate) {
|
|
508
|
-
|
|
509
|
-
if (onSetNewDateDebouncer === undefined) {
|
|
510
|
-
onSetNewDateDebouncer = dateToSet;
|
|
516
|
+
_.debounce(function () {
|
|
511
517
|
onSetNewDate(dateToSet);
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
onSetNewDateDebouncer = undefined;
|
|
518
|
-
}, 10);
|
|
519
|
-
} else {
|
|
520
|
-
onSetNewDateDebouncer = dateToSet;
|
|
521
|
-
}
|
|
518
|
+
}, 10, {
|
|
519
|
+
leading: true
|
|
520
|
+
})();
|
|
522
521
|
};
|
|
523
522
|
var roundWithTimeStep = function roundWithTimeStep(unixTime, timeStep, type) {
|
|
524
523
|
var adjustedTimeStep = timeStep * 60;
|
|
@@ -540,7 +539,9 @@
|
|
|
540
539
|
var setNewRoundedTime = function setNewRoundedTime(x, centerTime, width, secondsPerPx, timeStep, dataStartTime, dataEndTime, onSetNewDate) {
|
|
541
540
|
var unixTime = pixelToTimestamp(x, centerTime, width, secondsPerPx);
|
|
542
541
|
var roundedTime = roundWithTimeStep(unixTime, timeStep);
|
|
543
|
-
var
|
|
542
|
+
var maxTime = Math.max(roundedTime, dataStartTime);
|
|
543
|
+
var newTime = Math.min(maxTime, dataEndTime || roundedTime);
|
|
544
|
+
var selectedTimeString = moment__default["default"].unix(newTime).toISOString();
|
|
544
545
|
onsetNewDateDebounced(selectedTimeString, onSetNewDate);
|
|
545
546
|
};
|
|
546
547
|
var getDataLimitsFromLayers = function getDataLimitsFromLayers(layers) {
|
|
@@ -567,49 +568,31 @@
|
|
|
567
568
|
*/
|
|
568
569
|
[2147483647, 0]);
|
|
569
570
|
};
|
|
570
|
-
var
|
|
571
|
-
var
|
|
572
|
-
return newValue > max ? max : newValue;
|
|
573
|
-
};
|
|
574
|
-
var getPreviousTimeStepvalue = function getPreviousTimeStepvalue(value, min) {
|
|
575
|
-
var newValue = value - 1;
|
|
576
|
-
return newValue < min ? min : newValue;
|
|
577
|
-
};
|
|
578
|
-
var getValueFromKeyboardEvent = function getValueFromKeyboardEvent(event, value, min, max, supportFourDirectionNavigation) {
|
|
579
|
-
if (supportFourDirectionNavigation === void 0) {
|
|
580
|
-
supportFourDirectionNavigation = false;
|
|
581
|
-
}
|
|
571
|
+
var setPreviousTimeStep = function setPreviousTimeStep(timeStep, curTime, dataStartTime, onSetNewDate) {
|
|
572
|
+
var prevTimeStep = moment__default["default"].utc(curTime).subtract(timeStep, 'm').toISOString();
|
|
582
573
|
|
|
583
|
-
if (!
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
case 'ArrowDown':
|
|
587
|
-
return getPreviousTimeStepvalue(value, min);
|
|
574
|
+
if (!prevTimeStep) {
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
588
577
|
|
|
589
|
-
|
|
590
|
-
|
|
578
|
+
if (moment__default["default"].utc(prevTimeStep) < moment__default["default"].utc(dataStartTime * millisecondsInSecond)) {
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
591
581
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
} else {
|
|
597
|
-
// currently supportFourDirectionNavigation (left/right/up/down) is only used in horizontal slider TimeSliderScaleSlider
|
|
598
|
-
switch (event.key) {
|
|
599
|
-
case 'ArrowDown':
|
|
600
|
-
case 'ArrowLeft':
|
|
601
|
-
return getPreviousTimeStepvalue(value, min);
|
|
582
|
+
onsetNewDateDebounced(prevTimeStep, onSetNewDate);
|
|
583
|
+
};
|
|
584
|
+
var setNextTimeStep = function setNextTimeStep(timeStep, curTime, dataEndTime, onSetNewDate) {
|
|
585
|
+
var nextTimeStep = moment__default["default"].utc(curTime).add(timeStep, 'm').toISOString();
|
|
602
586
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
587
|
+
if (!nextTimeStep) {
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
606
590
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
}
|
|
591
|
+
if (moment__default["default"].utc(nextTimeStep) > moment__default["default"].utc(dataEndTime * millisecondsInSecond)) {
|
|
592
|
+
return;
|
|
610
593
|
}
|
|
611
594
|
|
|
612
|
-
|
|
595
|
+
onsetNewDateDebounced(nextTimeStep, onSetNewDate);
|
|
613
596
|
};
|
|
614
597
|
var getTimeStepFromDataInterval = function getTimeStepFromDataInterval(timeInterval) {
|
|
615
598
|
switch (timeInterval.isRegularInterval) {
|
|
@@ -768,6 +751,25 @@
|
|
|
768
751
|
var getAutoMoveAreaWidth = function getAutoMoveAreaWidth(scale) {
|
|
769
752
|
return (scale === Scale.Year ? needleGeom.largeWidth : needleGeom.smallWidth) / 2 + AUTO_MOVE_AREA_PADDING;
|
|
770
753
|
};
|
|
754
|
+
/** Reusable business logic for how to handle events that set time to now (closest).
|
|
755
|
+
* Used in NowButton and TimeSliderLegend.
|
|
756
|
+
*/
|
|
757
|
+
|
|
758
|
+
var handleSetNowEvent = function handleSetNowEvent(timeStep, dataStartTime, dataEndTime, currentTime, onSetNewDate, onSetCenterTime) {
|
|
759
|
+
if (dataStartTime < dataEndTime) {
|
|
760
|
+
if (dataEndTime < currentTime) {
|
|
761
|
+
onSetNewDate(moment__default["default"].utc(dataEndTime * millisecondsInSecond).toISOString());
|
|
762
|
+
onSetCenterTime(dataEndTime);
|
|
763
|
+
} else if (dataStartTime > currentTime) {
|
|
764
|
+
onSetNewDate(moment__default["default"].utc(dataStartTime * millisecondsInSecond).toISOString());
|
|
765
|
+
onSetCenterTime(dataStartTime);
|
|
766
|
+
} else {
|
|
767
|
+
var closestToCurrent = roundWithTimeStep(currentTime, timeStep);
|
|
768
|
+
onSetNewDate(moment__default["default"].utc(closestToCurrent * millisecondsInSecond).toISOString());
|
|
769
|
+
onSetCenterTime(closestToCurrent);
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
};
|
|
771
773
|
|
|
772
774
|
var createMap = function createMap(_a) {
|
|
773
775
|
var id = _a.id,
|
|
@@ -1697,6 +1699,9 @@
|
|
|
1697
1699
|
resultEqualityCheck: _.isEqual
|
|
1698
1700
|
}
|
|
1699
1701
|
};
|
|
1702
|
+
var isUserAddedService = function isUserAddedService(scope) {
|
|
1703
|
+
return scope === 'user';
|
|
1704
|
+
};
|
|
1700
1705
|
|
|
1701
1706
|
/* *
|
|
1702
1707
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -1818,25 +1823,6 @@
|
|
|
1818
1823
|
var getLayerStyles$1 = toolkit.createSelector(getLayerFromService, function (layer) {
|
|
1819
1824
|
return layer && layer.styles ? layer.styles : [];
|
|
1820
1825
|
}, selectorMemoizationOptions);
|
|
1821
|
-
/**
|
|
1822
|
-
* Gets services and maps them into an array
|
|
1823
|
-
*
|
|
1824
|
-
* Example: services = getServices(store)
|
|
1825
|
-
* @param {object} store store: object - Store object
|
|
1826
|
-
* @returns {array} returnType: [] - array containing services
|
|
1827
|
-
*/
|
|
1828
|
-
|
|
1829
|
-
toolkit.createSelector(servicesStore, function (store) {
|
|
1830
|
-
var services = store ? store.byId : {};
|
|
1831
|
-
var arrayOfServiceObjects = Object.keys(services).map(function (key) {
|
|
1832
|
-
return {
|
|
1833
|
-
name: services[key].name,
|
|
1834
|
-
serviceUrl: services[key].serviceUrl,
|
|
1835
|
-
isUserAddedService: services[key].isUserAddedService
|
|
1836
|
-
};
|
|
1837
|
-
});
|
|
1838
|
-
return arrayOfServiceObjects;
|
|
1839
|
-
}, selectorMemoizationOptions);
|
|
1840
1826
|
|
|
1841
1827
|
/* *
|
|
1842
1828
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -2721,6 +2707,22 @@
|
|
|
2721
2707
|
return layers[layerId];
|
|
2722
2708
|
});
|
|
2723
2709
|
}, selectorMemoizationOptions);
|
|
2710
|
+
/**
|
|
2711
|
+
* Retrieves all layers (including base layers and overlayers) for the given mapId
|
|
2712
|
+
*
|
|
2713
|
+
* Example: layers = getLayersByMapId(store, mapId)
|
|
2714
|
+
* @param {object} store store: object - object from which the layers state will be extracted
|
|
2715
|
+
* @param {string} mapId mapId: string - mapId
|
|
2716
|
+
* @returns {array} returnType: ReduxLayer[] - an array of all layers containing layer information (service, name, style, enabled etc.)
|
|
2717
|
+
*/
|
|
2718
|
+
|
|
2719
|
+
var getLayersByMapId = toolkit.createSelector(getAllLayers, function (_store, _mapId) {
|
|
2720
|
+
return _mapId;
|
|
2721
|
+
}, function (layers, mapId) {
|
|
2722
|
+
return layers.filter(function (layer) {
|
|
2723
|
+
return layer.mapId === mapId;
|
|
2724
|
+
});
|
|
2725
|
+
}, selectorMemoizationOptions);
|
|
2724
2726
|
/**
|
|
2725
2727
|
* Retrieves all layers that aren't base layers and aren't overlayers
|
|
2726
2728
|
*
|
|
@@ -2941,7 +2943,7 @@
|
|
|
2941
2943
|
*
|
|
2942
2944
|
* Example: getDialogDetailsByType(store, 'legend')
|
|
2943
2945
|
* @param {object} store store object from which the ui state wll be extracted
|
|
2944
|
-
* @param {string} dialogType type of the dialog
|
|
2946
|
+
* @param {string} dialogType type of the dialog
|
|
2945
2947
|
* @returns {array} [string, boolean] first element gives the active map id, second element whether the dialog is open
|
|
2946
2948
|
*/
|
|
2947
2949
|
|
|
@@ -2956,7 +2958,7 @@
|
|
|
2956
2958
|
* For a given ui component: gets wether the dialog is open or closed
|
|
2957
2959
|
*
|
|
2958
2960
|
* @param {object} store store object from which the ui state wll be extracted
|
|
2959
|
-
* @param {string} dialogType type of the dialog
|
|
2961
|
+
* @param {string} dialogType type of the dialog
|
|
2960
2962
|
* @returns {boolean} returnType: boolean
|
|
2961
2963
|
*/
|
|
2962
2964
|
|
|
@@ -2971,7 +2973,7 @@
|
|
|
2971
2973
|
*For a given ui component: gets the active map Id
|
|
2972
2974
|
*
|
|
2973
2975
|
* @param {object} store store object from which the ui state wll be extracted
|
|
2974
|
-
* @param {string} dialogType type of the dialog
|
|
2976
|
+
* @param {string} dialogType type of the dialog
|
|
2975
2977
|
* @returns {string} returnType: string - the active map id
|
|
2976
2978
|
*/
|
|
2977
2979
|
|
|
@@ -2986,7 +2988,7 @@
|
|
|
2986
2988
|
*For a given ui component: gets the order of visible dialog
|
|
2987
2989
|
*
|
|
2988
2990
|
* @param {object} store store object from which the ui state wll be extracted
|
|
2989
|
-
* @param {DialogType} dialogType type of the dialog
|
|
2991
|
+
* @param {DialogType} dialogType type of the dialog
|
|
2990
2992
|
* @returns {number} the higher the order number the higher the zIndex
|
|
2991
2993
|
*/
|
|
2992
2994
|
|
|
@@ -3012,7 +3014,7 @@
|
|
|
3012
3014
|
*For a given ui component: returns if ordered on top
|
|
3013
3015
|
*
|
|
3014
3016
|
* @param {object} store store object from which the ui state wll be extracted
|
|
3015
|
-
* @param {DialogType} dialogType type of the dialog
|
|
3017
|
+
* @param {DialogType} dialogType type of the dialog
|
|
3016
3018
|
* @returns {boolean}
|
|
3017
3019
|
*/
|
|
3018
3020
|
|
|
@@ -4276,6 +4278,25 @@
|
|
|
4276
4278
|
getMapPresetError: getMapPresetError
|
|
4277
4279
|
});
|
|
4278
4280
|
|
|
4281
|
+
var DialogTypes;
|
|
4282
|
+
|
|
4283
|
+
(function (DialogTypes) {
|
|
4284
|
+
DialogTypes["LayerInfo"] = "layerInfo";
|
|
4285
|
+
DialogTypes["SyncGroups"] = "syncGroups";
|
|
4286
|
+
DialogTypes["TimeSeriesSelect"] = "timeSeriesSelect";
|
|
4287
|
+
DialogTypes["TimeSeriesManager"] = "timeSeriesManager";
|
|
4288
|
+
DialogTypes["KeywordFilter"] = "keywordFilter";
|
|
4289
|
+
DialogTypes["DimensionSelectEnsembleMember"] = "dimensionSelect-ensemble_member";
|
|
4290
|
+
DialogTypes["DimensionSelectElevation"] = "dimensionSelect-elevation";
|
|
4291
|
+
DialogTypes["LayerManager"] = "layerManager";
|
|
4292
|
+
DialogTypes["LayerSelect"] = "layerSelect";
|
|
4293
|
+
})(DialogTypes || (DialogTypes = {}));
|
|
4294
|
+
|
|
4295
|
+
var types = /*#__PURE__*/Object.freeze({
|
|
4296
|
+
__proto__: null,
|
|
4297
|
+
get DialogTypes () { return DialogTypes; }
|
|
4298
|
+
});
|
|
4299
|
+
|
|
4279
4300
|
/* *
|
|
4280
4301
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4281
4302
|
* you may not use this file except in compliance with the License.
|
|
@@ -4315,7 +4336,7 @@
|
|
|
4315
4336
|
};
|
|
4316
4337
|
var slice$1 = toolkit.createSlice({
|
|
4317
4338
|
initialState: initialState$1,
|
|
4318
|
-
name:
|
|
4339
|
+
name: DialogTypes.LayerSelect,
|
|
4319
4340
|
reducers: {
|
|
4320
4341
|
setSearchFilter: function setSearchFilter(draft, action) {
|
|
4321
4342
|
var filterText = action.payload.filterText;
|
|
@@ -4332,7 +4353,7 @@
|
|
|
4332
4353
|
serviceUrl = _a.serviceUrl,
|
|
4333
4354
|
_abstract = _a["abstract"],
|
|
4334
4355
|
keywords = _a.keywords,
|
|
4335
|
-
|
|
4356
|
+
scope = _a.scope,
|
|
4336
4357
|
groups = _a.groups;
|
|
4337
4358
|
|
|
4338
4359
|
if (!draft.filters.activeServices.byId[serviceId]) {
|
|
@@ -4372,7 +4393,7 @@
|
|
|
4372
4393
|
serviceId: serviceId,
|
|
4373
4394
|
enabled: draft.allServicesEnabled,
|
|
4374
4395
|
filterIds: filterIds,
|
|
4375
|
-
|
|
4396
|
+
scope: scope,
|
|
4376
4397
|
serviceName: serviceName,
|
|
4377
4398
|
serviceUrl: serviceUrl,
|
|
4378
4399
|
"abstract": _abstract
|
|
@@ -4477,6 +4498,61 @@
|
|
|
4477
4498
|
var reducer$1 = slice$1.reducer;
|
|
4478
4499
|
var layerSelectActions = slice$1.actions;
|
|
4479
4500
|
|
|
4501
|
+
/* *
|
|
4502
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4503
|
+
* you may not use this file except in compliance with the License.
|
|
4504
|
+
* You may obtain a copy of the License at
|
|
4505
|
+
*
|
|
4506
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4507
|
+
*
|
|
4508
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4509
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4510
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4511
|
+
* See the License for the specific language governing permissions and
|
|
4512
|
+
* limitations under the License.
|
|
4513
|
+
*
|
|
4514
|
+
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
4515
|
+
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
4516
|
+
* */
|
|
4517
|
+
var filterLayersFromService = function filterLayersFromService(serviceId, services, filterIds, allFiltersActive, searchString) {
|
|
4518
|
+
var mapStoreService = services[serviceId];
|
|
4519
|
+
if (!mapStoreService) return [];
|
|
4520
|
+
|
|
4521
|
+
if (searchString === '' && allFiltersActive) {
|
|
4522
|
+
return mapStoreService.layers.filter(function (layer) {
|
|
4523
|
+
return layer.leaf;
|
|
4524
|
+
});
|
|
4525
|
+
}
|
|
4526
|
+
|
|
4527
|
+
var searchStringArray = searchString.split(' ');
|
|
4528
|
+
return mapStoreService.layers.filter(function (layer) {
|
|
4529
|
+
return searchStringArray.every(function (search) {
|
|
4530
|
+
var _a, _b, _c;
|
|
4531
|
+
|
|
4532
|
+
var searchLowercase = search.toLowerCase();
|
|
4533
|
+
var layerFilterIds = layer.path.map(function (group) {
|
|
4534
|
+
return "groups-" + group;
|
|
4535
|
+
}).concat(layer.keywords.map(function (keyword) {
|
|
4536
|
+
return "keywords-" + keyword;
|
|
4537
|
+
}));
|
|
4538
|
+
var isFilterInLayer = (layerFilterIds === null || layerFilterIds === void 0 ? void 0 : layerFilterIds.some(function (id) {
|
|
4539
|
+
return filterIds.includes(id);
|
|
4540
|
+
})) || allFiltersActive;
|
|
4541
|
+
var isSearchTextInLayerFilter = layerFilterIds === null || layerFilterIds === void 0 ? void 0 : layerFilterIds.some(function (filterId) {
|
|
4542
|
+
return filterId.toLowerCase().includes(searchLowercase);
|
|
4543
|
+
});
|
|
4544
|
+
var isSearchTextInLayerName = (_a = layer.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(searchLowercase);
|
|
4545
|
+
var isSearchTextInLayerText = (_b = layer.text) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(searchLowercase);
|
|
4546
|
+
var isSearchTextInLayerAbstract = (_c = layer["abstract"]) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes(searchLowercase);
|
|
4547
|
+
var isSearchTextInServiceName = mapStoreService.name.toLowerCase().includes(searchLowercase);
|
|
4548
|
+
var isSearchTextInLayer = isSearchTextInLayerName || isSearchTextInLayerText || isSearchTextInLayerAbstract || isSearchTextInLayerFilter || isSearchTextInServiceName;
|
|
4549
|
+
return isFilterInLayer && isSearchTextInLayer;
|
|
4550
|
+
});
|
|
4551
|
+
}).filter(function (layer) {
|
|
4552
|
+
return layer.leaf;
|
|
4553
|
+
});
|
|
4554
|
+
};
|
|
4555
|
+
|
|
4480
4556
|
/* *
|
|
4481
4557
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4482
4558
|
* you may not use this file except in compliance with the License.
|
|
@@ -4635,6 +4711,22 @@
|
|
|
4635
4711
|
var getActiveLayerInfo = toolkit.createSelector(layerSelectStore, function (store) {
|
|
4636
4712
|
return store === null || store === void 0 ? void 0 : store.activeLayerInfo;
|
|
4637
4713
|
});
|
|
4714
|
+
/**
|
|
4715
|
+
* Returns a filtered active layer object based on the given filter settings
|
|
4716
|
+
* Example: layerSelectSelectors.getFilteredLayers(store, filteredSettings);
|
|
4717
|
+
* @param {object} store store: object - object from which the service state will be extracted
|
|
4718
|
+
* @returns {array} returnType: ActiveLayerObject - an array of all filtered activelayers
|
|
4719
|
+
*/
|
|
4720
|
+
|
|
4721
|
+
var getFilteredLayers = toolkit.createSelector([getEnabledServiceIds, getServices, getCheckedFilterIds, isAllFiltersChecked, getSearchFilter], function (enabledServiceIds, servicesStore, checkedFilterIds, allFiltersActive, searchFilter) {
|
|
4722
|
+
return enabledServiceIds.reduce(function (layerList, serviceId) {
|
|
4723
|
+
return layerList.concat(filterLayersFromService(serviceId, servicesStore, checkedFilterIds, allFiltersActive, searchFilter).map(function (layer) {
|
|
4724
|
+
return __assign(__assign({}, layer), {
|
|
4725
|
+
serviceName: serviceId
|
|
4726
|
+
});
|
|
4727
|
+
}));
|
|
4728
|
+
}, []);
|
|
4729
|
+
}, selectorMemoizationOptions);
|
|
4638
4730
|
|
|
4639
4731
|
/* *
|
|
4640
4732
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -4708,17 +4800,6 @@
|
|
|
4708
4800
|
return currentMessages.length > 0 ? currentMessages[0] : undefined;
|
|
4709
4801
|
});
|
|
4710
4802
|
|
|
4711
|
-
var DialogTypes;
|
|
4712
|
-
|
|
4713
|
-
(function (DialogTypes) {
|
|
4714
|
-
DialogTypes["LayerInfo"] = "layerInfo";
|
|
4715
|
-
})(DialogTypes || (DialogTypes = {}));
|
|
4716
|
-
|
|
4717
|
-
var types = /*#__PURE__*/Object.freeze({
|
|
4718
|
-
__proto__: null,
|
|
4719
|
-
get DialogTypes () { return DialogTypes; }
|
|
4720
|
-
});
|
|
4721
|
-
|
|
4722
4803
|
/* *
|
|
4723
4804
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4724
4805
|
* you may not use this file except in compliance with the License.
|
|
@@ -4746,8 +4827,8 @@
|
|
|
4746
4827
|
* @returns {object} returnType: SynchronizationGroupState
|
|
4747
4828
|
*/
|
|
4748
4829
|
|
|
4749
|
-
toolkit.createSelector(syncGroupStore, function (store) {
|
|
4750
|
-
return store ||
|
|
4830
|
+
var getSynchronizationGroupState = toolkit.createSelector(syncGroupStore, function (store) {
|
|
4831
|
+
return store || null;
|
|
4751
4832
|
});
|
|
4752
4833
|
var getSynchronizationGroup = function getSynchronizationGroup(state, id) {
|
|
4753
4834
|
return syncGroupStore(state).groups.byId[id];
|
|
@@ -5803,25 +5884,9 @@
|
|
|
5803
5884
|
});
|
|
5804
5885
|
}
|
|
5805
5886
|
|
|
5806
|
-
/* *
|
|
5807
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5808
|
-
* you may not use this file except in compliance with the License.
|
|
5809
|
-
* You may obtain a copy of the License at
|
|
5810
|
-
*
|
|
5811
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
5812
|
-
*
|
|
5813
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
5814
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
5815
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5816
|
-
* See the License for the specific language governing permissions and
|
|
5817
|
-
* limitations under the License.
|
|
5818
|
-
*
|
|
5819
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
5820
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
5821
|
-
* */
|
|
5822
5887
|
var synchronizationGroupConfig = {
|
|
5823
5888
|
id: 'syncronizationGroupStore-module',
|
|
5824
|
-
|
|
5889
|
+
reducersMap: {
|
|
5825
5890
|
syncronizationGroupStore: reducer$2
|
|
5826
5891
|
},
|
|
5827
5892
|
sagas: [rootSaga$5, rootSaga$4]
|
|
@@ -5984,12 +6049,12 @@
|
|
|
5984
6049
|
* See the License for the specific language governing permissions and
|
|
5985
6050
|
* limitations under the License.
|
|
5986
6051
|
*
|
|
5987
|
-
* Copyright
|
|
5988
|
-
* Copyright
|
|
6052
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
6053
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
5989
6054
|
* */
|
|
5990
6055
|
var uiModuleConfig = {
|
|
5991
6056
|
id: 'ui-module',
|
|
5992
|
-
|
|
6057
|
+
reducersMap: {
|
|
5993
6058
|
ui: reducer$4
|
|
5994
6059
|
},
|
|
5995
6060
|
sagas: [rootSaga$3]
|
|
@@ -6056,9 +6121,7 @@
|
|
|
6056
6121
|
var isAnimating = _a.isAnimating,
|
|
6057
6122
|
isDisabled = _a.isDisabled,
|
|
6058
6123
|
_b = _a.onTogglePlayButton,
|
|
6059
|
-
onTogglePlayButton = _b === void 0 ? function () {
|
|
6060
|
-
return null;
|
|
6061
|
-
} : _b;
|
|
6124
|
+
onTogglePlayButton = _b === void 0 ? function () {} : _b;
|
|
6062
6125
|
|
|
6063
6126
|
var onTogglePlay = function onTogglePlay() {
|
|
6064
6127
|
onTogglePlayButton();
|
|
@@ -6316,7 +6379,7 @@
|
|
|
6316
6379
|
};
|
|
6317
6380
|
var KNMIgeoservicesObs = {
|
|
6318
6381
|
name: 'KNMIgeoservicesObs',
|
|
6319
|
-
url: 'https://geoservices.knmi.nl/adagucserver?dataset=OBS
|
|
6382
|
+
url: 'https://geoservices.knmi.nl/adagucserver?dataset=OBS',
|
|
6320
6383
|
id: 'KNMIgeoservicesObs'
|
|
6321
6384
|
};
|
|
6322
6385
|
var KNMIgeoservicesKlimaatAtlas = {
|
|
@@ -6996,11 +7059,11 @@
|
|
|
6996
7059
|
return;
|
|
6997
7060
|
}
|
|
6998
7061
|
|
|
6999
|
-
if (
|
|
7062
|
+
if (this.ctx.canvas.height !== this.currentHeight) {
|
|
7000
7063
|
this.ctx.canvas.height = this.currentHeight;
|
|
7001
7064
|
}
|
|
7002
7065
|
|
|
7003
|
-
if (
|
|
7066
|
+
if (this.ctx.canvas.width !== this.currentWidth) {
|
|
7004
7067
|
this.ctx.canvas.width = this.currentWidth;
|
|
7005
7068
|
}
|
|
7006
7069
|
|
|
@@ -7177,6 +7240,84 @@
|
|
|
7177
7240
|
return CanvasComponent;
|
|
7178
7241
|
}(React.Component);
|
|
7179
7242
|
|
|
7243
|
+
/* *
|
|
7244
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7245
|
+
* you may not use this file except in compliance with the License.
|
|
7246
|
+
* You may obtain a copy of the License at
|
|
7247
|
+
*
|
|
7248
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
7249
|
+
*
|
|
7250
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
7251
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
7252
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
7253
|
+
* See the License for the specific language governing permissions and
|
|
7254
|
+
* limitations under the License.
|
|
7255
|
+
*
|
|
7256
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
7257
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
7258
|
+
* */
|
|
7259
|
+
|
|
7260
|
+
var LegendLayout = function LegendLayout(_a) {
|
|
7261
|
+
var title = _a.title,
|
|
7262
|
+
name = _a.name,
|
|
7263
|
+
dimensions = _a.dimensions,
|
|
7264
|
+
children = _a.children,
|
|
7265
|
+
height = _a.height,
|
|
7266
|
+
width = _a.width,
|
|
7267
|
+
minWidth = _a.minWidth;
|
|
7268
|
+
return /*#__PURE__*/React__default["default"].createElement(material.Paper, {
|
|
7269
|
+
"data-testid": "legend",
|
|
7270
|
+
sx: {
|
|
7271
|
+
padding: '10px',
|
|
7272
|
+
border: '1px solid grey',
|
|
7273
|
+
backgroundColor: '#FFF',
|
|
7274
|
+
overflow: 'hidden',
|
|
7275
|
+
marginBottom: 0.5
|
|
7276
|
+
}
|
|
7277
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7278
|
+
"data-testid": "legend-title"
|
|
7279
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
7280
|
+
sx: {
|
|
7281
|
+
fontFamily: 'Roboto, Helvetica, Arial',
|
|
7282
|
+
fontSize: '10px',
|
|
7283
|
+
minWidth: '100%',
|
|
7284
|
+
wordWrap: 'break-word',
|
|
7285
|
+
color: 'common.black',
|
|
7286
|
+
whiteSpace: 'nowrap'
|
|
7287
|
+
},
|
|
7288
|
+
variant: "h3"
|
|
7289
|
+
}, title)), /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
|
|
7290
|
+
title: title || 'loading',
|
|
7291
|
+
placement: "top"
|
|
7292
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7293
|
+
sx: {
|
|
7294
|
+
margin: '10px 0px 10px 0px',
|
|
7295
|
+
height: height + "px",
|
|
7296
|
+
width: width + "px"
|
|
7297
|
+
}
|
|
7298
|
+
}, children)), /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7299
|
+
"data-testid": "legend-info",
|
|
7300
|
+
sx: __assign({
|
|
7301
|
+
fontFamily: 'Roboto, Helvetica, Arial',
|
|
7302
|
+
fontSize: 10,
|
|
7303
|
+
color: 'common.black',
|
|
7304
|
+
overflowX: 'hidden',
|
|
7305
|
+
wordWrap: 'break-word',
|
|
7306
|
+
whiteSpace: 'nowrap'
|
|
7307
|
+
}, minWidth && {
|
|
7308
|
+
minWidth: minWidth + "px"
|
|
7309
|
+
})
|
|
7310
|
+
}, dimensions && dimensions.map(function (dim) {
|
|
7311
|
+
return /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7312
|
+
key: name + dim.name
|
|
7313
|
+
}, dim.name === 'time' ? "" + dim.currentValue : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7314
|
+
style: {
|
|
7315
|
+
fontWeight: 500
|
|
7316
|
+
}
|
|
7317
|
+
}, dim.name, ":"), dim.currentValue, " ", dim.units));
|
|
7318
|
+
})));
|
|
7319
|
+
};
|
|
7320
|
+
|
|
7180
7321
|
/* *
|
|
7181
7322
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7182
7323
|
* you may not use this file except in compliance with the License.
|
|
@@ -7271,46 +7412,20 @@
|
|
|
7271
7412
|
like a title and the WMS legendgraphic url */
|
|
7272
7413
|
|
|
7273
7414
|
var wmLayer = getWMLayerById(layer.id);
|
|
7274
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
7275
|
-
|
|
7276
|
-
|
|
7277
|
-
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
overflow: 'hidden',
|
|
7282
|
-
marginBottom: 0.5
|
|
7283
|
-
}
|
|
7284
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7285
|
-
"data-testid": "legend-title",
|
|
7286
|
-
style: {
|
|
7287
|
-
maxWidth: canvasContainerWidth
|
|
7288
|
-
}
|
|
7289
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
7290
|
-
sx: {
|
|
7291
|
-
fontFamily: 'Roboto, Helvetica, Arial',
|
|
7292
|
-
fontSize: '10px',
|
|
7293
|
-
minWidth: defaultCanvasWidth + "px",
|
|
7294
|
-
wordWrap: 'break-word',
|
|
7295
|
-
color: 'common.black'
|
|
7296
|
-
},
|
|
7297
|
-
variant: "h3"
|
|
7298
|
-
}, wmLayer && wmLayer.title)), /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
|
|
7299
|
-
title: wmLayer && wmLayer.title || 'loading',
|
|
7300
|
-
placement: "top"
|
|
7301
|
-
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7302
|
-
sx: {
|
|
7303
|
-
margin: '10px 0px 10px 0px',
|
|
7304
|
-
height: canvasContainerHeight + "px",
|
|
7305
|
-
width: canvasContainerWidth + "px"
|
|
7306
|
-
}
|
|
7415
|
+
return /*#__PURE__*/React__default["default"].createElement(LegendLayout, {
|
|
7416
|
+
title: wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.title,
|
|
7417
|
+
name: wmLayer === null || wmLayer === void 0 ? void 0 : wmLayer.name,
|
|
7418
|
+
dimensions: layer === null || layer === void 0 ? void 0 : layer.dimensions,
|
|
7419
|
+
height: canvasContainerHeight,
|
|
7420
|
+
width: canvasContainerWidth,
|
|
7421
|
+
minWidth: defaultCanvasWidth
|
|
7307
7422
|
}, /*#__PURE__*/React__default["default"].createElement(CanvasComponent, {
|
|
7308
7423
|
redrawInterval: 500,
|
|
7309
7424
|
onRenderCanvas: function onRenderCanvas(ctx, width, height) {
|
|
7310
7425
|
/*
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7426
|
+
Check if the wmLayer is available, this happens when the WMS GetCapabilities is loaded and parsed.
|
|
7427
|
+
Note that we cannot use the wmLayer variable above, as this one could contain a non initialized WMJSLayer.
|
|
7428
|
+
*/
|
|
7314
7429
|
var legendWmLayer = getWMLayerById(layer.id);
|
|
7315
7430
|
var legendUrl = webmap.getLegendGraphicURLForLayer(legendWmLayer);
|
|
7316
7431
|
var image = webmap.legendImageStore.getImage(legendUrl);
|
|
@@ -7359,26 +7474,7 @@
|
|
|
7359
7474
|
renderLegendGraphic(previousLegendImage.current, ctx, imageWidth, imageHeight);
|
|
7360
7475
|
}
|
|
7361
7476
|
}
|
|
7362
|
-
}))
|
|
7363
|
-
"data-testid": "legend-info",
|
|
7364
|
-
sx: {
|
|
7365
|
-
fontFamily: 'Roboto, Helvetica, Arial',
|
|
7366
|
-
fontSize: 10,
|
|
7367
|
-
color: 'common.black',
|
|
7368
|
-
overflowX: 'hidden',
|
|
7369
|
-
minWidth: defaultCanvasWidth + "px",
|
|
7370
|
-
wordWrap: 'break-word',
|
|
7371
|
-
maxWidth: canvasContainerWidth + "px"
|
|
7372
|
-
}
|
|
7373
|
-
}, layer.dimensions && layer.dimensions.map(function (dim) {
|
|
7374
|
-
return /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7375
|
-
key: layer.name + dim.name
|
|
7376
|
-
}, dim.name === 'time' ? "" + dim.currentValue : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
7377
|
-
style: {
|
|
7378
|
-
fontWeight: 500
|
|
7379
|
-
}
|
|
7380
|
-
}, dim.name, ":"), dim.currentValue, " ", dim.units));
|
|
7381
|
-
})));
|
|
7477
|
+
}));
|
|
7382
7478
|
};
|
|
7383
7479
|
|
|
7384
7480
|
/* *
|
|
@@ -7630,8 +7726,8 @@
|
|
|
7630
7726
|
switch (_b.label) {
|
|
7631
7727
|
case 0:
|
|
7632
7728
|
mapId = payload.mapId, start = payload.start, end = payload.end, interval = payload.interval, timeList = payload.timeList;
|
|
7633
|
-
roundedStart = roundWithTimeStep(start && moment__default["default"].utc(start).unix(), interval, 'ceil');
|
|
7634
|
-
roundedEnd = roundWithTimeStep(end && moment__default["default"].utc(end).unix(), interval, 'floor');
|
|
7729
|
+
roundedStart = roundWithTimeStep(Number(start && moment__default["default"].utc(start).unix()), interval, 'ceil');
|
|
7730
|
+
roundedEnd = roundWithTimeStep(Number(end && moment__default["default"].utc(end).unix()), interval, 'floor');
|
|
7635
7731
|
return [4
|
|
7636
7732
|
/*yield*/
|
|
7637
7733
|
, timeList || generateTimeList(moment__default["default"].utc(roundedStart * 1000), moment__default["default"].utc(roundedEnd * 1000), interval)];
|
|
@@ -8363,6 +8459,39 @@
|
|
|
8363
8459
|
}
|
|
8364
8460
|
});
|
|
8365
8461
|
}
|
|
8462
|
+
function unregisterMapSaga(_a) {
|
|
8463
|
+
var mapId, layerList;
|
|
8464
|
+
var payload = _a.payload;
|
|
8465
|
+
return __generator(this, function (_b) {
|
|
8466
|
+
switch (_b.label) {
|
|
8467
|
+
case 0:
|
|
8468
|
+
mapId = payload.mapId;
|
|
8469
|
+
return [4
|
|
8470
|
+
/*yield*/
|
|
8471
|
+
, effects.select(getLayersByMapId, mapId)];
|
|
8472
|
+
|
|
8473
|
+
case 1:
|
|
8474
|
+
layerList = _b.sent();
|
|
8475
|
+
return [4
|
|
8476
|
+
/*yield*/
|
|
8477
|
+
, effects.all(layerList.map(function (layer) {
|
|
8478
|
+
return effects.put(layerActions.layerDelete({
|
|
8479
|
+
mapId: mapId,
|
|
8480
|
+
layerId: layer.id,
|
|
8481
|
+
layerIndex: 0,
|
|
8482
|
+
origin: LayerActionOrigin.unregisterMapSaga
|
|
8483
|
+
}));
|
|
8484
|
+
}))];
|
|
8485
|
+
|
|
8486
|
+
case 2:
|
|
8487
|
+
_b.sent();
|
|
8488
|
+
|
|
8489
|
+
return [2
|
|
8490
|
+
/*return*/
|
|
8491
|
+
];
|
|
8492
|
+
}
|
|
8493
|
+
});
|
|
8494
|
+
}
|
|
8366
8495
|
function rootSaga$2() {
|
|
8367
8496
|
return __generator(this, function (_a) {
|
|
8368
8497
|
switch (_a.label) {
|
|
@@ -8420,6 +8549,13 @@
|
|
|
8420
8549
|
case 7:
|
|
8421
8550
|
_a.sent();
|
|
8422
8551
|
|
|
8552
|
+
return [4
|
|
8553
|
+
/*yield*/
|
|
8554
|
+
, effects.takeEvery(mapActions$1.unregisterMap.type, unregisterMapSaga)];
|
|
8555
|
+
|
|
8556
|
+
case 8:
|
|
8557
|
+
_a.sent();
|
|
8558
|
+
|
|
8423
8559
|
return [2
|
|
8424
8560
|
/*return*/
|
|
8425
8561
|
];
|
|
@@ -8427,25 +8563,9 @@
|
|
|
8427
8563
|
});
|
|
8428
8564
|
}
|
|
8429
8565
|
|
|
8430
|
-
/* *
|
|
8431
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8432
|
-
* you may not use this file except in compliance with the License.
|
|
8433
|
-
* You may obtain a copy of the License at
|
|
8434
|
-
*
|
|
8435
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8436
|
-
*
|
|
8437
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
8438
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8439
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8440
|
-
* See the License for the specific language governing permissions and
|
|
8441
|
-
* limitations under the License.
|
|
8442
|
-
*
|
|
8443
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
8444
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
8445
|
-
* */
|
|
8446
8566
|
var moduleConfig = {
|
|
8447
8567
|
id: 'webmap-module',
|
|
8448
|
-
|
|
8568
|
+
reducersMap: {
|
|
8449
8569
|
webmap: reducer$3,
|
|
8450
8570
|
services: reducer$5,
|
|
8451
8571
|
layers: reducer$6
|
|
@@ -8483,7 +8603,7 @@
|
|
|
8483
8603
|
service = _c[1];
|
|
8484
8604
|
|
|
8485
8605
|
return __assign(__assign({}, userServices), isNoIdService(service) ? (_b = {}, _b[serviceUrl] = __assign(__assign({}, service), {
|
|
8486
|
-
|
|
8606
|
+
scope: 'user'
|
|
8487
8607
|
}), _b) : {});
|
|
8488
8608
|
}, {});
|
|
8489
8609
|
}
|
|
@@ -8523,13 +8643,16 @@
|
|
|
8523
8643
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
8524
8644
|
* */
|
|
8525
8645
|
function newServiceAddedSaga(capturedAction) {
|
|
8526
|
-
var addedService, id, serviceUrl, name,
|
|
8646
|
+
var addedService, id, serviceUrl, name, scope, _abstract, isUpdating, keywords, groups;
|
|
8527
8647
|
|
|
8528
8648
|
return __generator(this, function (_a) {
|
|
8529
8649
|
switch (_a.label) {
|
|
8530
8650
|
case 0:
|
|
8531
8651
|
addedService = capturedAction.payload;
|
|
8532
|
-
id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name,
|
|
8652
|
+
id = addedService.id, serviceUrl = addedService.serviceUrl, name = addedService.name, scope = addedService.scope, _abstract = addedService["abstract"], isUpdating = addedService.isUpdating;
|
|
8653
|
+
if (isUpdating) return [2
|
|
8654
|
+
/*return*/
|
|
8655
|
+
];
|
|
8533
8656
|
keywords = addedService.layers.reduce(function (keywords, layer) {
|
|
8534
8657
|
var _a;
|
|
8535
8658
|
|
|
@@ -8555,7 +8678,7 @@
|
|
|
8555
8678
|
serviceName: name,
|
|
8556
8679
|
serviceUrl: serviceUrl,
|
|
8557
8680
|
keywords: keywords,
|
|
8558
|
-
|
|
8681
|
+
scope: scope,
|
|
8559
8682
|
groups: groups,
|
|
8560
8683
|
"abstract": _abstract
|
|
8561
8684
|
}))];
|
|
@@ -8569,6 +8692,131 @@
|
|
|
8569
8692
|
}
|
|
8570
8693
|
});
|
|
8571
8694
|
}
|
|
8695
|
+
function layerSelectCloseInfoDialogSaga(_a) {
|
|
8696
|
+
var _b, togglePayload, activeMapIdPayload, isLayerInfoDialogOpen, isLayerInfoDialogOpen, filteredLayers, dialogInfo;
|
|
8697
|
+
|
|
8698
|
+
var type = _a.type,
|
|
8699
|
+
payload = _a.payload;
|
|
8700
|
+
return __generator(this, function (_c) {
|
|
8701
|
+
switch (_c.label) {
|
|
8702
|
+
case 0:
|
|
8703
|
+
_b = type;
|
|
8704
|
+
|
|
8705
|
+
switch (_b) {
|
|
8706
|
+
case uiActions.setToggleOpenDialog.type:
|
|
8707
|
+
return [3
|
|
8708
|
+
/*break*/
|
|
8709
|
+
, 1];
|
|
8710
|
+
|
|
8711
|
+
case uiActions.setActiveMapIdForDialog.type:
|
|
8712
|
+
return [3
|
|
8713
|
+
/*break*/
|
|
8714
|
+
, 4];
|
|
8715
|
+
}
|
|
8716
|
+
|
|
8717
|
+
return [3
|
|
8718
|
+
/*break*/
|
|
8719
|
+
, 8];
|
|
8720
|
+
|
|
8721
|
+
case 1:
|
|
8722
|
+
togglePayload = payload;
|
|
8723
|
+
if (!(!togglePayload.setOpen && togglePayload.type === DialogTypes.LayerSelect)) return [3
|
|
8724
|
+
/*break*/
|
|
8725
|
+
, 3];
|
|
8726
|
+
return [4
|
|
8727
|
+
/*yield*/
|
|
8728
|
+
, effects.put(uiActions.setToggleOpenDialog({
|
|
8729
|
+
type: DialogTypes.LayerInfo,
|
|
8730
|
+
setOpen: false
|
|
8731
|
+
}))];
|
|
8732
|
+
|
|
8733
|
+
case 2:
|
|
8734
|
+
_c.sent();
|
|
8735
|
+
|
|
8736
|
+
_c.label = 3;
|
|
8737
|
+
|
|
8738
|
+
case 3:
|
|
8739
|
+
return [3
|
|
8740
|
+
/*break*/
|
|
8741
|
+
, 13];
|
|
8742
|
+
|
|
8743
|
+
case 4:
|
|
8744
|
+
activeMapIdPayload = payload;
|
|
8745
|
+
if (!!activeMapIdPayload.setOpen) return [3
|
|
8746
|
+
/*break*/
|
|
8747
|
+
, 7];
|
|
8748
|
+
return [4
|
|
8749
|
+
/*yield*/
|
|
8750
|
+
, effects.select(getisDialogOpen, DialogTypes.LayerInfo)];
|
|
8751
|
+
|
|
8752
|
+
case 5:
|
|
8753
|
+
isLayerInfoDialogOpen = _c.sent();
|
|
8754
|
+
if (!isLayerInfoDialogOpen) return [3
|
|
8755
|
+
/*break*/
|
|
8756
|
+
, 7];
|
|
8757
|
+
return [4
|
|
8758
|
+
/*yield*/
|
|
8759
|
+
, effects.put(uiActions.setToggleOpenDialog({
|
|
8760
|
+
type: DialogTypes.LayerInfo,
|
|
8761
|
+
setOpen: false
|
|
8762
|
+
}))];
|
|
8763
|
+
|
|
8764
|
+
case 6:
|
|
8765
|
+
_c.sent();
|
|
8766
|
+
|
|
8767
|
+
_c.label = 7;
|
|
8768
|
+
|
|
8769
|
+
case 7:
|
|
8770
|
+
return [3
|
|
8771
|
+
/*break*/
|
|
8772
|
+
, 13];
|
|
8773
|
+
|
|
8774
|
+
case 8:
|
|
8775
|
+
return [4
|
|
8776
|
+
/*yield*/
|
|
8777
|
+
, effects.select(getisDialogOpen, DialogTypes.LayerInfo)];
|
|
8778
|
+
|
|
8779
|
+
case 9:
|
|
8780
|
+
isLayerInfoDialogOpen = _c.sent();
|
|
8781
|
+
if (!isLayerInfoDialogOpen) return [3
|
|
8782
|
+
/*break*/
|
|
8783
|
+
, 13];
|
|
8784
|
+
return [4
|
|
8785
|
+
/*yield*/
|
|
8786
|
+
, effects.select(getFilteredLayers)];
|
|
8787
|
+
|
|
8788
|
+
case 10:
|
|
8789
|
+
filteredLayers = _c.sent();
|
|
8790
|
+
return [4
|
|
8791
|
+
/*yield*/
|
|
8792
|
+
, effects.select(getActiveLayerInfo)];
|
|
8793
|
+
|
|
8794
|
+
case 11:
|
|
8795
|
+
dialogInfo = _c.sent();
|
|
8796
|
+
if (!!filteredLayers.map(function (layer) {
|
|
8797
|
+
return layer.text;
|
|
8798
|
+
}).includes(dialogInfo.text)) return [3
|
|
8799
|
+
/*break*/
|
|
8800
|
+
, 13];
|
|
8801
|
+
return [4
|
|
8802
|
+
/*yield*/
|
|
8803
|
+
, effects.put(uiActions.setToggleOpenDialog({
|
|
8804
|
+
type: DialogTypes.LayerInfo,
|
|
8805
|
+
setOpen: false
|
|
8806
|
+
}))];
|
|
8807
|
+
|
|
8808
|
+
case 12:
|
|
8809
|
+
_c.sent();
|
|
8810
|
+
|
|
8811
|
+
_c.label = 13;
|
|
8812
|
+
|
|
8813
|
+
case 13:
|
|
8814
|
+
return [2
|
|
8815
|
+
/*return*/
|
|
8816
|
+
];
|
|
8817
|
+
}
|
|
8818
|
+
});
|
|
8819
|
+
}
|
|
8572
8820
|
function layerSelectRemoveServiceSaga(capturedAction) {
|
|
8573
8821
|
var removedService, serviceId, serviceUrl, results, services, servicesEnabled;
|
|
8574
8822
|
return __generator(this, function (_a) {
|
|
@@ -8628,11 +8876,11 @@
|
|
|
8628
8876
|
var _b;
|
|
8629
8877
|
|
|
8630
8878
|
var payload = _a.payload;
|
|
8631
|
-
var
|
|
8879
|
+
var scope = payload.scope,
|
|
8632
8880
|
name = payload.name,
|
|
8633
8881
|
serviceUrl = payload.serviceUrl,
|
|
8634
8882
|
_abstract2 = payload["abstract"];
|
|
8635
|
-
if (!isUserAddedService) return;
|
|
8883
|
+
if (!isUserAddedService(scope)) return;
|
|
8636
8884
|
var localStorageServices = getUserAddedServices();
|
|
8637
8885
|
setUserAddedServices(__assign(__assign({}, localStorageServices), (_b = {}, _b[serviceUrl] = {
|
|
8638
8886
|
name: name,
|
|
@@ -8683,6 +8931,13 @@
|
|
|
8683
8931
|
case 4:
|
|
8684
8932
|
_a.sent();
|
|
8685
8933
|
|
|
8934
|
+
return [4
|
|
8935
|
+
/*yield*/
|
|
8936
|
+
, effects.takeEvery([uiActions.setToggleOpenDialog.type, uiActions.setActiveMapIdForDialog.type, layerSelectActions.disableActiveService.type, layerSelectActions.toggleFilter.type, layerSelectActions.setSearchFilter.type], layerSelectCloseInfoDialogSaga)];
|
|
8937
|
+
|
|
8938
|
+
case 5:
|
|
8939
|
+
_a.sent();
|
|
8940
|
+
|
|
8686
8941
|
return [2
|
|
8687
8942
|
/*return*/
|
|
8688
8943
|
];
|
|
@@ -8690,25 +8945,9 @@
|
|
|
8690
8945
|
});
|
|
8691
8946
|
}
|
|
8692
8947
|
|
|
8693
|
-
/* *
|
|
8694
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8695
|
-
* you may not use this file except in compliance with the License.
|
|
8696
|
-
* You may obtain a copy of the License at
|
|
8697
|
-
*
|
|
8698
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8699
|
-
*
|
|
8700
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
8701
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
8702
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
8703
|
-
* See the License for the specific language governing permissions and
|
|
8704
|
-
* limitations under the License.
|
|
8705
|
-
*
|
|
8706
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
8707
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
8708
|
-
* */
|
|
8709
8948
|
var layerSelectConfig = {
|
|
8710
8949
|
id: 'layerSelect-module',
|
|
8711
|
-
|
|
8950
|
+
reducersMap: {
|
|
8712
8951
|
layerSelect: reducer$1
|
|
8713
8952
|
},
|
|
8714
8953
|
sagas: [rootSaga$1]
|
|
@@ -8839,7 +9078,7 @@
|
|
|
8839
9078
|
* */
|
|
8840
9079
|
var snackbarModuleConfig = {
|
|
8841
9080
|
id: 'snackbar-module',
|
|
8842
|
-
|
|
9081
|
+
reducersMap: {
|
|
8843
9082
|
snackbar: reducer
|
|
8844
9083
|
},
|
|
8845
9084
|
sagas: [rootSaga]
|
|
@@ -8920,6 +9159,7 @@
|
|
|
8920
9159
|
return new Promise(function (resolve, reject) {
|
|
8921
9160
|
var serviceObject = webmap.WMGetServiceFromStore(serviceUrl);
|
|
8922
9161
|
serviceObject.getNodes(function (nodes) {
|
|
9162
|
+
// TODO: Maarten Plieger, 2022-11-02: Harmonize types and use correct types: https://gitlab.com/opengeoweb/opengeoweb/-/issues/2817
|
|
8923
9163
|
var layerTree = recurseNodes(nodes);
|
|
8924
9164
|
resolve(layerTree);
|
|
8925
9165
|
}, function (error) {
|
|
@@ -9339,7 +9579,7 @@
|
|
|
9339
9579
|
},
|
|
9340
9580
|
{
|
|
9341
9581
|
name: "KNMIgeoservicesObs",
|
|
9342
|
-
url: "https://geoservices.knmi.nl/adagucserver?dataset=OBS
|
|
9582
|
+
url: "https://geoservices.knmi.nl/adagucserver?dataset=OBS",
|
|
9343
9583
|
id: "KNMIgeoservicesObs"
|
|
9344
9584
|
},
|
|
9345
9585
|
{
|
|
@@ -9818,14 +10058,14 @@
|
|
|
9818
10058
|
source = _b === void 0 ? 'app' : _b;
|
|
9819
10059
|
var dispatch = reactRedux.useDispatch();
|
|
9820
10060
|
var currentActiveMapId = reactRedux.useSelector(function (store) {
|
|
9821
|
-
return getDialogMapId(store,
|
|
10061
|
+
return getDialogMapId(store, DialogTypes.LayerSelect);
|
|
9822
10062
|
});
|
|
9823
10063
|
var isOpenInStore = reactRedux.useSelector(function (store) {
|
|
9824
|
-
return getisDialogOpen(store,
|
|
10064
|
+
return getisDialogOpen(store, DialogTypes.LayerSelect);
|
|
9825
10065
|
});
|
|
9826
10066
|
var openLayerSelectDialog = React__namespace.useCallback(function () {
|
|
9827
10067
|
dispatch(uiActions.setActiveMapIdForDialog({
|
|
9828
|
-
type:
|
|
10068
|
+
type: DialogTypes.LayerSelect,
|
|
9829
10069
|
mapId: mapId,
|
|
9830
10070
|
setOpen: currentActiveMapId !== mapId ? true : !isOpenInStore,
|
|
9831
10071
|
source: source
|
|
@@ -10155,7 +10395,9 @@
|
|
|
10155
10395
|
}, /*#__PURE__*/React__namespace.createElement(material.Typography, {
|
|
10156
10396
|
variant: "body1",
|
|
10157
10397
|
sx: {
|
|
10158
|
-
fontSize:
|
|
10398
|
+
fontSize: function fontSize(theme) {
|
|
10399
|
+
return theme.palette.geowebColors.layerManager.tableRowDefaultText.fontSize;
|
|
10400
|
+
},
|
|
10159
10401
|
color: 'geowebColors.layerManager.tableRowDefaultText.rgba',
|
|
10160
10402
|
fontWeight: 500
|
|
10161
10403
|
}
|
|
@@ -10558,9 +10800,7 @@
|
|
|
10558
10800
|
services = _a.services,
|
|
10559
10801
|
mapId = _a.mapId,
|
|
10560
10802
|
_b = _a.onLayerRowClick,
|
|
10561
|
-
onLayerRowClick = _b === void 0 ? function () {
|
|
10562
|
-
return null;
|
|
10563
|
-
} : _b,
|
|
10803
|
+
onLayerRowClick = _b === void 0 ? function () {} : _b,
|
|
10564
10804
|
_c = _a.isEnabled,
|
|
10565
10805
|
isEnabled = _c === void 0 ? true : _c,
|
|
10566
10806
|
_d = _a.isLayerMissing,
|
|
@@ -10970,6 +11210,60 @@
|
|
|
10970
11210
|
var isLayerEnabled = reactRedux.useSelector(function (store) {
|
|
10971
11211
|
return getLayerEnabled(store, layerId);
|
|
10972
11212
|
});
|
|
11213
|
+
var service = reactRedux.useSelector(function (store) {
|
|
11214
|
+
return getServiceByName(store, layerService);
|
|
11215
|
+
});
|
|
11216
|
+
var serviceSetLayers = React__namespace.useCallback(function (payload) {
|
|
11217
|
+
dispatch(serviceActions.serviceSetLayers(payload));
|
|
11218
|
+
}, [dispatch]);
|
|
11219
|
+
|
|
11220
|
+
var addService = function addService(serviceUrl) {
|
|
11221
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
11222
|
+
var layers_1, wmService, error_1;
|
|
11223
|
+
return __generator(this, function (_a) {
|
|
11224
|
+
switch (_a.label) {
|
|
11225
|
+
case 0:
|
|
11226
|
+
_a.trys.push([0, 2,, 3]);
|
|
11227
|
+
|
|
11228
|
+
return [4
|
|
11229
|
+
/*yield*/
|
|
11230
|
+
, getLayersFlattenedFromService(serviceUrl)];
|
|
11231
|
+
|
|
11232
|
+
case 1:
|
|
11233
|
+
layers_1 = _a.sent();
|
|
11234
|
+
wmService = webmap.WMGetServiceFromStore(serviceUrl);
|
|
11235
|
+
serviceSetLayers({
|
|
11236
|
+
id: wmService.id,
|
|
11237
|
+
name: wmService.title,
|
|
11238
|
+
serviceUrl: serviceUrl,
|
|
11239
|
+
layers: layers_1,
|
|
11240
|
+
scope: 'user',
|
|
11241
|
+
"abstract": wmService["abstract"]
|
|
11242
|
+
});
|
|
11243
|
+
return [3
|
|
11244
|
+
/*break*/
|
|
11245
|
+
, 3];
|
|
11246
|
+
|
|
11247
|
+
case 2:
|
|
11248
|
+
error_1 = _a.sent();
|
|
11249
|
+
console.warn(error_1.message);
|
|
11250
|
+
return [3
|
|
11251
|
+
/*break*/
|
|
11252
|
+
, 3];
|
|
11253
|
+
|
|
11254
|
+
case 3:
|
|
11255
|
+
return [2
|
|
11256
|
+
/*return*/
|
|
11257
|
+
];
|
|
11258
|
+
}
|
|
11259
|
+
});
|
|
11260
|
+
});
|
|
11261
|
+
};
|
|
11262
|
+
|
|
11263
|
+
if (!service) {
|
|
11264
|
+
addService(layerService);
|
|
11265
|
+
}
|
|
11266
|
+
|
|
10973
11267
|
var layers = reactRedux.useSelector(function (store) {
|
|
10974
11268
|
return getLayersFromService$1(store, layerService);
|
|
10975
11269
|
});
|
|
@@ -11288,7 +11582,7 @@
|
|
|
11288
11582
|
var onStart = React__namespace.useCallback(function (_a) {
|
|
11289
11583
|
var oldIndex = _a.oldIndex;
|
|
11290
11584
|
setActiveDragIndex(oldIndex);
|
|
11291
|
-
|
|
11585
|
+
Sortable__default["default"].ghost.style.opacity = '1';
|
|
11292
11586
|
}, []);
|
|
11293
11587
|
var onEnd = React__namespace.useCallback(function () {
|
|
11294
11588
|
if (activeDragIndex !== null) {
|
|
@@ -11786,14 +12080,14 @@
|
|
|
11786
12080
|
source = _b === void 0 ? 'app' : _b;
|
|
11787
12081
|
var dispatch = reactRedux.useDispatch();
|
|
11788
12082
|
var currentActiveMapId = reactRedux.useSelector(function (store) {
|
|
11789
|
-
return getDialogMapId(store,
|
|
12083
|
+
return getDialogMapId(store, DialogTypes.KeywordFilter);
|
|
11790
12084
|
});
|
|
11791
12085
|
var isOpenInStore = reactRedux.useSelector(function (store) {
|
|
11792
|
-
return getisDialogOpen(store,
|
|
12086
|
+
return getisDialogOpen(store, DialogTypes.KeywordFilter);
|
|
11793
12087
|
});
|
|
11794
12088
|
var openFilterResultsDialog = React__namespace.useCallback(function () {
|
|
11795
12089
|
dispatch(uiActions.setActiveMapIdForDialog({
|
|
11796
|
-
type:
|
|
12090
|
+
type: DialogTypes.KeywordFilter,
|
|
11797
12091
|
mapId: mapId,
|
|
11798
12092
|
setOpen: currentActiveMapId !== mapId ? true : !isOpenInStore,
|
|
11799
12093
|
source: source
|
|
@@ -11933,6 +12227,37 @@
|
|
|
11933
12227
|
|
|
11934
12228
|
return true;
|
|
11935
12229
|
};
|
|
12230
|
+
var loadWMSService = function loadWMSService(serviceUrl, forceReload) {
|
|
12231
|
+
if (forceReload === void 0) {
|
|
12232
|
+
forceReload = false;
|
|
12233
|
+
}
|
|
12234
|
+
|
|
12235
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
12236
|
+
var layers, service;
|
|
12237
|
+
return __generator(this, function (_a) {
|
|
12238
|
+
switch (_a.label) {
|
|
12239
|
+
case 0:
|
|
12240
|
+
return [4
|
|
12241
|
+
/*yield*/
|
|
12242
|
+
, getLayersFlattenedFromService(serviceUrl, forceReload)];
|
|
12243
|
+
|
|
12244
|
+
case 1:
|
|
12245
|
+
layers = _a.sent();
|
|
12246
|
+
service = webmap.WMGetServiceFromStore(serviceUrl);
|
|
12247
|
+
return [2
|
|
12248
|
+
/*return*/
|
|
12249
|
+
, {
|
|
12250
|
+
id: service.id,
|
|
12251
|
+
name: service.title,
|
|
12252
|
+
serviceUrl: serviceUrl,
|
|
12253
|
+
"abstract": service["abstract"],
|
|
12254
|
+
layers: layers,
|
|
12255
|
+
scope: 'user'
|
|
12256
|
+
}];
|
|
12257
|
+
}
|
|
12258
|
+
});
|
|
12259
|
+
});
|
|
12260
|
+
};
|
|
11936
12261
|
|
|
11937
12262
|
/* *
|
|
11938
12263
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -12087,77 +12412,40 @@
|
|
|
12087
12412
|
|
|
12088
12413
|
var addNewService = function addNewService(formValues) {
|
|
12089
12414
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
12090
|
-
var
|
|
12091
|
-
|
|
12092
|
-
|
|
12093
|
-
|
|
12094
|
-
return __generator(this, function (_d) {
|
|
12095
|
-
switch (_d.label) {
|
|
12415
|
+
var layersForService;
|
|
12416
|
+
return __generator(this, function (_a) {
|
|
12417
|
+
switch (_a.label) {
|
|
12096
12418
|
case 0:
|
|
12097
12419
|
clearErrors(fields.serviceUrl.name);
|
|
12098
12420
|
setIsLoading(true);
|
|
12099
|
-
|
|
12421
|
+
_a.label = 1;
|
|
12100
12422
|
|
|
12101
12423
|
case 1:
|
|
12102
|
-
|
|
12424
|
+
_a.trys.push([1, 3,, 4]);
|
|
12103
12425
|
|
|
12104
12426
|
return [4
|
|
12105
12427
|
/*yield*/
|
|
12106
|
-
,
|
|
12428
|
+
, loadWMSService(formValues.serviceUrl, true)];
|
|
12107
12429
|
|
|
12108
12430
|
case 2:
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12118
|
-
|
|
12119
|
-
|
|
12120
|
-
|
|
12121
|
-
path: object.path,
|
|
12122
|
-
keywords: object.keywords ? object.keywords : [],
|
|
12123
|
-
"abstract": object["abstract"] ? object["abstract"] : '',
|
|
12124
|
-
styles: object.styles ? object.styles : [],
|
|
12125
|
-
dimensions: object.dimensions || [],
|
|
12126
|
-
geographicBoundingBox: object.geographicBoundingBox || null
|
|
12127
|
-
});
|
|
12128
|
-
}
|
|
12129
|
-
} catch (e_1_1) {
|
|
12130
|
-
e_1 = {
|
|
12131
|
-
error: e_1_1
|
|
12132
|
-
};
|
|
12133
|
-
} finally {
|
|
12134
|
-
try {
|
|
12135
|
-
if (_b && !_b.done && (_c = _a["return"])) _c.call(_a);
|
|
12136
|
-
} finally {
|
|
12137
|
-
if (e_1) throw e_1.error;
|
|
12138
|
-
}
|
|
12139
|
-
}
|
|
12140
|
-
|
|
12141
|
-
service = webmap.WMGetServiceFromStore(formValues.serviceUrl);
|
|
12142
|
-
serviceSetLayers({
|
|
12143
|
-
id: service.id,
|
|
12144
|
-
name: formValues.serviceName,
|
|
12145
|
-
serviceUrl: formValues.serviceUrl,
|
|
12146
|
-
"abstract": formValues.serviceAbstracts,
|
|
12147
|
-
layers: serviceLayers,
|
|
12148
|
-
isUserAddedService: true
|
|
12149
|
-
});
|
|
12150
|
-
setIsLoading(false);
|
|
12151
|
-
showSnackbar(getSuccesMessage(formValues.serviceName));
|
|
12152
|
-
closePopup();
|
|
12153
|
-
}
|
|
12154
|
-
|
|
12431
|
+
layersForService = _a.sent();
|
|
12432
|
+
serviceSetLayers({
|
|
12433
|
+
id: layersForService.id,
|
|
12434
|
+
name: formValues.serviceName,
|
|
12435
|
+
serviceUrl: formValues.serviceUrl,
|
|
12436
|
+
"abstract": formValues.serviceAbstracts,
|
|
12437
|
+
layers: layersForService.layers,
|
|
12438
|
+
scope: 'user'
|
|
12439
|
+
});
|
|
12440
|
+
setIsLoading(false);
|
|
12441
|
+
showSnackbar(getSuccesMessage(formValues.serviceName));
|
|
12442
|
+
closePopup();
|
|
12155
12443
|
return [3
|
|
12156
12444
|
/*break*/
|
|
12157
12445
|
, 4];
|
|
12158
12446
|
|
|
12159
12447
|
case 3:
|
|
12160
|
-
|
|
12448
|
+
_a.sent();
|
|
12161
12449
|
setIsLoading(false);
|
|
12162
12450
|
setError(fields.serviceUrl.name, {
|
|
12163
12451
|
message: VALIDATIONS_REQUEST_FAILED,
|
|
@@ -12301,8 +12589,8 @@
|
|
|
12301
12589
|
})
|
|
12302
12590
|
},
|
|
12303
12591
|
disabled: isServiceUrlDisabled || isLoading,
|
|
12592
|
+
isReadOnly: isShowPopup,
|
|
12304
12593
|
InputProps: {
|
|
12305
|
-
readOnly: isShowPopup,
|
|
12306
12594
|
disableUnderline: isShowPopup,
|
|
12307
12595
|
endAdornment: isShowPopup && /*#__PURE__*/React__namespace.createElement(material.InputAdornment, {
|
|
12308
12596
|
position: "end"
|
|
@@ -12325,8 +12613,8 @@
|
|
|
12325
12613
|
}
|
|
12326
12614
|
},
|
|
12327
12615
|
disabled: isShowPopup || isLoading,
|
|
12616
|
+
isReadOnly: isShowPopup,
|
|
12328
12617
|
InputProps: {
|
|
12329
|
-
readOnly: isShowPopup,
|
|
12330
12618
|
disableUnderline: isShowPopup
|
|
12331
12619
|
},
|
|
12332
12620
|
sx: style$1.textField,
|
|
@@ -12337,12 +12625,11 @@
|
|
|
12337
12625
|
name: fields.serviceAbstracts.name,
|
|
12338
12626
|
label: fields.serviceAbstracts.label,
|
|
12339
12627
|
disabled: isShowPopup || isLoading,
|
|
12340
|
-
|
|
12628
|
+
isReadOnly: isShowPopup,
|
|
12341
12629
|
InputProps: {
|
|
12342
|
-
readOnly: isShowPopup,
|
|
12343
12630
|
disableUnderline: isShowPopup
|
|
12344
12631
|
},
|
|
12345
|
-
helperText: !isShowPopup
|
|
12632
|
+
helperText: !isShowPopup ? 'Short description of what this service does' : '',
|
|
12346
12633
|
sx: style$1.textField,
|
|
12347
12634
|
defaultValue: ""
|
|
12348
12635
|
}), !isServiceUrlDisabled && /*#__PURE__*/React__namespace.createElement(InitialValidationsTrigger, {
|
|
@@ -12585,63 +12872,8 @@
|
|
|
12585
12872
|
* See the License for the specific language governing permissions and
|
|
12586
12873
|
* limitations under the License.
|
|
12587
12874
|
*
|
|
12588
|
-
* Copyright
|
|
12589
|
-
* Copyright
|
|
12590
|
-
* */
|
|
12591
|
-
var filterLayersFromService = function filterLayersFromService(serviceId, services, filterIds, allFiltersActive, searchString) {
|
|
12592
|
-
var mapStoreService = services[serviceId];
|
|
12593
|
-
if (!mapStoreService) return [];
|
|
12594
|
-
|
|
12595
|
-
if (searchString === '' && allFiltersActive) {
|
|
12596
|
-
return mapStoreService.layers.filter(function (layer) {
|
|
12597
|
-
return layer.leaf;
|
|
12598
|
-
});
|
|
12599
|
-
}
|
|
12600
|
-
|
|
12601
|
-
var searchStringArray = searchString.split(' ');
|
|
12602
|
-
return mapStoreService.layers.filter(function (layer) {
|
|
12603
|
-
return searchStringArray.every(function (search) {
|
|
12604
|
-
var _a, _b, _c;
|
|
12605
|
-
|
|
12606
|
-
var searchLowercase = search.toLowerCase();
|
|
12607
|
-
var layerFilterIds = layer.path.map(function (group) {
|
|
12608
|
-
return "group-" + group;
|
|
12609
|
-
}).concat(layer.keywords.map(function (keyword) {
|
|
12610
|
-
return "keyword-" + keyword;
|
|
12611
|
-
}));
|
|
12612
|
-
var isFilterInLayer = (layerFilterIds === null || layerFilterIds === void 0 ? void 0 : layerFilterIds.some(function (id) {
|
|
12613
|
-
return filterIds.includes(id);
|
|
12614
|
-
})) || allFiltersActive;
|
|
12615
|
-
var isSearchTextInLayerFilter = layerFilterIds === null || layerFilterIds === void 0 ? void 0 : layerFilterIds.some(function (filterId) {
|
|
12616
|
-
return filterId.toLowerCase().includes(searchLowercase);
|
|
12617
|
-
});
|
|
12618
|
-
var isSearchTextInLayerName = (_a = layer.name) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(searchLowercase);
|
|
12619
|
-
var isSearchTextInLayerText = (_b = layer.text) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(searchLowercase);
|
|
12620
|
-
var isSearchTextInLayerAbstract = (_c = layer["abstract"]) === null || _c === void 0 ? void 0 : _c.toLowerCase().includes(searchLowercase);
|
|
12621
|
-
var isSearchTextInServiceName = mapStoreService.name.toLowerCase().includes(searchLowercase);
|
|
12622
|
-
var isSearchTextInLayer = isSearchTextInLayerName || isSearchTextInLayerText || isSearchTextInLayerAbstract || isSearchTextInLayerFilter || isSearchTextInServiceName;
|
|
12623
|
-
return isFilterInLayer && isSearchTextInLayer;
|
|
12624
|
-
});
|
|
12625
|
-
}).filter(function (layer) {
|
|
12626
|
-
return layer.leaf;
|
|
12627
|
-
});
|
|
12628
|
-
};
|
|
12629
|
-
|
|
12630
|
-
/* *
|
|
12631
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12632
|
-
* you may not use this file except in compliance with the License.
|
|
12633
|
-
* You may obtain a copy of the License at
|
|
12634
|
-
*
|
|
12635
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12636
|
-
*
|
|
12637
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12638
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12639
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12640
|
-
* See the License for the specific language governing permissions and
|
|
12641
|
-
* limitations under the License.
|
|
12642
|
-
*
|
|
12643
|
-
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
12644
|
-
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
12875
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
12876
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
12645
12877
|
* */
|
|
12646
12878
|
|
|
12647
12879
|
var LayerAddRemoveButton = function LayerAddRemoveButton(_a) {
|
|
@@ -12764,12 +12996,11 @@
|
|
|
12764
12996
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
12765
12997
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
12766
12998
|
* */
|
|
12767
|
-
var textStyle
|
|
12999
|
+
var textStyle = {
|
|
12768
13000
|
lineHeight: '20px',
|
|
12769
13001
|
letterSpacing: '0.25px'
|
|
12770
13002
|
};
|
|
12771
|
-
|
|
12772
|
-
var textStyleWithMargin = __assign(__assign({}, textStyle$1), {
|
|
13003
|
+
var textStyleWithMargin = __assign(__assign({}, textStyle), {
|
|
12773
13004
|
marginBottom: 1
|
|
12774
13005
|
});
|
|
12775
13006
|
|
|
@@ -12778,7 +13009,7 @@
|
|
|
12778
13009
|
value = _a.value;
|
|
12779
13010
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
12780
13011
|
variant: "subtitle2",
|
|
12781
|
-
sx: textStyle
|
|
13012
|
+
sx: textStyle
|
|
12782
13013
|
}, label), /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
12783
13014
|
variant: "body2",
|
|
12784
13015
|
sx: textStyleWithMargin
|
|
@@ -12801,10 +13032,6 @@
|
|
|
12801
13032
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
12802
13033
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
12803
13034
|
* */
|
|
12804
|
-
var textStyle = {
|
|
12805
|
-
lineHeight: '20px',
|
|
12806
|
-
letterSpacing: '0.25px'
|
|
12807
|
-
};
|
|
12808
13035
|
|
|
12809
13036
|
var valueStyle = __assign(__assign({}, textStyle), {
|
|
12810
13037
|
overflowWrap: 'break-word'
|
|
@@ -12816,12 +13043,15 @@
|
|
|
12816
13043
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
12817
13044
|
variant: "subtitle2",
|
|
12818
13045
|
sx: textStyle
|
|
12819
|
-
}, label), /*#__PURE__*/React__default["default"].createElement(
|
|
13046
|
+
}, label), list.length === 0 ? /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
13047
|
+
variant: "body2",
|
|
13048
|
+
sx: textStyleWithMargin
|
|
13049
|
+
}, "-") : /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
|
|
12820
13050
|
container: true,
|
|
12821
13051
|
direction: "column"
|
|
12822
13052
|
}, list.map(function (item) {
|
|
12823
13053
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
12824
|
-
key: item.
|
|
13054
|
+
key: item.label
|
|
12825
13055
|
}, /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
|
|
12826
13056
|
item: true,
|
|
12827
13057
|
container: true,
|
|
@@ -12834,7 +13064,7 @@
|
|
|
12834
13064
|
}, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
12835
13065
|
variant: "body2",
|
|
12836
13066
|
sx: textStyle
|
|
12837
|
-
}, item.
|
|
13067
|
+
}, item.label, ":"))), /*#__PURE__*/React__default["default"].createElement(Grid__default["default"], {
|
|
12838
13068
|
item: true,
|
|
12839
13069
|
container: true,
|
|
12840
13070
|
direction: "row",
|
|
@@ -12849,6 +13079,41 @@
|
|
|
12849
13079
|
})));
|
|
12850
13080
|
};
|
|
12851
13081
|
|
|
13082
|
+
/* *
|
|
13083
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13084
|
+
* you may not use this file except in compliance with the License.
|
|
13085
|
+
* You may obtain a copy of the License at
|
|
13086
|
+
*
|
|
13087
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13088
|
+
*
|
|
13089
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13090
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13091
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13092
|
+
* See the License for the specific language governing permissions and
|
|
13093
|
+
* limitations under the License.
|
|
13094
|
+
*
|
|
13095
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
13096
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
13097
|
+
* */
|
|
13098
|
+
|
|
13099
|
+
var LayerInfoLegend = function LayerInfoLegend(_a) {
|
|
13100
|
+
var title = _a.title,
|
|
13101
|
+
name = _a.name,
|
|
13102
|
+
dimensions = _a.dimensions,
|
|
13103
|
+
legendURL = _a.legendURL;
|
|
13104
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Typography__default["default"], {
|
|
13105
|
+
variant: "subtitle2",
|
|
13106
|
+
sx: textStyleWithMargin
|
|
13107
|
+
}, "Legend"), /*#__PURE__*/React__default["default"].createElement(LegendLayout, {
|
|
13108
|
+
title: title,
|
|
13109
|
+
name: name,
|
|
13110
|
+
dimensions: dimensions
|
|
13111
|
+
}, legendURL ? /*#__PURE__*/React__default["default"].createElement("img", {
|
|
13112
|
+
alt: title,
|
|
13113
|
+
src: legendURL
|
|
13114
|
+
}) : '-'));
|
|
13115
|
+
};
|
|
13116
|
+
|
|
12852
13117
|
/* *
|
|
12853
13118
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12854
13119
|
* you may not use this file except in compliance with the License.
|
|
@@ -12880,22 +13145,19 @@
|
|
|
12880
13145
|
|
|
12881
13146
|
return styles.join(', ');
|
|
12882
13147
|
};
|
|
12883
|
-
var getDimensionValue = function getDimensionValue(name,
|
|
12884
|
-
var
|
|
12885
|
-
|
|
12886
|
-
if (includeUnit === void 0) {
|
|
12887
|
-
includeUnit = false;
|
|
12888
|
-
}
|
|
12889
|
-
|
|
12890
|
-
var dimension = (_a = layer.dimensions) === null || _a === void 0 ? void 0 : _a.find(function (dimension) {
|
|
12891
|
-
return dimension.name.toLowerCase() === name;
|
|
13148
|
+
var getDimensionValue = function getDimensionValue(name, dimensions) {
|
|
13149
|
+
var dimension = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
|
|
13150
|
+
return dimension.name.toLowerCase() === name.toLowerCase();
|
|
12892
13151
|
});
|
|
12893
13152
|
|
|
12894
|
-
if (!dimension) {
|
|
12895
|
-
return
|
|
13153
|
+
if (!dimension || !dimension.currentValue) {
|
|
13154
|
+
return null;
|
|
12896
13155
|
}
|
|
12897
13156
|
|
|
12898
|
-
var
|
|
13157
|
+
var dimName = dimension.name.toLowerCase();
|
|
13158
|
+
var breakAt = dimName === 'time' ? '/' : ',';
|
|
13159
|
+
var includeUnit = dimName !== 'time' && dimName !== 'reference_time';
|
|
13160
|
+
var dimValue = dimension.currentValue.split(breakAt).join(breakAt + " ");
|
|
12899
13161
|
|
|
12900
13162
|
if (includeUnit) {
|
|
12901
13163
|
return dimValue + " " + dimension.units;
|
|
@@ -12906,6 +13168,64 @@
|
|
|
12906
13168
|
var getLayerBbox = function getLayerBbox(layer) {
|
|
12907
13169
|
return layer.geographicBoundingBox ? "west " + layer.geographicBoundingBox.west + ", east " + layer.geographicBoundingBox.east + ", north " + layer.geographicBoundingBox.north + ", south " + layer.geographicBoundingBox.south : '-';
|
|
12908
13170
|
};
|
|
13171
|
+
var getDimensionIcon$1 = function getDimensionIcon(name, dimensions) {
|
|
13172
|
+
var dimension = dimensions === null || dimensions === void 0 ? void 0 : dimensions.find(function (dimension) {
|
|
13173
|
+
return dimension.name.toLowerCase() === name.toLowerCase();
|
|
13174
|
+
});
|
|
13175
|
+
|
|
13176
|
+
if (!dimension) {
|
|
13177
|
+
return null;
|
|
13178
|
+
}
|
|
13179
|
+
|
|
13180
|
+
switch (dimension.name.toLowerCase()) {
|
|
13181
|
+
case 'time':
|
|
13182
|
+
return /*#__PURE__*/React__default["default"].createElement(theme.DimensionsTime, null);
|
|
13183
|
+
|
|
13184
|
+
case 'reference_time':
|
|
13185
|
+
return /*#__PURE__*/React__default["default"].createElement(theme.DimensionsRefTime, null);
|
|
13186
|
+
|
|
13187
|
+
case 'elevation':
|
|
13188
|
+
return /*#__PURE__*/React__default["default"].createElement(theme.DimensionsElevation, null);
|
|
13189
|
+
|
|
13190
|
+
default:
|
|
13191
|
+
return /*#__PURE__*/React__default["default"].createElement(theme.DimensionsOther, null);
|
|
13192
|
+
}
|
|
13193
|
+
};
|
|
13194
|
+
var getDimensionLabel = function getDimensionLabel(name) {
|
|
13195
|
+
var dimName = name.toLowerCase().split('_').join(' ');
|
|
13196
|
+
return dimName.charAt(0).toUpperCase() + dimName.slice(1);
|
|
13197
|
+
};
|
|
13198
|
+
var getDimensionsList = function getDimensionsList(dimensions) {
|
|
13199
|
+
var result = [];
|
|
13200
|
+
dimensions === null || dimensions === void 0 ? void 0 : dimensions.forEach(function (_a) {
|
|
13201
|
+
var name = _a.name;
|
|
13202
|
+
var value = getDimensionValue(name, dimensions);
|
|
13203
|
+
|
|
13204
|
+
if (!value) {
|
|
13205
|
+
return;
|
|
13206
|
+
}
|
|
13207
|
+
|
|
13208
|
+
var icon = getDimensionIcon$1(name, dimensions);
|
|
13209
|
+
var label = getDimensionLabel(name);
|
|
13210
|
+
result.push({
|
|
13211
|
+
label: label,
|
|
13212
|
+
value: value,
|
|
13213
|
+
icon: icon
|
|
13214
|
+
});
|
|
13215
|
+
}); // sort alphabetically so other dimensions are sorted
|
|
13216
|
+
|
|
13217
|
+
result.sort(function (a, b) {
|
|
13218
|
+
return a.label.localeCompare(b.label);
|
|
13219
|
+
}); // sort by fixed order
|
|
13220
|
+
|
|
13221
|
+
var preferredOrder = ['Time', 'Reference time', 'Elevation']; // using reverse ordering to make sure the other dimensions come last
|
|
13222
|
+
|
|
13223
|
+
preferredOrder.reverse();
|
|
13224
|
+
result.sort(function (a, b) {
|
|
13225
|
+
return preferredOrder.indexOf(b.label) - preferredOrder.indexOf(a.label);
|
|
13226
|
+
});
|
|
13227
|
+
return result;
|
|
13228
|
+
};
|
|
12909
13229
|
|
|
12910
13230
|
/* *
|
|
12911
13231
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -12925,23 +13245,21 @@
|
|
|
12925
13245
|
* */
|
|
12926
13246
|
|
|
12927
13247
|
var LayerInfoDialog = function LayerInfoDialog(_a) {
|
|
12928
|
-
var _b;
|
|
13248
|
+
var _b, _c;
|
|
12929
13249
|
|
|
12930
13250
|
var onClose = _a.onClose,
|
|
12931
13251
|
layer = _a.layer,
|
|
12932
13252
|
isOpen = _a.isOpen,
|
|
12933
|
-
|
|
12934
|
-
onMouseDown =
|
|
12935
|
-
|
|
12936
|
-
order =
|
|
12937
|
-
|
|
12938
|
-
source =
|
|
13253
|
+
_d = _a.onMouseDown,
|
|
13254
|
+
onMouseDown = _d === void 0 ? function () {} : _d,
|
|
13255
|
+
_e = _a.order,
|
|
13256
|
+
order = _e === void 0 ? 0 : _e,
|
|
13257
|
+
_f = _a.source,
|
|
13258
|
+
source = _f === void 0 ? 'app' : _f,
|
|
12939
13259
|
dialogHeight = _a.dialogHeight;
|
|
12940
13260
|
var styles = getLayerStyles(layer);
|
|
12941
13261
|
var bbox = getLayerBbox(layer);
|
|
12942
|
-
var
|
|
12943
|
-
var refTimeValue = getDimensionValue('reference_time', layer, ',');
|
|
12944
|
-
var elevationValue = getDimensionValue('elevation', layer, ',', true);
|
|
13262
|
+
var dimensions = getDimensionsList(layer.dimensions);
|
|
12945
13263
|
return /*#__PURE__*/React__default["default"].createElement(shared.ToolContainerDraggable, {
|
|
12946
13264
|
onClose: onClose,
|
|
12947
13265
|
headerSize: "xs",
|
|
@@ -12976,23 +13294,7 @@
|
|
|
12976
13294
|
value: layer["abstract"] || '-'
|
|
12977
13295
|
}), /*#__PURE__*/React__default["default"].createElement(LayerInfoList, {
|
|
12978
13296
|
label: "Dimensions",
|
|
12979
|
-
list:
|
|
12980
|
-
name: 'Time',
|
|
12981
|
-
value: timeValue,
|
|
12982
|
-
icon: /*#__PURE__*/React__default["default"].createElement(theme.DimensionsTime, null)
|
|
12983
|
-
}, {
|
|
12984
|
-
name: 'Reference Time',
|
|
12985
|
-
value: refTimeValue,
|
|
12986
|
-
icon: /*#__PURE__*/React__default["default"].createElement(theme.DimensionsRefTime, null)
|
|
12987
|
-
}, {
|
|
12988
|
-
name: 'Elevation',
|
|
12989
|
-
value: elevationValue,
|
|
12990
|
-
icon: /*#__PURE__*/React__default["default"].createElement(theme.DimensionsElevation, null)
|
|
12991
|
-
}, {
|
|
12992
|
-
name: 'Other dimensions',
|
|
12993
|
-
value: '-',
|
|
12994
|
-
icon: /*#__PURE__*/React__default["default"].createElement(theme.DimensionsOther, null)
|
|
12995
|
-
}]
|
|
13297
|
+
list: dimensions
|
|
12996
13298
|
}), /*#__PURE__*/React__default["default"].createElement(LayerInfoText, {
|
|
12997
13299
|
label: "Styles",
|
|
12998
13300
|
value: styles
|
|
@@ -13005,9 +13307,152 @@
|
|
|
13005
13307
|
}), /*#__PURE__*/React__default["default"].createElement(LayerInfoText, {
|
|
13006
13308
|
label: "Keywords",
|
|
13007
13309
|
value: ((_b = layer.keywords) === null || _b === void 0 ? void 0 : _b.join(', ')) || '-'
|
|
13310
|
+
}), /*#__PURE__*/React__default["default"].createElement(LayerInfoLegend, {
|
|
13311
|
+
title: layer.text,
|
|
13312
|
+
name: layer.name,
|
|
13313
|
+
dimensions: layer.dimensions,
|
|
13314
|
+
legendURL: ((_c = layer.styles) === null || _c === void 0 ? void 0 : _c.length) ? layer.styles[0].legendURL : undefined
|
|
13008
13315
|
})));
|
|
13009
13316
|
};
|
|
13010
13317
|
|
|
13318
|
+
/* *
|
|
13319
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13320
|
+
* you may not use this file except in compliance with the License.
|
|
13321
|
+
* You may obtain a copy of the License at
|
|
13322
|
+
*
|
|
13323
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13324
|
+
*
|
|
13325
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13326
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13327
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13328
|
+
* See the License for the specific language governing permissions and
|
|
13329
|
+
* limitations under the License.
|
|
13330
|
+
*
|
|
13331
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
13332
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
13333
|
+
* */
|
|
13334
|
+
|
|
13335
|
+
var LayerListDimensions = function LayerListDimensions(_a) {
|
|
13336
|
+
var dimensions = _a.dimensions;
|
|
13337
|
+
|
|
13338
|
+
if (!dimensions || !dimensions.length) {
|
|
13339
|
+
return null;
|
|
13340
|
+
}
|
|
13341
|
+
|
|
13342
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, dimensions.map(function (dimension) {
|
|
13343
|
+
return /*#__PURE__*/React__default["default"].createElement(Tooltip__default["default"], {
|
|
13344
|
+
key: dimension.label,
|
|
13345
|
+
title: dimension.label + ": " + dimension.value
|
|
13346
|
+
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
13347
|
+
style: {
|
|
13348
|
+
marginRight: 4
|
|
13349
|
+
}
|
|
13350
|
+
}, dimension.icon));
|
|
13351
|
+
}));
|
|
13352
|
+
};
|
|
13353
|
+
|
|
13354
|
+
/* *
|
|
13355
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13356
|
+
* you may not use this file except in compliance with the License.
|
|
13357
|
+
* You may obtain a copy of the License at
|
|
13358
|
+
*
|
|
13359
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13360
|
+
*
|
|
13361
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13362
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13363
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13364
|
+
* See the License for the specific language governing permissions and
|
|
13365
|
+
* limitations under the License.
|
|
13366
|
+
*
|
|
13367
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
13368
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
13369
|
+
* */
|
|
13370
|
+
var buttonLarge = 80;
|
|
13371
|
+
var buttonSmall = 60;
|
|
13372
|
+
var layerSelectColumnsLarge = {
|
|
13373
|
+
column1: {
|
|
13374
|
+
width: 112
|
|
13375
|
+
},
|
|
13376
|
+
column2: {
|
|
13377
|
+
marginTop: '6px',
|
|
13378
|
+
width: "calc(100% - 112px)",
|
|
13379
|
+
height: '36px',
|
|
13380
|
+
paddingLeft: '20px'
|
|
13381
|
+
},
|
|
13382
|
+
column3: {
|
|
13383
|
+
height: '12px'
|
|
13384
|
+
},
|
|
13385
|
+
column4: {
|
|
13386
|
+
height: '24px'
|
|
13387
|
+
},
|
|
13388
|
+
column5: {
|
|
13389
|
+
height: '24px',
|
|
13390
|
+
width: 140
|
|
13391
|
+
},
|
|
13392
|
+
column6: {
|
|
13393
|
+
height: '24px',
|
|
13394
|
+
width: "calc(100% - 140px)"
|
|
13395
|
+
},
|
|
13396
|
+
column7: {
|
|
13397
|
+
height: '48px',
|
|
13398
|
+
width: buttonLarge,
|
|
13399
|
+
marginRight: 1,
|
|
13400
|
+
marginLeft: 2
|
|
13401
|
+
},
|
|
13402
|
+
column8: {
|
|
13403
|
+
width: "calc(100% - " + buttonLarge + "px - 24px)"
|
|
13404
|
+
},
|
|
13405
|
+
column9: {
|
|
13406
|
+
width: "calc(" + buttonLarge + "px + 24px)"
|
|
13407
|
+
}
|
|
13408
|
+
};
|
|
13409
|
+
var layerSelectColumnsSmall = {
|
|
13410
|
+
column1: {
|
|
13411
|
+
width: '100%'
|
|
13412
|
+
},
|
|
13413
|
+
column2: {
|
|
13414
|
+
marginTop: '4px',
|
|
13415
|
+
width: "calc(100% - 20px)"
|
|
13416
|
+
},
|
|
13417
|
+
column3: {
|
|
13418
|
+
height: '12px'
|
|
13419
|
+
},
|
|
13420
|
+
column4: {
|
|
13421
|
+
height: '48px'
|
|
13422
|
+
},
|
|
13423
|
+
column5: {
|
|
13424
|
+
height: '24px',
|
|
13425
|
+
width: '100%'
|
|
13426
|
+
},
|
|
13427
|
+
column6: {
|
|
13428
|
+
height: '24px',
|
|
13429
|
+
width: '100%'
|
|
13430
|
+
},
|
|
13431
|
+
column7: {
|
|
13432
|
+
height: '48px',
|
|
13433
|
+
width: buttonSmall,
|
|
13434
|
+
marginRight: 0,
|
|
13435
|
+
marginLeft: 1
|
|
13436
|
+
},
|
|
13437
|
+
column8: {
|
|
13438
|
+
width: "calc(100% - " + buttonSmall + "px - 8px)"
|
|
13439
|
+
},
|
|
13440
|
+
column9: {
|
|
13441
|
+
width: "calc(" + buttonSmall + "px + 8px)"
|
|
13442
|
+
}
|
|
13443
|
+
};
|
|
13444
|
+
var breakpoint = 500;
|
|
13445
|
+
var widthToColumns = function widthToColumns(width) {
|
|
13446
|
+
if (width <= breakpoint) return layerSelectColumnsSmall;
|
|
13447
|
+
return layerSelectColumnsLarge;
|
|
13448
|
+
};
|
|
13449
|
+
var rowHeightLarge = 68;
|
|
13450
|
+
var rowHeightSmall = 136;
|
|
13451
|
+
var widthToRowHeight = function widthToRowHeight(width) {
|
|
13452
|
+
if (width <= breakpoint) return rowHeightSmall;
|
|
13453
|
+
return rowHeightLarge;
|
|
13454
|
+
};
|
|
13455
|
+
|
|
13011
13456
|
/* *
|
|
13012
13457
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
13013
13458
|
* you may not use this file except in compliance with the License.
|
|
@@ -13028,11 +13473,12 @@
|
|
|
13028
13473
|
fontSize: '10px',
|
|
13029
13474
|
textOverflow: 'ellipsis',
|
|
13030
13475
|
overflow: 'hidden',
|
|
13031
|
-
whiteSpace: 'nowrap'
|
|
13476
|
+
whiteSpace: 'nowrap',
|
|
13477
|
+
lineHeight: 1
|
|
13032
13478
|
};
|
|
13033
13479
|
|
|
13034
13480
|
var LayerListRow = function LayerListRow(_a) {
|
|
13035
|
-
var _b
|
|
13481
|
+
var _b;
|
|
13036
13482
|
|
|
13037
13483
|
var layer = _a.layer,
|
|
13038
13484
|
layerIndex = _a.layerIndex,
|
|
@@ -13040,28 +13486,29 @@
|
|
|
13040
13486
|
addLayer = _a.addLayer,
|
|
13041
13487
|
deleteLayer = _a.deleteLayer,
|
|
13042
13488
|
mapLayers = _a.mapLayers,
|
|
13043
|
-
mapId = _a.mapId
|
|
13489
|
+
mapId = _a.mapId,
|
|
13490
|
+
layerSelectWidth = _a.layerSelectWidth;
|
|
13491
|
+
var rowHeight = widthToRowHeight(layerSelectWidth);
|
|
13492
|
+
var columns = widthToColumns(layerSelectWidth);
|
|
13493
|
+
var dimensions = getDimensionsList(layer.dimensions);
|
|
13044
13494
|
return /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13045
13495
|
"data-testid": "layerListLayerRow",
|
|
13046
13496
|
container: true,
|
|
13047
|
-
item: true,
|
|
13048
|
-
xs: 12,
|
|
13049
13497
|
justifyContent: "center",
|
|
13050
13498
|
alignItems: "center",
|
|
13051
13499
|
sx: {
|
|
13052
13500
|
backgroundColor: 'geowebColors.cards.cardContainer',
|
|
13053
13501
|
padding: '8px',
|
|
13054
13502
|
marginBottom: '4px',
|
|
13055
|
-
height:
|
|
13503
|
+
height: rowHeight,
|
|
13056
13504
|
border: 'solid 1px',
|
|
13057
13505
|
borderColor: 'geowebColors.cards.cardContainerBorder'
|
|
13058
13506
|
}
|
|
13059
13507
|
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13060
13508
|
container: true,
|
|
13061
13509
|
item: true,
|
|
13062
|
-
|
|
13510
|
+
sx: columns.column8
|
|
13063
13511
|
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13064
|
-
container: true,
|
|
13065
13512
|
item: true,
|
|
13066
13513
|
xs: 12
|
|
13067
13514
|
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
@@ -13070,25 +13517,19 @@
|
|
|
13070
13517
|
height: '14px',
|
|
13071
13518
|
lineHeight: '14px',
|
|
13072
13519
|
fontWeight: 500,
|
|
13073
|
-
WebkitLineClamp: 1,
|
|
13074
|
-
display: '-webkit-box',
|
|
13075
|
-
WebkitBoxOrient: 'vertical',
|
|
13076
13520
|
textOverflow: 'ellipsis',
|
|
13077
13521
|
overflow: 'hidden'
|
|
13078
13522
|
}
|
|
13079
13523
|
}, layer.text)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13080
|
-
container: true,
|
|
13081
13524
|
item: true,
|
|
13082
|
-
|
|
13083
|
-
direction: "column"
|
|
13525
|
+
container: true,
|
|
13526
|
+
direction: "column",
|
|
13527
|
+
sx: columns.column1
|
|
13084
13528
|
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
13085
13529
|
sx: {
|
|
13086
13530
|
fontSize: '12px',
|
|
13087
13531
|
height: '18px',
|
|
13088
13532
|
lineHeight: '18px',
|
|
13089
|
-
WebkitLineClamp: 1,
|
|
13090
|
-
display: '-webkit-box',
|
|
13091
|
-
WebkitBoxOrient: 'vertical',
|
|
13092
13533
|
textOverflow: 'ellipsis',
|
|
13093
13534
|
overflow: 'hidden'
|
|
13094
13535
|
}
|
|
@@ -13096,44 +13537,41 @@
|
|
|
13096
13537
|
layer: layer,
|
|
13097
13538
|
mapId: mapId,
|
|
13098
13539
|
serviceName: service.name
|
|
13099
|
-
})),
|
|
13540
|
+
})), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13541
|
+
item: true,
|
|
13542
|
+
sx: columns.column2
|
|
13543
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13544
|
+
item: true,
|
|
13545
|
+
sx: columns.column3
|
|
13546
|
+
}, layer["abstract"] && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
13100
13547
|
"data-testid": "layerAbstract",
|
|
13548
|
+
sx: layerInfoStyle
|
|
13549
|
+
}, layer["abstract"])), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13550
|
+
item: true,
|
|
13101
13551
|
container: true,
|
|
13552
|
+
sx: columns.column4
|
|
13553
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13102
13554
|
item: true,
|
|
13103
|
-
|
|
13104
|
-
|
|
13105
|
-
|
|
13106
|
-
|
|
13107
|
-
|
|
13108
|
-
|
|
13109
|
-
|
|
13110
|
-
|
|
13111
|
-
},
|
|
13112
|
-
sx:
|
|
13113
|
-
height: 15
|
|
13114
|
-
})
|
|
13115
|
-
}, layer["abstract"]), layer.path.length > 0 && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
13116
|
-
sx: __assign(__assign({}, layerInfoStyle), {
|
|
13117
|
-
height: ((_c = layer.keywords) === null || _c === void 0 ? void 0 : _c.length) ? 15 : 30
|
|
13118
|
-
})
|
|
13119
|
-
}, "Groups: ", layer.path.join(' / ')), ((_d = layer.keywords) === null || _d === void 0 ? void 0 : _d.length) > 0 && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
13120
|
-
sx: __assign(__assign({}, layerInfoStyle), {
|
|
13121
|
-
height: layer.path.length ? 15 : 30
|
|
13122
|
-
})
|
|
13555
|
+
sx: columns.column5
|
|
13556
|
+
}, /*#__PURE__*/React__default["default"].createElement(LayerListDimensions, {
|
|
13557
|
+
dimensions: dimensions
|
|
13558
|
+
})), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13559
|
+
item: true,
|
|
13560
|
+
sx: columns.column6
|
|
13561
|
+
}, layer.path.length > 0 && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
13562
|
+
sx: layerInfoStyle
|
|
13563
|
+
}, "Groups: ", layer.path.join(' / ')), ((_b = layer.keywords) === null || _b === void 0 ? void 0 : _b.length) > 0 && /*#__PURE__*/React__default["default"].createElement(material.Typography, {
|
|
13564
|
+
sx: layerInfoStyle
|
|
13123
13565
|
}, "Keywords:", ' ', layer.keywords.slice().sort(function (a, b) {
|
|
13124
13566
|
return a.localeCompare(b);
|
|
13125
|
-
}).join(', ')))
|
|
13567
|
+
}).join(', ')))))), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
13126
13568
|
container: true,
|
|
13127
13569
|
item: true,
|
|
13128
|
-
|
|
13570
|
+
sx: columns.column9,
|
|
13129
13571
|
justifyContent: "flex-end",
|
|
13130
13572
|
alignItems: "center"
|
|
13131
13573
|
}, /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
13132
|
-
sx:
|
|
13133
|
-
width: '80px',
|
|
13134
|
-
height: '48px',
|
|
13135
|
-
marginRight: '8px'
|
|
13136
|
-
}
|
|
13574
|
+
sx: columns.column7
|
|
13137
13575
|
}, /*#__PURE__*/React__default["default"].createElement(LayerAddRemoveButton, {
|
|
13138
13576
|
layer: layer,
|
|
13139
13577
|
layerIndex: layerIndex,
|
|
@@ -13163,38 +13601,17 @@
|
|
|
13163
13601
|
|
|
13164
13602
|
var LayerList = function LayerList(_a) {
|
|
13165
13603
|
var services = _a.services,
|
|
13166
|
-
|
|
13604
|
+
filteredLayers = _a.filteredLayers,
|
|
13167
13605
|
layerSelectHeight = _a.layerSelectHeight,
|
|
13168
13606
|
serviceListHeight = _a.serviceListHeight,
|
|
13607
|
+
layerSelectWidth = _a.layerSelectWidth,
|
|
13169
13608
|
addLayer = _a.addLayer,
|
|
13170
13609
|
deleteLayer = _a.deleteLayer,
|
|
13171
|
-
searchString = _a.searchString,
|
|
13172
13610
|
mapLayers = _a.mapLayers,
|
|
13173
|
-
filterIds = _a.filterIds,
|
|
13174
|
-
allFiltersActive = _a.allFiltersActive,
|
|
13175
13611
|
mapId = _a.mapId;
|
|
13612
|
+
var rowMargin = 4;
|
|
13613
|
+
var rowHeight = widthToRowHeight(layerSelectWidth);
|
|
13176
13614
|
var layerSelectFilterHeight = 155 + serviceListHeight;
|
|
13177
|
-
|
|
13178
|
-
var _b = __read(React__namespace.useState(0), 2),
|
|
13179
|
-
numberOfLayers = _b[0],
|
|
13180
|
-
setNumberOfLayers = _b[1];
|
|
13181
|
-
|
|
13182
|
-
var _c = __read(React__namespace.useState([]), 2),
|
|
13183
|
-
layersFilteredFromService = _c[0],
|
|
13184
|
-
setLayersFilteredFromService = _c[1];
|
|
13185
|
-
|
|
13186
|
-
React__namespace.useEffect(function () {
|
|
13187
|
-
setNumberOfLayers(serviceIds.reduce(function (totalNumberOfLayers, serviceId) {
|
|
13188
|
-
return totalNumberOfLayers + filterLayersFromService(serviceId, services, filterIds, allFiltersActive, searchString).length;
|
|
13189
|
-
}, 0));
|
|
13190
|
-
setLayersFilteredFromService(serviceIds.reduce(function (layerList, serviceId) {
|
|
13191
|
-
return layerList.concat(filterLayersFromService(serviceId, services, filterIds, allFiltersActive, searchString).map(function (layer) {
|
|
13192
|
-
return __assign(__assign({}, layer), {
|
|
13193
|
-
serviceId: serviceId
|
|
13194
|
-
});
|
|
13195
|
-
}));
|
|
13196
|
-
}, []));
|
|
13197
|
-
}, [serviceIds, filterIds, services, searchString, allFiltersActive]);
|
|
13198
13615
|
return /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
13199
13616
|
"data-testid": "layerList"
|
|
13200
13617
|
}, /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
@@ -13202,24 +13619,27 @@
|
|
|
13202
13619
|
marginBottom: '4px',
|
|
13203
13620
|
fontSize: '12px'
|
|
13204
13621
|
}
|
|
13205
|
-
},
|
|
13622
|
+
}, filteredLayers.length, " results"), /*#__PURE__*/React__namespace.createElement(reactWindow.FixedSizeList, {
|
|
13206
13623
|
height: layerSelectHeight - layerSelectFilterHeight,
|
|
13207
|
-
itemCount:
|
|
13208
|
-
itemSize:
|
|
13624
|
+
itemCount: filteredLayers.length,
|
|
13625
|
+
itemSize: rowHeight + rowMargin
|
|
13209
13626
|
}, function (_a) {
|
|
13210
13627
|
var index = _a.index,
|
|
13211
13628
|
style = _a.style;
|
|
13629
|
+
var filter = filteredLayers[index];
|
|
13630
|
+
var service = services[filter.serviceName];
|
|
13212
13631
|
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
13213
13632
|
style: style,
|
|
13214
|
-
key:
|
|
13215
|
-
},
|
|
13216
|
-
layer:
|
|
13633
|
+
key: filter.name
|
|
13634
|
+
}, service && /*#__PURE__*/React__namespace.createElement(LayerListRow, {
|
|
13635
|
+
layer: filter,
|
|
13217
13636
|
layerIndex: index,
|
|
13218
|
-
service:
|
|
13637
|
+
service: service,
|
|
13219
13638
|
addLayer: addLayer,
|
|
13220
13639
|
deleteLayer: deleteLayer,
|
|
13221
13640
|
mapLayers: mapLayers,
|
|
13222
|
-
mapId: mapId
|
|
13641
|
+
mapId: mapId,
|
|
13642
|
+
layerSelectWidth: layerSelectWidth
|
|
13223
13643
|
}));
|
|
13224
13644
|
}));
|
|
13225
13645
|
};
|
|
@@ -13244,14 +13664,12 @@
|
|
|
13244
13664
|
var LayerListConnect = function LayerListConnect(_a) {
|
|
13245
13665
|
var mapId = _a.mapId,
|
|
13246
13666
|
layerSelectHeight = _a.layerSelectHeight,
|
|
13247
|
-
serviceListHeight = _a.serviceListHeight
|
|
13667
|
+
serviceListHeight = _a.serviceListHeight,
|
|
13668
|
+
layerSelectWidth = _a.layerSelectWidth;
|
|
13669
|
+
var dispatch = reactRedux.useDispatch();
|
|
13248
13670
|
var services = reactRedux.useSelector(function (store) {
|
|
13249
13671
|
return getServices(store);
|
|
13250
13672
|
});
|
|
13251
|
-
var dispatch = reactRedux.useDispatch();
|
|
13252
|
-
var enabledServiceIds = reactRedux.useSelector(function (store) {
|
|
13253
|
-
return getEnabledServiceIds(store);
|
|
13254
|
-
});
|
|
13255
13673
|
var mapLayers = reactRedux.useSelector(function (store) {
|
|
13256
13674
|
return getMapLayers(store, mapId);
|
|
13257
13675
|
});
|
|
@@ -13266,7 +13684,6 @@
|
|
|
13266
13684
|
layerType: webmap.LayerType.mapLayer
|
|
13267
13685
|
};
|
|
13268
13686
|
addMapLayer({
|
|
13269
|
-
mapId: mapId,
|
|
13270
13687
|
layerId: layer.id,
|
|
13271
13688
|
layer: layer,
|
|
13272
13689
|
origin: LayerActionOrigin.layerManager
|
|
@@ -13294,25 +13711,17 @@
|
|
|
13294
13711
|
origin: LayerActionOrigin.layerManager
|
|
13295
13712
|
}));
|
|
13296
13713
|
}, [dispatch, mapId]);
|
|
13297
|
-
var
|
|
13298
|
-
return
|
|
13299
|
-
});
|
|
13300
|
-
var allFiltersActive = reactRedux.useSelector(function (store) {
|
|
13301
|
-
return isAllFiltersChecked(store);
|
|
13302
|
-
});
|
|
13303
|
-
var searchString = reactRedux.useSelector(function (store) {
|
|
13304
|
-
return getSearchFilter(store);
|
|
13714
|
+
var filteredLayers = reactRedux.useSelector(function (store) {
|
|
13715
|
+
return getFilteredLayers(store);
|
|
13305
13716
|
});
|
|
13306
13717
|
return /*#__PURE__*/React__namespace.createElement(LayerList, {
|
|
13718
|
+
filteredLayers: filteredLayers,
|
|
13307
13719
|
services: services,
|
|
13308
|
-
serviceIds: enabledServiceIds,
|
|
13309
13720
|
layerSelectHeight: layerSelectHeight,
|
|
13310
13721
|
serviceListHeight: serviceListHeight,
|
|
13722
|
+
layerSelectWidth: layerSelectWidth,
|
|
13311
13723
|
addLayer: addLayer,
|
|
13312
13724
|
deleteLayer: deleteLayer,
|
|
13313
|
-
filterIds: checkedFilterIds,
|
|
13314
|
-
allFiltersActive: allFiltersActive,
|
|
13315
|
-
searchString: searchString,
|
|
13316
13725
|
mapLayers: mapLayers,
|
|
13317
13726
|
mapId: mapId
|
|
13318
13727
|
});
|
|
@@ -13336,13 +13745,13 @@
|
|
|
13336
13745
|
* */
|
|
13337
13746
|
var style = {
|
|
13338
13747
|
borderRadius: '20px!important',
|
|
13339
|
-
marginRight: '
|
|
13748
|
+
marginRight: '4px',
|
|
13340
13749
|
whiteSpace: 'nowrap',
|
|
13341
|
-
height: '
|
|
13750
|
+
height: '24px!important',
|
|
13342
13751
|
padding: '5px 12px!important',
|
|
13343
13752
|
textTransform: 'none!important',
|
|
13344
13753
|
fontWeight: 'normal',
|
|
13345
|
-
marginBottom: '
|
|
13754
|
+
marginBottom: '4px'
|
|
13346
13755
|
};
|
|
13347
13756
|
|
|
13348
13757
|
var ServiceChip = function ServiceChip(_a) {
|
|
@@ -13352,6 +13761,7 @@
|
|
|
13352
13761
|
isSelected = _a.isSelected,
|
|
13353
13762
|
isDisabled = _a.isDisabled,
|
|
13354
13763
|
toggleChip = _a.toggleChip;
|
|
13764
|
+
var chip = all ? 'all' : service && service.serviceUrl;
|
|
13355
13765
|
return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
|
|
13356
13766
|
title: (service === null || service === void 0 ? void 0 : service["abstract"]) ? "Abstract: " + service["abstract"] : ''
|
|
13357
13767
|
}, /*#__PURE__*/React__namespace.createElement(shared.CustomToggleButton, {
|
|
@@ -13360,10 +13770,10 @@
|
|
|
13360
13770
|
tabIndex: 0,
|
|
13361
13771
|
"data-testid": all ? 'serviceChipAll' : 'serviceChip',
|
|
13362
13772
|
onClick: function onClick() {
|
|
13363
|
-
return toggleChip(
|
|
13773
|
+
return toggleChip(chip);
|
|
13364
13774
|
},
|
|
13365
13775
|
onKeyPress: function onKeyPress() {
|
|
13366
|
-
return toggleChip(
|
|
13776
|
+
return toggleChip(chip);
|
|
13367
13777
|
},
|
|
13368
13778
|
disabled: isDisabled,
|
|
13369
13779
|
sx: style
|
|
@@ -13530,9 +13940,9 @@
|
|
|
13530
13940
|
display: 'block',
|
|
13531
13941
|
alignItems: 'center',
|
|
13532
13942
|
"float": 'left',
|
|
13533
|
-
paddingLeft: '
|
|
13534
|
-
paddingRight: '
|
|
13535
|
-
marginBottom: '
|
|
13943
|
+
paddingLeft: '48px',
|
|
13944
|
+
paddingRight: '40px',
|
|
13945
|
+
marginBottom: '8px',
|
|
13536
13946
|
fontSize: '0.875rem'
|
|
13537
13947
|
},
|
|
13538
13948
|
ref: ref
|
|
@@ -13620,7 +14030,7 @@
|
|
|
13620
14030
|
* */
|
|
13621
14031
|
var styles$1 = {
|
|
13622
14032
|
servicesContainer: {
|
|
13623
|
-
width: '
|
|
14033
|
+
width: '360px',
|
|
13624
14034
|
maxHeight: '380px',
|
|
13625
14035
|
top: '140px',
|
|
13626
14036
|
backgroundColor: 'geowebColors.background.surface',
|
|
@@ -13635,6 +14045,10 @@
|
|
|
13635
14045
|
backgroundColor: 'geowebColors.background.surface',
|
|
13636
14046
|
zIndex: 100
|
|
13637
14047
|
},
|
|
14048
|
+
loading: {
|
|
14049
|
+
position: 'absolute',
|
|
14050
|
+
zIndex: 101
|
|
14051
|
+
},
|
|
13638
14052
|
footer: {
|
|
13639
14053
|
display: 'flex',
|
|
13640
14054
|
justifyContent: 'center',
|
|
@@ -13655,8 +14069,11 @@
|
|
|
13655
14069
|
var ServiceOptionsDialog = function ServiceOptionsDialog(_a) {
|
|
13656
14070
|
var services = _a.services,
|
|
13657
14071
|
layerSelectRemoveService = _a.layerSelectRemoveService,
|
|
14072
|
+
layerSelectReloadService = _a.layerSelectReloadService,
|
|
13658
14073
|
selectedLayers = _a.selectedLayers,
|
|
13659
|
-
setServicePopupInfo = _a.setServicePopupInfo
|
|
14074
|
+
setServicePopupInfo = _a.setServicePopupInfo,
|
|
14075
|
+
_b = _a.isLoading,
|
|
14076
|
+
isLoading = _b === void 0 ? false : _b;
|
|
13660
14077
|
|
|
13661
14078
|
var openAddService = function openAddService() {
|
|
13662
14079
|
setServicePopupInfo({
|
|
@@ -13670,9 +14087,13 @@
|
|
|
13670
14087
|
"data-testid": "ServiceDialog"
|
|
13671
14088
|
}, /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
13672
14089
|
sx: styles$1.header
|
|
13673
|
-
}, "Services"), /*#__PURE__*/React__namespace.createElement(
|
|
14090
|
+
}, "Services"), /*#__PURE__*/React__namespace.createElement(material.Backdrop, {
|
|
14091
|
+
sx: styles$1.loading,
|
|
14092
|
+
open: isLoading
|
|
14093
|
+
}, /*#__PURE__*/React__namespace.createElement(material.CircularProgress, null)), /*#__PURE__*/React__namespace.createElement(Rows, {
|
|
13674
14094
|
services: services,
|
|
13675
14095
|
layerSelectRemoveService: layerSelectRemoveService,
|
|
14096
|
+
layerSelectReloadService: layerSelectReloadService,
|
|
13676
14097
|
setServicePopupInfo: setServicePopupInfo,
|
|
13677
14098
|
selectedLayers: selectedLayers
|
|
13678
14099
|
}), /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
@@ -13688,6 +14109,7 @@
|
|
|
13688
14109
|
|
|
13689
14110
|
var Rows = function Rows(_a) {
|
|
13690
14111
|
var services = _a.services,
|
|
14112
|
+
layerSelectReloadService = _a.layerSelectReloadService,
|
|
13691
14113
|
layerSelectRemoveService = _a.layerSelectRemoveService,
|
|
13692
14114
|
setServicePopupInfo = _a.setServicePopupInfo,
|
|
13693
14115
|
selectedLayers = _a.selectedLayers;
|
|
@@ -13706,8 +14128,9 @@
|
|
|
13706
14128
|
var _a = services[serviceId],
|
|
13707
14129
|
serviceUrl = _a.serviceUrl,
|
|
13708
14130
|
serviceName = _a.serviceName,
|
|
13709
|
-
|
|
14131
|
+
scope = _a.scope;
|
|
13710
14132
|
var serviceHasActiveLayers = checkIfServiceHasActiveLayers(serviceUrl);
|
|
14133
|
+
var userAddedService = isUserAddedService(scope);
|
|
13711
14134
|
return /*#__PURE__*/React__namespace.createElement(material.ListItem, {
|
|
13712
14135
|
key: serviceUrl
|
|
13713
14136
|
}, /*#__PURE__*/React__namespace.createElement(material.ListItemText, {
|
|
@@ -13718,19 +14141,32 @@
|
|
|
13718
14141
|
noWrap: true,
|
|
13719
14142
|
style: {
|
|
13720
14143
|
textOverflow: 'ellipsis',
|
|
13721
|
-
paddingRight: '
|
|
14144
|
+
paddingRight: '70px'
|
|
13722
14145
|
}
|
|
13723
14146
|
}, serviceName)), /*#__PURE__*/React__namespace.createElement(material.ListItemSecondaryAction, {
|
|
13724
14147
|
style: {
|
|
13725
|
-
marginRight: '
|
|
13726
|
-
width:
|
|
14148
|
+
marginRight: '0px',
|
|
14149
|
+
width: 100
|
|
13727
14150
|
}
|
|
13728
14151
|
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
13729
14152
|
container: true
|
|
13730
14153
|
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
13731
14154
|
item: true,
|
|
13732
|
-
xs:
|
|
13733
|
-
},
|
|
14155
|
+
xs: 4
|
|
14156
|
+
}, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
|
|
14157
|
+
title: "Update layers from WMS service",
|
|
14158
|
+
"data-testid": "updateServiceTooltip"
|
|
14159
|
+
}, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
|
|
14160
|
+
"data-testid": "updateServiceButton",
|
|
14161
|
+
"aria-label": "Update layers from WMS service",
|
|
14162
|
+
size: "large",
|
|
14163
|
+
onClick: function onClick() {
|
|
14164
|
+
return layerSelectReloadService(serviceUrl);
|
|
14165
|
+
}
|
|
14166
|
+
}, /*#__PURE__*/React__namespace.createElement(theme.Cached, null)))), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
14167
|
+
item: true,
|
|
14168
|
+
xs: 4
|
|
14169
|
+
}, userAddedService ? /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
|
|
13734
14170
|
title: "Edit Service"
|
|
13735
14171
|
}, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
|
|
13736
14172
|
"aria-label": "edit service",
|
|
@@ -13760,8 +14196,8 @@
|
|
|
13760
14196
|
}
|
|
13761
14197
|
}, /*#__PURE__*/React__namespace.createElement(theme.Visibility, null))))), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
13762
14198
|
item: true,
|
|
13763
|
-
xs:
|
|
13764
|
-
},
|
|
14199
|
+
xs: 4
|
|
14200
|
+
}, userAddedService && /*#__PURE__*/React__namespace.createElement(material.Box, null, /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
|
|
13765
14201
|
title: serviceHasActiveLayers ? 'Service has active layers. Cannot remove this service' : 'Delete Service',
|
|
13766
14202
|
"data-testid": "removeServiceTooltip"
|
|
13767
14203
|
}, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(material.IconButton, {
|
|
@@ -13793,9 +14229,30 @@
|
|
|
13793
14229
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
13794
14230
|
* */
|
|
13795
14231
|
|
|
14232
|
+
var getService = function getService(services, serviceUrl) {
|
|
14233
|
+
var serviceIds = Object.keys(services);
|
|
14234
|
+
var serviceIndex = serviceIds.findIndex(function (serviceId) {
|
|
14235
|
+
return services[serviceId].serviceUrl === serviceUrl;
|
|
14236
|
+
});
|
|
14237
|
+
if (serviceIndex < 0) return null;
|
|
14238
|
+
return services[serviceIds[serviceIndex]];
|
|
14239
|
+
};
|
|
14240
|
+
|
|
14241
|
+
var getServiceSuccesUpdateMessage = function getServiceSuccesUpdateMessage(serviceName) {
|
|
14242
|
+
return "Service \"" + serviceName + "\" has been succesfully updated";
|
|
14243
|
+
};
|
|
14244
|
+
var getServiceFailedUpdateMessage = function getServiceFailedUpdateMessage(error) {
|
|
14245
|
+
return "Unable to update service, reason: \"" + error.message + "\"";
|
|
14246
|
+
};
|
|
14247
|
+
|
|
13796
14248
|
var ServiceOptionsDialogConnect = function ServiceOptionsDialogConnect(_a) {
|
|
13797
14249
|
var mapId = _a.mapId,
|
|
13798
14250
|
setServicePopupInfo = _a.setServicePopupInfo;
|
|
14251
|
+
|
|
14252
|
+
var _b = __read(React__namespace.useState(false), 2),
|
|
14253
|
+
isLoading = _b[0],
|
|
14254
|
+
setIsLoading = _b[1];
|
|
14255
|
+
|
|
13799
14256
|
var dispatch = reactRedux.useDispatch();
|
|
13800
14257
|
var layerSelectRemoveService = React__namespace.useCallback(function (serviceId, serviceUrl) {
|
|
13801
14258
|
dispatch(layerSelectActions.layerSelectRemoveService({
|
|
@@ -13803,17 +14260,87 @@
|
|
|
13803
14260
|
serviceUrl: serviceUrl
|
|
13804
14261
|
}));
|
|
13805
14262
|
}, [dispatch]);
|
|
14263
|
+
var serviceSetLayers = React__namespace.useCallback(function (payload) {
|
|
14264
|
+
dispatch(serviceActions.serviceSetLayers(__assign(__assign({}, payload), {
|
|
14265
|
+
isUpdating: true
|
|
14266
|
+
})));
|
|
14267
|
+
}, [dispatch]);
|
|
14268
|
+
var showSnackbar = React__namespace.useCallback(function (message) {
|
|
14269
|
+
dispatch(snackbarActions.openSnackbar({
|
|
14270
|
+
message: message
|
|
14271
|
+
}));
|
|
14272
|
+
}, [dispatch]);
|
|
13806
14273
|
var services = reactRedux.useSelector(function (store) {
|
|
13807
14274
|
return getActiveServices(store);
|
|
13808
14275
|
});
|
|
13809
14276
|
var selectedLayers = reactRedux.useSelector(function (store) {
|
|
13810
14277
|
return getMapLayers(store, mapId);
|
|
13811
14278
|
});
|
|
14279
|
+
var layerSelectReloadService = React__namespace.useCallback(function (serviceUrl) {
|
|
14280
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
14281
|
+
var layersForService, service, serviceTitle, error_1;
|
|
14282
|
+
return __generator(this, function (_a) {
|
|
14283
|
+
switch (_a.label) {
|
|
14284
|
+
case 0:
|
|
14285
|
+
setIsLoading(true);
|
|
14286
|
+
_a.label = 1;
|
|
14287
|
+
|
|
14288
|
+
case 1:
|
|
14289
|
+
_a.trys.push([1, 3, 4, 5]);
|
|
14290
|
+
|
|
14291
|
+
return [4
|
|
14292
|
+
/*yield*/
|
|
14293
|
+
, loadWMSService(serviceUrl, true)];
|
|
14294
|
+
|
|
14295
|
+
case 2:
|
|
14296
|
+
layersForService = _a.sent();
|
|
14297
|
+
service = getService(services, serviceUrl);
|
|
14298
|
+
serviceSetLayers({
|
|
14299
|
+
id: layersForService.id,
|
|
14300
|
+
name: service && service.serviceName || layersForService.name,
|
|
14301
|
+
serviceUrl: serviceUrl,
|
|
14302
|
+
"abstract": service && service["abstract"] || layersForService["abstract"],
|
|
14303
|
+
layers: layersForService.layers,
|
|
14304
|
+
scope: service && service.scope || 'user',
|
|
14305
|
+
isUpdating: true
|
|
14306
|
+
});
|
|
14307
|
+
webmap.clearImageCache();
|
|
14308
|
+
serviceTitle = service && service.serviceName || layersForService.name;
|
|
14309
|
+
showSnackbar(getServiceSuccesUpdateMessage(serviceTitle));
|
|
14310
|
+
return [3
|
|
14311
|
+
/*break*/
|
|
14312
|
+
, 5];
|
|
14313
|
+
|
|
14314
|
+
case 3:
|
|
14315
|
+
error_1 = _a.sent(); // TODO: Maarten Plieger 2022-11-02: Snackbars should not be used to inform the user that something went wrong.
|
|
14316
|
+
// https://gitlab.com/opengeoweb/opengeoweb/-/issues/2819
|
|
14317
|
+
|
|
14318
|
+
showSnackbar(getServiceFailedUpdateMessage(error_1));
|
|
14319
|
+
return [3
|
|
14320
|
+
/*break*/
|
|
14321
|
+
, 5];
|
|
14322
|
+
|
|
14323
|
+
case 4:
|
|
14324
|
+
setIsLoading(false);
|
|
14325
|
+
return [7
|
|
14326
|
+
/*endfinally*/
|
|
14327
|
+
];
|
|
14328
|
+
|
|
14329
|
+
case 5:
|
|
14330
|
+
return [2
|
|
14331
|
+
/*return*/
|
|
14332
|
+
];
|
|
14333
|
+
}
|
|
14334
|
+
});
|
|
14335
|
+
});
|
|
14336
|
+
}, [serviceSetLayers, services, showSnackbar]);
|
|
13812
14337
|
return /*#__PURE__*/React__namespace.createElement(ServiceOptionsDialog, {
|
|
13813
14338
|
selectedLayers: selectedLayers,
|
|
13814
14339
|
services: services,
|
|
13815
14340
|
layerSelectRemoveService: layerSelectRemoveService,
|
|
13816
|
-
|
|
14341
|
+
layerSelectReloadService: layerSelectReloadService,
|
|
14342
|
+
setServicePopupInfo: setServicePopupInfo,
|
|
14343
|
+
isLoading: isLoading
|
|
13817
14344
|
});
|
|
13818
14345
|
};
|
|
13819
14346
|
|
|
@@ -13893,20 +14420,25 @@
|
|
|
13893
14420
|
_d = _a.order,
|
|
13894
14421
|
order = _d === void 0 ? 0 : _d,
|
|
13895
14422
|
_e = _a.source,
|
|
13896
|
-
source = _e === void 0 ? 'module' : _e
|
|
14423
|
+
source = _e === void 0 ? 'module' : _e,
|
|
14424
|
+
_f = _a.startSize,
|
|
14425
|
+
startSize = _f === void 0 ? {
|
|
14426
|
+
width: 750,
|
|
14427
|
+
height: 500
|
|
14428
|
+
} : _f;
|
|
13897
14429
|
var initialServiceListHeight = 37;
|
|
13898
14430
|
|
|
13899
|
-
var
|
|
13900
|
-
height =
|
|
13901
|
-
setHeight =
|
|
14431
|
+
var _g = __read(React__namespace.useState(startSize.height), 2),
|
|
14432
|
+
height = _g[0],
|
|
14433
|
+
setHeight = _g[1];
|
|
13902
14434
|
|
|
13903
|
-
var
|
|
13904
|
-
width =
|
|
13905
|
-
setWidth =
|
|
14435
|
+
var _h = __read(React__namespace.useState(startSize.width), 2),
|
|
14436
|
+
width = _h[0],
|
|
14437
|
+
setWidth = _h[1];
|
|
13906
14438
|
|
|
13907
|
-
var
|
|
13908
|
-
serviceListHeight =
|
|
13909
|
-
setServiceListHeight =
|
|
14439
|
+
var _j = __read(React__namespace.useState(initialServiceListHeight), 2),
|
|
14440
|
+
serviceListHeight = _j[0],
|
|
14441
|
+
setServiceListHeight = _j[1];
|
|
13910
14442
|
|
|
13911
14443
|
var onChangeSize = function onChangeSize(_a) {
|
|
13912
14444
|
var height = _a.height,
|
|
@@ -13927,7 +14459,7 @@
|
|
|
13927
14459
|
width: width,
|
|
13928
14460
|
height: height
|
|
13929
14461
|
},
|
|
13930
|
-
minWidth:
|
|
14462
|
+
minWidth: 320,
|
|
13931
14463
|
minHeight: 126,
|
|
13932
14464
|
startPosition: {
|
|
13933
14465
|
top: 150,
|
|
@@ -13944,13 +14476,13 @@
|
|
|
13944
14476
|
source: source
|
|
13945
14477
|
}, /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
13946
14478
|
sx: {
|
|
13947
|
-
padding: '
|
|
14479
|
+
padding: '4px 16px 0 16px'
|
|
13948
14480
|
}
|
|
13949
14481
|
}, /*#__PURE__*/React__namespace.createElement(SearchFieldConnect, null)), /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
13950
14482
|
sx: {
|
|
13951
14483
|
"float": 'left',
|
|
13952
14484
|
position: 'absolute',
|
|
13953
|
-
margin: '
|
|
14485
|
+
margin: '8px 8px 0 16px',
|
|
13954
14486
|
zIndex: 2
|
|
13955
14487
|
}
|
|
13956
14488
|
}, /*#__PURE__*/React__namespace.createElement(KeywordFilterButtonConnect, {
|
|
@@ -13958,7 +14490,7 @@
|
|
|
13958
14490
|
})), /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
13959
14491
|
sx: {
|
|
13960
14492
|
position: 'absolute',
|
|
13961
|
-
margin: '
|
|
14493
|
+
margin: '8px 0 0 calc(100% - 40px)',
|
|
13962
14494
|
zIndex: 2
|
|
13963
14495
|
}
|
|
13964
14496
|
}, /*#__PURE__*/React__namespace.createElement(ServiceOptionsButton, {
|
|
@@ -13967,12 +14499,13 @@
|
|
|
13967
14499
|
setHeight: handleHeightChange
|
|
13968
14500
|
})), /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
13969
14501
|
sx: {
|
|
13970
|
-
padding: '0
|
|
14502
|
+
padding: '0 16px'
|
|
13971
14503
|
}
|
|
13972
14504
|
}, /*#__PURE__*/React__namespace.createElement(LayerListConnect, {
|
|
13973
14505
|
mapId: mapId,
|
|
13974
14506
|
layerSelectHeight: height,
|
|
13975
|
-
serviceListHeight: serviceListHeight
|
|
14507
|
+
serviceListHeight: serviceListHeight,
|
|
14508
|
+
layerSelectWidth: width
|
|
13976
14509
|
})));
|
|
13977
14510
|
};
|
|
13978
14511
|
|
|
@@ -14396,7 +14929,7 @@
|
|
|
14396
14929
|
var KeywordFilterResultsConnect = function KeywordFilterResultsConnect(_a) {
|
|
14397
14930
|
var bounds = _a.bounds;
|
|
14398
14931
|
|
|
14399
|
-
var _b = useSetupDialog(
|
|
14932
|
+
var _b = useSetupDialog(DialogTypes.KeywordFilter),
|
|
14400
14933
|
dialogOrder = _b.dialogOrder,
|
|
14401
14934
|
onCloseDialog = _b.onCloseDialog,
|
|
14402
14935
|
setDialogOrder = _b.setDialogOrder,
|
|
@@ -14483,10 +15016,10 @@
|
|
|
14483
15016
|
_b = _a.showTitle,
|
|
14484
15017
|
showTitle = _b === void 0 ? false : _b;
|
|
14485
15018
|
var mapId = reactRedux.useSelector(function (store) {
|
|
14486
|
-
return getDialogMapId(store,
|
|
15019
|
+
return getDialogMapId(store, DialogTypes.LayerSelect);
|
|
14487
15020
|
});
|
|
14488
15021
|
|
|
14489
|
-
var _c = useSetupDialog(
|
|
15022
|
+
var _c = useSetupDialog(DialogTypes.LayerSelect),
|
|
14490
15023
|
dialogOrder = _c.dialogOrder,
|
|
14491
15024
|
isDialogOpen = _c.isDialogOpen,
|
|
14492
15025
|
onCloseDialog = _c.onCloseDialog,
|
|
@@ -14534,11 +15067,6 @@
|
|
|
14534
15067
|
var serviceSetLayers = React__namespace.useCallback(function (payload) {
|
|
14535
15068
|
dispatch(serviceActions.serviceSetLayers(payload));
|
|
14536
15069
|
}, [dispatch]);
|
|
14537
|
-
|
|
14538
|
-
var checkIfUserAddedService = function checkIfUserAddedService(service) {
|
|
14539
|
-
return !!service.isUserAddedService;
|
|
14540
|
-
};
|
|
14541
|
-
|
|
14542
15070
|
React__namespace.useEffect(function () {
|
|
14543
15071
|
if (isOpenInStore && preloadedServices && preloadedServices.length > 0) {
|
|
14544
15072
|
mergePresetsAndUserAddedServices(preloadedServices, getUserAddedServices()).forEach(function (service) {
|
|
@@ -14550,7 +15078,7 @@
|
|
|
14550
15078
|
name: service.name,
|
|
14551
15079
|
serviceUrl: service.url,
|
|
14552
15080
|
layers: layers,
|
|
14553
|
-
|
|
15081
|
+
scope: service.scope ? service.scope : 'system',
|
|
14554
15082
|
// first try to load the user abstract, otherwise the service abstract
|
|
14555
15083
|
"abstract": service["abstract"] || wmService["abstract"]
|
|
14556
15084
|
});
|
|
@@ -14587,7 +15115,7 @@
|
|
|
14587
15115
|
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
14588
15116
|
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
14589
15117
|
* */
|
|
14590
|
-
var dialogType =
|
|
15118
|
+
var dialogType = DialogTypes.LayerManager;
|
|
14591
15119
|
/**
|
|
14592
15120
|
* Layer Managerconnected to the store displaying the layers forthe active map Id
|
|
14593
15121
|
* Please note that in order to use this and open/close the dialog, every map on the screen that should be able to show
|
|
@@ -14748,7 +15276,7 @@
|
|
|
14748
15276
|
}, [mapId]);
|
|
14749
15277
|
|
|
14750
15278
|
var onZoomIn = function onZoomIn() {
|
|
14751
|
-
return adagucRef.current.zoomIn();
|
|
15279
|
+
return adagucRef.current.zoomIn(undefined);
|
|
14752
15280
|
};
|
|
14753
15281
|
|
|
14754
15282
|
var onZoomOut = function onZoomOut() {
|
|
@@ -14835,14 +15363,14 @@
|
|
|
14835
15363
|
source = _b === void 0 ? 'app' : _b;
|
|
14836
15364
|
var dispatch = reactRedux.useDispatch();
|
|
14837
15365
|
var currentActiveMapId = reactRedux.useSelector(function (store) {
|
|
14838
|
-
return getDialogMapId(store,
|
|
15366
|
+
return getDialogMapId(store, DialogTypes.LayerManager);
|
|
14839
15367
|
});
|
|
14840
15368
|
var isOpenInStore = reactRedux.useSelector(function (store) {
|
|
14841
|
-
return getisDialogOpen(store,
|
|
15369
|
+
return getisDialogOpen(store, DialogTypes.LayerManager);
|
|
14842
15370
|
});
|
|
14843
15371
|
var openLayerManagerDialog = React__namespace.useCallback(function () {
|
|
14844
15372
|
dispatch(uiActions.setActiveMapIdForDialog({
|
|
14845
|
-
type:
|
|
15373
|
+
type: DialogTypes.LayerManager,
|
|
14846
15374
|
mapId: mapId,
|
|
14847
15375
|
setOpen: currentActiveMapId !== mapId ? true : !isOpenInStore,
|
|
14848
15376
|
source: source
|
|
@@ -14973,7 +15501,7 @@
|
|
|
14973
15501
|
}
|
|
14974
15502
|
|
|
14975
15503
|
var sortedMarks = __spreadArray([], __read(marks)).sort(function (a, b) {
|
|
14976
|
-
return typeof a.value === 'number' && typeof b.value === 'number' && a.value - b.value;
|
|
15504
|
+
return Number(typeof a.value === 'number' && typeof b.value === 'number' && a.value - b.value);
|
|
14977
15505
|
});
|
|
14978
15506
|
|
|
14979
15507
|
var adaptedMarks = reverse ? sortedMarks.reverse() : sortedMarks;
|
|
@@ -15460,9 +15988,7 @@
|
|
|
15460
15988
|
|
|
15461
15989
|
var AutoUpdateButton = function AutoUpdateButton(_a) {
|
|
15462
15990
|
var _b = _a.toggleAutoUpdate,
|
|
15463
|
-
toggleAutoUpdate = _b === void 0 ? function () {
|
|
15464
|
-
return null;
|
|
15465
|
-
} : _b,
|
|
15991
|
+
toggleAutoUpdate = _b === void 0 ? function () {} : _b,
|
|
15466
15992
|
_c = _a.isAutoUpdating,
|
|
15467
15993
|
isAutoUpdating = _c === void 0 ? false : _c,
|
|
15468
15994
|
_d = _a.disabled,
|
|
@@ -15749,9 +16275,7 @@
|
|
|
15749
16275
|
timeDimension = _a.timeDimension,
|
|
15750
16276
|
onChangeTimeStep = _a.onChangeTimeStep,
|
|
15751
16277
|
_d = _a.onToggleTimestepAuto,
|
|
15752
|
-
onToggleTimestepAuto = _d === void 0 ? function () {
|
|
15753
|
-
return null;
|
|
15754
|
-
} : _d,
|
|
16278
|
+
onToggleTimestepAuto = _d === void 0 ? function () {} : _d,
|
|
15755
16279
|
_e = _a.isOpenByDefault,
|
|
15756
16280
|
isOpenByDefault = _e === void 0 ? false : _e;
|
|
15757
16281
|
var timeStepFromLayer = getActiveLayerTimeStep(timeDimension) || timeStep;
|
|
@@ -15798,82 +16322,245 @@
|
|
|
15798
16322
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
15799
16323
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
15800
16324
|
* */
|
|
15801
|
-
var
|
|
15802
|
-
|
|
15803
|
-
|
|
15804
|
-
|
|
15805
|
-
|
|
15806
|
-
|
|
15807
|
-
|
|
15808
|
-
|
|
15809
|
-
|
|
16325
|
+
var marks = [{
|
|
16326
|
+
label: '5 min',
|
|
16327
|
+
value: Scale.Minutes5,
|
|
16328
|
+
text: '5m'
|
|
16329
|
+
}, {
|
|
16330
|
+
label: '1 h',
|
|
16331
|
+
value: Scale.Hour,
|
|
16332
|
+
text: '1h'
|
|
16333
|
+
}, {
|
|
16334
|
+
label: '3 h',
|
|
16335
|
+
value: Scale.Hours3,
|
|
16336
|
+
text: '3h'
|
|
16337
|
+
}, {
|
|
16338
|
+
label: '6 h',
|
|
16339
|
+
value: Scale.Hours6,
|
|
16340
|
+
text: '6h'
|
|
16341
|
+
}, {
|
|
16342
|
+
label: 'day',
|
|
16343
|
+
value: Scale.Day,
|
|
16344
|
+
text: 'd'
|
|
16345
|
+
}, {
|
|
16346
|
+
label: 'week',
|
|
16347
|
+
value: Scale.Week,
|
|
16348
|
+
text: 'w'
|
|
16349
|
+
}, {
|
|
16350
|
+
label: 'month',
|
|
16351
|
+
value: Scale.Month,
|
|
16352
|
+
text: 'm'
|
|
16353
|
+
}, {
|
|
16354
|
+
label: 'year',
|
|
16355
|
+
value: Scale.Year,
|
|
16356
|
+
text: 'y'
|
|
16357
|
+
}, {
|
|
16358
|
+
label: 'data',
|
|
16359
|
+
value: Scale.DataScale,
|
|
16360
|
+
text: 'data'
|
|
16361
|
+
}].sort(function (a, b) {
|
|
16362
|
+
return b.value - a.value;
|
|
15810
16363
|
});
|
|
16364
|
+
var TimeScaleButton = function TimeScaleButton(_a) {
|
|
16365
|
+
var layers = _a.layers,
|
|
16366
|
+
_b = _a.timeSliderScale,
|
|
16367
|
+
timeSliderScale = _b === void 0 ? Scale.Hour : _b,
|
|
16368
|
+
centerTime = _a.centerTime,
|
|
16369
|
+
secondsPerPx = _a.secondsPerPx,
|
|
16370
|
+
selectedTime = _a.selectedTime,
|
|
16371
|
+
onChangeTimeSliderScale = _a.onChangeTimeSliderScale;
|
|
16372
|
+
|
|
16373
|
+
var onChangeSliderValue = function onChangeSliderValue(mark) {
|
|
16374
|
+
var newSliderValue = mark.value;
|
|
16375
|
+
var newValue = newSliderValue ? Math.round(newSliderValue) : 0;
|
|
16376
|
+
var newScale = marks.find(function (el) {
|
|
16377
|
+
return el.value === newValue;
|
|
16378
|
+
}).value;
|
|
16379
|
+
var scaleToSecPerPx = newScale === Scale.DataScale ? getScaleToSecondsPerPxForDataScale(layers) : scaleToSecondsPerPx[newScale];
|
|
16380
|
+
var newCenterTime = getNewCenterOfFixedPointZoom(selectedTime, secondsPerPx, scaleToSecPerPx, centerTime);
|
|
16381
|
+
onChangeTimeSliderScale(newScale, newCenterTime, scaleToSecPerPx);
|
|
16382
|
+
};
|
|
16383
|
+
|
|
16384
|
+
return /*#__PURE__*/React__namespace.createElement(TimeSliderMenu, {
|
|
16385
|
+
handleMenuItemClick: onChangeSliderValue,
|
|
16386
|
+
icon: /*#__PURE__*/React__namespace.createElement(theme.Clock, null),
|
|
16387
|
+
marks: marks,
|
|
16388
|
+
title: "Time scale",
|
|
16389
|
+
value: timeSliderScale
|
|
16390
|
+
});
|
|
16391
|
+
};
|
|
16392
|
+
|
|
16393
|
+
/* *
|
|
16394
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16395
|
+
* you may not use this file except in compliance with the License.
|
|
16396
|
+
* You may obtain a copy of the License at
|
|
16397
|
+
*
|
|
16398
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16399
|
+
*
|
|
16400
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16401
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16402
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16403
|
+
* See the License for the specific language governing permissions and
|
|
16404
|
+
* limitations under the License.
|
|
16405
|
+
*
|
|
16406
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
16407
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
16408
|
+
* */
|
|
16409
|
+
var title = 'Now';
|
|
16410
|
+
|
|
16411
|
+
var NowButton = function NowButton(_a) {
|
|
16412
|
+
var _b = _a.onSetNow,
|
|
16413
|
+
onSetNow = _b === void 0 ? function () {} : _b,
|
|
16414
|
+
_c = _a.disabled,
|
|
16415
|
+
disabled = _c === void 0 ? false : _c;
|
|
16416
|
+
return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
|
|
16417
|
+
title: title,
|
|
16418
|
+
"data-testid": "nowButtonTooltip"
|
|
16419
|
+
}, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
|
|
16420
|
+
disabled: disabled,
|
|
16421
|
+
onClick: function onClick() {
|
|
16422
|
+
return onSetNow();
|
|
16423
|
+
},
|
|
16424
|
+
"aria-label": "now"
|
|
16425
|
+
}, /*#__PURE__*/React__namespace.createElement(theme.Now, {
|
|
16426
|
+
"data-testid": "now-svg"
|
|
16427
|
+
}))));
|
|
16428
|
+
};
|
|
16429
|
+
|
|
16430
|
+
/* *
|
|
16431
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16432
|
+
* you may not use this file except in compliance with the License.
|
|
16433
|
+
* You may obtain a copy of the License at
|
|
16434
|
+
*
|
|
16435
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16436
|
+
*
|
|
16437
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16438
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16439
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16440
|
+
* See the License for the specific language governing permissions and
|
|
16441
|
+
* limitations under the License.
|
|
16442
|
+
*
|
|
16443
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
16444
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
16445
|
+
* */
|
|
15811
16446
|
|
|
15812
16447
|
var OptionsMenuButton = function OptionsMenuButton(_a) {
|
|
15813
|
-
var
|
|
16448
|
+
var nowBtn = _a.nowBtn,
|
|
16449
|
+
autoUpdateBtn = _a.autoUpdateBtn,
|
|
15814
16450
|
speedBtn = _a.speedBtn,
|
|
15815
|
-
timeStepBtn = _a.timeStepBtn
|
|
16451
|
+
timeStepBtn = _a.timeStepBtn,
|
|
16452
|
+
timeScaleBtn = _a.timeScaleBtn,
|
|
16453
|
+
_b = _a.isOpenByDefault,
|
|
16454
|
+
isOpenByDefault = _b === void 0 ? false : _b;
|
|
15816
16455
|
|
|
15817
|
-
var
|
|
15818
|
-
anchorEl =
|
|
15819
|
-
setAnchorEl =
|
|
15820
|
-
|
|
15821
|
-
var onClickButton = function onClickButton(event) {
|
|
15822
|
-
setAnchorEl(event.currentTarget);
|
|
15823
|
-
};
|
|
16456
|
+
var _c = __read(React.useState(null), 2),
|
|
16457
|
+
anchorEl = _c[0],
|
|
16458
|
+
setAnchorEl = _c[1];
|
|
15824
16459
|
|
|
15825
|
-
var
|
|
15826
|
-
|
|
15827
|
-
|
|
16460
|
+
var _d = __read(React.useState(false), 2),
|
|
16461
|
+
open = _d[0],
|
|
16462
|
+
setOpen = _d[1];
|
|
15828
16463
|
|
|
15829
|
-
|
|
15830
|
-
|
|
15831
|
-
|
|
16464
|
+
React.useEffect(function () {
|
|
16465
|
+
if (anchorEl && isOpenByDefault) {
|
|
16466
|
+
setOpen(true);
|
|
16467
|
+
}
|
|
16468
|
+
}, [anchorEl, isOpenByDefault]);
|
|
16469
|
+
return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
|
|
15832
16470
|
title: "Animation options",
|
|
15833
16471
|
placement: "bottom"
|
|
15834
|
-
}, /*#__PURE__*/
|
|
15835
|
-
|
|
16472
|
+
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
|
16473
|
+
ref: function ref(_ref) {
|
|
16474
|
+
setAnchorEl(_ref);
|
|
16475
|
+
}
|
|
16476
|
+
}, /*#__PURE__*/React__default["default"].createElement(shared.ToolButton, {
|
|
16477
|
+
onClick: function onClick() {
|
|
16478
|
+
setOpen(!open);
|
|
16479
|
+
},
|
|
15836
16480
|
"data-testid": "optionsMenuButton",
|
|
15837
|
-
active: open
|
|
15838
|
-
|
|
15839
|
-
|
|
15840
|
-
|
|
15841
|
-
|
|
16481
|
+
active: open,
|
|
16482
|
+
"aria-label": "animation options"
|
|
16483
|
+
}, /*#__PURE__*/React__default["default"].createElement(theme.Options, null)))), /*#__PURE__*/React__default["default"].createElement(material.Popper, {
|
|
16484
|
+
sx: {
|
|
16485
|
+
zIndex: 3
|
|
16486
|
+
},
|
|
16487
|
+
placement: "top-start",
|
|
15842
16488
|
open: open,
|
|
15843
16489
|
"data-testid": "optionsMenuPopOver",
|
|
15844
|
-
anchorEl: anchorEl
|
|
15845
|
-
|
|
15846
|
-
|
|
15847
|
-
|
|
15848
|
-
|
|
16490
|
+
anchorEl: anchorEl
|
|
16491
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Paper, {
|
|
16492
|
+
elevation: 3
|
|
16493
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
16494
|
+
sx: {
|
|
16495
|
+
padding: '0px 10px 10px'
|
|
15849
16496
|
},
|
|
15850
|
-
transformOrigin: {
|
|
15851
|
-
vertical: 'bottom',
|
|
15852
|
-
horizontal: 'left'
|
|
15853
|
-
}
|
|
15854
|
-
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
15855
16497
|
container: true,
|
|
15856
16498
|
spacing: 1
|
|
15857
|
-
}, /*#__PURE__*/
|
|
16499
|
+
}, /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
16500
|
+
item: true,
|
|
16501
|
+
xs: "auto"
|
|
16502
|
+
}, nowBtn || /*#__PURE__*/React__default["default"].createElement(NowButton, null)), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
16503
|
+
item: true,
|
|
16504
|
+
xs: "auto"
|
|
16505
|
+
}, timeScaleBtn || /*#__PURE__*/React__default["default"].createElement(TimeScaleButton, {
|
|
16506
|
+
centerTime: 0,
|
|
16507
|
+
onChangeTimeSliderScale: function onChangeTimeSliderScale() {},
|
|
16508
|
+
secondsPerPx: 0,
|
|
16509
|
+
selectedTime: 0,
|
|
16510
|
+
timeSliderScale: 0
|
|
16511
|
+
})), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
15858
16512
|
item: true,
|
|
15859
16513
|
xs: "auto"
|
|
15860
|
-
}, timeStepBtn || /*#__PURE__*/
|
|
16514
|
+
}, timeStepBtn || /*#__PURE__*/React__default["default"].createElement(TimeStepButton, {
|
|
15861
16515
|
timeStep: 0,
|
|
15862
|
-
onChangeTimeStep: function onChangeTimeStep() {
|
|
15863
|
-
|
|
15864
|
-
}
|
|
15865
|
-
})), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
16516
|
+
onChangeTimeStep: function onChangeTimeStep() {}
|
|
16517
|
+
})), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
15866
16518
|
item: true,
|
|
15867
16519
|
xs: "auto"
|
|
15868
|
-
}, speedBtn || /*#__PURE__*/
|
|
16520
|
+
}, speedBtn || /*#__PURE__*/React__default["default"].createElement(SpeedButton, {
|
|
15869
16521
|
animationDelay: defaultAnimationDelayAtStart,
|
|
15870
|
-
setMapAnimationDelay: function setMapAnimationDelay() {
|
|
15871
|
-
|
|
15872
|
-
}
|
|
15873
|
-
})), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
16522
|
+
setMapAnimationDelay: function setMapAnimationDelay() {}
|
|
16523
|
+
})), /*#__PURE__*/React__default["default"].createElement(material.Grid, {
|
|
15874
16524
|
item: true,
|
|
15875
16525
|
xs: "auto"
|
|
15876
|
-
}, autoUpdateBtn || /*#__PURE__*/
|
|
16526
|
+
}, autoUpdateBtn || /*#__PURE__*/React__default["default"].createElement(AutoUpdateButton, null))))));
|
|
16527
|
+
};
|
|
16528
|
+
|
|
16529
|
+
/* *
|
|
16530
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16531
|
+
* you may not use this file except in compliance with the License.
|
|
16532
|
+
* You may obtain a copy of the License at
|
|
16533
|
+
*
|
|
16534
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16535
|
+
*
|
|
16536
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
16537
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16538
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16539
|
+
* See the License for the specific language governing permissions and
|
|
16540
|
+
* limitations under the License.
|
|
16541
|
+
*
|
|
16542
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
16543
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
16544
|
+
* */
|
|
16545
|
+
var forwardTooltipTitle = 'Forward';
|
|
16546
|
+
var backwardTooltipTitle = 'Backward';
|
|
16547
|
+
|
|
16548
|
+
var BackwardForwardStepButton = function BackwardForwardStepButton(_a) {
|
|
16549
|
+
var isForwardStep = _a.isForwardStep,
|
|
16550
|
+
isDisabled = _a.isDisabled,
|
|
16551
|
+
_b = _a.onClickBFButton,
|
|
16552
|
+
onClickBFButton = _b === void 0 ? function () {} : _b;
|
|
16553
|
+
return /*#__PURE__*/React__namespace.createElement(material.Tooltip, {
|
|
16554
|
+
title: isForwardStep ? forwardTooltipTitle : backwardTooltipTitle
|
|
16555
|
+
}, /*#__PURE__*/React__namespace.createElement("span", null, /*#__PURE__*/React__namespace.createElement(shared.ToolButton, {
|
|
16556
|
+
disabled: isDisabled,
|
|
16557
|
+
"aria-label": isForwardStep ? 'forward' : 'backward',
|
|
16558
|
+
onClick: onClickBFButton
|
|
16559
|
+
}, isForwardStep ? /*#__PURE__*/React__namespace.createElement(theme.StepForward, {
|
|
16560
|
+
"data-testid": "step-forward-svg-path"
|
|
16561
|
+
}) : /*#__PURE__*/React__namespace.createElement(theme.StepBackward, {
|
|
16562
|
+
"data-testid": "step-backward-svg-path"
|
|
16563
|
+
}))));
|
|
15877
16564
|
};
|
|
15878
16565
|
|
|
15879
16566
|
/* *
|
|
@@ -15895,19 +16582,28 @@
|
|
|
15895
16582
|
|
|
15896
16583
|
var TimeSliderButtons = function TimeSliderButtons(_a) {
|
|
15897
16584
|
var optionsMenuBtn = _a.optionsMenuBtn,
|
|
15898
|
-
playBtn = _a.playBtn
|
|
16585
|
+
playBtn = _a.playBtn,
|
|
16586
|
+
backwardBtn = _a.backwardBtn,
|
|
16587
|
+
forwardBtn = _a.forwardBtn;
|
|
15899
16588
|
return /*#__PURE__*/React__namespace.createElement("div", {
|
|
15900
16589
|
"data-testid": "timeSliderButtons"
|
|
15901
16590
|
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
15902
16591
|
container: true,
|
|
15903
|
-
spacing:
|
|
15904
|
-
|
|
15905
|
-
|
|
15906
|
-
}
|
|
16592
|
+
spacing: 0.5,
|
|
16593
|
+
alignItems: "center",
|
|
16594
|
+
justifyContent: "center"
|
|
15907
16595
|
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
15908
16596
|
item: true
|
|
15909
16597
|
}, optionsMenuBtn || /*#__PURE__*/React__namespace.createElement(OptionsMenuButton, null)), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
15910
16598
|
item: true
|
|
16599
|
+
}, backwardBtn || /*#__PURE__*/React__namespace.createElement(BackwardForwardStepButton, {
|
|
16600
|
+
isForwardStep: false
|
|
16601
|
+
})), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
16602
|
+
item: true
|
|
16603
|
+
}, forwardBtn || /*#__PURE__*/React__namespace.createElement(BackwardForwardStepButton, {
|
|
16604
|
+
isForwardStep: true
|
|
16605
|
+
})), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
16606
|
+
item: true
|
|
15911
16607
|
}, playBtn || /*#__PURE__*/React__namespace.createElement(PlayButton, null))));
|
|
15912
16608
|
};
|
|
15913
16609
|
|
|
@@ -16478,13 +17174,30 @@
|
|
|
16478
17174
|
}
|
|
16479
17175
|
};
|
|
16480
17176
|
|
|
16481
|
-
var drawBackground = function drawBackground(context, theme, visibleTimeStart, visibleTimeEnd, animationStartPx, animationEndPx, canvasWidth, height, scale) {
|
|
17177
|
+
var drawBackground = function drawBackground(context, theme, visibleTimeStart, visibleTimeEnd, animationStartPx, animationEndPx, canvasWidth, height, scale, dataStartPx, dataEndPx, currentTimePx) {
|
|
16482
17178
|
var ctx = context;
|
|
16483
17179
|
var _a = theme.palette.geowebColors.timeSlider,
|
|
16484
|
-
|
|
16485
|
-
|
|
16486
|
-
|
|
16487
|
-
|
|
17180
|
+
timelineNightTime = _a.timelineNightTime,
|
|
17181
|
+
ledgendObservedBackground = _a.ledgendObservedBackground,
|
|
17182
|
+
legendForecastBackground = _a.legendForecastBackground,
|
|
17183
|
+
legendNoDataBackground = _a.legendNoDataBackground; // top spacing
|
|
17184
|
+
|
|
17185
|
+
var y = 0;
|
|
17186
|
+
ctx.fillStyle = legendNoDataBackground.rgba;
|
|
17187
|
+
ctx.fillRect(0, y, canvasWidth, height); // observed data
|
|
17188
|
+
|
|
17189
|
+
if (dataStartPx < currentTimePx) {
|
|
17190
|
+
ctx.fillStyle = ledgendObservedBackground.fill;
|
|
17191
|
+
ctx.fillRect(Math.max(dataStartPx, 0), y, Math.min(currentTimePx, dataEndPx) - Math.max(dataStartPx, 0), height);
|
|
17192
|
+
} // forecast data
|
|
17193
|
+
|
|
17194
|
+
|
|
17195
|
+
if (dataEndPx > currentTimePx) {
|
|
17196
|
+
ctx.fillStyle = legendForecastBackground.fill;
|
|
17197
|
+
ctx.fillRect(Math.max(currentTimePx, dataStartPx), y, Math.min(canvasWidth, dataEndPx) - Math.max(currentTimePx, dataStartPx), height);
|
|
17198
|
+
} // hovered area
|
|
17199
|
+
|
|
17200
|
+
|
|
16488
17201
|
ctx.fillStyle = theme.palette.geowebColors.timeSlider.timelineSelectionBackground.rgba;
|
|
16489
17202
|
ctx.fillRect(animationStartPx, 0, Math.max(animationEndPx - animationStartPx, 0), height);
|
|
16490
17203
|
var colorChangeUnit = getColorChangeTimestepUnit(scale);
|
|
@@ -16580,7 +17293,7 @@
|
|
|
16580
17293
|
drawLeftSideDateText(ctx, theme, dateText, height);
|
|
16581
17294
|
};
|
|
16582
17295
|
|
|
16583
|
-
var renderTimeSliderLegend = function renderTimeSliderLegend(context, theme, canvasWidth, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTimeUnix, scale, currentTimeUnix, animationStartTime, animationEndTime) {
|
|
17296
|
+
var renderTimeSliderLegend = function renderTimeSliderLegend(context, theme, canvasWidth, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTimeUnix, scale, currentTimeUnix, animationStartTime, animationEndTime, dataStartTime, dataEndTime) {
|
|
16584
17297
|
var ctx = context;
|
|
16585
17298
|
|
|
16586
17299
|
var _a = __read([0, canvasWidth].map(function (px) {
|
|
@@ -16589,13 +17302,17 @@
|
|
|
16589
17302
|
visibleTimeStart = _a[0],
|
|
16590
17303
|
visibleTimeEnd = _a[1];
|
|
16591
17304
|
|
|
16592
|
-
var _b = __read([animationStartTime, animationEndTime].map(function (time) {
|
|
17305
|
+
var _b = __read([animationStartTime, animationEndTime, dataStartTime, dataEndTime, currentTimeUnix].map(function (time) {
|
|
16593
17306
|
return timestampToPixel(time, centerTime, canvasWidth, secondsPerPx);
|
|
16594
|
-
}),
|
|
17307
|
+
}), 5),
|
|
16595
17308
|
animationStartPx = _b[0],
|
|
16596
|
-
animationEndPx = _b[1]
|
|
17309
|
+
animationEndPx = _b[1],
|
|
17310
|
+
dataStartPx = _b[2],
|
|
17311
|
+
dataEndPx = _b[3],
|
|
17312
|
+
currentTimePx = _b[4];
|
|
16597
17313
|
|
|
16598
|
-
|
|
17314
|
+
ctx.clearRect(0, 0, canvasWidth, height);
|
|
17315
|
+
drawBackground(ctx, theme, visibleTimeStart, visibleTimeEnd, animationStartPx, animationEndPx, canvasWidth, height, scale, dataStartPx, dataEndPx, currentTimePx);
|
|
16599
17316
|
drawTimeScale(ctx, theme, visibleTimeStart, visibleTimeEnd, canvasWidth, height, scale, dataScaleToSecondsPerPx);
|
|
16600
17317
|
drawNeedle(ctx, theme, canvasWidth, height, visibleTimeStart, visibleTimeEnd, selectedTimeUnix);
|
|
16601
17318
|
drawCurrentTime(ctx, theme, canvasWidth, height, visibleTimeStart, visibleTimeEnd, currentTimeUnix);
|
|
@@ -16687,19 +17404,7 @@
|
|
|
16687
17404
|
React__namespace.useEffect(function () {
|
|
16688
17405
|
var handleKeyDown = function handleKeyDown(event) {
|
|
16689
17406
|
if (event.key === 'Home' && mapIsActive) {
|
|
16690
|
-
|
|
16691
|
-
if (dataEndTime < currentTime) {
|
|
16692
|
-
onSetNewDate(moment__default["default"].utc(dataEndTime * 1000).toISOString());
|
|
16693
|
-
onSetCenterTime(dataEndTime);
|
|
16694
|
-
} else if (dataStartTime > currentTime) {
|
|
16695
|
-
onSetNewDate(moment__default["default"].utc(dataStartTime * 1000).toISOString());
|
|
16696
|
-
onSetCenterTime(dataStartTime);
|
|
16697
|
-
} else {
|
|
16698
|
-
var closestToCurrent = roundWithTimeStep(currentTime, timeStep);
|
|
16699
|
-
onSetNewDate(moment__default["default"].utc(closestToCurrent * 1000).toISOString());
|
|
16700
|
-
onSetCenterTime(closestToCurrent);
|
|
16701
|
-
}
|
|
16702
|
-
}
|
|
17407
|
+
handleSetNowEvent(timeStep, dataStartTime, dataEndTime, currentTime, onSetNewDate, onSetCenterTime);
|
|
16703
17408
|
}
|
|
16704
17409
|
};
|
|
16705
17410
|
|
|
@@ -16731,7 +17436,9 @@
|
|
|
16731
17436
|
return /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
16732
17437
|
"data-testid": "timeSliderLegend",
|
|
16733
17438
|
sx: {
|
|
16734
|
-
height:
|
|
17439
|
+
height: TIME_SLIDER_LEGEND_HEIGHT + "px",
|
|
17440
|
+
borderRadius: '4.5px',
|
|
17441
|
+
overflow: 'hidden'
|
|
16735
17442
|
}
|
|
16736
17443
|
}, /*#__PURE__*/React__namespace.createElement(CanvasComponent, {
|
|
16737
17444
|
ref: node,
|
|
@@ -16783,238 +17490,14 @@
|
|
|
16783
17490
|
}
|
|
16784
17491
|
},
|
|
16785
17492
|
onRenderCanvas: function onRenderCanvas(ctx, width, height) {
|
|
16786
|
-
renderTimeSliderLegend(ctx, theme, width, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTime, scale, currentTime, localAnimationStartTime, localAnimationEndTime);
|
|
17493
|
+
renderTimeSliderLegend(ctx, theme, width, height, centerTime, secondsPerPx, dataScaleToSecondsPerPx, selectedTime, scale, currentTime, localAnimationStartTime, localAnimationEndTime, dataStartTime, dataEndTime);
|
|
16787
17494
|
}
|
|
16788
17495
|
}));
|
|
16789
17496
|
};
|
|
16790
17497
|
|
|
16791
|
-
|
|
16792
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16793
|
-
* you may not use this file except in compliance with the License.
|
|
16794
|
-
* You may obtain a copy of the License at
|
|
16795
|
-
*
|
|
16796
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16797
|
-
*
|
|
16798
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
16799
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16800
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16801
|
-
* See the License for the specific language governing permissions and
|
|
16802
|
-
* limitations under the License.
|
|
16803
|
-
*
|
|
16804
|
-
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
16805
|
-
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
16806
|
-
* */
|
|
16807
|
-
var scaleSliderOtherSettings = {
|
|
16808
|
-
LEFT_PADDING: '10%'
|
|
16809
|
-
};
|
|
16810
|
-
|
|
16811
|
-
var thumbComponent = function thumbComponent(props) {
|
|
16812
|
-
var children = props.children,
|
|
16813
|
-
other = __rest(props, ["children"]);
|
|
17498
|
+
var TIME_SLIDER_LEGEND_HEIGHT = 24;
|
|
16814
17499
|
|
|
16815
|
-
|
|
16816
|
-
"data-testid": "scaleSliderSliderThumb",
|
|
16817
|
-
tabIndex: 0
|
|
16818
|
-
}), children, /*#__PURE__*/React__namespace.createElement(theme.SliderThumb, null));
|
|
16819
|
-
};
|
|
16820
|
-
|
|
16821
|
-
var marks = [{
|
|
16822
|
-
text: '5 min scale',
|
|
16823
|
-
paddingLeft: '2px',
|
|
16824
|
-
value: Scale.Minutes5
|
|
16825
|
-
}, {
|
|
16826
|
-
text: '1 h scale',
|
|
16827
|
-
paddingLeft: '25px',
|
|
16828
|
-
value: Scale.Hour
|
|
16829
|
-
}, {
|
|
16830
|
-
text: '3 h scale',
|
|
16831
|
-
paddingLeft: '45px',
|
|
16832
|
-
value: Scale.Hours3
|
|
16833
|
-
}, {
|
|
16834
|
-
text: '6 h scale',
|
|
16835
|
-
paddingLeft: '65px',
|
|
16836
|
-
value: Scale.Hours6
|
|
16837
|
-
}, {
|
|
16838
|
-
text: 'day scale',
|
|
16839
|
-
paddingLeft: '80px',
|
|
16840
|
-
value: Scale.Day
|
|
16841
|
-
}, {
|
|
16842
|
-
text: 'week scale',
|
|
16843
|
-
paddingLeft: '92px',
|
|
16844
|
-
value: Scale.Week
|
|
16845
|
-
}, {
|
|
16846
|
-
text: 'month scale',
|
|
16847
|
-
paddingLeft: '107px',
|
|
16848
|
-
value: Scale.Month
|
|
16849
|
-
}, {
|
|
16850
|
-
text: 'year scale',
|
|
16851
|
-
paddingLeft: '130px',
|
|
16852
|
-
value: Scale.Year
|
|
16853
|
-
}, {
|
|
16854
|
-
text: 'data scale',
|
|
16855
|
-
paddingLeft: '140px',
|
|
16856
|
-
value: Scale.DataScale
|
|
16857
|
-
}];
|
|
16858
|
-
|
|
16859
|
-
var valueLabelFormat = function valueLabelFormat(value) {
|
|
16860
|
-
var valueNew = value.toString();
|
|
16861
|
-
return valueNew;
|
|
16862
|
-
};
|
|
16863
|
-
|
|
16864
|
-
var GeoWebScaleSlider = material.styled(material.Slider)(function (_a) {
|
|
16865
|
-
var theme = _a.theme;
|
|
16866
|
-
return {
|
|
16867
|
-
'&.MuiSlider-root': {
|
|
16868
|
-
height: 4,
|
|
16869
|
-
width: 167,
|
|
16870
|
-
margin: "0 0 18px " + scaleSliderOtherSettings.LEFT_PADDING
|
|
16871
|
-
},
|
|
16872
|
-
'& .MuiSlider-thumb': {
|
|
16873
|
-
backgroundColor: 'rgba(0,0,0,0)',
|
|
16874
|
-
marginTop: 0,
|
|
16875
|
-
width: 12,
|
|
16876
|
-
height: 12,
|
|
16877
|
-
color: theme.palette.geowebColors.timeSlider.timeScalePointer.fill,
|
|
16878
|
-
'& svg polygon': {
|
|
16879
|
-
filter: theme.palette.geowebColors.timeSlider.timeScaleShadowButtonScale.filter
|
|
16880
|
-
},
|
|
16881
|
-
'&:before': {
|
|
16882
|
-
display: 'none'
|
|
16883
|
-
}
|
|
16884
|
-
},
|
|
16885
|
-
'& .MuiSlider-valueLabel': {
|
|
16886
|
-
left: '20px'
|
|
16887
|
-
},
|
|
16888
|
-
'& .MuiSlider-rail': {
|
|
16889
|
-
color: theme.palette.geowebColors.timeSlider.timeScaleHorizontalScale.fill,
|
|
16890
|
-
height: 4,
|
|
16891
|
-
width: 170,
|
|
16892
|
-
borderRadius: 4.5,
|
|
16893
|
-
opacity: theme.palette.geowebColors.timeSlider.timeScaleHorizontalScale.opacity
|
|
16894
|
-
},
|
|
16895
|
-
'& .MuiSlider-mark': {
|
|
16896
|
-
backgroundColor: theme.palette.geowebColors.timeSlider.timeScaleTimeIndicators.fill,
|
|
16897
|
-
height: 6,
|
|
16898
|
-
width: 2,
|
|
16899
|
-
marginTop: -9,
|
|
16900
|
-
'&.MuiSlider-markActive': {
|
|
16901
|
-
backgroundColor: theme.palette.geowebColors.timeSlider.timeScaleTimeIndicatorsActive.fill,
|
|
16902
|
-
height: 6,
|
|
16903
|
-
width: 2,
|
|
16904
|
-
marginTop: -9
|
|
16905
|
-
}
|
|
16906
|
-
},
|
|
16907
|
-
'@media (max-width: 585px)': {
|
|
16908
|
-
'&.MuiSlider-root': {
|
|
16909
|
-
width: 110
|
|
16910
|
-
},
|
|
16911
|
-
'& .MuiSlider-rail': {
|
|
16912
|
-
width: 110
|
|
16913
|
-
}
|
|
16914
|
-
},
|
|
16915
|
-
'@media (max-width: 395px)': {
|
|
16916
|
-
'&.MuiSlider-root': {
|
|
16917
|
-
width: 60
|
|
16918
|
-
},
|
|
16919
|
-
'& .MuiSlider-rail': {
|
|
16920
|
-
width: 60
|
|
16921
|
-
}
|
|
16922
|
-
}
|
|
16923
|
-
};
|
|
16924
|
-
});
|
|
16925
|
-
var RAIL_GUTTER_OFFSET = 0.4;
|
|
16926
|
-
|
|
16927
|
-
var TimeSliderScaleSlider = function TimeSliderScaleSlider(_a) {
|
|
16928
|
-
var layers = _a.layers,
|
|
16929
|
-
_b = _a.timeSliderScale,
|
|
16930
|
-
timeSliderScale = _b === void 0 ? Scale.Hour : _b,
|
|
16931
|
-
centerTime = _a.centerTime,
|
|
16932
|
-
secondsPerPx = _a.secondsPerPx,
|
|
16933
|
-
selectedTime = _a.selectedTime,
|
|
16934
|
-
onChangeTimeSliderScale = _a.onChangeTimeSliderScale;
|
|
16935
|
-
var min = 0;
|
|
16936
|
-
var max = marks.length - 1;
|
|
16937
|
-
var value = marks.findIndex(function (mark) {
|
|
16938
|
-
return mark.value === timeSliderScale;
|
|
16939
|
-
});
|
|
16940
|
-
|
|
16941
|
-
var onChangeSliderValue = function onChangeSliderValue(newSliderValue) {
|
|
16942
|
-
var newValue = newSliderValue ? Math.round(newSliderValue) : 0;
|
|
16943
|
-
var newScale = marks.find(function (el) {
|
|
16944
|
-
return el.value === newValue;
|
|
16945
|
-
}).value;
|
|
16946
|
-
var scaleToSecPerPx = newScale === Scale.DataScale ? getScaleToSecondsPerPxForDataScale(layers) : scaleToSecondsPerPx[newScale];
|
|
16947
|
-
var newCenterTime = getNewCenterOfFixedPointZoom(selectedTime, secondsPerPx, scaleToSecPerPx, centerTime);
|
|
16948
|
-
onChangeTimeSliderScale(newScale, newCenterTime, scaleToSecPerPx);
|
|
16949
|
-
};
|
|
16950
|
-
|
|
16951
|
-
var onChange = function onChange(event, value) {
|
|
16952
|
-
if (event.type !== 'keydown') {
|
|
16953
|
-
onChangeSliderValue(value);
|
|
16954
|
-
}
|
|
16955
|
-
};
|
|
16956
|
-
|
|
16957
|
-
var onKeyDown = function onKeyDown(event) {
|
|
16958
|
-
// disable default Slider behavior
|
|
16959
|
-
event.preventDefault();
|
|
16960
|
-
event.stopPropagation(); // custom logic
|
|
16961
|
-
|
|
16962
|
-
var newValue = getValueFromKeyboardEvent(event, value, min, max, true);
|
|
16963
|
-
|
|
16964
|
-
if (newValue !== null) {
|
|
16965
|
-
onChangeSliderValue(newValue);
|
|
16966
|
-
}
|
|
16967
|
-
};
|
|
16968
|
-
|
|
16969
|
-
var _c = marks.find(function (mark) {
|
|
16970
|
-
return mark.value === value;
|
|
16971
|
-
}),
|
|
16972
|
-
paddingLeft = _c.paddingLeft,
|
|
16973
|
-
text = _c.text;
|
|
16974
|
-
|
|
16975
|
-
var scaleTextPadding = {
|
|
16976
|
-
paddingLeft: paddingLeft
|
|
16977
|
-
};
|
|
16978
|
-
return /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
16979
|
-
"data-testid": "scaleSlider",
|
|
16980
|
-
sx: {
|
|
16981
|
-
backgroundColor: 'geowebColors.background.surface',
|
|
16982
|
-
width: '229px',
|
|
16983
|
-
height: '40px',
|
|
16984
|
-
paddingTop: '4px',
|
|
16985
|
-
paddingBottom: '7px',
|
|
16986
|
-
boxSizing: 'content-box'
|
|
16987
|
-
}
|
|
16988
|
-
}, /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement(material.Box, {
|
|
16989
|
-
"data-testid": "scaleSliderText",
|
|
16990
|
-
sx: {
|
|
16991
|
-
width: '67px',
|
|
16992
|
-
height: '15px',
|
|
16993
|
-
padding: '0px 10px 0 8px',
|
|
16994
|
-
color: 'geowebColors.typographyAndIcons.text',
|
|
16995
|
-
font: '12px Roboto'
|
|
16996
|
-
},
|
|
16997
|
-
style: scaleTextPadding
|
|
16998
|
-
}, text)), /*#__PURE__*/React__namespace.createElement("div", null, /*#__PURE__*/React__namespace.createElement(GeoWebScaleSlider, {
|
|
16999
|
-
"data-testid": "scaleSliderSlider",
|
|
17000
|
-
defaultValue: Scale.Hour,
|
|
17001
|
-
value: value,
|
|
17002
|
-
min: min - RAIL_GUTTER_OFFSET,
|
|
17003
|
-
step: 1,
|
|
17004
|
-
max: max + RAIL_GUTTER_OFFSET,
|
|
17005
|
-
getAriaValueText: valueLabelFormat,
|
|
17006
|
-
onChange: onChange,
|
|
17007
|
-
onKeyDown: onKeyDown,
|
|
17008
|
-
"aria-labelledby": "scale-slider",
|
|
17009
|
-
components: {
|
|
17010
|
-
Thumb: thumbComponent
|
|
17011
|
-
},
|
|
17012
|
-
marks: marks,
|
|
17013
|
-
track: false
|
|
17014
|
-
})));
|
|
17015
|
-
};
|
|
17016
|
-
|
|
17017
|
-
/* eslint-disable no-param-reassign */
|
|
17500
|
+
/* eslint-disable no-param-reassign */
|
|
17018
17501
|
|
|
17019
17502
|
var drawRoundedRectangle = function drawRoundedRectangle(ctx, x, y, width, height, cornerRadius, theme) {
|
|
17020
17503
|
ctx.save();
|
|
@@ -17219,21 +17702,6 @@
|
|
|
17219
17702
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
17220
17703
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
17221
17704
|
* */
|
|
17222
|
-
|
|
17223
|
-
var setPreviousTimeStep = function setPreviousTimeStep(timeStep, curTime, dataStartTime, onSetNewDate) {
|
|
17224
|
-
var prevTimeStep = moment__default["default"].utc(curTime).subtract(timeStep, 'm').toISOString();
|
|
17225
|
-
if (!prevTimeStep) return;
|
|
17226
|
-
if (moment__default["default"].utc(prevTimeStep) < moment__default["default"].utc(dataStartTime * 1000)) return;
|
|
17227
|
-
onsetNewDateDebounced(prevTimeStep, onSetNewDate);
|
|
17228
|
-
};
|
|
17229
|
-
|
|
17230
|
-
var setNextTimeStep = function setNextTimeStep(timeStep, curTime, dataEndTime, onSetNewDate) {
|
|
17231
|
-
var nextTimeStep = moment__default["default"].utc(curTime).add(timeStep, 'm').toISOString();
|
|
17232
|
-
if (!nextTimeStep) return;
|
|
17233
|
-
if (moment__default["default"].utc(nextTimeStep) > moment__default["default"].utc(dataEndTime * 1000)) return;
|
|
17234
|
-
onsetNewDateDebounced(nextTimeStep, onSetNewDate);
|
|
17235
|
-
};
|
|
17236
|
-
|
|
17237
17705
|
var DRAG_AREA_WIDTH = 10;
|
|
17238
17706
|
var DRAG_HANDLER_AREA_WIDTH = 30;
|
|
17239
17707
|
|
|
@@ -17277,11 +17745,11 @@
|
|
|
17277
17745
|
|
|
17278
17746
|
var curTime = selectedTime !== undefined ? selectedTime.toISOString() : moment__default["default"].utc().toISOString();
|
|
17279
17747
|
|
|
17280
|
-
var _e = __read(React__namespace.useState(animationStartTime
|
|
17748
|
+
var _e = __read(React__namespace.useState(animationStartTime ? moment__default["default"].utc(animationStartTime).unix() : undefined), 2),
|
|
17281
17749
|
localAnimationStartTime = _e[0],
|
|
17282
17750
|
setLocalAnimationStartTime = _e[1];
|
|
17283
17751
|
|
|
17284
|
-
var _f = __read(React__namespace.useState(animationEndTime
|
|
17752
|
+
var _f = __read(React__namespace.useState(animationEndTime ? moment__default["default"].utc(animationEndTime).unix() : undefined), 2),
|
|
17285
17753
|
localAnimationEndTime = _f[0],
|
|
17286
17754
|
setLocalAnimationEndTime = _f[1];
|
|
17287
17755
|
|
|
@@ -17416,8 +17884,8 @@
|
|
|
17416
17884
|
};
|
|
17417
17885
|
|
|
17418
17886
|
React__namespace.useEffect(function () {
|
|
17419
|
-
setLocalAnimationStartTime(animationStartTime
|
|
17420
|
-
setLocalAnimationEndTime(animationEndTime
|
|
17887
|
+
setLocalAnimationStartTime(animationStartTime ? moment__default["default"].utc(animationStartTime).unix() : undefined);
|
|
17888
|
+
setLocalAnimationEndTime(animationEndTime ? moment__default["default"].utc(animationEndTime).unix() : undefined);
|
|
17421
17889
|
}, [animationStartTime, animationEndTime]);
|
|
17422
17890
|
var handleKeyDown = React__namespace.useCallback(function (event) {
|
|
17423
17891
|
if (event.ctrlKey && dataStartTime && dataEndTime && mapIsActive) {
|
|
@@ -17521,6 +17989,37 @@
|
|
|
17521
17989
|
}));
|
|
17522
17990
|
};
|
|
17523
17991
|
|
|
17992
|
+
/* *
|
|
17993
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17994
|
+
* you may not use this file except in compliance with the License.
|
|
17995
|
+
* You may obtain a copy of the License at
|
|
17996
|
+
*
|
|
17997
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
17998
|
+
*
|
|
17999
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18000
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18001
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18002
|
+
* See the License for the specific language governing permissions and
|
|
18003
|
+
* limitations under the License.
|
|
18004
|
+
*
|
|
18005
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
18006
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
18007
|
+
* */
|
|
18008
|
+
|
|
18009
|
+
var HideSliderButton = function HideSliderButton(_a) {
|
|
18010
|
+
var isVisible = _a.isVisible,
|
|
18011
|
+
toggleTimeSliderIsVisible = _a.toggleTimeSliderIsVisible;
|
|
18012
|
+
return /*#__PURE__*/React__default["default"].createElement(material.Tooltip, {
|
|
18013
|
+
title: isVisible ? 'Hide timeslider' : 'Show timeslider',
|
|
18014
|
+
"data-testid": "autoUpdateButtonTooltip"
|
|
18015
|
+
}, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement(shared.ToolButton, {
|
|
18016
|
+
onClick: function onClick() {
|
|
18017
|
+
toggleTimeSliderIsVisible(!isVisible);
|
|
18018
|
+
},
|
|
18019
|
+
"data-testid": "hideTimeSliderButton"
|
|
18020
|
+
}, isVisible ? /*#__PURE__*/React__default["default"].createElement(theme.ChevronDown, null) : /*#__PURE__*/React__default["default"].createElement(theme.ChevronUp, null))));
|
|
18021
|
+
};
|
|
18022
|
+
|
|
17524
18023
|
/* *
|
|
17525
18024
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17526
18025
|
* you may not use this file except in compliance with the License.
|
|
@@ -17565,7 +18064,6 @@
|
|
|
17565
18064
|
var TimeSlider = function TimeSlider(_a) {
|
|
17566
18065
|
var buttons = _a.buttons,
|
|
17567
18066
|
rail = _a.rail,
|
|
17568
|
-
scaleSlider = _a.scaleSlider,
|
|
17569
18067
|
legend = _a.legend,
|
|
17570
18068
|
_b = _a.mapIsActive,
|
|
17571
18069
|
mapIsActive = _b === void 0 ? true : _b,
|
|
@@ -17574,38 +18072,54 @@
|
|
|
17574
18072
|
_d = _a.onToggleTimeSlider,
|
|
17575
18073
|
onToggleTimeSlider = _d === void 0 ? function () {} : _d;
|
|
17576
18074
|
useTimeSliderKeyBoardControl(mapIsActive, isVisible, onToggleTimeSlider);
|
|
18075
|
+
var visibilityState = isVisible ? 'visible' : 'hidden';
|
|
17577
18076
|
return isVisible ? /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
18077
|
+
style: {
|
|
18078
|
+
visibility: visibilityState
|
|
18079
|
+
},
|
|
17578
18080
|
container: true,
|
|
17579
|
-
"data-testid": "timeSlider",
|
|
17580
18081
|
sx: {
|
|
17581
18082
|
display: 'grid',
|
|
17582
|
-
gridTemplateColumns: 'minmax(100px, 210px) minmax(66%, 1fr)',
|
|
17583
|
-
gridTemplateRows:
|
|
17584
|
-
|
|
18083
|
+
gridTemplateColumns: 'minmax(100px, 210px) minmax(66%, 1fr) minmax(40px, 40px)',
|
|
18084
|
+
gridTemplateRows: 24,
|
|
18085
|
+
paddingBottom: 1,
|
|
18086
|
+
alignItems: 'center',
|
|
18087
|
+
justifyContent: 'center'
|
|
18088
|
+
},
|
|
18089
|
+
"data-testid": "timeSlider",
|
|
18090
|
+
spacing: 1
|
|
17585
18091
|
}, /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
17586
18092
|
item: true
|
|
17587
|
-
}
|
|
18093
|
+
}), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
17588
18094
|
item: true
|
|
17589
18095
|
}, rail || /*#__PURE__*/React__namespace.createElement(TimeSliderRail, __assign({}, defaultProps, {
|
|
17590
18096
|
selectedTime: defaultProps.selectedTime,
|
|
17591
18097
|
mapIsActive: mapIsActive
|
|
17592
18098
|
})), ' '), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
17593
|
-
item: true
|
|
17594
|
-
|
|
17595
|
-
|
|
17596
|
-
|
|
17597
|
-
}, scaleSlider || /*#__PURE__*/React__namespace.createElement(TimeSliderScaleSlider, __assign({}, defaultProps, {
|
|
17598
|
-
selectedTime: defaultProps.selectedTime.unix(),
|
|
17599
|
-
timeSliderScale: Scale.Hour,
|
|
17600
|
-
onChangeTimeSliderScale: function onChangeTimeSliderScale() {
|
|
17601
|
-
return null;
|
|
17602
|
-
}
|
|
17603
|
-
}))), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
18099
|
+
item: true
|
|
18100
|
+
}), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
18101
|
+
item: true
|
|
18102
|
+
}, buttons || /*#__PURE__*/React__namespace.createElement(TimeSliderButtons, null)), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
17604
18103
|
item: true
|
|
17605
18104
|
}, legend || /*#__PURE__*/React__namespace.createElement(TimeSliderLegend, __assign({}, defaultProps, {
|
|
17606
18105
|
selectedTime: defaultProps.selectedTime.unix(),
|
|
17607
18106
|
mapIsActive: mapIsActive
|
|
17608
|
-
})), ' ')
|
|
18107
|
+
})), ' '), /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
18108
|
+
item: true
|
|
18109
|
+
}, /*#__PURE__*/React__namespace.createElement(HideSliderButton, {
|
|
18110
|
+
toggleTimeSliderIsVisible: onToggleTimeSlider,
|
|
18111
|
+
isVisible: isVisible
|
|
18112
|
+
}))) : /*#__PURE__*/React__namespace.createElement(material.Grid, {
|
|
18113
|
+
sx: {
|
|
18114
|
+
paddingRight: 1
|
|
18115
|
+
},
|
|
18116
|
+
container: true,
|
|
18117
|
+
alignItems: "center",
|
|
18118
|
+
justifyContent: "flex-end"
|
|
18119
|
+
}, /*#__PURE__*/React__namespace.createElement(HideSliderButton, {
|
|
18120
|
+
toggleTimeSliderIsVisible: onToggleTimeSlider,
|
|
18121
|
+
isVisible: isVisible
|
|
18122
|
+
}));
|
|
17609
18123
|
};
|
|
17610
18124
|
|
|
17611
18125
|
/* *
|
|
@@ -17750,6 +18264,136 @@
|
|
|
17750
18264
|
});
|
|
17751
18265
|
};
|
|
17752
18266
|
|
|
18267
|
+
/* *
|
|
18268
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18269
|
+
* you may not use this file except in compliance with the License.
|
|
18270
|
+
* You may obtain a copy of the License at
|
|
18271
|
+
*
|
|
18272
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18273
|
+
*
|
|
18274
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18275
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18276
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18277
|
+
* See the License for the specific language governing permissions and
|
|
18278
|
+
* limitations under the License.
|
|
18279
|
+
*
|
|
18280
|
+
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
18281
|
+
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
18282
|
+
* */
|
|
18283
|
+
var TimeScaleButtonConnect = function TimeScaleButtonConnect(_a) {
|
|
18284
|
+
var mapId = _a.mapId;
|
|
18285
|
+
var layers = reactRedux.useSelector(function (store) {
|
|
18286
|
+
return getMapLayers(store, mapId);
|
|
18287
|
+
});
|
|
18288
|
+
var timeSliderScale = reactRedux.useSelector(function (store) {
|
|
18289
|
+
return getMapTimeSliderScale(store, mapId);
|
|
18290
|
+
});
|
|
18291
|
+
var centerTime = reactRedux.useSelector(function (store) {
|
|
18292
|
+
return getMapTimeSliderCenterTime(store, mapId);
|
|
18293
|
+
});
|
|
18294
|
+
var secondsPerPx = reactRedux.useSelector(function (store) {
|
|
18295
|
+
return getMapTimeSliderSecondsPerPx(store, mapId);
|
|
18296
|
+
});
|
|
18297
|
+
var dimensions = reactRedux.useSelector(function (store) {
|
|
18298
|
+
return getMapDimensions(store, mapId);
|
|
18299
|
+
});
|
|
18300
|
+
var dispatch = reactRedux.useDispatch();
|
|
18301
|
+
|
|
18302
|
+
var onSetTimeSliderScale = function onSetTimeSliderScale(scale, newCenterTime, scaleToSecPerPx) {
|
|
18303
|
+
if (scale === Scale.DataScale) {
|
|
18304
|
+
dispatch(mapActions$1.setTimeSliderDataScaleToSecondsPerPx({
|
|
18305
|
+
mapId: mapId,
|
|
18306
|
+
timeSliderDataScaleToSecondsPerPx: scaleToSecPerPx
|
|
18307
|
+
}));
|
|
18308
|
+
}
|
|
18309
|
+
|
|
18310
|
+
dispatch(mapActions$1.setTimeSliderScale({
|
|
18311
|
+
mapId: mapId,
|
|
18312
|
+
timeSliderScale: scale
|
|
18313
|
+
}));
|
|
18314
|
+
dispatch(mapActions$1.setTimeSliderCenterTime({
|
|
18315
|
+
mapId: mapId,
|
|
18316
|
+
timeSliderCenterTime: newCenterTime
|
|
18317
|
+
}));
|
|
18318
|
+
};
|
|
18319
|
+
|
|
18320
|
+
var selectedTime = getTimeBounds(dimensions).selectedTime;
|
|
18321
|
+
return /*#__PURE__*/React__namespace.createElement(TimeScaleButton, {
|
|
18322
|
+
layers: layers,
|
|
18323
|
+
timeSliderScale: timeSliderScale,
|
|
18324
|
+
onChangeTimeSliderScale: onSetTimeSliderScale,
|
|
18325
|
+
secondsPerPx: secondsPerPx,
|
|
18326
|
+
centerTime: centerTime,
|
|
18327
|
+
selectedTime: selectedTime
|
|
18328
|
+
});
|
|
18329
|
+
};
|
|
18330
|
+
|
|
18331
|
+
/* *
|
|
18332
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18333
|
+
* you may not use this file except in compliance with the License.
|
|
18334
|
+
* You may obtain a copy of the License at
|
|
18335
|
+
*
|
|
18336
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18337
|
+
*
|
|
18338
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18339
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18340
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18341
|
+
* See the License for the specific language governing permissions and
|
|
18342
|
+
* limitations under the License.
|
|
18343
|
+
*
|
|
18344
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
18345
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
18346
|
+
* */
|
|
18347
|
+
|
|
18348
|
+
var NowButtonConnect = function NowButtonConnect(_a) {
|
|
18349
|
+
var sourceId = _a.sourceId,
|
|
18350
|
+
mapId = _a.mapId,
|
|
18351
|
+
isDisabled = _a.isDisabled;
|
|
18352
|
+
var dispatch = reactRedux.useDispatch();
|
|
18353
|
+
var currentTime = moment__default["default"].utc().unix();
|
|
18354
|
+
var timeStep = reactRedux.useSelector(function (store) {
|
|
18355
|
+
return getMapTimeStep(store, mapId);
|
|
18356
|
+
});
|
|
18357
|
+
|
|
18358
|
+
var _b = __read(getDataLimitsFromLayers(reactRedux.useSelector(function (store) {
|
|
18359
|
+
return getMapLayers(store, mapId);
|
|
18360
|
+
})), 2),
|
|
18361
|
+
dataStartTime = _b[0],
|
|
18362
|
+
dataEndTime = _b[1];
|
|
18363
|
+
|
|
18364
|
+
var isAnimating$1 = reactRedux.useSelector(function (store) {
|
|
18365
|
+
return isAnimating(store, mapId);
|
|
18366
|
+
});
|
|
18367
|
+
|
|
18368
|
+
var onSetNewDate = function onSetNewDate(newDate) {
|
|
18369
|
+
if (isAnimating$1) {
|
|
18370
|
+
dispatch(mapActions$1.mapStopAnimation({
|
|
18371
|
+
mapId: mapId
|
|
18372
|
+
}));
|
|
18373
|
+
}
|
|
18374
|
+
|
|
18375
|
+
dispatch(genericActions.setTime({
|
|
18376
|
+
sourceId: sourceId,
|
|
18377
|
+
origin: 'NowButtonConnect, 140',
|
|
18378
|
+
value: handleMomentISOString(newDate)
|
|
18379
|
+
}));
|
|
18380
|
+
};
|
|
18381
|
+
|
|
18382
|
+
var onSetCenterTime = function onSetCenterTime(newTime) {
|
|
18383
|
+
dispatch(mapActions$1.setTimeSliderCenterTime({
|
|
18384
|
+
mapId: mapId,
|
|
18385
|
+
timeSliderCenterTime: newTime
|
|
18386
|
+
}));
|
|
18387
|
+
};
|
|
18388
|
+
|
|
18389
|
+
return /*#__PURE__*/React__namespace.createElement(NowButton, {
|
|
18390
|
+
disabled: isDisabled,
|
|
18391
|
+
onSetNow: function onSetNow() {
|
|
18392
|
+
return handleSetNowEvent(timeStep, dataStartTime, dataEndTime, currentTime, onSetNewDate, onSetCenterTime);
|
|
18393
|
+
}
|
|
18394
|
+
});
|
|
18395
|
+
};
|
|
18396
|
+
|
|
17753
18397
|
/* *
|
|
17754
18398
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
17755
18399
|
* you may not use this file except in compliance with the License.
|
|
@@ -17775,18 +18419,99 @@
|
|
|
17775
18419
|
* ``` <OptionsMenuButtonConnect mapId={mapId} />```
|
|
17776
18420
|
*/
|
|
17777
18421
|
|
|
17778
|
-
var OptionsMenuButtonConnect = function OptionsMenuButtonConnect(_a) {
|
|
17779
|
-
var
|
|
17780
|
-
|
|
17781
|
-
|
|
17782
|
-
|
|
17783
|
-
|
|
17784
|
-
|
|
17785
|
-
|
|
17786
|
-
|
|
17787
|
-
|
|
17788
|
-
|
|
17789
|
-
|
|
18422
|
+
var OptionsMenuButtonConnect = function OptionsMenuButtonConnect(_a) {
|
|
18423
|
+
var sourceId = _a.sourceId,
|
|
18424
|
+
mapId = _a.mapId;
|
|
18425
|
+
return /*#__PURE__*/React__namespace.createElement(OptionsMenuButton, {
|
|
18426
|
+
nowBtn: /*#__PURE__*/React__namespace.createElement(NowButtonConnect, {
|
|
18427
|
+
mapId: mapId,
|
|
18428
|
+
sourceId: sourceId
|
|
18429
|
+
}),
|
|
18430
|
+
autoUpdateBtn: /*#__PURE__*/React__namespace.createElement(AutoUpdateButtonConnect, {
|
|
18431
|
+
mapId: mapId
|
|
18432
|
+
}),
|
|
18433
|
+
speedBtn: /*#__PURE__*/React__namespace.createElement(SpeedButtonConnect, {
|
|
18434
|
+
mapId: mapId
|
|
18435
|
+
}),
|
|
18436
|
+
timeStepBtn: /*#__PURE__*/React__namespace.createElement(TimeStepButtonComponent, {
|
|
18437
|
+
mapId: mapId
|
|
18438
|
+
}),
|
|
18439
|
+
timeScaleBtn: /*#__PURE__*/React__namespace.createElement(TimeScaleButtonConnect, {
|
|
18440
|
+
mapId: mapId
|
|
18441
|
+
})
|
|
18442
|
+
});
|
|
18443
|
+
};
|
|
18444
|
+
|
|
18445
|
+
/* *
|
|
18446
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18447
|
+
* you may not use this file except in compliance with the License.
|
|
18448
|
+
* You may obtain a copy of the License at
|
|
18449
|
+
*
|
|
18450
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18451
|
+
*
|
|
18452
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18453
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18454
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18455
|
+
* See the License for the specific language governing permissions and
|
|
18456
|
+
* limitations under the License.
|
|
18457
|
+
*
|
|
18458
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
18459
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
18460
|
+
* */
|
|
18461
|
+
|
|
18462
|
+
var BackwardForwardStepButtonConnect = function BackwardForwardStepButtonConnect(_a) {
|
|
18463
|
+
var isForwardStep = _a.isForwardStep,
|
|
18464
|
+
mapId = _a.mapId;
|
|
18465
|
+
var timeStep = reactRedux.useSelector(function (store) {
|
|
18466
|
+
return getMapTimeStep(store, mapId);
|
|
18467
|
+
});
|
|
18468
|
+
var dispatch = reactRedux.useDispatch();
|
|
18469
|
+
|
|
18470
|
+
var setTime = function setTime(newDate) {
|
|
18471
|
+
dispatch(genericActions.setTime({
|
|
18472
|
+
origin: '',
|
|
18473
|
+
sourceId: mapId,
|
|
18474
|
+
value: handleMomentISOString(newDate)
|
|
18475
|
+
}));
|
|
18476
|
+
};
|
|
18477
|
+
|
|
18478
|
+
var stopAnimation = function stopAnimation() {
|
|
18479
|
+
dispatch(mapActions$1.mapStopAnimation({
|
|
18480
|
+
mapId: mapId,
|
|
18481
|
+
origin: MapActionOrigin.map
|
|
18482
|
+
}));
|
|
18483
|
+
};
|
|
18484
|
+
|
|
18485
|
+
var isAnimating$1 = reactRedux.useSelector(function (store) {
|
|
18486
|
+
return isAnimating(store, mapId);
|
|
18487
|
+
});
|
|
18488
|
+
var timedim = reactRedux.useSelector(function (store) {
|
|
18489
|
+
return getMapDimension(store, mapId, 'time');
|
|
18490
|
+
});
|
|
18491
|
+
var selectedTime = getSelectedTime(timedim);
|
|
18492
|
+
var curTime = moment__default["default"].unix(selectedTime).toISOString();
|
|
18493
|
+
var layers = reactRedux.useSelector(function (store) {
|
|
18494
|
+
return getMapLayers(store, mapId);
|
|
18495
|
+
});
|
|
18496
|
+
|
|
18497
|
+
var _b = __read(getDataLimitsFromLayers(layers), 2),
|
|
18498
|
+
dataStartTime = _b[0],
|
|
18499
|
+
dataEndTime = _b[1];
|
|
18500
|
+
|
|
18501
|
+
var onClickBF = function onClickBF() {
|
|
18502
|
+
if (isAnimating$1) {
|
|
18503
|
+
stopAnimation();
|
|
18504
|
+
}
|
|
18505
|
+
|
|
18506
|
+
isForwardStep ? setNextTimeStep(timeStep, curTime, dataEndTime, setTime) : setPreviousTimeStep(timeStep, curTime, dataStartTime, setTime);
|
|
18507
|
+
};
|
|
18508
|
+
|
|
18509
|
+
return /*#__PURE__*/React__default["default"].createElement(BackwardForwardStepButton, {
|
|
18510
|
+
isDisabled: false,
|
|
18511
|
+
isForwardStep: isForwardStep,
|
|
18512
|
+
onClickBFButton: function onClickBFButton() {
|
|
18513
|
+
onClickBF();
|
|
18514
|
+
}
|
|
17790
18515
|
});
|
|
17791
18516
|
};
|
|
17792
18517
|
|
|
@@ -17816,13 +18541,23 @@
|
|
|
17816
18541
|
*/
|
|
17817
18542
|
|
|
17818
18543
|
var TimeSliderButtonsConnect = function TimeSliderButtonsConnect(_a) {
|
|
17819
|
-
var
|
|
18544
|
+
var sourceId = _a.sourceId,
|
|
18545
|
+
mapId = _a.mapId;
|
|
17820
18546
|
return /*#__PURE__*/React__namespace.createElement(TimeSliderButtons, {
|
|
17821
18547
|
optionsMenuBtn: /*#__PURE__*/React__namespace.createElement(OptionsMenuButtonConnect, {
|
|
17822
|
-
mapId: mapId
|
|
18548
|
+
mapId: mapId,
|
|
18549
|
+
sourceId: sourceId
|
|
17823
18550
|
}),
|
|
17824
18551
|
playBtn: /*#__PURE__*/React__namespace.createElement(PlayButtonConnect, {
|
|
17825
18552
|
mapId: mapId
|
|
18553
|
+
}),
|
|
18554
|
+
backwardBtn: /*#__PURE__*/React__namespace.createElement(BackwardForwardStepButtonConnect, {
|
|
18555
|
+
mapId: mapId,
|
|
18556
|
+
isForwardStep: false
|
|
18557
|
+
}),
|
|
18558
|
+
forwardBtn: /*#__PURE__*/React__namespace.createElement(BackwardForwardStepButtonConnect, {
|
|
18559
|
+
mapId: mapId,
|
|
18560
|
+
isForwardStep: true
|
|
17826
18561
|
})
|
|
17827
18562
|
});
|
|
17828
18563
|
};
|
|
@@ -17862,8 +18597,6 @@
|
|
|
17862
18597
|
}, {
|
|
17863
18598
|
stopMapAnimation: mapActions$1.mapStopAnimation,
|
|
17864
18599
|
setTime: genericActions.setTime,
|
|
17865
|
-
syncGroupAddSource: genericActions.syncGroupAddSource,
|
|
17866
|
-
syncGroupRemoveSource: genericActions.syncGroupRemoveSource,
|
|
17867
18600
|
mapSetTimeSliderCenterTime: mapActions$1.setTimeSliderCenterTime,
|
|
17868
18601
|
mapSetTimeSliderSecondsPerPx: mapActions$1.setTimeSliderSecondsPerPx
|
|
17869
18602
|
});
|
|
@@ -17885,8 +18618,6 @@
|
|
|
17885
18618
|
activeWindowId = _a.activeWindowId,
|
|
17886
18619
|
stopMapAnimation = _a.stopMapAnimation,
|
|
17887
18620
|
setTime = _a.setTime,
|
|
17888
|
-
syncGroupAddSource = _a.syncGroupAddSource,
|
|
17889
|
-
syncGroupRemoveSource = _a.syncGroupRemoveSource,
|
|
17890
18621
|
mapSetTimeSliderCenterTime = _a.mapSetTimeSliderCenterTime,
|
|
17891
18622
|
mapSetTimeSliderSecondsPerPx = _a.mapSetTimeSliderSecondsPerPx;
|
|
17892
18623
|
var selectedTime = getTimeBounds(dimensions).selectedTime;
|
|
@@ -17897,17 +18628,6 @@
|
|
|
17897
18628
|
dataEndTime = _b[1];
|
|
17898
18629
|
|
|
17899
18630
|
var mapIsActive = mapId === activeWindowId;
|
|
17900
|
-
React__namespace.useEffect(function () {
|
|
17901
|
-
syncGroupAddSource({
|
|
17902
|
-
id: sourceId,
|
|
17903
|
-
type: [SYNCGROUPS_TYPE_SETTIME]
|
|
17904
|
-
});
|
|
17905
|
-
return function () {
|
|
17906
|
-
syncGroupRemoveSource({
|
|
17907
|
-
id: sourceId
|
|
17908
|
-
});
|
|
17909
|
-
};
|
|
17910
|
-
}, [sourceId, syncGroupAddSource, syncGroupRemoveSource]);
|
|
17911
18631
|
return /*#__PURE__*/React__namespace.createElement(TimeSliderLegend, {
|
|
17912
18632
|
centerTime: centerTime,
|
|
17913
18633
|
secondsPerPx: secondsPerPx,
|
|
@@ -18001,8 +18721,6 @@
|
|
|
18001
18721
|
setAnimationEndTime: mapActions$1.setAnimationEndTime,
|
|
18002
18722
|
setTime: genericActions.setTime,
|
|
18003
18723
|
stopMapAnimation: mapActions$1.mapStopAnimation,
|
|
18004
|
-
syncGroupAddSource: genericActions.syncGroupAddSource,
|
|
18005
|
-
syncGroupRemoveSource: genericActions.syncGroupRemoveSource,
|
|
18006
18724
|
mapSetTimeSliderCenterTime: mapActions$1.setTimeSliderCenterTime
|
|
18007
18725
|
});
|
|
18008
18726
|
|
|
@@ -18024,8 +18742,6 @@
|
|
|
18024
18742
|
setAnimationEndTime = _a.setAnimationEndTime,
|
|
18025
18743
|
stopMapAnimation = _a.stopMapAnimation,
|
|
18026
18744
|
setTime = _a.setTime,
|
|
18027
|
-
syncGroupAddSource = _a.syncGroupAddSource,
|
|
18028
|
-
syncGroupRemoveSource = _a.syncGroupRemoveSource,
|
|
18029
18745
|
mapSetTimeSliderCenterTime = _a.mapSetTimeSliderCenterTime;
|
|
18030
18746
|
var selectedTime = getMomentTimeBounds(dimensions).selectedTime;
|
|
18031
18747
|
var currentTime = moment__default["default"].utc().unix();
|
|
@@ -18035,17 +18751,6 @@
|
|
|
18035
18751
|
dataEndTime = _b[1];
|
|
18036
18752
|
|
|
18037
18753
|
var mapIsActive = activeWindowId === mapId;
|
|
18038
|
-
React__namespace.useEffect(function () {
|
|
18039
|
-
syncGroupAddSource({
|
|
18040
|
-
id: sourceId,
|
|
18041
|
-
type: [SYNCGROUPS_TYPE_SETTIME]
|
|
18042
|
-
});
|
|
18043
|
-
return function () {
|
|
18044
|
-
syncGroupRemoveSource({
|
|
18045
|
-
id: sourceId
|
|
18046
|
-
});
|
|
18047
|
-
};
|
|
18048
|
-
}, [sourceId, syncGroupAddSource, syncGroupRemoveSource]);
|
|
18049
18754
|
return /*#__PURE__*/React__namespace.createElement(TimeSliderRail, {
|
|
18050
18755
|
centerTime: centerTime,
|
|
18051
18756
|
secondsPerPx: secondsPerPx,
|
|
@@ -18095,87 +18800,6 @@
|
|
|
18095
18800
|
|
|
18096
18801
|
var TimeSliderRailConnect = connectRedux$1(TimeSliderRailConnectComponent);
|
|
18097
18802
|
|
|
18098
|
-
/* *
|
|
18099
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18100
|
-
* you may not use this file except in compliance with the License.
|
|
18101
|
-
* You may obtain a copy of the License at
|
|
18102
|
-
*
|
|
18103
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18104
|
-
*
|
|
18105
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18106
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18107
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18108
|
-
* See the License for the specific language governing permissions and
|
|
18109
|
-
* limitations under the License.
|
|
18110
|
-
*
|
|
18111
|
-
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
18112
|
-
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
18113
|
-
* */
|
|
18114
|
-
var connectReduxTimeSliderScaleSlider = reactRedux.connect(function (store, props) {
|
|
18115
|
-
return {
|
|
18116
|
-
layers: getMapLayers(store, props.mapId),
|
|
18117
|
-
timeSliderScale: getMapTimeSliderScale(store, props.mapId),
|
|
18118
|
-
centerTime: getMapTimeSliderCenterTime(store, props.mapId),
|
|
18119
|
-
secondsPerPx: getMapTimeSliderSecondsPerPx(store, props.mapId),
|
|
18120
|
-
dimensions: getMapDimensions(store, props.mapId)
|
|
18121
|
-
};
|
|
18122
|
-
}, {
|
|
18123
|
-
mapSetTimeSliderScale: mapActions$1.setTimeSliderScale,
|
|
18124
|
-
mapSetTimeSliderDataScaleToSecondsPerPx: mapActions$1.setTimeSliderDataScaleToSecondsPerPx,
|
|
18125
|
-
mapSetTimeSliderCenterTime: mapActions$1.setTimeSliderCenterTime
|
|
18126
|
-
});
|
|
18127
|
-
|
|
18128
|
-
var TimeSliderScaleSliderComponent = function TimeSliderScaleSliderComponent(_a) {
|
|
18129
|
-
var timeSliderScale = _a.timeSliderScale,
|
|
18130
|
-
mapId = _a.mapId,
|
|
18131
|
-
layers = _a.layers,
|
|
18132
|
-
centerTime = _a.centerTime,
|
|
18133
|
-
secondsPerPx = _a.secondsPerPx,
|
|
18134
|
-
dimensions = _a.dimensions,
|
|
18135
|
-
mapSetTimeSliderScale = _a.mapSetTimeSliderScale,
|
|
18136
|
-
mapSetTimeSliderDataScaleToSecondsPerPx = _a.mapSetTimeSliderDataScaleToSecondsPerPx,
|
|
18137
|
-
mapSetTimeSliderCenterTime = _a.mapSetTimeSliderCenterTime;
|
|
18138
|
-
|
|
18139
|
-
var onSetTimeSliderScale = function onSetTimeSliderScale(scale, newCenterTime, scaleToSecPerPx) {
|
|
18140
|
-
if (scale === Scale.DataScale) {
|
|
18141
|
-
mapSetTimeSliderDataScaleToSecondsPerPx({
|
|
18142
|
-
mapId: mapId,
|
|
18143
|
-
timeSliderDataScaleToSecondsPerPx: scaleToSecPerPx
|
|
18144
|
-
});
|
|
18145
|
-
}
|
|
18146
|
-
|
|
18147
|
-
mapSetTimeSliderScale({
|
|
18148
|
-
mapId: mapId,
|
|
18149
|
-
timeSliderScale: scale
|
|
18150
|
-
});
|
|
18151
|
-
mapSetTimeSliderCenterTime({
|
|
18152
|
-
mapId: mapId,
|
|
18153
|
-
timeSliderCenterTime: newCenterTime
|
|
18154
|
-
});
|
|
18155
|
-
};
|
|
18156
|
-
|
|
18157
|
-
var selectedTime = getTimeBounds(dimensions).selectedTime;
|
|
18158
|
-
return /*#__PURE__*/React__namespace.createElement(TimeSliderScaleSlider, {
|
|
18159
|
-
layers: layers,
|
|
18160
|
-
timeSliderScale: timeSliderScale,
|
|
18161
|
-
onChangeTimeSliderScale: onSetTimeSliderScale,
|
|
18162
|
-
secondsPerPx: secondsPerPx,
|
|
18163
|
-
centerTime: centerTime,
|
|
18164
|
-
selectedTime: selectedTime
|
|
18165
|
-
});
|
|
18166
|
-
};
|
|
18167
|
-
/**
|
|
18168
|
-
* TimeSliderScaleSlider component connected to the store displaying a scale slider of the time slider
|
|
18169
|
-
*
|
|
18170
|
-
* Expects the following props:
|
|
18171
|
-
* @param {string} mapId mapId: string - Id of the map
|
|
18172
|
-
* @example
|
|
18173
|
-
* ``` <TimeSliderScaleSliderConnect mapId={mapId} />```
|
|
18174
|
-
*/
|
|
18175
|
-
|
|
18176
|
-
|
|
18177
|
-
var TimeSliderScaleSliderConnect = connectReduxTimeSliderScaleSlider(TimeSliderScaleSliderComponent);
|
|
18178
|
-
|
|
18179
18803
|
/* *
|
|
18180
18804
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
18181
18805
|
* you may not use this file except in compliance with the License.
|
|
@@ -18243,15 +18867,13 @@
|
|
|
18243
18867
|
|
|
18244
18868
|
return /*#__PURE__*/React__namespace.createElement(TimeSlider, {
|
|
18245
18869
|
buttons: /*#__PURE__*/React__namespace.createElement(TimeSliderButtonsConnect, {
|
|
18246
|
-
mapId: mapId
|
|
18870
|
+
mapId: mapId,
|
|
18871
|
+
sourceId: sourceId
|
|
18247
18872
|
}),
|
|
18248
18873
|
rail: /*#__PURE__*/React__namespace.createElement(TimeSliderRailConnect, {
|
|
18249
18874
|
mapId: mapId,
|
|
18250
18875
|
sourceId: sourceId
|
|
18251
18876
|
}),
|
|
18252
|
-
scaleSlider: /*#__PURE__*/React__namespace.createElement(TimeSliderScaleSliderConnect, {
|
|
18253
|
-
mapId: mapId
|
|
18254
|
-
}),
|
|
18255
18877
|
legend: /*#__PURE__*/React__namespace.createElement(TimeSliderLegendConnect$1, {
|
|
18256
18878
|
mapId: mapId,
|
|
18257
18879
|
sourceId: sourceId
|
|
@@ -18744,7 +19366,7 @@
|
|
|
18744
19366
|
id: service.id,
|
|
18745
19367
|
serviceUrl: wmLayer.service,
|
|
18746
19368
|
layers: layers,
|
|
18747
|
-
|
|
19369
|
+
scope: 'system'
|
|
18748
19370
|
},
|
|
18749
19371
|
layerStyle: {
|
|
18750
19372
|
origin: origin,
|
|
@@ -19452,7 +20074,7 @@
|
|
|
19452
20074
|
}
|
|
19453
20075
|
|
|
19454
20076
|
if (!featureCoords) {
|
|
19455
|
-
return;
|
|
20077
|
+
return undefined;
|
|
19456
20078
|
}
|
|
19457
20079
|
|
|
19458
20080
|
var vertexSelected = mouseDown === true && this.mouseIsOverVertexNr !== VERTEX.NONE;
|
|
@@ -19476,6 +20098,8 @@
|
|
|
19476
20098
|
|
|
19477
20099
|
return false;
|
|
19478
20100
|
}
|
|
20101
|
+
|
|
20102
|
+
return undefined;
|
|
19479
20103
|
};
|
|
19480
20104
|
|
|
19481
20105
|
AdagucMapDraw.prototype.hoverVertex = function (feature, mouseX, mouseY) {
|
|
@@ -19590,7 +20214,7 @@
|
|
|
19590
20214
|
isInEditMode = _a.isInEditMode,
|
|
19591
20215
|
featureNrToEdit = _a.featureNrToEdit,
|
|
19592
20216
|
onHoverFeature = _a.onHoverFeature;
|
|
19593
|
-
if (event && event.rightButton === true) return;
|
|
20217
|
+
if (event && event.rightButton === true) return undefined;
|
|
19594
20218
|
/* adagucMouseMove is an event callback function which is triggered when the mouse moves over the map
|
|
19595
20219
|
This event is only triggered if the map is in hover state.
|
|
19596
20220
|
E.g. when the map is dragging/panning, this event is not triggerd
|
|
@@ -19631,11 +20255,11 @@
|
|
|
19631
20255
|
}
|
|
19632
20256
|
|
|
19633
20257
|
if (isInEditMode === false) {
|
|
19634
|
-
return;
|
|
20258
|
+
return undefined;
|
|
19635
20259
|
}
|
|
19636
20260
|
|
|
19637
20261
|
var feature = this.geojson.features[featureNrToEdit];
|
|
19638
|
-
if (!feature) return;
|
|
20262
|
+
if (!feature) return undefined;
|
|
19639
20263
|
var webmapjs = this.props.webmapjs;
|
|
19640
20264
|
this.mouseGeoCoord = webmapjs.getLatLongFromPixelCoord({
|
|
19641
20265
|
x: mouseX,
|
|
@@ -19701,6 +20325,8 @@
|
|
|
19701
20325
|
/* False means that this component will take over entire controll.
|
|
19702
20326
|
True means that it is still possible to pan and drag the map while editing */
|
|
19703
20327
|
}
|
|
20328
|
+
|
|
20329
|
+
return undefined;
|
|
19704
20330
|
};
|
|
19705
20331
|
/* Returns true if double click is detected */
|
|
19706
20332
|
|
|
@@ -19994,6 +20620,8 @@
|
|
|
19994
20620
|
return false;
|
|
19995
20621
|
}
|
|
19996
20622
|
}
|
|
20623
|
+
|
|
20624
|
+
return undefined;
|
|
19997
20625
|
};
|
|
19998
20626
|
|
|
19999
20627
|
AdagucMapDraw.prototype.addPointToLineStringFeature = function (event) {
|
|
@@ -20762,7 +21390,7 @@
|
|
|
20762
21390
|
/* After the image is loaded the canvas will be redrawn and drawIcon will be triggered again
|
|
20763
21391
|
via the beforecanvasdisplay listener. */
|
|
20764
21392
|
|
|
20765
|
-
return;
|
|
21393
|
+
return undefined;
|
|
20766
21394
|
}
|
|
20767
21395
|
|
|
20768
21396
|
if (image.isLoaded()) {
|
|
@@ -20775,6 +21403,8 @@
|
|
|
20775
21403
|
ctx.strokeRect(parseInt(_coord.x, 10) - imageWidth / 2, parseInt(_coord.y, 10) - imageHeight / 2, imageWidth, imageHeight);
|
|
20776
21404
|
}
|
|
20777
21405
|
}
|
|
21406
|
+
|
|
21407
|
+
return undefined;
|
|
20778
21408
|
};
|
|
20779
21409
|
|
|
20780
21410
|
AdagucMapDraw.prototype.drawMarker = function (ctx, _coord, selected, middle, isInEditMode, featureProperties) {
|
|
@@ -21979,12 +22609,8 @@
|
|
|
21979
22609
|
shouldAutoFetch: true,
|
|
21980
22610
|
displayMapPin: false,
|
|
21981
22611
|
disableMapPin: false,
|
|
21982
|
-
onMount: function onMount() {
|
|
21983
|
-
|
|
21984
|
-
},
|
|
21985
|
-
onUnMount: function onUnMount() {
|
|
21986
|
-
return null;
|
|
21987
|
-
},
|
|
22612
|
+
onMount: function onMount() {},
|
|
22613
|
+
onUnMount: function onUnMount() {},
|
|
21988
22614
|
onMapChangeDimension: function onMapChangeDimension() {
|
|
21989
22615
|
/* nothing */
|
|
21990
22616
|
},
|
|
@@ -22096,7 +22722,7 @@
|
|
|
22096
22722
|
}
|
|
22097
22723
|
}, /*#__PURE__*/React__namespace.createElement(ZoomControls, {
|
|
22098
22724
|
onZoomIn: function onZoomIn() {
|
|
22099
|
-
return adagucRef.current.zoomIn();
|
|
22725
|
+
return adagucRef.current.zoomIn(undefined);
|
|
22100
22726
|
},
|
|
22101
22727
|
onZoomOut: function onZoomOut() {
|
|
22102
22728
|
return adagucRef.current.zoomOut();
|
|
@@ -22165,10 +22791,10 @@
|
|
|
22165
22791
|
return (touches === null || touches === void 0 ? void 0 : touches.length) === 2;
|
|
22166
22792
|
};
|
|
22167
22793
|
|
|
22168
|
-
var
|
|
22794
|
+
var isCanvasElement = React__namespace.useCallback(function (event) {
|
|
22169
22795
|
var target = event.target;
|
|
22170
|
-
return
|
|
22171
|
-
}, [
|
|
22796
|
+
return target.tagName === 'CANVAS';
|
|
22797
|
+
}, []);
|
|
22172
22798
|
|
|
22173
22799
|
var distance = function distance(x1, y1, x2, y2) {
|
|
22174
22800
|
var dx = x1 - x2;
|
|
@@ -22176,9 +22802,32 @@
|
|
|
22176
22802
|
return Math.sqrt(dx * dx + dy * dy);
|
|
22177
22803
|
};
|
|
22178
22804
|
|
|
22805
|
+
var isMatchingWebMapNumbers = function isMatchingWebMapNumbers(firstStr, secondStr) {
|
|
22806
|
+
// Returns true if the same web map (id) number were encountered in both given strings, false otherwise.
|
|
22807
|
+
var webMapNumberBaseFormat = 'WebMapJSMapNo_';
|
|
22808
|
+
|
|
22809
|
+
if (!firstStr.includes(webMapNumberBaseFormat) || !secondStr.includes(webMapNumberBaseFormat)) {
|
|
22810
|
+
return false;
|
|
22811
|
+
}
|
|
22812
|
+
|
|
22813
|
+
var numberMatcher = /\d+/;
|
|
22814
|
+
var firstNumber = firstStr.match(numberMatcher)[0];
|
|
22815
|
+
var secondNumber = secondStr.match(numberMatcher)[0];
|
|
22816
|
+
return Boolean(firstNumber && secondNumber && firstNumber === secondNumber);
|
|
22817
|
+
};
|
|
22818
|
+
|
|
22819
|
+
var isTouchInsideTargetElement = function isTouchInsideTargetElement(elem, touchX, touchY) {
|
|
22820
|
+
var _a = elem.getBoundingClientRect(),
|
|
22821
|
+
left = _a.left,
|
|
22822
|
+
top = _a.top,
|
|
22823
|
+
width = _a.width,
|
|
22824
|
+
height = _a.height;
|
|
22825
|
+
|
|
22826
|
+
var leftMarginWidth = 0.02 * document.body.getBoundingClientRect().width;
|
|
22827
|
+
return touchY > window.scrollY + top && touchY < window.scrollY + top + height - TIME_SLIDER_LEGEND_HEIGHT && touchX > window.scrollX + left + leftMarginWidth && touchX < window.scrollX + left + width;
|
|
22828
|
+
};
|
|
22829
|
+
|
|
22179
22830
|
var handleStart = React__namespace.useCallback(function (event) {
|
|
22180
|
-
var map = getWMJSMapById(mapId);
|
|
22181
|
-
if (!isValidMap(map, event)) return;
|
|
22182
22831
|
var targetTouches = event.targetTouches;
|
|
22183
22832
|
var firstTouch = targetTouches === null || targetTouches === void 0 ? void 0 : targetTouches.item(0);
|
|
22184
22833
|
setFirstTouchX(firstTouch === null || firstTouch === void 0 ? void 0 : firstTouch.clientX);
|
|
@@ -22189,10 +22838,31 @@
|
|
|
22189
22838
|
setSecondTouchX(secondTouch === null || secondTouch === void 0 ? void 0 : secondTouch.clientX);
|
|
22190
22839
|
setSecondTouchY(secondTouch === null || secondTouch === void 0 ? void 0 : secondTouch.clientY);
|
|
22191
22840
|
}
|
|
22192
|
-
}, [
|
|
22841
|
+
}, []);
|
|
22193
22842
|
var handleMove = React__namespace.useCallback(function (event) {
|
|
22194
22843
|
var map = getWMJSMapById(mapId);
|
|
22195
|
-
|
|
22844
|
+
var targetElem = event.target;
|
|
22845
|
+
|
|
22846
|
+
if (!isCanvasElement(event)) {
|
|
22847
|
+
// Elements other than canvas elements are not allowed to be zoomed/panned
|
|
22848
|
+
return;
|
|
22849
|
+
}
|
|
22850
|
+
|
|
22851
|
+
var targetMapId = map.getId();
|
|
22852
|
+
var targetElemId = targetElem.parentElement.id;
|
|
22853
|
+
|
|
22854
|
+
if (!isMatchingWebMapNumbers(targetMapId, targetElemId)) {
|
|
22855
|
+
// Current map (given by map id) was not coupled to the canvas element user touched.
|
|
22856
|
+
// This web map id number comparison is of importance when dealing with multi-window presentations.
|
|
22857
|
+
return;
|
|
22858
|
+
}
|
|
22859
|
+
|
|
22860
|
+
if (!isTouchInsideTargetElement(targetElem, firstTouchX, firstTouchY)) {
|
|
22861
|
+
// A user touch outside the current canvas element will be rejected
|
|
22862
|
+
return;
|
|
22863
|
+
} // Start zooming/panning by touch
|
|
22864
|
+
|
|
22865
|
+
|
|
22196
22866
|
event.preventDefault();
|
|
22197
22867
|
var targetTouches = event.targetTouches;
|
|
22198
22868
|
var firstTouch = targetTouches === null || targetTouches === void 0 ? void 0 : targetTouches.item(0);
|
|
@@ -22234,7 +22904,7 @@
|
|
|
22234
22904
|
setPrevDist(dist);
|
|
22235
22905
|
}
|
|
22236
22906
|
}
|
|
22237
|
-
}, [
|
|
22907
|
+
}, [mapId, isCanvasElement, firstTouchX, firstTouchY, secondTouchX, secondTouchY, prevDist]);
|
|
22238
22908
|
var handleEnd = React__namespace.useCallback(function () {}, []);
|
|
22239
22909
|
React__namespace.useEffect(function () {
|
|
22240
22910
|
document.addEventListener('touchstart', handleStart, {
|
|
@@ -22483,7 +23153,7 @@
|
|
|
22483
23153
|
},
|
|
22484
23154
|
srs: srs,
|
|
22485
23155
|
bbox: bbox,
|
|
22486
|
-
mapPinLocation: displayMapPin
|
|
23156
|
+
mapPinLocation: displayMapPin ? mapPinLocation : undefined,
|
|
22487
23157
|
dimensions: mapDimensions,
|
|
22488
23158
|
activeLayerId: activeLayerId,
|
|
22489
23159
|
animationDelay: animationDelay,
|
|
@@ -22567,40 +23237,185 @@
|
|
|
22567
23237
|
* See the License for the specific language governing permissions and
|
|
22568
23238
|
* limitations under the License.
|
|
22569
23239
|
*
|
|
22570
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
22571
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
23240
|
+
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
23241
|
+
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
23242
|
+
* */
|
|
23243
|
+
|
|
23244
|
+
var LegendMapButtonConnect = function LegendMapButtonConnect(_a) {
|
|
23245
|
+
var mapId = _a.mapId,
|
|
23246
|
+
_b = _a.source,
|
|
23247
|
+
source = _b === void 0 ? 'app' : _b,
|
|
23248
|
+
_c = _a.multiLegend,
|
|
23249
|
+
multiLegend = _c === void 0 ? false : _c;
|
|
23250
|
+
var dispatch = reactRedux.useDispatch();
|
|
23251
|
+
var legendType = multiLegend ? "legend-" + mapId : "legend";
|
|
23252
|
+
var currentActiveMapId = reactRedux.useSelector(function (store) {
|
|
23253
|
+
return getDialogMapId(store, legendType);
|
|
23254
|
+
});
|
|
23255
|
+
var isOpenInStore = reactRedux.useSelector(function (store) {
|
|
23256
|
+
return getisDialogOpen(store, legendType);
|
|
23257
|
+
});
|
|
23258
|
+
var openLegendDialog = React__namespace.useCallback(function () {
|
|
23259
|
+
dispatch(uiActions.setActiveMapIdForDialog({
|
|
23260
|
+
type: legendType,
|
|
23261
|
+
mapId: mapId,
|
|
23262
|
+
setOpen: currentActiveMapId !== mapId ? true : !isOpenInStore,
|
|
23263
|
+
source: source,
|
|
23264
|
+
origin: MapActionOrigin.map
|
|
23265
|
+
}));
|
|
23266
|
+
}, [currentActiveMapId, dispatch, isOpenInStore, mapId, source, legendType]);
|
|
23267
|
+
var isOpen = currentActiveMapId === mapId && isOpenInStore;
|
|
23268
|
+
return /*#__PURE__*/React__namespace.createElement(MapControlButton, {
|
|
23269
|
+
title: "Legend",
|
|
23270
|
+
"data-testid": "open-Legend",
|
|
23271
|
+
onClick: openLegendDialog,
|
|
23272
|
+
isActive: isOpen
|
|
23273
|
+
}, /*#__PURE__*/React__namespace.createElement(theme.List, null));
|
|
23274
|
+
};
|
|
23275
|
+
|
|
23276
|
+
/* *
|
|
23277
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
23278
|
+
* you may not use this file except in compliance with the License.
|
|
23279
|
+
* You may obtain a copy of the License at
|
|
23280
|
+
*
|
|
23281
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
23282
|
+
*
|
|
23283
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
23284
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
23285
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
23286
|
+
* See the License for the specific language governing permissions and
|
|
23287
|
+
* limitations under the License.
|
|
23288
|
+
*
|
|
23289
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
23290
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
23291
|
+
* */
|
|
23292
|
+
var MIN_WIDTH = 170;
|
|
23293
|
+
var MIN_HEIGHT = 32;
|
|
23294
|
+
var MIN_FONT_SIZE = 14;
|
|
23295
|
+
var FONT_SIZE_WIDTH_RATIO = MIN_FONT_SIZE / MIN_WIDTH;
|
|
23296
|
+
var TimeSliderClock = function TimeSliderClock(_a) {
|
|
23297
|
+
var time = _a.time;
|
|
23298
|
+
var nodeRef = React__namespace.useRef(null);
|
|
23299
|
+
|
|
23300
|
+
var _b = __read(React__namespace.useState({
|
|
23301
|
+
x: 0,
|
|
23302
|
+
y: 0
|
|
23303
|
+
}), 2),
|
|
23304
|
+
position = _b[0],
|
|
23305
|
+
setPosition = _b[1];
|
|
23306
|
+
|
|
23307
|
+
shared.useMakeSureContainerStaysInsideWindow(nodeRef, position, setPosition);
|
|
23308
|
+
|
|
23309
|
+
var _c = __read(React__namespace.useState({
|
|
23310
|
+
width: MIN_WIDTH,
|
|
23311
|
+
height: MIN_HEIGHT
|
|
23312
|
+
}), 2),
|
|
23313
|
+
size = _c[0],
|
|
23314
|
+
setSize = _c[1];
|
|
23315
|
+
|
|
23316
|
+
var _d = __read(React__namespace.useState(MIN_FONT_SIZE), 2),
|
|
23317
|
+
fontSize = _d[0],
|
|
23318
|
+
setFontSize = _d[1];
|
|
23319
|
+
|
|
23320
|
+
return /*#__PURE__*/React__namespace.createElement(Draggable__default["default"], {
|
|
23321
|
+
nodeRef: nodeRef,
|
|
23322
|
+
bounds: "parent",
|
|
23323
|
+
position: position,
|
|
23324
|
+
onStop: function onStop(_event, position) {
|
|
23325
|
+
setPosition(position);
|
|
23326
|
+
}
|
|
23327
|
+
}, /*#__PURE__*/React__namespace.createElement("div", {
|
|
23328
|
+
style: {
|
|
23329
|
+
position: 'absolute',
|
|
23330
|
+
zIndex: 100,
|
|
23331
|
+
top: '10px',
|
|
23332
|
+
right: '10px'
|
|
23333
|
+
},
|
|
23334
|
+
ref: nodeRef
|
|
23335
|
+
}, /*#__PURE__*/React__namespace.createElement(reResizable.Resizable, {
|
|
23336
|
+
onResizeStart: function onResizeStart(event) {
|
|
23337
|
+
event.stopPropagation();
|
|
23338
|
+
},
|
|
23339
|
+
onResize: function onResize(_event, _direction, _ref, delta) {
|
|
23340
|
+
var width = size.width + delta.width;
|
|
23341
|
+
var fontSize = FONT_SIZE_WIDTH_RATIO * width;
|
|
23342
|
+
setFontSize(fontSize);
|
|
23343
|
+
},
|
|
23344
|
+
onResizeStop: function onResizeStop(_event, _direction, _ref, delta) {
|
|
23345
|
+
var width = size.width + delta.width;
|
|
23346
|
+
var height = size.height + delta.height;
|
|
23347
|
+
setSize({
|
|
23348
|
+
width: width,
|
|
23349
|
+
height: height
|
|
23350
|
+
});
|
|
23351
|
+
},
|
|
23352
|
+
lockAspectRatio: true,
|
|
23353
|
+
minHeight: MIN_HEIGHT,
|
|
23354
|
+
minWidth: MIN_WIDTH,
|
|
23355
|
+
size: size,
|
|
23356
|
+
handleComponent: {
|
|
23357
|
+
bottomLeft: /*#__PURE__*/React__namespace.createElement(theme.Resize, {
|
|
23358
|
+
isRightAligned: true,
|
|
23359
|
+
style: {
|
|
23360
|
+
fill: '#FFFFFF'
|
|
23361
|
+
}
|
|
23362
|
+
})
|
|
23363
|
+
},
|
|
23364
|
+
enable: {
|
|
23365
|
+
top: false,
|
|
23366
|
+
right: false,
|
|
23367
|
+
bottom: false,
|
|
23368
|
+
left: false,
|
|
23369
|
+
topRight: false,
|
|
23370
|
+
bottomRight: false,
|
|
23371
|
+
bottomLeft: true,
|
|
23372
|
+
topLeft: false
|
|
23373
|
+
}
|
|
23374
|
+
}, /*#__PURE__*/React__namespace.createElement(system.Box, {
|
|
23375
|
+
display: "flex",
|
|
23376
|
+
justifyContent: "center",
|
|
23377
|
+
alignItems: "center",
|
|
23378
|
+
sx: {
|
|
23379
|
+
cursor: 'move',
|
|
23380
|
+
height: '100%',
|
|
23381
|
+
width: '100%',
|
|
23382
|
+
backgroundColor: '#051039',
|
|
23383
|
+
borderRadius: '5px'
|
|
23384
|
+
}
|
|
23385
|
+
}, /*#__PURE__*/React__namespace.createElement(material.Typography, {
|
|
23386
|
+
variant: "subtitle2",
|
|
23387
|
+
sx: {
|
|
23388
|
+
color: '#FFFFFF',
|
|
23389
|
+
fontSize: fontSize
|
|
23390
|
+
}
|
|
23391
|
+
}, moment__default["default"].utc(time).format('ddd DD MMM HH:mm z'))))));
|
|
23392
|
+
};
|
|
23393
|
+
|
|
23394
|
+
/* *
|
|
23395
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
23396
|
+
* you may not use this file except in compliance with the License.
|
|
23397
|
+
* You may obtain a copy of the License at
|
|
23398
|
+
*
|
|
23399
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
23400
|
+
*
|
|
23401
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
23402
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
23403
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
23404
|
+
* See the License for the specific language governing permissions and
|
|
23405
|
+
* limitations under the License.
|
|
23406
|
+
*
|
|
23407
|
+
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
23408
|
+
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
22572
23409
|
* */
|
|
22573
|
-
|
|
22574
|
-
|
|
22575
|
-
var
|
|
22576
|
-
|
|
22577
|
-
source = _b === void 0 ? 'app' : _b,
|
|
22578
|
-
_c = _a.multiLegend,
|
|
22579
|
-
multiLegend = _c === void 0 ? false : _c;
|
|
22580
|
-
var dispatch = reactRedux.useDispatch();
|
|
22581
|
-
var legendType = multiLegend ? "legend-" + mapId : "legend";
|
|
22582
|
-
var currentActiveMapId = reactRedux.useSelector(function (store) {
|
|
22583
|
-
return getDialogMapId(store, legendType);
|
|
23410
|
+
var TimeSliderClockConnect = function TimeSliderClockConnect(_a) {
|
|
23411
|
+
var mapId = _a.mapId;
|
|
23412
|
+
var dimensions = reactRedux.useSelector(function (store) {
|
|
23413
|
+
return getMapDimensions(store, mapId);
|
|
22584
23414
|
});
|
|
22585
|
-
var
|
|
22586
|
-
|
|
23415
|
+
var selectedTime = getMomentTimeBounds(dimensions).selectedTime;
|
|
23416
|
+
return /*#__PURE__*/React__default["default"].createElement(TimeSliderClock, {
|
|
23417
|
+
time: selectedTime
|
|
22587
23418
|
});
|
|
22588
|
-
var openLegendDialog = React__namespace.useCallback(function () {
|
|
22589
|
-
dispatch(uiActions.setActiveMapIdForDialog({
|
|
22590
|
-
type: legendType,
|
|
22591
|
-
mapId: mapId,
|
|
22592
|
-
setOpen: currentActiveMapId !== mapId ? true : !isOpenInStore,
|
|
22593
|
-
source: source,
|
|
22594
|
-
origin: MapActionOrigin.map
|
|
22595
|
-
}));
|
|
22596
|
-
}, [currentActiveMapId, dispatch, isOpenInStore, mapId, source, legendType]);
|
|
22597
|
-
var isOpen = currentActiveMapId === mapId && isOpenInStore;
|
|
22598
|
-
return /*#__PURE__*/React__namespace.createElement(MapControlButton, {
|
|
22599
|
-
title: "Legend",
|
|
22600
|
-
"data-testid": "open-Legend",
|
|
22601
|
-
onClick: openLegendDialog,
|
|
22602
|
-
isActive: isOpen
|
|
22603
|
-
}, /*#__PURE__*/React__namespace.createElement(theme.List, null));
|
|
22604
23419
|
};
|
|
22605
23420
|
|
|
22606
23421
|
/* *
|
|
@@ -22669,7 +23484,9 @@
|
|
|
22669
23484
|
_p = _a.multiLegend,
|
|
22670
23485
|
multiLegend = _p === void 0 ? true : _p,
|
|
22671
23486
|
shouldShowLayerManager = _a.shouldShowLayerManager,
|
|
22672
|
-
|
|
23487
|
+
_q = _a.showClock,
|
|
23488
|
+
showClock = _q === void 0 ? true : _q,
|
|
23489
|
+
props = __rest(_a, ["id", "title", "layers", "shouldAutoUpdate", "shouldAnimate", "bbox", "srs", "shouldShowZoomControls", "displayMapPin", "showTimeSlider", "disableTimeSlider", "displayTimeInMap", "displayLayerManagerAndLegendButtonInMap", "displayDimensionSelectButtonInMap", "multiLegend", "shouldShowLayerManager", "showClock"]);
|
|
22673
23490
|
|
|
22674
23491
|
var dispatch = reactRedux.useDispatch();
|
|
22675
23492
|
var mapId = React__default["default"].useRef(id || generateMapId()).current;
|
|
@@ -22704,7 +23521,7 @@
|
|
|
22704
23521
|
|
|
22705
23522
|
if (shouldShowLayerManager !== undefined) {
|
|
22706
23523
|
dispatch(uiActions.setActiveMapIdForDialog({
|
|
22707
|
-
type:
|
|
23524
|
+
type: DialogTypes.LayerManager,
|
|
22708
23525
|
mapId: mapId,
|
|
22709
23526
|
setOpen: shouldShowLayerManager,
|
|
22710
23527
|
source: 'app'
|
|
@@ -22757,6 +23574,8 @@
|
|
|
22757
23574
|
showMapId: true,
|
|
22758
23575
|
mapId: mapId,
|
|
22759
23576
|
multiLegend: multiLegend
|
|
23577
|
+
}), showClock && /*#__PURE__*/React__default["default"].createElement(TimeSliderClockConnect, {
|
|
23578
|
+
mapId: mapId
|
|
22760
23579
|
}));
|
|
22761
23580
|
};
|
|
22762
23581
|
|
|
@@ -22796,7 +23615,9 @@
|
|
|
22796
23615
|
_c = _a.showZoomControls,
|
|
22797
23616
|
showZoomControls = _c === void 0 ? true : _c,
|
|
22798
23617
|
_d = _a.multiLegend,
|
|
22799
|
-
multiLegend = _d === void 0 ? false : _d
|
|
23618
|
+
multiLegend = _d === void 0 ? false : _d,
|
|
23619
|
+
_e = _a.showClock,
|
|
23620
|
+
showClock = _e === void 0 ? true : _e;
|
|
22800
23621
|
var dispatch = reactRedux.useDispatch();
|
|
22801
23622
|
var syncGroupAddTarget = React__default["default"].useCallback(function (payload) {
|
|
22802
23623
|
dispatch(genericActions.syncGroupAddTarget(payload));
|
|
@@ -22839,6 +23660,8 @@
|
|
|
22839
23660
|
showMapId: true,
|
|
22840
23661
|
mapId: firstMapId,
|
|
22841
23662
|
multiLegend: multiLegend
|
|
23663
|
+
}), showClock && /*#__PURE__*/React__default["default"].createElement(TimeSliderClockConnect, {
|
|
23664
|
+
mapId: firstMapId
|
|
22842
23665
|
}), maps.map(function (map, mapIndex) {
|
|
22843
23666
|
var mapId = map.id;
|
|
22844
23667
|
return /*#__PURE__*/React__default["default"].createElement(material.Box, {
|
|
@@ -22858,112 +23681,12 @@
|
|
|
22858
23681
|
shouldShowZoomControls: showZoomControls && mapIndex === 0,
|
|
22859
23682
|
showTimeSlider: false,
|
|
22860
23683
|
disableTimeSlider: true,
|
|
23684
|
+
showClock: false,
|
|
22861
23685
|
multiLegend: multiLegend
|
|
22862
23686
|
}));
|
|
22863
23687
|
}));
|
|
22864
23688
|
};
|
|
22865
23689
|
|
|
22866
|
-
/* *
|
|
22867
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
22868
|
-
* you may not use this file except in compliance with the License.
|
|
22869
|
-
* You may obtain a copy of the License at
|
|
22870
|
-
*
|
|
22871
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
22872
|
-
*
|
|
22873
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
22874
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
22875
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22876
|
-
* See the License for the specific language governing permissions and
|
|
22877
|
-
* limitations under the License.
|
|
22878
|
-
*
|
|
22879
|
-
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
22880
|
-
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
22881
|
-
* */
|
|
22882
|
-
|
|
22883
|
-
var useGetReferenceTimes = function useGetReferenceTimes(inputLayer) {
|
|
22884
|
-
var _a = __read(React__namespace.useState([]), 2),
|
|
22885
|
-
referenceTimes = _a[0],
|
|
22886
|
-
setReferenceTimes = _a[1];
|
|
22887
|
-
|
|
22888
|
-
React__namespace.useEffect(function () {
|
|
22889
|
-
var referenceTimes = [];
|
|
22890
|
-
var wmLayer = new webmap.WMLayer(__assign({}, inputLayer));
|
|
22891
|
-
wmLayer.parseLayerPromise().then(function (layer) {
|
|
22892
|
-
var refTimeDim = layer.getDimension('reference_time');
|
|
22893
|
-
/* Loop through all values of the dimension.
|
|
22894
|
-
A map cannot be used for iterating, as the dimension values are not in an array (it is an API). */
|
|
22895
|
-
|
|
22896
|
-
for (var j = 0; j < refTimeDim.size(); j += 1) {
|
|
22897
|
-
var referenceTimeValue = refTimeDim.getValueForIndex(j);
|
|
22898
|
-
referenceTimes.push(referenceTimeValue);
|
|
22899
|
-
}
|
|
22900
|
-
|
|
22901
|
-
setReferenceTimes(referenceTimes);
|
|
22902
|
-
});
|
|
22903
|
-
}, [inputLayer]);
|
|
22904
|
-
return referenceTimes;
|
|
22905
|
-
};
|
|
22906
|
-
|
|
22907
|
-
var HarmonieTempAndPrecipPreset = function HarmonieTempAndPrecipPreset(_a) {
|
|
22908
|
-
var layers = _a.layers,
|
|
22909
|
-
_b = _a.multiLegend,
|
|
22910
|
-
multiLegend = _b === void 0 ? false : _b;
|
|
22911
|
-
/* Get all the reference times for this layer */
|
|
22912
|
-
|
|
22913
|
-
var referenceTimes = useGetReferenceTimes(layers.topRow);
|
|
22914
|
-
if (referenceTimes.length === 0) return /*#__PURE__*/React__namespace.createElement("div", null, "Loading...");
|
|
22915
|
-
/* Helper to make a map layer prest */
|
|
22916
|
-
|
|
22917
|
-
var makeMapPreset = function makeMapPreset(referenceTime, uniqueId, layer, syncGroupsIds, col) {
|
|
22918
|
-
return {
|
|
22919
|
-
id: uniqueId,
|
|
22920
|
-
title: "Harmonie run " + ("" + referenceTime.substring(8, 13).replace('T', ' / ')),
|
|
22921
|
-
bbox: {
|
|
22922
|
-
left: -450651.2255879827,
|
|
22923
|
-
bottom: 6490531.093143953,
|
|
22924
|
-
right: 1428345.8183648037,
|
|
22925
|
-
top: 7438773.776232235
|
|
22926
|
-
},
|
|
22927
|
-
srs: 'EPSG:3857',
|
|
22928
|
-
layers: [__assign(__assign({}, layer), {
|
|
22929
|
-
id: uniqueId,
|
|
22930
|
-
dimensions: [{
|
|
22931
|
-
name: 'reference_time',
|
|
22932
|
-
currentValue: referenceTime
|
|
22933
|
-
}]
|
|
22934
|
-
})],
|
|
22935
|
-
syncGroupsIds: syncGroupsIds,
|
|
22936
|
-
displayLayerManagerAndLegendButtonInMap: col === 0 || !syncGroupsIds,
|
|
22937
|
-
displayDimensionSelectButtonInMap: col === 0 || !syncGroupsIds
|
|
22938
|
-
};
|
|
22939
|
-
};
|
|
22940
|
-
/* Make the preset */
|
|
22941
|
-
|
|
22942
|
-
|
|
22943
|
-
var nCols = 5;
|
|
22944
|
-
/* Add the harmonie air temperature layers with the different referencetimes */
|
|
22945
|
-
|
|
22946
|
-
var mapsTemperature = __spreadArray([], __read(Array(nCols))).map(function (_, index) {
|
|
22947
|
-
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
22948
|
-
return makeMapPreset(refTime, "harm_air" + index, layers.topRow, layers.topRowSyncGroups, index);
|
|
22949
|
-
});
|
|
22950
|
-
/* Add the harmonie precipitation layers with the different referencetimes */
|
|
22951
|
-
|
|
22952
|
-
|
|
22953
|
-
var mapsPrecipitation = __spreadArray([], __read(Array(nCols))).map(function (_, index) {
|
|
22954
|
-
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
22955
|
-
return makeMapPreset(refTime, "harm_precip" + index, layers.bottomRow, layers.bottomRowSyncGroups, index);
|
|
22956
|
-
});
|
|
22957
|
-
|
|
22958
|
-
var maps = mapsTemperature.concat(mapsPrecipitation);
|
|
22959
|
-
return /*#__PURE__*/React__namespace.createElement(MultiMapViewConnect, {
|
|
22960
|
-
rows: 2,
|
|
22961
|
-
cols: 5,
|
|
22962
|
-
maps: maps,
|
|
22963
|
-
multiLegend: multiLegend
|
|
22964
|
-
});
|
|
22965
|
-
};
|
|
22966
|
-
|
|
22967
23690
|
/* *
|
|
22968
23691
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
22969
23692
|
* you may not use this file except in compliance with the License.
|
|
@@ -22996,9 +23719,31 @@
|
|
|
22996
23719
|
}, [inputLayer]);
|
|
22997
23720
|
return latestReferenceTime;
|
|
22998
23721
|
};
|
|
22999
|
-
|
|
23722
|
+
/**
|
|
23723
|
+
* Custom hook to find out if the list of syncgroup id's contains a group which is of type SYNCGROUPS_TYPE_SETLAYERACTIONS
|
|
23724
|
+
* @param syncGroupsIds A string array of syncgroup ids
|
|
23725
|
+
* @returns True if indeed a group is included which is of type SYNCGROUPS_TYPE_SETLAYERACTIONS
|
|
23726
|
+
*/
|
|
23000
23727
|
|
|
23001
23728
|
|
|
23729
|
+
var useHasSyncGroupWithLayerActions = function useHasSyncGroupWithLayerActions(syncGroupsIds) {
|
|
23730
|
+
/* Get Syncgroupstate */
|
|
23731
|
+
var syncGroupState = reactRedux.useSelector(function (store) {
|
|
23732
|
+
return getSynchronizationGroupState(store);
|
|
23733
|
+
});
|
|
23734
|
+
if (!syncGroupState) return false;
|
|
23735
|
+
/* Return all syncgroups configured for this component of type SYNCGROUPS_TYPE_SETLAYERACTIONS */
|
|
23736
|
+
|
|
23737
|
+
var syncGroupsWithLayerActions = syncGroupState.groups.allIds.filter(function (syncGroupId) {
|
|
23738
|
+
return syncGroupsIds && syncGroupsIds.includes(syncGroupId) && syncGroupState.groups.byId[syncGroupId].type === 'SYNCGROUPS_TYPE_SETLAYERACTIONS';
|
|
23739
|
+
});
|
|
23740
|
+
/* Figure out if there is a syncgroup which controls layeractions. */
|
|
23741
|
+
|
|
23742
|
+
var displayLayerManagerAndLegendButtonInAllMaps = syncGroupsIds ? syncGroupsWithLayerActions.length === 1 : false;
|
|
23743
|
+
return displayLayerManagerAndLegendButtonInAllMaps;
|
|
23744
|
+
};
|
|
23745
|
+
/* Helper to make a map layer preset */
|
|
23746
|
+
|
|
23002
23747
|
var makeMapPreset = function makeMapPreset(timeIncrement, uniqueId, referenceTime, layers, syncGroupsIds, displayLayerManagerAndLegendButtonInMap, displayDimensionSelectButtonInMap) {
|
|
23003
23748
|
var mapTime = moment__default["default"].utc(referenceTime).add(timeIncrement, 'h').format('YYYY-MM-DDTHH:mm:ss[Z]');
|
|
23004
23749
|
return {
|
|
@@ -23039,6 +23784,7 @@
|
|
|
23039
23784
|
startTimeIncrement = _d === void 0 ? 3 : _d,
|
|
23040
23785
|
_e = _a.multiLegend,
|
|
23041
23786
|
multiLegend = _e === void 0 ? false : _e;
|
|
23787
|
+
var displayLayerManagerAndLegendButtonInAllMaps = !useHasSyncGroupWithLayerActions(syncGroupsIds);
|
|
23042
23788
|
/* Get latest reference time for this layer */
|
|
23043
23789
|
|
|
23044
23790
|
var latestReferenceTime = useGetLatestReferenceTime(layers[0]);
|
|
@@ -23053,7 +23799,7 @@
|
|
|
23053
23799
|
|
|
23054
23800
|
|
|
23055
23801
|
var maps = timeIncrements.map(function (increment, index) {
|
|
23056
|
-
return makeMapPreset(increment, "harm_precip" + increment, latestReferenceTime, layers, syncGroupsIds, index === 0 ||
|
|
23802
|
+
return makeMapPreset(increment, "harm_precip" + increment, latestReferenceTime, layers, syncGroupsIds, index === 0 || displayLayerManagerAndLegendButtonInAllMaps, index === 0 || displayLayerManagerAndLegendButtonInAllMaps);
|
|
23057
23803
|
});
|
|
23058
23804
|
return /*#__PURE__*/React__namespace.createElement(MultiMapViewConnect, {
|
|
23059
23805
|
rows: 3,
|
|
@@ -23061,6 +23807,110 @@
|
|
|
23061
23807
|
maps: maps,
|
|
23062
23808
|
syncTime: false,
|
|
23063
23809
|
showTimeSlider: false,
|
|
23810
|
+
multiLegend: multiLegend,
|
|
23811
|
+
showClock: false
|
|
23812
|
+
});
|
|
23813
|
+
};
|
|
23814
|
+
|
|
23815
|
+
/* *
|
|
23816
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
23817
|
+
* you may not use this file except in compliance with the License.
|
|
23818
|
+
* You may obtain a copy of the License at
|
|
23819
|
+
*
|
|
23820
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
23821
|
+
*
|
|
23822
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
23823
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
23824
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
23825
|
+
* See the License for the specific language governing permissions and
|
|
23826
|
+
* limitations under the License.
|
|
23827
|
+
*
|
|
23828
|
+
* Copyright 2021 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
23829
|
+
* Copyright 2021 - Finnish Meteorological Institute (FMI)
|
|
23830
|
+
* */
|
|
23831
|
+
|
|
23832
|
+
var useGetReferenceTimes = function useGetReferenceTimes(inputLayer) {
|
|
23833
|
+
var _a = __read(React__namespace.useState([]), 2),
|
|
23834
|
+
referenceTimes = _a[0],
|
|
23835
|
+
setReferenceTimes = _a[1];
|
|
23836
|
+
|
|
23837
|
+
React__namespace.useEffect(function () {
|
|
23838
|
+
var referenceTimes = [];
|
|
23839
|
+
var wmLayer = new webmap.WMLayer(__assign({}, inputLayer));
|
|
23840
|
+
wmLayer.parseLayerPromise().then(function (layer) {
|
|
23841
|
+
var refTimeDim = layer.getDimension('reference_time');
|
|
23842
|
+
/* Loop through all values of the dimension.
|
|
23843
|
+
A map cannot be used for iterating, as the dimension values are not in an array (it is an API). */
|
|
23844
|
+
|
|
23845
|
+
for (var j = 0; j < refTimeDim.size(); j += 1) {
|
|
23846
|
+
var referenceTimeValue = refTimeDim.getValueForIndex(j);
|
|
23847
|
+
referenceTimes.push(referenceTimeValue);
|
|
23848
|
+
}
|
|
23849
|
+
|
|
23850
|
+
setReferenceTimes(referenceTimes);
|
|
23851
|
+
});
|
|
23852
|
+
}, [inputLayer]);
|
|
23853
|
+
return referenceTimes;
|
|
23854
|
+
};
|
|
23855
|
+
|
|
23856
|
+
var HarmonieTempAndPrecipPreset = function HarmonieTempAndPrecipPreset(_a) {
|
|
23857
|
+
var layers = _a.layers,
|
|
23858
|
+
_b = _a.multiLegend,
|
|
23859
|
+
multiLegend = _b === void 0 ? false : _b;
|
|
23860
|
+
var displayLayerManagerAndLegendButtonInAllTopRows = !useHasSyncGroupWithLayerActions(layers && layers.topRowSyncGroups);
|
|
23861
|
+
var displayLayerManagerAndLegendButtonInAllBottomRows = !useHasSyncGroupWithLayerActions(layers && layers.bottomRowSyncGroups);
|
|
23862
|
+
/* Get all the reference times for this layer */
|
|
23863
|
+
|
|
23864
|
+
var referenceTimes = useGetReferenceTimes(layers.topRow);
|
|
23865
|
+
if (referenceTimes.length === 0) return /*#__PURE__*/React__namespace.createElement("div", null, "Loading...");
|
|
23866
|
+
/* Helper to make a map layer prest */
|
|
23867
|
+
|
|
23868
|
+
var makeMapPreset = function makeMapPreset(referenceTime, uniqueId, layer, syncGroupsIds, col) {
|
|
23869
|
+
return {
|
|
23870
|
+
id: uniqueId,
|
|
23871
|
+
title: "Harmonie run " + ("" + referenceTime.substring(8, 13).replace('T', ' / ')),
|
|
23872
|
+
bbox: {
|
|
23873
|
+
left: -450651.2255879827,
|
|
23874
|
+
bottom: 6490531.093143953,
|
|
23875
|
+
right: 1428345.8183648037,
|
|
23876
|
+
top: 7438773.776232235
|
|
23877
|
+
},
|
|
23878
|
+
srs: 'EPSG:3857',
|
|
23879
|
+
layers: [__assign(__assign({}, layer), {
|
|
23880
|
+
id: uniqueId,
|
|
23881
|
+
dimensions: [{
|
|
23882
|
+
name: 'reference_time',
|
|
23883
|
+
currentValue: referenceTime
|
|
23884
|
+
}]
|
|
23885
|
+
})],
|
|
23886
|
+
syncGroupsIds: syncGroupsIds,
|
|
23887
|
+
displayLayerManagerAndLegendButtonInMap: col === 0 || displayLayerManagerAndLegendButtonInAllTopRows,
|
|
23888
|
+
displayDimensionSelectButtonInMap: col === 0 || displayLayerManagerAndLegendButtonInAllBottomRows
|
|
23889
|
+
};
|
|
23890
|
+
};
|
|
23891
|
+
/* Make the preset */
|
|
23892
|
+
|
|
23893
|
+
|
|
23894
|
+
var nCols = 5;
|
|
23895
|
+
/* Add the harmonie air temperature layers with the different referencetimes */
|
|
23896
|
+
|
|
23897
|
+
var mapsTemperature = __spreadArray([], __read(Array(nCols))).map(function (_, index) {
|
|
23898
|
+
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
23899
|
+
return makeMapPreset(refTime, "harm_air" + index, layers.topRow, layers.topRowSyncGroups, index);
|
|
23900
|
+
});
|
|
23901
|
+
/* Add the harmonie precipitation layers with the different referencetimes */
|
|
23902
|
+
|
|
23903
|
+
|
|
23904
|
+
var mapsPrecipitation = __spreadArray([], __read(Array(nCols))).map(function (_, index) {
|
|
23905
|
+
var refTime = referenceTimes[referenceTimes.length - nCols + index];
|
|
23906
|
+
return makeMapPreset(refTime, "harm_precip" + index, layers.bottomRow, layers.bottomRowSyncGroups, index);
|
|
23907
|
+
});
|
|
23908
|
+
|
|
23909
|
+
var maps = mapsTemperature.concat(mapsPrecipitation);
|
|
23910
|
+
return /*#__PURE__*/React__namespace.createElement(MultiMapViewConnect, {
|
|
23911
|
+
rows: 2,
|
|
23912
|
+
cols: 5,
|
|
23913
|
+
maps: maps,
|
|
23064
23914
|
multiLegend: multiLegend
|
|
23065
23915
|
});
|
|
23066
23916
|
};
|
|
@@ -23497,7 +24347,7 @@
|
|
|
23497
24347
|
dispatch(actions.syncGroupRemoveTarget(payload));
|
|
23498
24348
|
}, [dispatch]);
|
|
23499
24349
|
|
|
23500
|
-
var _a = useSetupDialog(
|
|
24350
|
+
var _a = useSetupDialog(DialogTypes.SyncGroups),
|
|
23501
24351
|
dialogOrder = _a.dialogOrder,
|
|
23502
24352
|
isDialogOpen = _a.isDialogOpen,
|
|
23503
24353
|
onCloseDialog = _a.onCloseDialog,
|
|
@@ -23532,9 +24382,8 @@
|
|
|
23532
24382
|
* Copyright 2020 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
23533
24383
|
* Copyright 2020 - Finnish Meteorological Institute (FMI)
|
|
23534
24384
|
* */
|
|
23535
|
-
var store =
|
|
23536
|
-
|
|
23537
|
-
extensions: [reduxDynamicModulesSaga.getSagaExtension({})]
|
|
24385
|
+
var store = reduxToolkit.createStore({
|
|
24386
|
+
extensions: [sagaExtension.getSagaExtension()]
|
|
23538
24387
|
});
|
|
23539
24388
|
|
|
23540
24389
|
/* *
|
|
@@ -23715,9 +24564,7 @@
|
|
|
23715
24564
|
* Copyright 2022 - Koninklijk Nederlands Meteorologisch Instituut (KNMI)
|
|
23716
24565
|
* Copyright 2022 - Finnish Meteorological Institute (FMI)
|
|
23717
24566
|
* */
|
|
23718
|
-
var SnackbarWrapperConnect = function
|
|
23719
|
-
var props = __rest(_a, []);
|
|
23720
|
-
|
|
24567
|
+
var SnackbarWrapperConnect = shared.withEggs([snackbarModuleConfig])(function (props) {
|
|
23721
24568
|
var dispatch = reactRedux.useDispatch();
|
|
23722
24569
|
|
|
23723
24570
|
var onCloseSnackbar = function onCloseSnackbar() {
|
|
@@ -23727,15 +24574,13 @@
|
|
|
23727
24574
|
var currentSnackbarMessage = reactRedux.useSelector(function (store) {
|
|
23728
24575
|
return getFirstSnackbarMessage(store);
|
|
23729
24576
|
});
|
|
23730
|
-
return /*#__PURE__*/React__namespace.createElement(
|
|
23731
|
-
modules: [snackbarModuleConfig]
|
|
23732
|
-
}, /*#__PURE__*/React__namespace.createElement(SnackbarWrapper, __assign({
|
|
24577
|
+
return /*#__PURE__*/React__namespace.createElement(SnackbarWrapper, __assign({
|
|
23733
24578
|
isOpen: !!currentSnackbarMessage,
|
|
23734
24579
|
onCloseSnackbar: onCloseSnackbar,
|
|
23735
24580
|
message: currentSnackbarMessage ? currentSnackbarMessage.message : '',
|
|
23736
24581
|
id: currentSnackbarMessage ? currentSnackbarMessage.id : ''
|
|
23737
|
-
}, props))
|
|
23738
|
-
};
|
|
24582
|
+
}, props));
|
|
24583
|
+
});
|
|
23739
24584
|
|
|
23740
24585
|
/* *
|
|
23741
24586
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -23767,6 +24612,13 @@
|
|
|
23767
24612
|
theme: theme$1
|
|
23768
24613
|
}, children);
|
|
23769
24614
|
};
|
|
24615
|
+
var ThemeWrapperWithModules = shared.withEggs(coreModuleConfig)(function (_a) {
|
|
24616
|
+
var theme = _a.theme,
|
|
24617
|
+
children = _a.children;
|
|
24618
|
+
return /*#__PURE__*/React__default["default"].createElement(CoreThemeProvider, {
|
|
24619
|
+
theme: theme
|
|
24620
|
+
}, children, " ");
|
|
24621
|
+
});
|
|
23770
24622
|
/**
|
|
23771
24623
|
* A Provider component which provides the GeoWeb theme and store for the core.
|
|
23772
24624
|
* Note: Should only be used with core components, as the provided store is only for core.
|
|
@@ -23781,11 +24633,9 @@
|
|
|
23781
24633
|
store = _a.store;
|
|
23782
24634
|
return /*#__PURE__*/React__default["default"].createElement(reactRedux.Provider, {
|
|
23783
24635
|
store: store
|
|
23784
|
-
}, /*#__PURE__*/React__default["default"].createElement(
|
|
23785
|
-
modules: coreModuleConfig
|
|
23786
|
-
}, /*#__PURE__*/React__default["default"].createElement(CoreThemeProvider, {
|
|
24636
|
+
}, /*#__PURE__*/React__default["default"].createElement(ThemeWrapperWithModules, {
|
|
23787
24637
|
theme: theme$1
|
|
23788
|
-
}, /*#__PURE__*/React__default["default"].createElement(SnackbarWrapperConnect, null, children)))
|
|
24638
|
+
}, /*#__PURE__*/React__default["default"].createElement(SnackbarWrapperConnect, null, children)));
|
|
23789
24639
|
};
|
|
23790
24640
|
|
|
23791
24641
|
/* *
|