Skip to content

Commit

Permalink
Add support to filter a WFS in the config file (#672)
Browse files Browse the repository at this point in the history
  • Loading branch information
geographika committed Nov 1, 2023
1 parent be5a5a1 commit 754299b
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 2 deletions.
11 changes: 10 additions & 1 deletion app/factory/Layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ Ext.define('CpsiMapview.factory.Layer', {

var srid = 'EPSG:3857';
var mapPanel = CpsiMapview.view.main.Map.guess();
if (mapPanel) {
if (mapPanel && mapPanel.olMap) {
srid = mapPanel.olMap.getView().getProjection().getCode();
}

Expand Down Expand Up @@ -484,6 +484,15 @@ Ext.define('CpsiMapview.factory.Layer', {
vectorSource.set('originalPropertyNames', []);
}

// add any configured filters for the WFS layer
if (layerConf.filters) {
var filters = [];
Ext.each(layerConf.filters, function (filter) {
filters.push(new Ext.util.Filter(filter));
});
vectorSource.set('additionalFilters', filters);
}

var loaderFn = function (extent) {
var layerSource = this;
vectorSource.dispatchEvent('vectorloadstart');
Expand Down
53 changes: 52 additions & 1 deletion test/spec/factory/Layer.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,57 @@ describe('CpsiMapview.factory.Layer', function () {

});


it('createWfsLayerWithFilters', function () {

var layerConf = {
"layerKey": "TEST_WFS",
"layerType": "wfs",
"idProperty": "ObjectId",
"noCluster": true,
"hasMetadata": true,
"featureType": "Test",
"styles": [
{
"name": "Test",
"labelRule": "labels",
"title": "Test Layer"
}
],
"openLayers": {
"visibility": false,
"opacity": 0.9,
"projection": "EPSG:3857",
"maxScale": 100000
},
"filters": [
{
"property": "IsActive",
"value": "1",
"operator": "="
}
],
"serverOptions": {
"propertyname": "ObjectId"
},
"tooltipsConfig": [
{
"alias": "ObjectId",
"property": "ObjectId"
}
]
};

var layer = layerFactory.createWfs(layerConf);
expect(layer).to.be.a(ol.layer.Vector);

var filters = layer.getSource().get('additionalFilters');
expect(filters.length).to.be(1);
expect(filters[0].getOperator()).to.be('=');
expect(filters[0].getProperty()).to.be('IsActive');
expect(filters[0].getValue()).to.be('1');
});

});

describe('buildStyleConfigs', function () {
Expand Down Expand Up @@ -292,7 +343,7 @@ describe('CpsiMapview.factory.Layer', function () {
it('SLD applied to cluster layer', function (done) {

var source = new ol.source.Cluster({
source:new ol.source.Vector()
source: new ol.source.Vector()
});

var layer = new ol.layer.Vector({
Expand Down

0 comments on commit 754299b

Please sign in to comment.