add events to strategy.save: start, success, fail. r=elemoine, (Closes #1902)
(It is possible Save may need extension for additional events; this should be a new ticket.) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9645 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -18,6 +18,28 @@
|
|||||||
*/
|
*/
|
||||||
OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
|
OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constant: EVENT_TYPES
|
||||||
|
* {Array(String)} Supported application event types. Register a listener
|
||||||
|
* for a particular event with the following syntax:
|
||||||
|
* (code)
|
||||||
|
* protocol.events.register(type, obj, listener);
|
||||||
|
* (end)
|
||||||
|
*
|
||||||
|
* - *start* Triggered before saving
|
||||||
|
* - *success* Triggered after a successful transaction
|
||||||
|
* - *fail* Triggered after a failed transaction
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
EVENT_TYPES: ["start", "success", "fail"],
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Property: events
|
||||||
|
* {<OpenLayers.Events>} Events instance for triggering this protocol
|
||||||
|
* events.
|
||||||
|
*/
|
||||||
|
events: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APIProperty: auto
|
* APIProperty: auto
|
||||||
* {Boolean | Number} Auto-save. Default is false. If true, features will be
|
* {Boolean | Number} Auto-save. Default is false. If true, features will be
|
||||||
@@ -43,6 +65,7 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
|
|||||||
*/
|
*/
|
||||||
initialize: function(options) {
|
initialize: function(options) {
|
||||||
OpenLayers.Strategy.prototype.initialize.apply(this, [options]);
|
OpenLayers.Strategy.prototype.initialize.apply(this, [options]);
|
||||||
|
this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,6 +154,7 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
|
|||||||
if(!features) {
|
if(!features) {
|
||||||
features = this.layer.features;
|
features = this.layer.features;
|
||||||
}
|
}
|
||||||
|
this.events.triggerEvent("start", {features:features});
|
||||||
var remote = this.layer.projection;
|
var remote = this.layer.projection;
|
||||||
var local = this.layer.map.getProjectionObject();
|
var local = this.layer.map.getProjectionObject();
|
||||||
if(!local.equals(remote)) {
|
if(!local.equals(remote)) {
|
||||||
@@ -162,6 +186,7 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
|
|||||||
* response - {<OpenLayers.Protocol.Response>} A response object.
|
* response - {<OpenLayers.Protocol.Response>} A response object.
|
||||||
*/
|
*/
|
||||||
onCommit: function(response) {
|
onCommit: function(response) {
|
||||||
|
var evt = {"response": response};
|
||||||
if(response.success()) {
|
if(response.success()) {
|
||||||
var features = response.reqFeatures;
|
var features = response.reqFeatures;
|
||||||
// deal with inserts, updates, and deletes
|
// deal with inserts, updates, and deletes
|
||||||
@@ -184,9 +209,15 @@ OpenLayers.Strategy.Save = OpenLayers.Class(OpenLayers.Strategy, {
|
|||||||
feature.state = null;
|
feature.state = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(destroys.length > 0) {
|
if(destroys.length > 0) {
|
||||||
this.layer.destroyFeatures(destroys);
|
this.layer.destroyFeatures(destroys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.events.triggerEvent("success", evt);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.events.triggerEvent("fail", evt);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user