Skip to content

Commit ad358ff

Browse files
Fix the widget support for the WFS layer with no geom (#11379) (#11380)
1 parent 7415a64 commit ad358ff

3 files changed

Lines changed: 27 additions & 4 deletions

File tree

web/client/components/widgets/enhancers/__tests__/dependenciesToFilter-test.jsx

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import {
2828
resultQuickFiltersAndDependenciesQF,
2929
resultQuickFiltersAndDependenciesFilter,
3030
resultSpatialAndQuickFilters,
31-
resultLayerFilter
31+
resultLayerFilter,
32+
resultFilterForEmptyGeom
3233
} from '../../../../test-resources/widgets/dependenciesToFiltersData';
3334

3435
describe('widgets dependenciesToFilter enhancer', () => {
@@ -256,4 +257,25 @@ describe('widgets dependenciesToFilter enhancer', () => {
256257
}} />, document.getElementById("container"));
257258

258259
});
260+
261+
it('dependenciesToFilter with empty geomProp', (done) => {
262+
const Sink = dependenciesToFilter(createSink(props => {
263+
expect(props).toExist();
264+
expect(props.filter).toBe(resultFilterForEmptyGeom);
265+
done();
266+
}));
267+
ReactDOM.render(<Sink
268+
mapSync
269+
layer={{
270+
name: "test",
271+
id: "test"
272+
}}
273+
dependencies={{
274+
layers: [{id: "test", params: {
275+
cql_filter: "prop = 'value'"
276+
}}],
277+
viewport: { "bounds": { "minx": "-1", "miny": "-1", "maxx": "1", "maxy": "1" }, "crs": "EPSG:4326", "rotation": 0 }
278+
}} filter={inputFilterObjSpatial} />, document.getElementById("container"));
279+
280+
});
259281
});

web/client/components/widgets/enhancers/dependenciesToFilter.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const shouldMapOrKeys = ({ mapSync, geomProp, dependencies = {}, layer, quickFil
3737
|| getLayerFilter(layer) !== getLayerFilter(nextProps.layer);
3838
};
3939

40-
const createFilterProps = ({ mapSync, geomProp = "the_geom", dependencies = {}, filter: filterObj, layer, quickFilters, options } = {}) => {
40+
const createFilterProps = ({ mapSync, geomProp, dependencies = {}, filter: filterObj, layer, quickFilters, options } = {}) => {
4141
const viewport = dependencies.viewport;
4242
const fb = filterBuilder({ gmlVersion: "3.1.1" });
4343
const toFilter = fromObject(fb);
@@ -80,7 +80,7 @@ const createFilterProps = ({ mapSync, geomProp = "the_geom", dependencies = {},
8080
...cqlFilterRules,
8181
...(layerFilter && !layerFilter.disabled ? toOGCFilterParts(layerFilter, "1.1.0", "ogc") : []),
8282
...(newFilterObj ? toOGCFilterParts(newFilterObj, "1.1.0", "ogc") : []),
83-
property(geomProp).intersects(geom)))
83+
...(geomProp ? [property(geomProp).intersects(geom)] : [])))
8484
};
8585
}
8686
// this will contain only an ogc filter based on current and other filters (cql excluded)

web/client/test-resources/widgets/dependenciesToFiltersData.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,4 +199,5 @@ export const resultSpatialFilterMultiple =
199199
+ "</ogc:Intersects>"
200200
+ "</ogc:Or></ogc:And></ogc:Filter>";
201201

202-
export const resultLayerFilter = `<ogc:Filter><ogc:And><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>STATE_NAME</ogc:PropertyName><ogc:Literal>Arizona</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Or></ogc:And></ogc:Filter>`;
202+
export const resultLayerFilter = `<ogc:Filter><ogc:And><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>STATE_NAME</ogc:PropertyName><ogc:Literal>Arizona</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Or></ogc:And></ogc:Filter>`;
203+
export const resultFilterForEmptyGeom = `<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>prop</ogc:PropertyName><ogc:Literal>value</ogc:Literal></ogc:PropertyIsEqualTo><ogc:Intersects><ogc:PropertyName>geometry</ogc:PropertyName><gml:Polygon srsName="EPSG:4326"><gml:exterior><gml:LinearRing><gml:posList>1 1 1 2 2 2 2 1 1 1</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Intersects></ogc:And></ogc:Filter>`

0 commit comments

Comments
 (0)