From d83376de64b453431c5d8adf4e556f456016eccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Thu, 13 Aug 2009 06:31:47 +0000 Subject: [PATCH] add changelayer event to mergeNewParams function, r=bartvde (closes #2179) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9618 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Layer/HTTPRequest.js | 9 ++++++++- lib/OpenLayers/Map.js | 11 ++++++----- tests/Layer/HTTPRequest.html | 18 +++++++++++++++--- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/lib/OpenLayers/Layer/HTTPRequest.js b/lib/OpenLayers/Layer/HTTPRequest.js index 5d68337d5a..938b67af4c 100644 --- a/lib/OpenLayers/Layer/HTTPRequest.js +++ b/lib/OpenLayers/Layer/HTTPRequest.js @@ -121,7 +121,14 @@ OpenLayers.Layer.HTTPRequest = OpenLayers.Class(OpenLayers.Layer, { */ mergeNewParams:function(newParams) { this.params = OpenLayers.Util.extend(this.params, newParams); - return this.redraw(); + var ret = this.redraw(); + if(this.map != null) { + this.map.events.triggerEvent("changelayer", { + layer: this, + property: "params" + }); + } + return ret; }, /** diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 6969ef975f..a55bd55685 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -62,11 +62,12 @@ OpenLayers.Map = OpenLayers.Class({ * object will include a *layer* property that references the removed * layer. * - *changelayer* triggered after a layer name change, order change, - * opacity change or visibility change (due to resolution thresholds). - * Listeners will receive an event object with *layer* and *property* - * properties. The *layer* property will be a reference to the - * changed layer. The *property* property will be a key to the - * changed property (name, order, opacity or visibility). + * opacity change, params change or visibility change + * (due to resolution thresholds). Listeners will receive an event + * object with *layer* and *property* properties. The *layer* + * property will be a reference to the changed layer. + * The *property* property will be a key to the + * changed property (name, order, opacity, params or visibility). * - *movestart* triggered after the start of a drag, pan, or zoom * - *move* triggered after each drag, pan, or zoom * - *moveend* triggered after a drag, pan, or zoom completes diff --git a/tests/Layer/HTTPRequest.html b/tests/Layer/HTTPRequest.html index 88a01f293e..d37f6ffac1 100644 --- a/tests/Layer/HTTPRequest.html +++ b/tests/Layer/HTTPRequest.html @@ -65,9 +65,19 @@ } function test_Layer_HTTPRequest_mergeNewParams (t) { - t.plan( 4 ); + t.plan( 8 ); + var map = new OpenLayers.Map('map'); layer = new OpenLayers.Layer.HTTPRequest(name, url, params, options); + map.addLayer(layer); + + var scope = {some: "scope"}, log = []; + map.events.on({ + changelayer: function(e) { + log.push({layer: e.layer, property: e.property, scope: this}); + }, + scope: scope + }); var newParams = { layers: 'sooper', chickpeas: 'image/png'}; @@ -76,6 +86,10 @@ t.eq( layer.params.layers, "sooper", "mergeNewParams() overwrites well"); t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() adds well"); + t.eq( log.length, 1, "mergeNewParams() triggers changelayer once"); + t.ok( log[0].layer == layer, "mergeNewParams() passes changelayer listener the expected layer"); + t.ok( log[0].property == "params", "mergeNewParams() passes changelayer listener the property \"params\""); + t.eq( log[0].scope, scope, "mergeNewParams() executes changelayer listener with expected scope"); newParams.chickpeas = 151; @@ -85,8 +99,6 @@ t.ok(true, "layer.mergeNewParams calls layer.redraw"); } layer.mergeNewParams(); - - } function test_Layer_HTTPRequest_getFullRequestString (t) {