Skip to content

Commit 6ab69d6

Browse files
authored
Merge pull request #2480 from terrestris/fix-tree-icons
Render layer tree icons again
2 parents 6bc3572 + adc2ab7 commit 6ab69d6

5 files changed

Lines changed: 139 additions & 14 deletions

File tree

src/components/EditFeatureDrawer/DeleteButton/index.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ describe('<DeleteButton />', () => {
4747

4848
mockLayer = new OlLayerTile({
4949
source: new OlSourceTileWMS({
50-
url: 'https://shogun2022.intranet.terrestris.de/geoserver/ows?',
50+
url: 'https://ows.terrestris.de/osm/service?',
5151
params: {
5252
LAYERS: [],
5353
useBearerToken: true

src/components/ToolMenu/LayerTree/LayerTreeContextMenu/index.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ describe('<LayerTreeContextMenu />', () => {
5050
beforeEach(() => {
5151
mockLayer = new OlTileLayer({
5252
source: new OlTileWMS({
53-
url: 'https://shogun2022.intranet.terrestris.de/geoserver/ows?',
53+
url: 'https://ows.terrestris.de/osm/service?',
5454
params: {
5555
LAYERS: ['some_layer'],
5656
useBearerToken: true
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
import React from 'react';
2+
3+
import {
4+
render
5+
} from '@testing-library/react';
6+
7+
import OlTileLayer from 'ol/layer/Tile';
8+
import OlMap from 'ol/Map';
9+
import OlTileWMS from 'ol/source/TileWMS';
10+
import OlView from 'ol/View';
11+
12+
import {
13+
Provider
14+
} from 'react-redux';
15+
16+
import {
17+
renderInMapContext
18+
} from '@terrestris/react-util/dist/Util/rtlTestUtils';
19+
20+
import {
21+
store
22+
} from '../../../../store/store';
23+
24+
import {
25+
TreeNodeRenderer,
26+
TreeNodeRendererProps
27+
} from '.';
28+
29+
describe('<TreeNodeRenderer />', () => {
30+
let map: OlMap;
31+
let defaultProps: TreeNodeRendererProps;
32+
let defaultLayer: OlTileLayer;
33+
34+
beforeEach(() => {
35+
map = new OlMap({
36+
target: 'map',
37+
view: new OlView({
38+
center: [0, 0],
39+
zoom: 0
40+
}),
41+
layers: []
42+
});
43+
44+
defaultLayer = new OlTileLayer({
45+
source: new OlTileWMS({
46+
url: 'https://ows.terrestris.de/osm/service?',
47+
params: {
48+
LAYERS: ['some_layer']
49+
}
50+
}),
51+
properties: {
52+
name: 'Some Layer',
53+
searchable: true,
54+
hoverable: true,
55+
editable: true,
56+
filtered: true
57+
}
58+
});
59+
60+
defaultProps = {
61+
layer: defaultLayer,
62+
layerTileLoadCounter: {
63+
loaded: 100,
64+
loading: 0,
65+
percent: 100
66+
},
67+
setVisibleLegendsIds: jest.fn(),
68+
visibleLegendsIds: []
69+
};
70+
});
71+
72+
it('can be rendered', () => {
73+
const { container } = render(
74+
<TreeNodeRenderer
75+
{...defaultProps}
76+
/>
77+
);
78+
79+
expect(container).toBeVisible();
80+
});
81+
82+
it('renders the layer name', () => {
83+
const {
84+
getByText
85+
} = renderInMapContext(
86+
map,
87+
<Provider store={store}>
88+
<TreeNodeRenderer
89+
{...defaultProps}
90+
/>
91+
</Provider>
92+
);
93+
94+
expect(getByText('Some Layer')).toBeVisible();
95+
});
96+
97+
it('renders the layer icons', () => {
98+
const {
99+
container
100+
} = renderInMapContext(
101+
map,
102+
<Provider store={store}>
103+
<TreeNodeRenderer
104+
{...defaultProps}
105+
layerIconsVisible={true}
106+
/>
107+
</Provider>
108+
);
109+
110+
const searchIcon = container.querySelector('[data-icon="magnifying-glass"]');
111+
const infoIcon = container.querySelector('[data-icon="circle-info"]');
112+
const editIcon = container.querySelector('[data-icon="pen"]');
113+
const filterIcon = container.querySelector('[data-icon="filter"]');
114+
115+
expect(searchIcon).toBeVisible();
116+
expect(infoIcon).toBeVisible();
117+
expect(editIcon).toBeVisible();
118+
expect(filterIcon).toBeVisible();
119+
});
120+
});

src/components/ToolMenu/LayerTree/TreeNodeRenderer/index.tsx

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,9 @@ export const TreeNodeRenderer: React.FC<TreeNodeRendererProps> = ({
153153
<div
154154
className="layer-icons-group"
155155
>
156-
{
157-
layerIconsVisible && (
158-
layer.get('searchable') && (
156+
<>
157+
{
158+
(layerIconsVisible && layer.get('searchable')) && (
159159
<>
160160
<Tooltip title={t('ToolMenu.searchable')}>
161161
<FontAwesomeIcon
@@ -164,8 +164,10 @@ export const TreeNodeRenderer: React.FC<TreeNodeRendererProps> = ({
164164
/>
165165
</Tooltip>
166166
</>
167-
),
168-
layer.get('hoverable') && layer.get('visible') && (
167+
)
168+
}
169+
{
170+
(layerIconsVisible && layer.get('hoverable') && layer.get('visible')) && (
169171
<>
170172
<Tooltip title={t('ToolMenu.queryable')}>
171173
<FontAwesomeIcon
@@ -174,8 +176,10 @@ export const TreeNodeRenderer: React.FC<TreeNodeRendererProps> = ({
174176
/>
175177
</Tooltip>
176178
</>
177-
),
178-
layer.get('editable') && (
179+
)
180+
}
181+
{
182+
(layerIconsVisible && layer.get('editable')) && (
179183
<>
180184
<Tooltip title={t('ToolMenu.editable')}>
181185
<FontAwesomeIcon
@@ -184,8 +188,10 @@ export const TreeNodeRenderer: React.FC<TreeNodeRendererProps> = ({
184188
/>
185189
</Tooltip>
186190
</>
187-
),
188-
layer.get('filtered') && (
191+
)
192+
}
193+
{
194+
(layerIconsVisible && layer.get('filtered')) && (
189195
<>
190196
<Tooltip title={t('ToolMenu.filtered')}>
191197
<FontAwesomeIcon
@@ -195,8 +201,8 @@ export const TreeNodeRenderer: React.FC<TreeNodeRendererProps> = ({
195201
</Tooltip>
196202
</>
197203
)
198-
)
199-
}
204+
}
205+
</>
200206
</div>
201207
<div
202208
className="loading-indicator"

src/utils/testUtils.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
} from '../store/store';
1010

1111
export const createReduxWrapper = () => {
12-
1312
return ({
1413
children
1514
}: any) => (

0 commit comments

Comments
 (0)