Skip to content

Commit 2165c12

Browse files
authored
#8905 Allow to set singletile option on a wms catalog entry (#9022)
1 parent bdb8470 commit 2165c12

7 files changed

Lines changed: 66 additions & 16 deletions

File tree

web/client/components/catalog/editor/AdvancedSettings/RasterAdvancedSettings.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,15 @@ export default ({
9191
</Checkbox>
9292
</Col>
9393
</FormGroup>
94+
{!isNil(service.type) && service.type === "wms" && <FormGroup controlId="singleTile" key="singleTile">
95+
<Col xs={12}>
96+
<Checkbox
97+
onChange={(e) => onChangeServiceProperty("layerOptions", { ...service.layerOptions, singleTile: e.target.checked })}
98+
checked={!isNil(service?.layerOptions?.singleTile) ? service.layerOptions.singleTile : false}>
99+
<Message msgId="catalog.singleTile.label" />&nbsp;<InfoPopover text={<Message msgId="catalog.singleTile.tooltip" />} />
100+
</Checkbox>
101+
</Col>
102+
</FormGroup>}
94103
{!isNil(service.type) && service.type === "wms" && <FormGroup controlId="allowUnsecureLayers" key="allowUnsecureLayers">
95104
<Col xs={12}>
96105
<Checkbox
@@ -167,7 +176,7 @@ export default ({
167176
<Select
168177
value={getTileSizeSelectOptions([service.layerOptions?.tileSize || 256])[0]}
169178
options={tileSelectOptions}
170-
onChange={event => onChangeServiceProperty("layerOptions", { tileSize: event && event.value })} />
179+
onChange={event => onChangeServiceProperty("layerOptions", { ...service.layerOptions, tileSize: event && event.value })} />
171180
</Col >
172181
</FormGroup>
173182
{!isNil(service.type) && service.type === "csw" &&

web/client/components/catalog/editor/AdvancedSettings/__tests__/RasterAdvancedSettings-test.js

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import ReactDOM from 'react-dom';
1111
import expect from 'expect';
1212
import RasterAdvancedSettings from "../RasterAdvancedSettings";
1313
import TestUtils from "react-dom/test-utils";
14+
import { waitFor } from '@testing-library/react';
1415

1516
describe('Test Raster advanced settings', () => {
1617
beforeEach((done) => {
@@ -32,7 +33,7 @@ describe('Test Raster advanced settings', () => {
3233
const advancedSettingPanel = document.getElementsByClassName("mapstore-switch-panel");
3334
expect(advancedSettingPanel).toBeTruthy();
3435
const fields = document.querySelectorAll(".form-group");
35-
expect(fields.length).toBe(9);
36+
expect(fields.length).toBe(10);
3637
});
3738
it('test csw advanced options', () => {
3839
ReactDOM.render(<RasterAdvancedSettings service={{type: "csw", autoload: false}}/>, document.getElementById("container"));
@@ -53,7 +54,7 @@ describe('Test Raster advanced settings', () => {
5354
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
5455
expect(advancedSettingsPanel).toBeTruthy();
5556
const autload = document.querySelectorAll('input[type="checkbox"]')[0];
56-
expect(autload).toExist();
57+
expect(autload).toBeTruthy();
5758
TestUtils.Simulate.change(autload, { "target": { "checked": true }});
5859
expect(spyOn).toHaveBeenCalled();
5960
});
@@ -67,7 +68,7 @@ describe('Test Raster advanced settings', () => {
6768
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
6869
expect(advancedSettingsPanel).toBeTruthy();
6970
const hideThumbnail = document.querySelectorAll('input[type="checkbox"]')[0];
70-
expect(hideThumbnail).toExist();
71+
expect(hideThumbnail).toBeTruthy();
7172
TestUtils.Simulate.change(hideThumbnail, { "target": { "checked": true }});
7273
expect(spyOn).toHaveBeenCalled();
7374
});
@@ -81,7 +82,7 @@ describe('Test Raster advanced settings', () => {
8182
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
8283
expect(advancedSettingsPanel).toBeTruthy();
8384
const localizedLayerStyles = document.querySelectorAll('input[type="checkbox"]')[1];
84-
expect(localizedLayerStyles).toExist();
85+
expect(localizedLayerStyles).toBeTruthy();
8586
TestUtils.Simulate.change(localizedLayerStyles, { "target": { "checked": true }});
8687
expect(spyOn).toHaveBeenCalled();
8788
});
@@ -100,7 +101,7 @@ describe('Test Raster advanced settings', () => {
100101
const autoSetVisibilityLimits = document.querySelectorAll('input[type="checkbox"]')[1];
101102
const formGroup = document.querySelectorAll('.form-group')[2];
102103
expect(formGroup.textContent.trim()).toBe('catalog.autoSetVisibilityLimits.label');
103-
expect(autoSetVisibilityLimits).toExist();
104+
expect(autoSetVisibilityLimits).toBeTruthy();
104105
expect(spyOn).toHaveBeenCalled();
105106
expect(spyOn.calls[0].arguments).toEqual([ 'autoSetVisibilityLimits', true ]);
106107
});
@@ -118,18 +119,19 @@ describe('Test Raster advanced settings', () => {
118119
const autoSetVisibilityLimits = document.querySelectorAll('input[type="checkbox"]')[1];
119120
const formGroup = document.querySelectorAll('.form-group')[2];
120121
expect(formGroup.textContent.trim()).toBe('catalog.autoSetVisibilityLimits.label');
121-
expect(autoSetVisibilityLimits).toExist();
122+
expect(autoSetVisibilityLimits).toBeTruthy();
122123
TestUtils.Simulate.change(autoSetVisibilityLimits, { "target": { "checked": true }});
123124
expect(spyOn).toHaveBeenCalled();
124125
expect(spyOn.calls[0].arguments).toEqual([ 'autoSetVisibilityLimits', true ]);
125126
});
126-
it('test component when showTemplate true', () => {
127+
it('test component when showTemplate true', (done) => {
127128
ReactDOM.render(<RasterAdvancedSettings
128129
service={{type: "csw", showTemplate: true}}/>, document.getElementById("container"));
129130
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
130131
expect(advancedSettingsPanel).toBeTruthy();
131-
const metadataTemplate = document.querySelector('.ql-editor');
132-
expect(metadataTemplate).toExist();
132+
waitFor(() => expect(document.querySelector('.ql-editor')).toBeTruthy())
133+
.then(() => done())
134+
.catch(done);
133135
});
134136
it('test component onToggleTemplate showTemplate', () => {
135137
const action = {
@@ -142,7 +144,7 @@ describe('Test Raster advanced settings', () => {
142144
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
143145
expect(advancedSettingsPanel).toBeTruthy();
144146
const showTemplate = document.querySelectorAll('input[type="checkbox"]')[2];
145-
expect(showTemplate).toExist();
147+
expect(showTemplate).toBeTruthy();
146148
TestUtils.Simulate.change(showTemplate, { "target": { "checked": true }});
147149
expect(spyOnToggleTemplate).toHaveBeenCalled();
148150
});
@@ -157,7 +159,7 @@ describe('Test Raster advanced settings', () => {
157159
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
158160
expect(advancedSettingsPanel).toBeTruthy();
159161
const format = document.querySelectorAll('input[role="combobox"]')[0];
160-
expect(format).toExist();
162+
expect(format).toBeTruthy();
161163
TestUtils.Simulate.change(format, { target: { value: 'image/png' } });
162164
TestUtils.Simulate.keyDown(format, { keyCode: 9, key: 'Tab' });
163165
expect(spyOn).toHaveBeenCalled();
@@ -174,7 +176,7 @@ describe('Test Raster advanced settings', () => {
174176
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
175177
expect(advancedSettingsPanel).toBeTruthy();
176178
const layerOption = document.querySelectorAll('input[role="combobox"]')[1];
177-
expect(layerOption).toExist();
179+
expect(layerOption).toBeTruthy();
178180
TestUtils.Simulate.change(layerOption, { target: { value: "512" }});
179181
TestUtils.Simulate.keyDown(layerOption, { keyCode: 9, key: 'Tab' });
180182
expect(spyOn).toHaveBeenCalled();
@@ -190,10 +192,10 @@ describe('Test Raster advanced settings', () => {
190192
/>, document.getElementById("container"));
191193
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
192194
expect(advancedSettingsPanel).toBeTruthy();
193-
const allowUnsecureLayers = document.querySelectorAll('input[type="checkbox"]')[2];
194-
const formGroup = document.querySelectorAll('.form-group')[3];
195+
const allowUnsecureLayers = document.querySelectorAll('input[type="checkbox"]')[3];
196+
const formGroup = document.querySelectorAll('.form-group')[4];
195197
expect(formGroup.textContent.trim()).toBe('catalog.allowUnsecureLayers.label');
196-
expect(allowUnsecureLayers).toExist();
198+
expect(allowUnsecureLayers).toBeTruthy();
197199
TestUtils.Simulate.change(allowUnsecureLayers, { "target": { "checked": true }});
198200
expect(spyOn).toHaveBeenCalled();
199201
expect(spyOn.calls[0].arguments).toEqual([ 'allowUnsecureLayers', true ]);
@@ -203,4 +205,23 @@ describe('Test Raster advanced settings', () => {
203205
expect(spyOn).toHaveBeenCalled();
204206
expect(spyOn.calls[1].arguments).toEqual([ 'allowUnsecureLayers', false ]);
205207
});
208+
it('test component onChangeServiceProperty singleTile', () => {
209+
const action = {
210+
onChangeServiceProperty: () => {}
211+
};
212+
const spyOn = expect.spyOn(action, 'onChangeServiceProperty');
213+
ReactDOM.render(<RasterAdvancedSettings
214+
onChangeServiceProperty={action.onChangeServiceProperty}
215+
service={{ type: "wms" }}
216+
/>, document.getElementById("container"));
217+
const advancedSettingsPanel = document.getElementsByClassName("mapstore-switch-panel");
218+
expect(advancedSettingsPanel).toBeTruthy();
219+
const formGroup = document.querySelectorAll('.form-group')[3];
220+
expect(formGroup.textContent.trim()).toBe('catalog.singleTile.label');
221+
const singleTileLayer = formGroup.querySelector('input[type="checkbox"]');
222+
expect(singleTileLayer).toBeTruthy();
223+
TestUtils.Simulate.change(singleTileLayer, { "target": { "checked": true }});
224+
expect(spyOn).toHaveBeenCalled();
225+
expect(spyOn.calls[0].arguments).toEqual([ 'layerOptions', { singleTile: true } ]);
226+
});
206227
});

web/client/translations/data.de-DE.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1539,6 +1539,10 @@
15391539
"label": "Sichtbarkeitsgrenze festlegen",
15401540
"tooltip": "Wendet automatisch die vom Server vorgeschlagenen Sichtbarkeitsgrenzen an"
15411541
},
1542+
"singleTile": {
1543+
"label": "Single Tile",
1544+
"tooltip": "Die Ebene wird als einzelnes Kachelbild gerendert, wenn sie mit aktivierter Option zur Karte hinzugefügt wird."
1545+
},
15421546
"domainAliases": {
15431547
"title": "Domain-Aliasse",
15441548
"helpTooltip": "Diese Option wird verwendet, um Inhalte auf mehrere Subdomains aufzuteilen",

web/client/translations/data.en-US.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,10 @@
15011501
"label": "Set Visibility Limit",
15021502
"tooltip": "Automatically applies the visibility limits suggested by the server"
15031503
},
1504+
"singleTile": {
1505+
"label": "Single Tile",
1506+
"tooltip": "The layer is rendered as a single tile image when added to the map with this option enabled"
1507+
},
15041508
"allowUnsecureLayers": {
15051509
"label": "Allow not secure layers",
15061510
"tooltip": "Adding layer to map with this option enabled, forces the application to apply proxy"

web/client/translations/data.es-ES.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,10 @@
15011501
"label": "Establecer límite de visibilidad",
15021502
"tooltip": "Aplica automáticamente los límites de visibilidad sugeridos por el servidor"
15031503
},
1504+
"singleTile": {
1505+
"label": "Single Tile",
1506+
"tooltip": "La capa se representa como una sola imagen de mosaico cuando se agrega al mapa con esta opción habilitada"
1507+
},
15041508
"domainAliases": {
15051509
"title": "Alias de dominio",
15061510
"helpTooltip": "Esta opción se utiliza para dividir el contenido en varios subdominios",

web/client/translations/data.fr-FR.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1502,6 +1502,10 @@
15021502
"label": "Définir la limite de visibilité",
15031503
"tooltip": "Applique automatiquement les limites de visibilité suggérées par le serveur"
15041504
},
1505+
"singleTile": {
1506+
"label": "Single Tile",
1507+
"tooltip": "La couche est rendue sous la forme d'une seule image de tuile lorsqu'elle est ajoutée à la carte avec cette option activée"
1508+
},
15051509
"domainAliases": {
15061510
"title": "Alias de domaine",
15071511
"helpTooltip": "Cette option est utilisée pour diviser le contenu sur plusieurs sous-domaines",

web/client/translations/data.it-IT.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,10 @@
15011501
"label": "Imposta limite di visibilità",
15021502
"tooltip": "Applica automaticamente i limiti di visibilità suggeriti dal server"
15031503
},
1504+
"singleTile": {
1505+
"label": "Single Tile",
1506+
"tooltip": "Il layer viene renderizzato come immagine a singola tile quando aggiunto alla mappa con questa opzione abilitata"
1507+
},
15041508
"domainAliases": {
15051509
"title": "Alias di dominio",
15061510
"helpTooltip": "Questa opzione viene utilizzata per suddividere il contenuto in più sottodomini",

0 commit comments

Comments
 (0)