From f42b509182b25ab683045628bb1bcdc9d18ef19e Mon Sep 17 00:00:00 2001 From: Seth G Date: Mon, 18 Dec 2023 13:14:35 +0100 Subject: [PATCH] Allow suffixes to be added to gazetteer field names (#675) * Allow suffixes to be added to field names * Set correct scope --- app/view/combo/Gazetteer.js | 26 +++++++++++--- test/spec/view/combo/Gazetteer.spec.js | 50 +++++++++++++++++++++++--- 2 files changed, 67 insertions(+), 9 deletions(-) diff --git a/app/view/combo/Gazetteer.js b/app/view/combo/Gazetteer.js index 961a4068..f128a452 100644 --- a/app/view/combo/Gazetteer.js +++ b/app/view/combo/Gazetteer.js @@ -27,6 +27,14 @@ Ext.define('CpsiMapview.view.combo.Gazetteer', { */ srs: 'EPSG:3857', + /** + * String to append to the field names + * from example if set to '3857' extent field names + * will be expected to be in the format minX3857 + * @cfg {String} + */ + fieldNameSuffix: '3857', + onFocus: Ext.emptyFn, /** @@ -51,6 +59,10 @@ Ext.define('CpsiMapview.view.combo.Gazetteer', { }) }); + // ensure that the scope of convertToExtent is set to this class + // so we can get the fieldNameSuffix + me.convertToExtent = me.convertToExtent.bind(me); + me.callParent(); me.on({ @@ -87,17 +99,21 @@ Ext.define('CpsiMapview.view.combo.Gazetteer', { /** * Function to convert the data delivered by the Gazetteer service to an - * ol.Extent ([minx, miny, maxx, maxy]). + * ol.Extent ([minX, minY, maxX, maxY]). If `fieldNameSuffix` is set then + * field names such as minX2857 can be supported * * @param {Mixed} v The data value as read by the Reader * @param {Ext.data.Model} rec The data record containing raw data * @return {ol.Extent} The created ol.Extent */ convertToExtent: function (v, rec) { - var minx = rec.get('minX3857'); - var miny = rec.get('minY3857'); - var maxx = rec.get('maxX3857'); - var maxy = rec.get('maxY3857'); + + var me = this; + + var minx = rec.get('minX' + me.fieldNameSuffix); + var miny = rec.get('minY' + me.fieldNameSuffix); + var maxx = rec.get('maxX' + me.fieldNameSuffix); + var maxy = rec.get('maxY' + me.fieldNameSuffix); return [minx, miny, maxx, maxy]; } diff --git a/test/spec/view/combo/Gazetteer.spec.js b/test/spec/view/combo/Gazetteer.spec.js index 44afb213..5abe327c 100644 --- a/test/spec/view/combo/Gazetteer.spec.js +++ b/test/spec/view/combo/Gazetteer.spec.js @@ -1,12 +1,54 @@ -describe('CpsiMapview.view.combo.Gazetteer', function() { - describe('Basics', function() { - it('is defined', function() { +describe('CpsiMapview.view.combo.Gazetteer', function () { + + Ext.define('TestGazetteerModel', { + extend: 'Ext.data.Model', + + fields: [ + { name: 'minX3857', type: 'float' }, + { name: 'minY3857', type: 'float' }, + { name: 'maxX3857', type: 'float' }, + { name: 'maxY3857', type: 'float' } + ], + + // Other configurations for your model can go here + }); + + describe('Basics', function () { + it('is defined', function () { expect(CpsiMapview.view.combo.Gazetteer).not.to.be(undefined); }); - it('can be instantiated', function() { + it('can be instantiated', function () { var inst = Ext.create('CpsiMapview.view.combo.Gazetteer', {}); expect(inst).to.be.a(CpsiMapview.view.combo.Gazetteer); }); + + it('can get an extent record', function () { + var inst = Ext.create('CpsiMapview.view.combo.Gazetteer', {}); + + var rec = Ext.create('TestGazetteerModel', { + minX3857: 0, + minY3857: 0, + maxX3857: 100, + maxY3857: 100, + }); + + var extent = inst.convertToExtent(null, rec); + expect(extent.toString()).to.equal([0, 0, 100, 100].toString()); + }); + + it('can get an extent record with alternate field names', function () { + var inst = Ext.create('CpsiMapview.view.combo.Gazetteer', { fieldNameSuffix: '2157' }); + + var rec = Ext.create('TestGazetteerModel', { + minX2157: 0, + minY2157: 0, + maxX2157: 100, + maxY2157: 100, + }); + + var extent = inst.convertToExtent(null, rec); + expect(extent.toString()).to.equal([0, 0, 100, 100].toString()); + }); }); });