@map-colonies/react-components 3.13.1 → 3.14.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/CHANGELOG.md +41 -17
- package/dist/assets/img/transparent-tile.png +0 -0
- package/dist/cesium-map/helpers/customImageryProviders.d.ts +34 -0
- package/dist/cesium-map/helpers/customImageryProviders.js +106 -0
- package/dist/cesium-map/helpers/utils.d.ts +17 -0
- package/dist/cesium-map/helpers/utils.js +142 -0
- package/dist/cesium-map/layers/wms.layer.js +7 -1
- package/dist/cesium-map/layers/wmts.layer.js +7 -1
- package/dist/cesium-map/layers/xyz.layer.js +7 -1
- package/dist/cesium-map/layers-manager.d.ts +4 -0
- package/dist/cesium-map/layers-manager.js +169 -12
- package/dist/cesium-map/map.d.ts +4 -0
- package/dist/cesium-map/map.js +23 -2
- package/package.json +2 -2
- package/public/assets/img/transparent-tile.png +0 -0
- package/src/lib/cesium-map/helpers/customImageryProviders.ts +173 -0
- package/src/lib/cesium-map/helpers/utils.ts +135 -0
- package/src/lib/cesium-map/layers/optimized-tile-requests.stories.tsx +279 -0
- package/src/lib/cesium-map/layers/wms.layer.tsx +10 -4
- package/src/lib/cesium-map/layers/wmts.layer.tsx +9 -4
- package/src/lib/cesium-map/layers/xyz.layer.tsx +9 -4
- package/src/lib/cesium-map/layers-manager.ts +223 -19
- package/src/lib/cesium-map/map.tsx +21 -0
- package/src/lib/cesium-map/tools/coordinates-tracker.tool.tsx +6 -1
- package/src/lib/date-range-picker/date-range-picker.spec.tsx +81 -81
- package/jest_html_reporters.html +0 -78
|
@@ -58,6 +58,7 @@ interface ICameraState {
|
|
|
58
58
|
}
|
|
59
59
|
export class CesiumViewer extends CesiumViewerCls {
|
|
60
60
|
public layersManager?: LayerManager;
|
|
61
|
+
private useOptimizedTileRequests?: boolean;
|
|
61
62
|
|
|
62
63
|
public constructor(
|
|
63
64
|
container: string | Element,
|
|
@@ -65,6 +66,14 @@ export class CesiumViewer extends CesiumViewerCls {
|
|
|
65
66
|
) {
|
|
66
67
|
super(container, options);
|
|
67
68
|
}
|
|
69
|
+
|
|
70
|
+
public get shouldOptimizedTileRequests(): boolean {
|
|
71
|
+
return this.useOptimizedTileRequests ?? false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public set shouldOptimizedTileRequests(useOptimizedTileRequests: boolean) {
|
|
75
|
+
this.useOptimizedTileRequests = useOptimizedTileRequests;
|
|
76
|
+
}
|
|
68
77
|
}
|
|
69
78
|
|
|
70
79
|
const mapContext = createContext<CesiumViewer | null>(null);
|
|
@@ -103,6 +112,7 @@ export interface CesiumMapProps extends ViewerProps {
|
|
|
103
112
|
locale?: { [key: string]: string };
|
|
104
113
|
sceneModes?: CesiumSceneModeEnum[];
|
|
105
114
|
baseMaps?: IBaseMaps;
|
|
115
|
+
useOptimizedTileRequests?: boolean;
|
|
106
116
|
terrainProvider?: TerrainProvider;
|
|
107
117
|
imageryContextMenu?: React.ReactElement<IContextMenuData>;
|
|
108
118
|
imageryContextMenuSize?: {
|
|
@@ -209,6 +219,9 @@ export const CesiumMap: React.FC<CesiumMapProps> = (props) => {
|
|
|
209
219
|
|
|
210
220
|
useEffect(() => {
|
|
211
221
|
if (mapViewRef) {
|
|
222
|
+
mapViewRef.shouldOptimizedTileRequests =
|
|
223
|
+
props.useOptimizedTileRequests ?? false;
|
|
224
|
+
|
|
212
225
|
mapViewRef.layersManager = new LayerManager(
|
|
213
226
|
mapViewRef,
|
|
214
227
|
props.legends?.mapLegendsExtractor,
|
|
@@ -219,8 +232,16 @@ export const CesiumMap: React.FC<CesiumMapProps> = (props) => {
|
|
|
219
232
|
}
|
|
220
233
|
);
|
|
221
234
|
}
|
|
235
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
222
236
|
}, [mapViewRef]);
|
|
223
237
|
|
|
238
|
+
useEffect(() => {
|
|
239
|
+
if (mapViewRef) {
|
|
240
|
+
mapViewRef.shouldOptimizedTileRequests =
|
|
241
|
+
props.useOptimizedTileRequests ?? false;
|
|
242
|
+
}
|
|
243
|
+
}, [props.useOptimizedTileRequests, mapViewRef]);
|
|
244
|
+
|
|
224
245
|
useEffect(() => {
|
|
225
246
|
setSceneModes(
|
|
226
247
|
props.sceneModes ?? [
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Cartesian3,
|
|
4
|
+
Math as CesiumMath,
|
|
5
|
+
WebMercatorProjection,
|
|
6
|
+
ScreenSpaceEventType,
|
|
7
|
+
} from 'cesium';
|
|
3
8
|
import { CesiumViewer, useCesiumMap } from '../map';
|
|
4
9
|
|
|
5
10
|
import './coordinates-tracker.tool.css';
|
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { shallow, mount } from 'enzyme';
|
|
3
|
-
import { KeyboardDateTimePicker } from '@material-ui/pickers';
|
|
4
|
-
import { Button } from '@map-colonies/react-core';
|
|
5
|
-
import { DateTimeRangePicker } from './date-range-picker';
|
|
6
|
-
|
|
7
|
-
const date = new Date(1990, 1, 1);
|
|
8
|
-
|
|
9
|
-
it('set the values of to and from to the props of the date pickers when changed', () => {
|
|
10
|
-
const wrapper = mount(
|
|
11
|
-
<DateTimeRangePicker
|
|
12
|
-
onChange={() => {
|
|
13
|
-
// do nothing for linitng
|
|
14
|
-
}}
|
|
15
|
-
/>
|
|
16
|
-
);
|
|
17
|
-
wrapper.setProps({ from: date, to: date });
|
|
18
|
-
|
|
19
|
-
wrapper.update();
|
|
20
|
-
const pickers = wrapper.find(KeyboardDateTimePicker);
|
|
21
|
-
const fromRangePicker = pickers.first();
|
|
22
|
-
const toRangePicker = pickers.at(1);
|
|
23
|
-
|
|
24
|
-
expect(fromRangePicker.prop('value')?.valueOf()).toBe(date.getTime());
|
|
25
|
-
expect(toRangePicker.prop('value')?.valueOf()).toBe(date.getTime());
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it('calls on change when button is clicked', () => {
|
|
29
|
-
const onChangeMock = jest.fn();
|
|
30
|
-
const wrapper = mount(
|
|
31
|
-
<DateTimeRangePicker from={date} to={date} onChange={onChangeMock} />
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
// eslint-disable-next-line
|
|
35
|
-
wrapper.find(Button).props().onClick?.();
|
|
36
|
-
|
|
37
|
-
expect(onChangeMock).toHaveBeenCalledWith({ from: date, to: date });
|
|
38
|
-
|
|
39
|
-
wrapper.setProps({ to: null });
|
|
40
|
-
wrapper.update();
|
|
41
|
-
|
|
42
|
-
// eslint-disable-next-line
|
|
43
|
-
wrapper.find(Button).props().onClick?.();
|
|
44
|
-
expect(onChangeMock).toHaveBeenCalledWith({ from: date });
|
|
45
|
-
|
|
46
|
-
wrapper.setProps({ to: date, from: null });
|
|
47
|
-
wrapper.update();
|
|
48
|
-
|
|
49
|
-
// eslint-disable-next-line
|
|
50
|
-
wrapper.find(Button).props().onClick?.();
|
|
51
|
-
expect(onChangeMock).toHaveBeenCalledWith({ to: date });
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('enables and disables the button based on the validity of the dates', () => {
|
|
55
|
-
const wrapper = shallow(
|
|
56
|
-
<DateTimeRangePicker
|
|
57
|
-
onChange={() => {
|
|
58
|
-
// do nothing for linitng
|
|
59
|
-
}}
|
|
60
|
-
/>
|
|
61
|
-
);
|
|
62
|
-
const fromPicker = wrapper.find(KeyboardDateTimePicker).first();
|
|
63
|
-
const toPicker = wrapper.find(KeyboardDateTimePicker).at(1);
|
|
64
|
-
|
|
65
|
-
expect(wrapper.find(Button).prop('disabled')).toBe(true);
|
|
66
|
-
|
|
67
|
-
fromPicker.prop('onChange')(date);
|
|
68
|
-
wrapper.update();
|
|
69
|
-
|
|
70
|
-
expect(wrapper.find(Button).prop('disabled')).toBe(false);
|
|
71
|
-
|
|
72
|
-
toPicker.prop('onChange')(date);
|
|
73
|
-
wrapper.update();
|
|
74
|
-
|
|
75
|
-
expect(wrapper.find(Button).prop('disabled')).toBe(true);
|
|
76
|
-
|
|
77
|
-
toPicker.prop('onChange')(new Date(1994, 1));
|
|
78
|
-
wrapper.update();
|
|
79
|
-
|
|
80
|
-
expect(wrapper.find(Button).prop('disabled')).toBe(false);
|
|
81
|
-
});
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { shallow, mount } from 'enzyme';
|
|
3
|
+
import { KeyboardDateTimePicker } from '@material-ui/pickers';
|
|
4
|
+
import { Button } from '@map-colonies/react-core';
|
|
5
|
+
import { DateTimeRangePicker } from './date-range-picker';
|
|
6
|
+
|
|
7
|
+
const date = new Date(1990, 1, 1);
|
|
8
|
+
|
|
9
|
+
it('set the values of to and from to the props of the date pickers when changed', () => {
|
|
10
|
+
const wrapper = mount(
|
|
11
|
+
<DateTimeRangePicker
|
|
12
|
+
onChange={() => {
|
|
13
|
+
// do nothing for linitng
|
|
14
|
+
}}
|
|
15
|
+
/>
|
|
16
|
+
);
|
|
17
|
+
wrapper.setProps({ from: date, to: date });
|
|
18
|
+
|
|
19
|
+
wrapper.update();
|
|
20
|
+
const pickers = wrapper.find(KeyboardDateTimePicker);
|
|
21
|
+
const fromRangePicker = pickers.first();
|
|
22
|
+
const toRangePicker = pickers.at(1);
|
|
23
|
+
|
|
24
|
+
expect(fromRangePicker.prop('value')?.valueOf()).toBe(date.getTime());
|
|
25
|
+
expect(toRangePicker.prop('value')?.valueOf()).toBe(date.getTime());
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('calls on change when button is clicked', () => {
|
|
29
|
+
const onChangeMock = jest.fn();
|
|
30
|
+
const wrapper = mount(
|
|
31
|
+
<DateTimeRangePicker from={date} to={date} onChange={onChangeMock} />
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
// eslint-disable-next-line
|
|
35
|
+
wrapper.find(Button).props().onClick?.();
|
|
36
|
+
|
|
37
|
+
expect(onChangeMock).toHaveBeenCalledWith({ from: date, to: date });
|
|
38
|
+
|
|
39
|
+
wrapper.setProps({ to: null });
|
|
40
|
+
wrapper.update();
|
|
41
|
+
|
|
42
|
+
// eslint-disable-next-line
|
|
43
|
+
wrapper.find(Button).props().onClick?.();
|
|
44
|
+
expect(onChangeMock).toHaveBeenCalledWith({ from: date });
|
|
45
|
+
|
|
46
|
+
wrapper.setProps({ to: date, from: null });
|
|
47
|
+
wrapper.update();
|
|
48
|
+
|
|
49
|
+
// eslint-disable-next-line
|
|
50
|
+
wrapper.find(Button).props().onClick?.();
|
|
51
|
+
expect(onChangeMock).toHaveBeenCalledWith({ to: date });
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('enables and disables the button based on the validity of the dates', () => {
|
|
55
|
+
const wrapper = shallow(
|
|
56
|
+
<DateTimeRangePicker
|
|
57
|
+
onChange={() => {
|
|
58
|
+
// do nothing for linitng
|
|
59
|
+
}}
|
|
60
|
+
/>
|
|
61
|
+
);
|
|
62
|
+
const fromPicker = wrapper.find(KeyboardDateTimePicker).first();
|
|
63
|
+
const toPicker = wrapper.find(KeyboardDateTimePicker).at(1);
|
|
64
|
+
|
|
65
|
+
expect(wrapper.find(Button).prop('disabled')).toBe(true);
|
|
66
|
+
|
|
67
|
+
fromPicker.prop('onChange')(date);
|
|
68
|
+
wrapper.update();
|
|
69
|
+
|
|
70
|
+
expect(wrapper.find(Button).prop('disabled')).toBe(false);
|
|
71
|
+
|
|
72
|
+
toPicker.prop('onChange')(date);
|
|
73
|
+
wrapper.update();
|
|
74
|
+
|
|
75
|
+
expect(wrapper.find(Button).prop('disabled')).toBe(true);
|
|
76
|
+
|
|
77
|
+
toPicker.prop('onChange')(new Date(1994, 1));
|
|
78
|
+
wrapper.update();
|
|
79
|
+
|
|
80
|
+
expect(wrapper.find(Button).prop('disabled')).toBe(false);
|
|
81
|
+
});
|