error handling

This commit is contained in:
Norbert Renner 2014-08-01 17:44:57 +02:00
parent a5e1681370
commit fd98a2f102
2 changed files with 25 additions and 10 deletions

View file

@ -138,9 +138,18 @@
routing = new BR.Routing({routing: {
router: L.bind(router.getRouteSegment, router)
}});
routing.on('routing:routeWaypointEnd', onUpdate);
routing.on('routing:routeWaypointEnd', function(evt) {
onUpdate(evt && evt.err);
});
function onUpdate() {
function onUpdate(err) {
if (err) {
BR.message.showError(err);
return;
} else {
BR.message.hideError();
}
var track = routing.toPolyline(),
latLngs = routing.getWaypoints(),
urls = {};

View file

@ -56,6 +56,16 @@ L.BRouter = L.Class.extend({
return url;
},
_getError: function(xhr) {
var msg = 'no response from server';
if (xhr.responseText) {
msg = xhr.responseText;
} else if (this.status || this.statusText) {
msg = this.status + ': ' + this.statusText;
}
return new Error(msg);
},
getRoute: function(latLngs, cb) {
var url = this.getUrl(latLngs),
xhr = new XMLHttpRequest(),
@ -67,11 +77,9 @@ L.BRouter = L.Class.extend({
xhr.open('GET', url, true);
xhr.onload = L.bind(this._handleRouteResponse, this, xhr, cb);
xhr.onerror = function(evt) {
// TODO L.Routing._routeSegment doesn't forward err to cb
//cb('Server error');
throw 'Server error';
};
xhr.onerror = L.bind(function(xhr, cb) {
cb(this._getError(xhr));
}, this, xhr, cb);
xhr.send();
},
@ -95,9 +103,7 @@ L.BRouter = L.Class.extend({
//gpxLayer.fire('data:loaded');
return cb(null, layer);
} else {
// TODO L.Routing._routeSegment doesn't forward err to cb
//cb('Server error');
throw 'Server error ' + xhr.responseText || xhr.statusText;
cb(this._getError(xhr));
}
},