diff --git a/app/factory/Layer.js b/app/factory/Layer.js index ea8f56bc..41c93f7b 100644 --- a/app/factory/Layer.js +++ b/app/factory/Layer.js @@ -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(); } @@ -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'); diff --git a/test/spec/factory/Layer.spec.js b/test/spec/factory/Layer.spec.js index 8fec8b93..4a7e5649 100644 --- a/test/spec/factory/Layer.spec.js +++ b/test/spec/factory/Layer.spec.js @@ -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 () { @@ -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({