Merge pull request #746 from bartvde/loadend

when using BBOX or Fixed strategies, pass on the filter used in the request to the loadstart event (r=@ahocevar,@elemoine)
This commit is contained in:
Bart van den Eijnden
2012-11-07 02:57:26 -08:00
5 changed files with 20 additions and 9 deletions

View File

@@ -86,10 +86,13 @@ OpenLayers.Layer = OpenLayers.Class({
* element - {DOMElement} A reference to layer.events.element.
*
* Supported map event types:
* loadstart - Triggered when layer loading starts.
* loadend - Triggered when layer loading ends. When using Fixed or BBOX
* strategies, the event object includes a *response* property holding
* an OpenLayers.Protocol.Response object.
* loadstart - Triggered when layer loading starts. When using a Vector
* layer with a Fixed or BBOX strategy, the event object includes
* a *filter* property holding the OpenLayers.Filter used when
* calling read on the protocol.
* loadend - Triggered when layer loading ends. When using a Vector layer
* with a Fixed or BBOX strategy, the event object includes a
* *response* property holding an OpenLayers.Protocol.Response object.
* visibilitychanged - Triggered when layer visibility is changed.
* move - Triggered when layer moves (triggered with every mousemove
* during a drag).

View File

@@ -217,10 +217,11 @@ OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, {
this.layer.protocol.abort(this.response);
this.layer.events.triggerEvent("loadend");
}
this.layer.events.triggerEvent("loadstart");
var evt = {filter: this.createFilter()};
this.layer.events.triggerEvent("loadstart", evt);
this.response = this.layer.protocol.read(
OpenLayers.Util.applyDefaults({
filter: this.createFilter(),
filter: evt.filter,
callback: this.merge,
scope: this
}, options));

View File

@@ -88,7 +88,7 @@ OpenLayers.Strategy.Fixed = OpenLayers.Class(OpenLayers.Strategy, {
*/
load: function(options) {
var layer = this.layer;
layer.events.triggerEvent("loadstart");
layer.events.triggerEvent("loadstart", {filter: layer.filter});
layer.protocol.read(OpenLayers.Util.applyDefaults({
callback: OpenLayers.Function.bind(this.merge, this,
layer.map.getProjectionObject()),

View File

@@ -112,7 +112,7 @@
function test_events(t) {
t.plan(6);
t.plan(7);
var log = [];
@@ -141,6 +141,7 @@
t.eq(log.length, 2, "2 events logged");
t.eq(log[0].type, "loadstart", "loadstart first");
t.ok(log[0].filter.type === OpenLayers.Filter.Spatial.BBOX, "loadstart includes filter used");
t.eq(log[1].type, "loadend", "loadend second");
t.ok(log[1].response == response, "loadend includes response");

View File

@@ -62,7 +62,7 @@
function test_events(t) {
t.plan(6);
t.plan(7);
var log = [];
@@ -70,6 +70,11 @@
var map = new OpenLayers.Map("map");
var layer = new OpenLayers.Layer.Vector(null, {
filter: new OpenLayers.Filter.Comparison({
type: '==',
property: 'foo',
value: 'bar'
}),
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol({
read: function(config) {
@@ -92,6 +97,7 @@
t.eq(log.length, 2, "2 events logged");
t.eq(log[0].type, "loadstart", "loadstart first");
t.eq(log[0].filter, layer.filter, "filter passed on as argument to loadstart");
t.eq(log[1].type, "loadend", "loadend second");
t.ok(log[1].response == response, "loadend includes response");