@opengeoweb/core 9.33.0 → 9.33.1-spike-ol.3

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 CHANGED
@@ -2141,9 +2141,6 @@ const layerManagerStyle = {
2141
2141
  '.header-layermanager': {
2142
2142
  containerType: 'inline-size'
2143
2143
  },
2144
- '.header-mapPresets': {
2145
- display: 'none'
2146
- },
2147
2144
  '.medium-layermanager': {
2148
2145
  display: 'none'
2149
2146
  },
@@ -2197,25 +2194,9 @@ const layerManagerStyle = {
2197
2194
  },
2198
2195
  '.column-2': {
2199
2196
  width: `calc((100% - ${leftButtonsWidth}px) )`
2200
- },
2201
- // presets
2202
- '.header-layer.mappresetsModule-enabled': {
2203
- display: 'none'
2204
- },
2205
- '.header-mapPresets': {
2206
- display: 'block',
2207
- '.MuiButtonBase-root': {
2208
- height: 24,
2209
- '.MuiBox-root': {
2210
- textAlign: 'center'
2211
- }
2212
- }
2213
2197
  }
2214
2198
  },
2215
2199
  '.header-layermanager': {
2216
- '.mapPresets-btn': {
2217
- display: 'none'
2218
- },
2219
2200
  '.collapseLarge-btn': {
2220
2201
  display: 'inline-flex'
2221
2202
  }
@@ -2287,7 +2268,7 @@ const LayerSelectButton = ({
2287
2268
  });
2288
2269
  };
2289
2270
 
2290
- const _excluded$6 = ["mapPresetsModule", "settings", "addLayerComponent"];
2271
+ const _excluded$6 = ["settings", "addLayerComponent"];
2291
2272
  const styles$3 = {
2292
2273
  text: theme => Object.assign({
2293
2274
  paddingLeft: '10px',
@@ -2299,7 +2280,6 @@ const styles$3 = {
2299
2280
  const DescriptionRow = _ref => {
2300
2281
  var _settings$addLayer, _settings$addLayer2, _settings$layerName$t, _settings$layerName, _settings$layerStyle$, _settings$layerStyle, _settings$opacity$tit, _settings$opacity, _settings$dimensions$, _settings$dimensions, _settings$acceptanceT, _settings$acceptanceT2;
2301
2282
  let {
2302
- mapPresetsModule,
2303
2283
  settings,
2304
2284
  addLayerComponent
2305
2285
  } = _ref,
@@ -2307,12 +2287,6 @@ const DescriptionRow = _ref => {
2307
2287
  const {
2308
2288
  t
2309
2289
  } = useCoreTranslation();
2310
- const [mapPresetsModuleInline] = React.useState(mapPresetsModule ? Object.assign({}, mapPresetsModule, {
2311
- props: Object.assign({}, mapPresetsModule.props, {
2312
- id: 'mappresets-menubuttonInline'
2313
- })
2314
- }) : undefined);
2315
- const hasMapPresetsModule = mapPresetsModule !== undefined;
2316
2290
  return jsxs(Grid2, Object.assign({
2317
2291
  container: true,
2318
2292
  "data-testid": "descriptionRow",
@@ -2332,19 +2306,12 @@ const DescriptionRow = _ref => {
2332
2306
  tooltipTitle: settings == null || (_settings$addLayer = settings.addLayer) == null ? void 0 : _settings$addLayer.tooltipTitle,
2333
2307
  icon: settings == null || (_settings$addLayer2 = settings.addLayer) == null ? void 0 : _settings$addLayer2.icon
2334
2308
  })
2335
- }), jsxs(Grid2, {
2309
+ }), jsx(Grid2, {
2336
2310
  className: columnClasses.column2,
2337
- children: [jsx(Box, {
2338
- className: `header-layer ${hasMapPresetsModule ? 'mappresetsModule-enabled' : ''}`,
2311
+ children: jsx(Box, {
2339
2312
  sx: styles$3.text,
2340
2313
  children: (_settings$layerName$t = settings == null || (_settings$layerName = settings.layerName) == null ? void 0 : _settings$layerName.title) != null ? _settings$layerName$t : t('layermanager-layer')
2341
- }), jsx(Box, {
2342
- className: "header-mapPresets",
2343
- sx: {
2344
- marginRight: 4
2345
- },
2346
- children: mapPresetsModuleInline
2347
- })]
2314
+ })
2348
2315
  }), jsx(Grid2, {
2349
2316
  className: columnClasses.column3,
2350
2317
  children: jsx(Box, {
@@ -7640,7 +7607,6 @@ const LayerManager = ({
7640
7607
  onMouseDown: _onMouseDown = () => {},
7641
7608
  order: _order = 0,
7642
7609
  source: _source = 'app',
7643
- leftHeaderComponent: _leftHeaderComponent = undefined,
7644
7610
  isLoading: _isLoading = false,
7645
7611
  error,
7646
7612
  isDockedLayerManager: _isDockedLayerManager = false,
@@ -7683,7 +7649,6 @@ const LayerManager = ({
7683
7649
  onMouseDown: _onMouseDown,
7684
7650
  order: _order,
7685
7651
  source: _source,
7686
- leftHeaderComponent: _leftHeaderComponent,
7687
7652
  rightHeaderComponent: jsx(HeaderOptionsConnect, {
7688
7653
  isDockedLayerManager: _isDockedLayerManager,
7689
7654
  mapId: mapId,
@@ -7742,7 +7707,6 @@ const LayerManager = ({
7742
7707
  "data-testid": "layerManagerRowContainer",
7743
7708
  sx: styles$1.layerRowContainer,
7744
7709
  children: [jsx(DescriptionRow, {
7745
- mapPresetsModule: _leftHeaderComponent,
7746
7710
  source: _source,
7747
7711
  settings: settings == null ? void 0 : settings.header,
7748
7712
  addLayerComponent: addLayerComponent
@@ -7823,7 +7787,6 @@ const LayerManagerConnect = ({
7823
7787
  bounds,
7824
7788
  title,
7825
7789
  showMapIdInTitle: _showMapIdInTitle = false,
7826
- leftHeaderComponent: _leftHeaderComponent = undefined,
7827
7790
  mapId: initialMapId = null,
7828
7791
  isMultiMap: _isMultiMap = false,
7829
7792
  isDocked: _isDocked = false,
@@ -7884,7 +7847,6 @@ const LayerManagerConnect = ({
7884
7847
  order: dialogOrder,
7885
7848
  source: uiSource,
7886
7849
  size: _isDocked ? returnCorrectSize(dockedLayerManagerSize) : sizeLarge,
7887
- leftHeaderComponent: _leftHeaderComponent,
7888
7850
  isLoading: uiIsLoading,
7889
7851
  error: uiError,
7890
7852
  onToggleDock: onToggleDock,
@@ -7904,7 +7866,7 @@ const LayerManagerConnect = ({
7904
7866
  })
7905
7867
  }), !_isDocked && jsx(LayerInfoDialogConnect, {}), !_isDocked && jsx(LayerSelectConnect, {})]
7906
7868
  });
7907
- }, [bounds, dialogOrder, dockedLayerManagerSize, initialMapId, isDialogOpen, _isDocked, _isMultiMap, _leftHeaderComponent, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, _showMapIdInTitle, nonEmptyTitle, uiError, uiIsLoading, uiSource, _source]);
7869
+ }, [bounds, dialogOrder, dockedLayerManagerSize, initialMapId, isDialogOpen, _isDocked, _isMultiMap, mapId, onCloseDialog, onToggleDock, preloadedAvailableBaseLayers, preloadedBaseServices, setDialogOrder, _showMapIdInTitle, nonEmptyTitle, uiError, uiIsLoading, uiSource, _source]);
7908
7870
  };
7909
7871
 
7910
7872
  const LayerManagerMapButtonConnect = ({
@@ -9736,6 +9698,25 @@ const getTimeBounds = dimensions => {
9736
9698
  endTime
9737
9699
  };
9738
9700
  };
9701
+ const calculateNewAnimationEndTime = (newTimeInMilliseconds, dataStartTimeInMilliseconds, dataEndTimeInMilliseconds, animationDuration) => {
9702
+ if (newTimeInMilliseconds <= dataStartTimeInMilliseconds) {
9703
+ return dataStartTimeInMilliseconds + animationDuration;
9704
+ }
9705
+ if (newTimeInMilliseconds > dataEndTimeInMilliseconds) {
9706
+ return dataEndTimeInMilliseconds;
9707
+ }
9708
+ return newTimeInMilliseconds;
9709
+ };
9710
+ const calculateNewAnimationTimeBounds = (newTime, animationStartTime, animationEndTime, dataStartTime, dataEndTime) => {
9711
+ const dateToMillisecond = date => new Date(date).getTime();
9712
+ const animationDuration = dateToMillisecond(animationEndTime) - dateToMillisecond(animationStartTime);
9713
+ const newAnimationEndTime = calculateNewAnimationEndTime(newTime * 1000, dataStartTime * 1000, dataEndTime * 1000, animationDuration);
9714
+ const newAnimationStartTime = newAnimationEndTime - animationDuration;
9715
+ return {
9716
+ newAnimationStartTime,
9717
+ newAnimationEndTime
9718
+ };
9719
+ };
9739
9720
 
9740
9721
  const SpeedButtonConnect = ({
9741
9722
  mapId
@@ -10098,7 +10079,8 @@ const TimeSliderCurrentTimeBoxConnectComponent = ({
10098
10079
  isAutoUpdating,
10099
10080
  setCenterTime,
10100
10081
  unfilteredSelectedTime,
10101
- setUnfilteredSelectedTime
10082
+ setUnfilteredSelectedTime,
10083
+ onCalendarSelect
10102
10084
  }) => {
10103
10085
  const [dataStartTime, dataEndTime] = useSelector(store => mapSelectors.getDataLimitsFromLayers(store, mapId));
10104
10086
  return jsx(TimeSliderCurrentTimeBox, {
@@ -10111,6 +10093,7 @@ const TimeSliderCurrentTimeBoxConnectComponent = ({
10111
10093
  isAutoUpdating: isAutoUpdating,
10112
10094
  unfilteredSelectedTime: unfilteredSelectedTime,
10113
10095
  setUnfilteredSelectedTime: setUnfilteredSelectedTime,
10096
+ onCalendarSelect: onCalendarSelect,
10114
10097
  onSetCenterTime: newTime => {
10115
10098
  setCenterTime({
10116
10099
  mapId,
@@ -10345,6 +10328,8 @@ const TimeSliderConnect = ({
10345
10328
  const [dataStartTime, dataEndTime] = useSelector(store => mapSelectors.getDataLimitsFromLayers(store, mapId));
10346
10329
  const isAnimating = useSelector(store => mapSelectors.isAnimating(store, mapId));
10347
10330
  const selectedTime = useSelector(store => mapSelectors.getSelectedTime(store, mapId));
10331
+ const animationStartTime = useSelector(store => mapSelectors.getAnimationStartTime(store, mapId));
10332
+ const animationEndTime = useSelector(store => mapSelectors.getAnimationEndTime(store, mapId));
10348
10333
  useUpdateTimestep(mapId);
10349
10334
  useUpdateTimeSpan(mapId, onSetTimeSliderSpan);
10350
10335
  const turnOffAutoUpdateIfItsOn = useTurnOffAutoUpdateIfItsOn(mapId);
@@ -10386,6 +10371,30 @@ const TimeSliderConnect = ({
10386
10371
  onsetNewDateDebounced(timeToIso(filteredIsoTime), onSetNewDate);
10387
10372
  }
10388
10373
  };
10374
+ // Move animation bar when user changes time using time picker
10375
+ // Animation bar however cannot be moved into a time where there is no data
10376
+ const moveAnimationUsingCalendar = newTime => {
10377
+ if (!animationEndTime || !animationStartTime || !dataStartTime || !dataEndTime) {
10378
+ return;
10379
+ }
10380
+ const formatToIsoString = date => handleDateUtilsISOString(new Date(date).toISOString());
10381
+ const {
10382
+ newAnimationStartTime,
10383
+ newAnimationEndTime
10384
+ } = calculateNewAnimationTimeBounds(newTime, animationStartTime, animationEndTime, dataStartTime, dataEndTime);
10385
+ dispatch(mapActions.setAnimationStartTime({
10386
+ mapId,
10387
+ animationStartTime: formatToIsoString(newAnimationStartTime)
10388
+ }));
10389
+ dispatch(mapActions.setAnimationEndTime({
10390
+ mapId,
10391
+ animationEndTime: formatToIsoString(newAnimationEndTime)
10392
+ }));
10393
+ };
10394
+ const onCalendarSelect = newSelectedTime => {
10395
+ setUnfilteredSelectedTime(newSelectedTime);
10396
+ moveAnimationUsingCalendar(newSelectedTime);
10397
+ };
10389
10398
  return jsx(TimeSlider, {
10390
10399
  timeStep: timeStep,
10391
10400
  dataStartTime: dataStartTime,
@@ -10407,7 +10416,8 @@ const TimeSliderConnect = ({
10407
10416
  timeBox: jsx(TimeSliderCurrentTimeBoxConnect, {
10408
10417
  mapId: mapId,
10409
10418
  unfilteredSelectedTime: unfilteredSelectedTime,
10410
- setUnfilteredSelectedTime: setUnfilteredSelectedTime
10419
+ setUnfilteredSelectedTime: setUnfilteredSelectedTime,
10420
+ onCalendarSelect: onCalendarSelect
10411
10421
  }),
10412
10422
  legend: jsx(TimeSliderLegendConnect, {
10413
10423
  mapId: mapId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeoweb/core",
3
- "version": "9.33.0",
3
+ "version": "9.33.1-spike-ol.3",
4
4
  "description": "GeoWeb Core library for the opengeoweb project",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -3,7 +3,6 @@ import * as React from 'react';
3
3
  import { uiTypes } from '@opengeoweb/store';
4
4
  import { LayerManagerCustomSettings } from '../LayerManagerUtils';
5
5
  interface DescriptionRowProps extends React.ComponentProps<typeof Grid> {
6
- mapPresetsModule?: React.ReactElement;
7
6
  source?: uiTypes.Source;
8
7
  settings?: LayerManagerCustomSettings['header'];
9
8
  addLayerComponent?: React.ReactElement;
@@ -14,7 +14,6 @@ interface LayerManagerProps {
14
14
  isOpen: boolean;
15
15
  order?: number;
16
16
  source?: uiTypes.Source;
17
- leftHeaderComponent?: React.ReactElement;
18
17
  isLoading?: boolean;
19
18
  error?: string;
20
19
  isDockedLayerManager?: boolean;
@@ -9,7 +9,6 @@ interface LayerManagerConnectProps {
9
9
  bounds?: string;
10
10
  title?: string;
11
11
  showMapIdInTitle?: boolean;
12
- leftHeaderComponent?: React.ReactElement;
13
12
  isMultiMap?: boolean;
14
13
  isDocked?: boolean;
15
14
  source?: uiTypes.Source;
@@ -59,9 +59,6 @@ export declare const layerManagerStyle: {
59
59
  '.header-layermanager': {
60
60
  containerType: string;
61
61
  };
62
- '.header-mapPresets': {
63
- display: string;
64
- };
65
62
  '.medium-layermanager': {
66
63
  display: string;
67
64
  };
@@ -115,23 +112,8 @@ export declare const layerManagerStyle: {
115
112
  '.column-2': {
116
113
  width: string;
117
114
  };
118
- '.header-layer.mappresetsModule-enabled': {
119
- display: string;
120
- };
121
- '.header-mapPresets': {
122
- display: string;
123
- '.MuiButtonBase-root': {
124
- height: number;
125
- '.MuiBox-root': {
126
- textAlign: string;
127
- };
128
- };
129
- };
130
115
  };
131
116
  '.header-layermanager': {
132
- '.mapPresets-btn': {
133
- display: string;
134
- };
135
117
  '.collapseLarge-btn': {
136
118
  display: string;
137
119
  };
@@ -10,11 +10,13 @@ interface TimeSliderCurrentTimeBoxConnectComponentProps {
10
10
  setCenterTime?: typeof mapActions.setTimeSliderCenterTime;
11
11
  unfilteredSelectedTime: number;
12
12
  setUnfilteredSelectedTime: (unfilteredSelectedTime: number) => void;
13
+ onCalendarSelect: (newTime: number) => void;
13
14
  }
14
15
  export declare const TimeSliderCurrentTimeBoxConnect: import("react-redux").ConnectedComponent<React.FC<TimeSliderCurrentTimeBoxConnectComponentProps>, {
15
16
  mapId: string;
16
17
  unfilteredSelectedTime: number;
17
18
  setUnfilteredSelectedTime: (unfilteredSelectedTime: number) => void;
19
+ onCalendarSelect: (newTime: number) => void;
18
20
  timeStep?: number | undefined;
19
21
  centerTime?: number | undefined;
20
22
  secondsPerPx?: number | undefined;
@@ -5,3 +5,8 @@ export declare const useTurnOffAutoUpdateIfItsOn: (mapId: string) => (() => void
5
5
  * Returns time bounds from the given dimension. If no time dimension given, current time is returned as default
6
6
  */
7
7
  export declare const getTimeBounds: (dimensions: mapTypes.Dimension[]) => TimeBounds;
8
+ export declare const calculateNewAnimationEndTime: (newTimeInMilliseconds: number, dataStartTimeInMilliseconds: number, dataEndTimeInMilliseconds: number, animationDuration: number) => number;
9
+ export declare const calculateNewAnimationTimeBounds: (newTime: number, animationStartTime: string, animationEndTime: string, dataStartTime: number, dataEndTime: number) => {
10
+ newAnimationStartTime: number;
11
+ newAnimationEndTime: number;
12
+ };